'.menu-primary'
);
if ( $b_c != '#222' || $b_w != 1 || $b_s != 'solid' ) {
aweaver_f_write($sout, sprintf(".border {border:%dpx %s %s;}.border-bottom{border-bottom:%dpx %s %s;}\n", $b_w, $b_s, $b_c, $b_w, $b_s, $b_c));
}
foreach ( $menus as $id => $tag ) {
if ( aweaver_getopt("{$id}_sub_border") ) {
aweaver_f_write($sout, sprintf("@media (min-width:768px) { {$tag} ul ul{border:%dpx %s %s;} }\n", $b_w, $b_s, $b_c));
}
}
/* rounded_corners */
$r = 8;
$rm = 6; // rm for comments section
$r = aweaver_getopt_default('rounded_corners_radius', ABSOLUTE_WVR_DEF_CORNER_RADIUS);
if ($r != 8) {
if ($r >= 8)
$rm = (int)(.75 * $r);
else
$rm = $r;
// It's time: no -moz or -webkitv (Changed: 3.1.10)
$rounded = '.rounded,.rounded-all,.rounded-custom{border-radius:8px !important;}
.rounded-top{border-top-left-radius:8px; border-top-right-radius: 8px;}
.rounded-bottom {border-bottom-left-radius:8px; border-bottom-right-radius:8px;}
.rounded-left{border-top-left-radius:8px;border-bottom-left-radius:8px;}
.rounded-right{border-top-right-radius:8px;border-bottom-right-radius:8px;}';
aweaver_f_write( $sout, str_replace('8',$rm,$rounded) . "\n" );
}
foreach ( $menus as $id => $tag ) {
if ( aweaver_getopt("{$id}_sub_rounded") ) {
aweaver_f_write($sout, '@media (min-width:768px) { ' );
// 3 kinds of rounding: whole box + hover, top sub-item, bottom sub-item
$round_sub = str_replace('8', $r, "{border-radius:8px;z-index:2001;");
$menu = "{$tag} ul.sub-menu, {$tag} ul.children";
$pad = (int) ($r - ($r*.25)); // pad it to avoid anchor bg from overwriting rounding
$bg = aweaver_getopt("{$id}_sub_bgcolor");
if ($bg == '')
$bg = 'transparent';
$round_end = "padding-top:{$pad}px;padding-bottom:{$pad}px;background-color:{$bg};}";
aweaver_f_write($sout, $menu . $round_sub . $round_end . "} }\n");
}
}
// =========================== HEADER OPTIONS ===============================
aweaver_css_style_val($sout, '#site-title,.site-title', '{max-width:%.5f%%;}',
'site_title_max_w');
aweaver_css_style_val($sout, '#site-tagline,.site-title', '{max-width:%.5f%%;}',
'tagline_max_w');
/* Site Title/Description
Site Title' => 'title_color'
Title Position => 'site_title_position_xy'
Move Title over Header Image => 'title_over_image'
Site Description => 'desc_color'
Description Position => 'tagline_xy'
Header Extra HTML => 'header_html'
*/
$tx = aweaver_getopt_default('site_title_position_xy_X', ABSOLUTE_WVR_DEF_TITLE_MX);
$ty = aweaver_getopt_default('site_title_position_xy_Y', ABSOLUTE_WVR_DEF_TITLE_MY); // new title margins
if ( $tx != 7 || $ty != 0 ) {
if ( is_rtl() )
aweaver_f_write($sout, sprintf("#site-title,.site-title{margin-right:%.5f%% !important;margin-top:%.5f%% !important;}\n",$tx,$ty));
else
aweaver_f_write($sout, sprintf("#site-title,.site-title{margin-left:%.5f%% !important;margin-top:%.5f%% !important;}\n",$tx,$ty));
}
$tx = aweaver_getopt_default('tagline_xy_X', ABSOLUTE_WVR_DEF_TAG_MX);
$ty = aweaver_getopt_default('tagline_xy_Y', ABSOLUTE_WVR_DEF_TAG_MY); // new tagline margins
if ($tx != 10 || $ty != 0) {
if ( is_rtl() )
aweaver_f_write($sout, sprintf("#site-tagline{ margin-right:%.5f%% !important; margin-top:%.5f%% !important;}\n",$tx,$ty));
else
aweaver_f_write($sout, sprintf("#site-tagline{ margin-left:%.5f%% !important; margin-top:%.5f%% !important;}\n",$tx,$ty));
}
$tx = aweaver_getopt('title_tagline_xy_T');
$ty = aweaver_getopt('title_tagline_xy_B'); // title tagline padding
if ($tx || $ty) {
aweaver_f_write($sout, sprintf("#title-tagline{ padding-top:%dpx;padding-bottom:%dpx;}\n",$tx,$ty));
}
$align = aweaver_getopt_default( 'header_image_align', 'float-left'); // alignment
switch ( $align ) {
case 'align-center':
aweaver_f_write( $sout, '#branding #header-image img{margin-left:auto;margin-right:auto;} /* ' . $align . '*/');
aweaver_f_write( $sout, '#header.header-as-bg-parallax,#header.header-as-bg-responsive,#header.header-as-bg{background-position-x:center;}');
break;
case 'float-left':
aweaver_f_write( $sout, '#branding #header-image img{float: left;} /* ' . $align . '*/');
break;
case 'float-right':
aweaver_f_write( $sout, '#branding #header-image img{margin-left:auto;margin-right:0;} /* ' . $align . '*/');
aweaver_f_write( $sout, '#header.header-as-bg-parallax,#header.header-as-bg-responsive,#header.header-as-bg{background-position-x:right;}');
break;
case 'alignnone':
case 'alignwide':
case 'alignfull':
aweaver_f_write( $sout, '#branding #header-image img{float:none;} /* ' . $align . '*/');
break;
default: // default is left and already is in style sheet.
break;
}
if ( ($val = aweaver_getopt('header_min_height') ) ) {
aweaver_f_write($sout,
"#header{min-height: {$val}px;}");
}
if ( aweaver_getopt('header_actual_size')) {
aweaver_f_write($sout,
'#branding #header-image img,html.ie8 #branding #header-image img {width:auto;}');
}
if ( ($val = aweaver_getopt( 'header_image_max_width_dec') ) ) {
aweaver_f_write($sout, sprintf("#branding #header-image img{max-width:%.5f%%;}\n",$val));
aweaver_f_write($sout, sprintf("html.ie8 #branding #header-image img{width:%.5f%%;}\n",$val ));
}
if ( ($align = aweaver_getopt_default( 'header_html_align', 'float-left') ) == 'center' ) {
//$hwidth = aweaver_getopt_default( 'header_html_width_int', '100');
//$lm = (100.0 - $hwidth ) / 2.0;
//aweaver_f_write($sout, sprintf("#header-html {margin-left:%.5f%%;}\n",$lm ));
aweaver_f_write($sout, "#header-html {display:block !important;}\n");
}
if ( aweaver_getopt_default( 'header_html_center_content' ))
aweaver_f_write($sout, "#header-html {text-align:center;}\n");
if ( aweaver_getopt_default( 'footer_html_center_content' ))
aweaver_f_write($sout, "#footer-html {text-align:center;}\n");
$ratio = aweaver_getopt_default('header_video_aspect', '16:9');
if ( $ratio != '16:9') {
$ratio = explode(':',$ratio);
if ($ratio[0])
$r_pc = ($ratio[1] / $ratio[0]) * 100.0;
else
$r_pc = 56.25;
aweaver_f_write($sout, sprintf(".has-header-video .header-image .wp-custom-header{padding-bottom:%.5f%%;}\n",$r_pc));
}
// =========================== MENU OPTIONS ===============================
/*
text_color = 0.213 * this.rgb[0] +
0.715 * this.rgb[1] +
0.072 * this.rgb[2]
< 0.5 ? '#FFF' : '#000';
*/
$cur_page = aweaver_getopt('menubar_curpage_noancestors')
? '.weaverx-theme-menu .current_page_item > a,.weaverx-theme-menu .current-menu-item > a,.weaverx-theme-menu .current-cat > a'
: '.weaverx-theme-menu .current_page_item > a,.weaverx-theme-menu .current-menu-item > a,.weaverx-theme-menu .current-cat > a,.weaverx-theme-menu .current_page_ancestor > a,' .
'.weaverx-theme-menu .current-category-ancestor > a,.weaverx-theme-menu .current-menu-ancestor > a,.weaverx-theme-menu .current-menu-parent > a,.weaverx-theme-menu .current-category-parent > a';
aweaver_put_color($sout,'menubar_curpage_color', $cur_page, true); // menubar_curpage_color
aweaver_put_bgcolor($sout,'menubar_curpage_bgcolor', $cur_page, true);
aweaver_put_rule_if_checked($sout,'menubar_curpage_em', $cur_page .'{font-style:italic}'); // menubar_curpage_em
aweaver_put_rule_if_checked($sout,'menubar_curpage_bold', $cur_page . '{font-weight:bold}');
// =========================== CONTENT AREAS ===============================
// Images
$img_tag = '.container img, .colophon img';
aweaver_css_style_val($sout, $img_tag, '{padding:%dpx;}',
'media_lib_border_int');
$img_w = aweaver_getopt('media_lib_border_int');
if ( $img_w > 3 ) {
$half = $img_w/2 + 1;
$small_border_tag = '.container .gallery-icon img,.container .gallery-thumb img,#content img.gallery-thumb,#content img.avatar';
aweaver_f_write($sout, sprintf("{$small_border_tag}{padding:{$half}px;}\n") ); // make the thumbs smaller
}
if ( aweaver_getopt_checked('show_img_shadows') ) {
aweaver_f_write($sout, $img_tag .
'{box-shadow: 0 0 2px 1px rgba(0,0,0,0.25);}'."\n");
}
aweaver_put_bgcolor($sout,'media_lib_border_color', $img_tag);
$val = aweaver_getopt('contentlist_bullet');
if ($val != '' && $val != 'disc') {
aweaver_f_write($sout, sprintf("#content ul {list-style-type:%s;}\n",$val));
}
aweaver_css_style_val($sout, '.entry-summary,.entry-content', '{padding-top:%.5fem;}',
'space_after_title_dec');
aweaver_css_style_val($sout, '#content ul,#content ol', '{margin-bottom:%.5fem;}',
'content_p_list_dec');
if ( aweaver_getopt('hyphenate') ) {
aweaver_f_write( $sout, '#content{hyphens:auto;}');
}
$fi_min_height = array( 'page_min_height' => '.container-page.parallax',
'post_blog_min_height' => '.post-area.post-fi-post-bg-parallax-full,.post-area.post-fi-post-bg-parallax',
'post_min_height' => '.container-single.post-bg-parallax-full,.container-single.post-bg-parallax');
foreach ($fi_min_height as $name => $selector ) {
if ( aweaver_getopt($name) ) {
$val = aweaver_getopt($name);
aweaver_f_write( $sout, "$selector{min-height:{$val}px;}\n");
}
}
/* Comments */
aweaver_put_rule_if_checked($sout,'form_allowed_tags','#commentform .form-allowed-tags {display:block;}');
$b_c = aweaver_getopt('border_color'); //
if (!$b_c) $b_c = '#222';
$b_w = aweaver_getopt('border_width_int'); //
if (!$b_w) $b_w = 1;
aweaver_put_rule_if_checked($sout,'show_comment_borders', ".commentlist li.comment,#respond,.commentlist li.comment .comment-author img.avatar,.commentlist .comment.bypostauthor{border:{$b_w}px solid $b_c;}.commentlist li.comment .comment-meta{border-bottom:1px solid $b_c;}");
aweaver_put_rule_if_checked($sout,'hide_comment_bubble', '#comments-title h3{background-image:none;padding-left:0px;}');
aweaver_put_rule_if_checked($sout,'hide_comment_hr', 'hr.comments-hr {display:none;}');
aweaver_put_color($sout, 'comment_headings_color', '#comments-title h3, #comments-title h4, #respond h3' );
aweaver_put_bgcolor($sout, 'comment_content_bgcolor', '.commentlist li.comment, #respond' );
aweaver_put_bgcolor($sout,'comment_submit_bgcolor','#respond input#submit');
/* aweaver_tables */
$table = aweaver_getopt('aweaver_tables');
if ($table == 'wide') { // make backward compatible with 1.4 and before when Twenty Ten was default
aweaver_f_write($sout, sprintf("#content table {border: 1px solid #e7e7e7;margin: 0 -1px 24px 0;text-align: left;width: 100%%;}
#content tr th, #content thead th {color: #888;font-size: 12px;font-weight: bold;line-height: 18px;padding: 9px 24px;}
#content tr td {border-style:none; border-top: 1px solid #e7e7e7; padding: 6px 24px;}
#content tr.odd td {background: rgba(0,0,0,0.1);}\n"));
//aweaver_f_write($sout,"#content tr.odd td{background:transparent;}\n");
} elseif ($table == 'bold') {
aweaver_f_write($sout, sprintf("#content table {border: 2px solid #888;}
#content tr th, #content thead th {font-weight: bold;}
#content tr td {border: 1px solid #888;}\n"));
} elseif ($table == 'noborders') {
aweaver_f_write($sout, sprintf("#content table {border-style:none;}
#content tr th, #content thead th {font-weight: bold;border-bottom: 1px solid #888;background-color:transparent;}
#content tr td {border-style:none;}table,td,th{border:none}\n"));
} elseif ($table == 'fullwidth') {
aweaver_f_write($sout, sprintf("#content table {width:100%%;}
#content tr th, #content thead th {font-weight:bold;}\n"));
} elseif ($table == 'plain') {
aweaver_f_write($sout, sprintf(
"#content table {border: 1px solid #888;text-align:left;margin: 0 0 0 0;width:auto;}
#content tr th, #content thead th {color: inherit;background:none;font-weight:normal;line-height:normal;padding:4px;}
#content tr td {border: 1px solid #888; padding:4px;}\n"));
}
/* caption_color */
aweaver_put_color($sout,'caption_color','.wp-caption p.wp-caption-text, #content .gallery .gallery-caption,.entry-attachment .entry-caption, #content figure figcaption');
// =========================== POST SPECIFIC AREAS ===============================
aweaver_put_rule_if_checked($sout, 'show_comments_closed','.nocomments {display:block;}');
// single/post navigation links
aweaver_put_rule_if_checked($sout, 'nav_show_first','#nav-above{display:block;}'); // put this one first, so hide can override
aweaver_put_rule_if_checked($sout, 'nav_hide_above','#nav-above,.paged #nav-above{display:none;margin:0;}');
aweaver_put_rule_if_checked($sout, 'nav_hide_below','#nav-below{display:none;margin:0;}');
if (aweaver_getopt('single_nav_style') == 'hide' || aweaver_getopt_checked('single_nav_hide_above')) {
aweaver_f_write($sout,".single #nav-above{display:none;margin:0;}\n");
}
if (aweaver_getopt('single_nav_style') == 'hide' || aweaver_getopt_checked('single_nav_hide_below')) {
aweaver_f_write($sout,".single #nav-below{display:none;margin:0;}\n");
}
$nav = aweaver_getopt('nav_style'); // paged can take more than 50%
if ($nav == 'paged_left')
aweaver_f_write($sout,".nav-previous {width:95%;}\n");
if ($nav == 'paged_right')
aweaver_f_write($sout,".nav-next {width:95%;}\n");
aweaver_put_color($sout,'post_icons_color',
'.entry-meta-gicons .entry-date:before,.entry-meta-gicons .by-author:before,.entry-meta-gicons .cat-links:before,.entry-meta-gicons .tag-links:before,.entry-meta-gicons .comments-link:before,.entry-meta-gicons .permalink-icon:before');
aweaver_put_rule_if_checked($sout, 'post_hide_single_author','.single-author .entry-meta .by-author {display:none;}');
if ( ($val = aweaver_getopt_default('post_avatar_int',28)) != 28 ) {
aweaver_f_write($sout, '.post-avatar img {max-width:' . $val . "px;}\n");
}
// ============================== WIDGET AREAS ===================================
$val = aweaver_getopt('widgetlist_bullet');
if ($val != '' && $val != 'disc') {
aweaver_f_write($sout, sprintf(".widget ul {list-style-type:%s;}\n",$val));
}
// ================================== FONTS =====================================
// 0.0625 assumes standard default font size of 16
$font_size = aweaver_getopt( 'site_fontsize_int' );
if ( $font_size ) {
aweaver_f_write( $sout, sprintf("body{font-size:%.5fem;}\n",$font_size * 0.0625) );
}
$font_size = aweaver_getopt( 'site_fontsize_tablet_int' );
if ( $font_size ) {
aweaver_f_write( $sout, sprintf('body.is-smalltablet{font-size:%.5fem;}',$font_size * 0.0625) );
}
$font_size = aweaver_getopt( 'site_fontsize_phone_int' );
if ( $font_size ) {
aweaver_f_write( $sout, sprintf('body.is-phone{font-size:%.5fem;}',$font_size * 0.0625) );
}
if ( ( $site_h = aweaver_getopt( 'site_line_height_dec' )) ) {
aweaver_f_write( $sout, sprintf('body{line-height:%.5f;}', $site_h ) );
aweaver_f_write( $sout, sprintf('.widget-area{line-height:%.5f;}', ( $site_h * .85) ) );
}
$space = aweaver_getopt('font_letter_spacing_global_dec');
if ($space && $space != 0)
aweaver_f_write( $sout, sprintf("body{letter-spacing:%.5fem;}\n",$space) );
$space = aweaver_getopt('font_letter_spacing_global_dec');
if ($space && $space != 0)
aweaver_f_write( $sout, sprintf("body{word-spacing:%.5fem;}\n",$space) );
// ============================== CUSTOM OPTIONS =================================
if ( ($val = aweaver_getopt('custom_fontsize_a')) ) { /* Plus version */
aweaver_f_write($sout, '.customA-font-size{font-size:' . $val . 'em;}');
aweaver_f_write( $sout, sprintf('.customA-font-size-title{font-size:%.5fem;}', $val * 1.5 ) );
}
if ( ($val = aweaver_getopt('custom_fontsize_b')) ) {
aweaver_f_write($sout, '.customB-font-size{font-size:' . $val . 'em;}');
aweaver_f_write( $sout, sprintf('.customB-font-size-title{font-size:%.5fem;}', $val * 1.5 ) );
}
if ( ($val = aweaver_getopt('custom_shadow')) )
aweaver_f_write($sout, '.shadow-custom ' . aweaver_fix_braces($val) );
// ================================ AREAS ========================================
aweaver_put_bgcolor($sout,'body_bgcolor','body'); // start with the body colors/css+
aweaver_put_bgcolor($sout,'title_tagline_bgcolor','#title-tagline');
$menu_bars = array (
'm_primary' => '.menu-primary .wvrx-menu-container,.menu-primary .site-title-on-menu,.menu-primary .site-title-on-menu a',
'm_primary_sub' => '.menu-primary .wvrx-menu ul li a'
);
$menu_links_bg = array ( // xxx_link_bgcolor
'm_primary' => '.menu-primary .wvrx-menu > li > a'
);
$menu_links = array ( // color, _hover_color, _hover_bg_color
'm_primary' => '.menu-primary .wvrx-menu > li > a',
'm_primary_sub' => '.menu-primary .wvrx-menu ul li a'
);
$menu_detail = array ( /* can't use multiple selectors here! */
'm_primary' => '.menu-primary'
);
// =Menus ------------------------------------------------------------
foreach ($menu_bars as $id => $tag) {
aweaver_put_bgcolor( $sout, $id . '_bgcolor', $tag );
aweaver_put_color( $sout, $id . '_color', $tag );
}
foreach ($menu_links_bg as $id => $tag) {
aweaver_put_bgcolor( $sout, $id . '_link_bgcolor', $tag );
}
foreach ($menu_links as $id => $tag) {
aweaver_put_color( $sout, $id . '_color', $tag );
aweaver_put_color( $sout, $id . '_hover_color', $tag . ':hover', true );
if (aweaver_getopt('m_retain_hover') && strpos($id,'_sub') === false) {
$rule = str_replace('> li', 'li:hover',$tag);
aweaver_put_bgcolor( $sout, $id . '_hover_bgcolor', $rule, true);
} else {
aweaver_put_bgcolor( $sout, $id . '_hover_bgcolor', $tag . ':hover', true); // important to override current item bg
}
}
// menu logo height
$h = aweaver_getopt('m_primary_logo_height_dec');
if ( $h && $h != 0 ) {
aweaver_f_write($sout, sprintf('.menu-primary .custom-logo-on-menu img {height:%.5fem;}', $h));
}
$h = aweaver_getopt('header_logo_height_dec');
if ( $h && $h != 0 ) {
//aweaver_f_write($sout, sprintf('#site-title img.site-title-logo{max-height:%.5fem;height:100%%;width:100%%;padding-right:1%%;}', $h));
aweaver_f_write($sout, sprintf('#site-title img.site-title-logo {max-height:%dpx;}', $h));
}
foreach ($menu_detail as $id => $tag) {
aweaver_put_color( $sout, $id . '_color', $tag . ' .menu-toggle-button');
aweaver_put_color( $sout, $id . '_html_color', $tag . ' .wvrx-menu-html'); // Extra menu HTML Left/Right
$val = aweaver_getopt($id . '_html_margin_dec');
if ( $val ) {
aweaver_f_write($sout,sprintf($tag . " .wvrx-menu-html{margin-top:%.5fem;}\n",$val));
} else {
$font_size = aweaver_getopt($id . '_font_size'); // generate new top margin based on font_size
switch ( $font_size ) {
case 'xxs-font-size':
aweaver_f_write( $sout, $tag . " .wvrx-menu-html{margin-top:.375em;}\n" );
break;
case 'xs-font-size':
aweaver_f_write( $sout, $tag . " .wvrx-menu-html{margin-top:.425em;}\n" );
break;
case 's-font-size':
aweaver_f_write( $sout, $tag . " .wvrx-menu-html{margin-top:.5em;}\n" );
break;
case 'l-font-size':
aweaver_f_write( $sout, $tag . " .wvrx-menu-html{margin-top:.425em;}\n" );
break;
case 'xl-font-size':
aweaver_f_write( $sout, $tag . " .wvrx-menu-html{margin-top:.425em;}\n" );
break;
case 'xxl-font-size':
aweaver_f_write( $sout, $tag . " .wvrx-menu-html{margin-top:.425em;}\n" );
break;
default:
break;
}
}
// padding
$pad = aweaver_getopt($id . '_menu_bar_pad_dec');
if ( $pad )
aweaver_f_write($sout,sprintf("{$tag} .wvrx-menu-container{padding-top:%.5fem;padding-bottom:%.5fem;}\n",$pad,$pad));
$pad = aweaver_getopt($id . '_menu_pad_dec');
$dcolor = aweaver_getopt( $id . '_dividers_color' );
$rpad = aweaver_getopt( $id . '_right_padding_dec' );
$hide_arrows = aweaver_getopt( $id . '_hide_arrows');
aweaver_f_write($sout, "@media(min-width:768px) {\n"); // following are really .is-desktop. Note last align rule has closing }
if ($pad != '') {
aweaver_f_write($sout,sprintf("{$tag} .wvrx-menu a{padding-top:%.5fem;padding-bottom:%.5fem;}\n",$pad,$pad));
if ( $pad > 1.9 ) // arrows need adjustments - these are for Genericons
aweaver_f_write($sout,sprintf("{$tag} .menu-arrows .toggle-submenu:after{top:%.5fem;}\n", ($pad + 1.2)) );
else if ( $pad > 0.6 )
aweaver_f_write($sout,sprintf("{$tag} .menu-arrows .toggle-submenu:after{top:%.5fem;}\n", ($pad + 0.75)) );
else if ( $pad < 0.6 )
aweaver_f_write($sout,sprintf("{$tag} .menu-arrows .toggle-submenu:after{top:%.5fem;}\n", ($pad + 0.5)) );
}
// dividers
if ( $dcolor != '') {
aweaver_f_write( $sout, "{$tag} .wvrx-menu a{border-right:1px solid {$dcolor};}\n" );
aweaver_f_write( $sout, "{$tag} ul.wvrx-menu > li:first-child {border-left:1px solid {$dcolor};}\n" );
// only desktop?
aweaver_f_write( $sout, "{$tag} .wvrx-menu ul > li:first-child{border-top:1px solid {$dcolor};}\n" );
aweaver_f_write( $sout, "{$tag} .wvrx-menu ul a {border-top:none;border-left:none;border-right:none;border-bottom:1px solid {$dcolor};}\n" );
}
// menu padding - ADD space to end of menu item
if ( $rpad != '') {
$rpad_arrow = $rpad + 1.5;
$rpad_a = $rpad + 0.75;
aweaver_f_write( $sout, "{$tag} .wvrx-menu-container li a{padding-right:{$rpad_a}em;}\n" );
aweaver_f_write( $sout, "{$tag} .menu-hover.menu-arrows .has-submenu > a{padding-right:{$rpad_arrow}em;}\n" );
aweaver_f_write( $sout, "{$tag} .menu-arrows.menu-hover .toggle-submenu{margin-right:{$rpad}em;}\n" );
}
// menu margins
$mtop = aweaver_getopt($id . '_top_margin_dec');
$mbot = aweaver_getopt($id . '_bottom_margin_dec');
if ($mtop != '')
aweaver_f_write( $sout, "{$tag} .wvrx-menu-container{margin-top:{$mtop}px;}\n" );
if ($mbot != '') {
$align = aweaver_getopt( $id . '_align' ); // emit different code depending on align
if (strstr( $align, '-fixed') === false) // standard menu margin
aweaver_f_write( $sout, "{$tag} .wvrx-menu-container{margin-bottom:{$mbot}px;}\n" );
}
// Menu Arrows
if ( $hide_arrows ) {
aweaver_f_write($sout,
"{$tag} .menu-arrows .toggle-submenu:after{content:'';display:none;}\n");
//.is-deskotp {$tag} .wvrx-menu a span.sub-arrow:after{display:none;}\n");
if ($rpad == '')
aweaver_f_write($sout,
"{$tag} .menu-hover.menu-arrows .has-submenu > a {padding-right:0.75em;}\n" );
aweaver_f_write($sout,
"{$tag} .wvrx-menu a span.sub-arrow:after{display:none;}\n");
}
// special case - generate a .wvrx-menu text align for main menus to get rid of initial menu jumping
$align = aweaver_getopt_default( "{$id}_align" , 'left');
$align = str_replace( 'alignwide ', '', $align);
$align = str_replace( 'alignfull ', '', $align);
$lh = '';
if ( $align == 'center') // compensate for centered display:inline-block
$lh = 'line-height:0;';
aweaver_f_write($sout, "{$tag} .wvrx-menu,{$tag} .wvrx-menu-container{text-align:{$align};{$lh}}\n}\n"); // NOTE! Has @media close }
$color = aweaver_getopt( $id .'_color');
if ($color) {
aweaver_f_write($sout,
sprintf("{$tag} .menu-arrows .toggle-submenu:after{color:{$color};}\n"));
aweaver_f_write($sout,
sprintf("{$tag} .menu-arrows ul .toggle-submenu:after{color:{$color};}\n"));
aweaver_f_write($sout,
sprintf("{$tag} .menu-arrows.is-mobile-menu.menu-arrows ul a .toggle-submenu:after{color:{$color};}\n"));
}
$color = aweaver_getopt("{$id}_sub_color"); // sub-menu arrow takes special handling to override
if ( $color ) {
aweaver_f_write($sout, sprintf("{$tag} .menu-arrows ul .toggle-submenu:after{color:{$color};}\n"));
}
// alternative mobile menu arrow clickable
aweaver_put_bgcolor($sout, $id . '_clickable_bgcolor', "{$tag} .is-mobile-menu.menu-arrows .toggle-submenu");
}
// End of Menus
// ================================ MARGINS/PADDING/SMART WIDGETS ===================================
/*
*
.l-content {width:100%;}
.l-content-m {width:98%;margin-left:1%;margin-right:1%;}
.l-sb-left, .l-sb-right, .l-sb-left-split, .l-sb-right-split {width:25%;}
.l-sb-left-lm, .l-sb-right-lm, .l-sb-left-split-lm, .l-sb-right-split-lm {width:24%;margin-left:1%;}
.l-sb-left-rm, .l-sb-right-rm, .l-sb-left-split-rm, .l-sb-right-split-rm {width:24%;margin-right:1%;}
.l-widget-area-top, .l-widget-area-bottom {width:100%;}
*/
// smart -lm, -rm, -m : value is 'smart_margin_int'
$smart = aweaver_getopt_default( 'smart_margin_int', 1);
if ( $smart > 25 ) $smart = 1; // some sanity check
if ( $smart != 1 ) {
aweaver_f_write( $sout, '@media (min-width:768px) {');
for ( $i = 2 ; $i <= 8 ; $i++ ){
$w = ((99.9999 / $i) - $smart) + ($smart / $i); // 99.9999 just a little rounding fudge factor */
aweaver_f_write($sout, sprintf(".per-row-%d-m{width:%.5f%%;}", $i, $w ) );
}
aweaver_f_write( $sout, "}\n@media (min-width:581px) and (max-width:767px) { "); // small tablets
aweaver_f_write($sout, sprintf(".per-row-2-m.per-row-3-m.per-row-4-m,.per-row-5-m.per-row-6-m,.per-row-7-m,.per-row-8-m{width:%.5f%%;}", 49.999 - ($smart/2.0) ));
aweaver_f_write( $sout, "\n.m-widget-smart-rm aside{margin-right:{$smart}%;} }
.widget-smart-rm aside,.ie8 .smart-rm{margin-right:{$smart}%;}\n" ); // global
}
aweaver_sidebar_style( $sout ); // generate sidebar style
/* _bgcolor, _color : MUST BE AFTER OTHER AREA OPTIONS BECAUSE OF CSS+ */
$sb_areas = array (
'primary' => '#primary-widget-area',
'alt:primary' => '.widget-area-primary',
'secondary' => '#secondary-widget-area',
'alt:secondary' => '.widget-area-secondary',
'top' => '.widget-area-top',
'bottom' => '.widget-area-bottom',
'header' => '#header',
'header_html' => '#header-html',
'header_sb' => '#header-widget-area',
'alt:header_sb' => '.widget-area-header',
'footer' => '#colophon',
'footer_html' => '#footer-html',
'footer_sb' => '#footer-widget-area',
'alt:footer_sb' => '.widget-area-footer',
'content' => '#content',
'container' => '#container',
'infobar' => '#infobar',
'wrapper' => '#wrapper',
'post' => '.post-area',
'widget'=>'.widget'
);
foreach ($sb_areas as $area => $tag) {
$id = str_replace('alt:','',$area); // allow double rules
aweaver_put_bgcolor( $sout, $id . '_bgcolor', $tag );
aweaver_put_color( $sout, $id . '_color', $tag );
if ( $area == 'content' || $area == 'post') { // #content is % instead of px
aweaver_css_style_val($sout, $tag, '{padding-left:%.5f%%;}', $id . '_padding_L');
aweaver_css_style_val($sout, $tag, '{padding-right:%.5f%%;}', $id . '_padding_R');
} else {
aweaver_css_style_val($sout, $tag, '{padding-left:%dpx;}', $id . '_padding_L');
aweaver_css_style_val($sout, $tag, '{padding-right:%dpx;}',$id . '_padding_R');
}
aweaver_css_style_val($sout, $tag, '{padding-top:%dpx;}',$id . '_padding_T');
aweaver_css_style_val($sout, $tag, '{padding-bottom:%dpx;}', $id . '_padding_B');
aweaver_css_style_val($sout, $tag, '{margin-top:%dpx;}',$id . '_margin_T');
aweaver_css_style_val($sout, $tag, '{margin-bottom:%dpx;}', $id . '_margin_B');
}
$max_w_areas = array ( // special areas with px max-width andF extend bg color
'header' => '#header',
'footer' => '#colophon',
'container' => '#container',
'm_primary' => '.menu-primary'
);
foreach ( $max_w_areas as $id => $tag ) {
$w = aweaver_getopt( $id . '_max_width_int' );
if ( $w )
aweaver_f_write( $sout, "{$tag}" . "{max-width:{$w}px;}\n" );
if ( ( $xbg = aweaver_getopt( $id . '_extend_bgcolor' ) ) ) {
$cname = "{$tag}";
aweaver_f_write( $sout,
"{$cname}{position:relative;overflow:visible;}
{$cname}:before{content:'';position:absolute;top:0;bottom:0;left:-9998px;right:0;
border-left:9999px solid {$xbg};box-shadow:9999px 0 0 {$xbg};z-index:-1;}\n"
);
}
}
// custom widths for header, footer widget areas
$hf_sb = array ('_header_sb_' => '#header-widget-area', '_footer_sb_' => '#footer-widget-area',
'alt:_header_sb_' => '.widget-area-header', 'alt:_footer_sb_' => '.widget-area-footer',
'_primary_' => '#primary-widget-area', '_secondary_' => '#secondary-widget-area',
'alt:_primary_' => '.widget-area-primary', 'alt:_secondary_' => '.widget-area-secondary',
'_top_' => '.widget-area-top', '_bottom_' => '.widget-area-bottom' );
$hf_sb_w = array('lw_' => '@media (min-width:768px)', 'mw_' => '@media (min-width:581px) and (max-width:767px)', 'sw_' => '@media (max-width:580px)' );
foreach ( $hf_sb as $sbval => $area ) { // process each area with custom widget widths
foreach ($hf_sb_w as $sb_w => $media) { // process each device
$sb = str_replace( 'alt:','',$sbval); // Allow double rules
$list = trim( aweaver_getopt($sb . $sb_w . 'cols_list' ) );
if ( $list == '' )
continue;
$list = str_replace( '%', '', $list ); // kill %'s
$list = str_replace( ',', ' ', $list ); // change ,'s to blanks
$list = str_replace( ' ;', ';', $list ); // be sure the ; is right after the value
$list = str_replace( ';', '; ', $list ); // be sure have space after ;
$list = array_filter( explode(' ', $list), 'strlen' ); // explode list, filter null strings
if ( empty($list) )
continue;
aweaver_f_write($sout, "{$media} {\n" ); // wrap rules in media
$m = $smart;
if ( aweaver_getopt( substr( $sbval, 1 ) . 'no_widget_margins' ) ) // no margins? (fixed for 3.0, had wrong prefix)
$m = 0;
aweaver_f_write($sout, "{$area} .widget {float:left;margin-left:0;margin-right:0}\n"); // reset previous list margins
$clear = 'clear:both';
$i = 0;
foreach( $list as $val ) { // step through the list of values
$i++;
$w = str_replace(';', '', $val); // strip ;
$at_end = ($w != $val); // force end if was a ; before
if ( $w === '0' ) { // hide this widget
aweaver_f_write($sout, $area . ' .widget-' . $i . "{display:none;}\n" );
} else if ( $w ) {
if ( $at_end ) { // at end of row
aweaver_f_write($sout, sprintf("%s .widget-%d{width:%.5f%%;}\n", $area, $i, $w, $clear ) );
$clear = 'clear:both;';
} else {
aweaver_f_write($sout, sprintf("%s .widget-%d{width:%.5f%%;margin-right:%.5f%%;%s}\n", $area, $i, ($w-$m), $m, $clear) );
$clear = '';
}
}
}
aweaver_f_write( $sout, "}\n"); // end of @media wrap
} // end for each device type
} // end of each area
// ==================================== EXPAND & EXTEND BG TO FULL WIDTH ==================================
//--------------------- EXPAND & EXTEND BG Attributes CSS Rules Generation -------------------
//V2.1 post rules have the no sidebar slector, so Post page with Sidebar get done with script
//V2 Fixes missing padding rule; fixes wrong limited width formula; add mwarpper margin support is wrapper is set to border:box
// padding: _padding_L, _padding_R (px)
// width: _width_int (%) - 'width' => true means have _width_int + _max_width_int + _align
// max width in px: _max_width_int (px)
// align: _align
//----------------EXPAND Only rules -----------------------
if (aweaver_getopt('wrapper_fullwidth'))
aweaver_f_write($sout, '#wrapper{max-width:10000px;}');
//Expand fixedtop if header is expanded
if (aweaver_getopt_expand('expand_header'))
aweaver_f_write($sout, "#inject_fixedtop {left:0;max-width:none !important;width:calc(100vw - 16px) !important;}
.no-vert-scrollbar #inject_fixedtop {left:0;width:calc(100vw) !important;}\n");
//Expand fixedbottom if footer is expanded
if (aweaver_getopt_expand('expand_footer'))
aweaver_f_write($sout, "#inject_fixedbottom {left:0;max-width:none !important;width:calc(100vw - 16px) !important;}
.no-vert-scrollbar #inject_fixedbottom {left:0;width:calc(100vw) !important;}\n");
//------End of Expand only
// ARRAY DEFINITION: Includes Both Expand and Extend elements *** Only 5 sub areas with width% for Extend need to be marked width => true
$extend = array( // Areas with _extend_width and expand with option with only true on supporting sub areas for Extend
// Expand only Sub areas should all be width > false as you are not suppose to expand a limited width area
'header' => array('sel' => '#header', 'width' => false, 'xpad' => 'x'),
'header_sb' => array('sel' => '#header-widget-area', 'width' => true, 'xpad' => 'header'), // does not have _max_width_int, but can safely use 0
'header_html' => array('sel' => '#header-html', 'width' => true, 'xpad' => 'header'), // no _max_width_int
'm_primary' => array('sel' => '#nav-primary .wvrx-menu-container', 'width' => false, 'xpad' => 'header'), // padding: none?
//Header sub Areas for expand_only (all width > false)
'header-image' => array('sel' => '#header-image', 'width' => false, 'xpad' => 'header'),
'site_title' => array('sel' => '#title-tagline', 'width' => false, 'xpad' => 'header'),
'header-widget-area' => array('sel' => '#header-widget-area', 'width' => false, 'xpad' => 'header'), // should have the same name as extend name
'header-html' => array('sel' => '#header-html', 'width' => false, 'xpad' => 'header'), // should have the same name as extend name
'container' => array('sel' => '#container', 'width' => false, 'xpad' => 'x'),
'infobar' => array('sel' => '#infobar', 'width' => true, 'xpad' => 'container'),
'post' => array('sel' => '#content .post-area', 'width' => false, 'xpad' => 'container' ), // doesn't work with CSS for now, .post-area includes custom-post types
'footer' => array('sel' => '#colophon', 'width' => false, 'xpad' => 'x'),
'footer_sb' => array('sel' => '#footer-widget-area', 'width' => true, 'xpad' => 'footer'), // no _max_width_int
'footer_html' => array('sel' => '#footer-html', 'width' => true, 'xpad' => 'footer'), // no _max_width_int
//Footer sub areas for Expand only
'site-ig-wrap' => array('sel' => '#site-ig-wrap', 'width' => false, 'xpad' => 'footer'), // no _max_width_int
);
$inside_container = array('infobar', 'post');
$skip_container = array('container', 'infobar', 'post');
$skip_header = array('header', 'header_sb', 'header_html', 'header-html', 'm_primary', 'header-image', 'site_title', 'header-widget-area');
$skip_footer = array('footer', 'footer_sb', 'footer_html', 'site-ig-wrap');
$nest_header = ( aweaver_getopt_default('header_width_int',100) != 100 ||
( ($tmp = aweaver_getopt('header_max_width_int')) && $tmp < $themew ));
$nest_container = ( aweaver_getopt_default('container_width_int',100) != 100 ||
( ($tmp = aweaver_getopt('container_max_width_int')) && $tmp < $themew ));
$nest_footer = ( aweaver_getopt_default('footer_width_int',100) != 100 ||
( ($tmp = aweaver_getopt('footer_max_width_int')) && $tmp < $themew ));
// VARIABLES
$pre_css = ''; // Global css no @media
$xcss = ''; // Over sitewidth css
$media_css = ''; // between 580 and sitewidth css
$vis_container = '';
$vis_content = '';
// Changed: 3.1.11 - changed scroll bar width to 8px instead of 16. Firefox seems to have changed its width, and 8 works across most browsers
$w_view_scb = '(100vw - 8px) '; // Viewport width scrollbar
$w_view_noscb = '100vw '; // Viewport width No scrollbar
$m_wrap_scb = '(50vw - 4px - (' . $themew . 'px / 2)) '; // Margin wrapper scrollbar
$m_wrap_noscb = '(50vw - (' . $themew . 'px / 2)) '; // Margin wrapper no scrollbar
foreach ($extend as $opt => $vals) { // loop through all areas with expand/extend
if (aweaver_getopt_expand('expand_' . $opt) || aweaver_getopt($opt . '_extend_width')) {
// if parent has width limit, let script take over for all cases
// nested limited width areas too difficult to generate CSS, let script do it
if (($nest_header && in_array($opt, $skip_header)) ||
($nest_container && in_array($opt, $skip_container)) ||
($nest_footer && in_array($opt, $skip_footer)))
continue;
//--- COMPUTING VARIABLES ---
// VISIBILITY when $opt in inside container
if (in_array($opt, $inside_container))
$vis_container = '#container{overflow:visible !important;}';
if ($opt == 'post')
$vis_content = '#content,.content-page{overflow:visible !important;}';
// PADDING Calculations
$pad_left = '0';
$pad_right = '0';
$m_left = '0';
$m_right = '0'; // assume none
//Adding Wrapper paddings
$wrap_p_left = aweaver_getopt_default('wrapper_padding_L',0);
$wrap_p_right = aweaver_getopt_default('wrapper_padding_R',0);
// Handle padding of parents
$m_left = aweaver_getopt_default($vals['xpad'] . '_padding_L', 0);
$m_right = aweaver_getopt_default($vals['xpad'] . '_padding_R', 0);
// This areas own padding
$pad_left = aweaver_getopt_default($opt . '_padding_L', 0) + $m_left;
$pad_right = aweaver_getopt_default($opt . '_padding_R', 0) + $m_right;
//Footer specific calculations: Empty value for footer and footer widget area means 8
if ($vals['xpad'] == 'footer') {
$m_left = aweaver_getopt_default($vals['xpad'] . '_padding_L', 8);
$m_right = aweaver_getopt_default($vals['xpad'] . '_padding_R', 8);
}
if (($opt == 'footer') || ($opt == 'footer_sb')) {
$pad_left = aweaver_getopt_default($opt . '_padding_L', 8) + $m_left;
$pad_right = aweaver_getopt_default($opt . '_padding_R', 8) + $m_right;
}
$pad_left .= 'px';
$pad_right .= 'px';
$m_left .= 'px';
$m_right .= 'px'; // these expressions must end up with units
$wrap_p_left .= 'px';
$wrap_p_right .= 'px';
// *** Small section was moved up a bit as it applies to ALL posts or no posts
$align_left = '';
$align_right = '';
$width = '';
// dont need to compute max-with in pixel, none of the sub areas use it, nor is $min-width used anymore
if ($vals['width']) { // if option has width options
$width = aweaver_getopt($opt . '_width_int');
if ($width != 0) {
if (aweaver_getopt($opt . '_max_width_int') != 0) // if both width and max-width set, let script do it.
continue; // skip this one, continue loop
$widthval = $width / 100; //*** retain the strict value for calculations later
$width = $width . '%';
}
}
//------------------------------------------------------ Post Specifics Section ----------------------------------------------------
$important = '';
if ($opt == 'post') { // CASE: post
// *** This is a complete duplicate of the general loop for clarity
// *** so If changes are made in the rules of the general loop, they need to be also made to the post specific one
$not_safari = '.wvrx-not-safari'; // no spaces for posts
if (aweaver_getopt_default('blog_cols',1) > 1 )
continue; // bail to JS on multi column
$no_sdb = ".weaverx-sb-one-column "; // No sidebar selector so rules do not apply to post pages with sidebars
$cnt_left = aweaver_getopt_default('content_padding_L', 2); // also add in #content padding (in %) if extending post
$cnt_right = aweaver_getopt_default('content_padding_R', 2);
// post paddings are in %, needed to redo value
$pad_left = aweaver_getopt_default($opt . '_padding_L', 0) . '%' . ' + ' . $m_left;
$pad_right = aweaver_getopt_default($opt . '_padding_R', 0) . '%' . ' + ' . $m_left;
// *** Building the various content padding Converting them in px or viewport units so the value is right when placed in post rules
// _x for values above site-width; _scb values Under site width with scrollbar; _noscb values under site width with no scrollbar
$cnt_pad_l_x = '0px';
$cnt_pad_r_x = '0px';
$cnt_pad_l_noscb = '0px';
$cnt_pad_r_noscb = '0px';
$cnt_pad_l_scb = '0px';
$cnt_pad_r_scb = '0px';
//Content padding % is computed against width(wrapper or browser) - wrapper paddings - container paddings
$wrap_pad_all = aweaver_getopt_default('wrapper_padding_L',0) + aweaver_getopt_default('wrapper_padding_R',0);
$cont_pad_all = aweaver_getopt_default('container_padding_L',0) + aweaver_getopt_default('container_padding_R',0);
if ($cnt_left != 0) {
// *** Content padding above sitewidth (convert to pixel value)
$cnt_pad_l_x = ($cnt_left / 100) * ($themew - $wrap_pad_all - $cont_pad_all) . 'px';
// *** Content padding below sitewidth (convert to viewport units)
$cnt_pad_l_noscb = "(" . $cnt_left / 100 . " * (100vw - " . $wrap_pad_all . "px - " . $cont_pad_all . "px))";
$cnt_pad_l_scb = "(" . $cnt_left / 100 . " * (100vw - 16px - " . $wrap_pad_all . "px - " . $cont_pad_all . "px))";
}
if ($cnt_right != 0) {
// *** Content padding above sitewidth (convert to pixel value)
$cnt_pad_r_x = ($cnt_right / 100) * ($themew - $wrap_pad_all - $cont_pad_all) . 'px';
// *** Content padding below sitewidth (convert to viewport units)
$cnt_pad_r_noscb = "(" . $cnt_right / 100 . " * (100vw - " . $wrap_pad_all . "px - " . $cont_pad_all . "px))";
$cnt_pad_r_scb = "(" . $cnt_right / 100 . " * (100vw - 16px - " . $wrap_pad_all . "px - " . $cont_pad_all . "px))";
}
//============================================================== POST SPECIFIC RULES =========================================================
$pre_css .= "{$not_safari}{$no_sdb}{$vals['sel']}{box-sizing:border-box;}\n"; //*** Needs to be in pre-css to work below site width width area padding
//--- EXPAND & EXTEND COMMON RULES ---
// pre_css General width Rules for ALL. Adds margins rules for padding bug fix. Need calc around margin for post mix of % and px
// Margins in these apply under sitewidth as other rules will override above sitewidth
// *** Add specific content padding for below sitewidth with and without scrollbar ( _scb or _noscb)
$pre_css .= "{$not_safari}{$no_sdb}{$vals['sel']}{max-width:none {$important};width:calc{$w_view_scb} {$important};margin-left: calc(-1 * ({$m_left} + {$cnt_pad_l_scb}) - {$wrap_p_left});margin-right: calc(-1 * ({$m_right} + {$cnt_pad_r_scb}) - {$wrap_p_right});}\n";
$pre_css .= "{$not_safari}.no-vert-scrollbar{$no_sdb} {$vals['sel']}{width:{$w_view_noscb} {$important};margin-left: calc(-1 * ({$m_left} + {$cnt_pad_l_noscb}) - {$wrap_p_left});margin-right: calc(-1 * ({$m_right} + {$cnt_pad_r_noscb}) - {$wrap_p_right});}\n";
// xcss Expand margin Rules For ALL when over sitewidth ( _x )
// *** Add Specific Content paddings for below sitewidth with and without scrollbar
$xcss .= "{$not_safari}{$no_sdb}{$vals['sel']} {margin-left:calc(-1 * {$m_wrap_scb} - {$wrap_p_left} - {$m_left} - {$cnt_pad_l_x});margin-right:calc(-1 * {$m_wrap_scb} - {$wrap_p_right} - {$m_right} - {$cnt_pad_r_x});}\n";
$xcss .= "{$not_safari}.no-vert-scrollbar{$no_sdb} {$vals['sel']} {margin-left:calc(-1 * {$m_wrap_noscb} - {$wrap_p_left} - {$m_left} - {$cnt_pad_l_x});margin-right:calc(-1 * ({$m_wrap_noscb}) - {$wrap_p_right} - {$m_right} - {$cnt_pad_r_x});}\n";
//--- EXTEND ONLY RULES ---
//--- pre_css General Padding rules
// These apply when under sitewidth (above other rules override)
// *** Add the content padding for below sitewidth with and without scrollbar ( _scb or _noscb)
if (aweaver_getopt($opt . '_extend_width')) {
$pre_css .= "{$not_safari}{$no_sdb}{$vals['sel']}{padding-left:calc({$wrap_p_left} + {$cnt_pad_l_scb} + {$pad_left}{$align_left}); padding-right:calc({$wrap_p_right} + {$cnt_pad_r_scb} + {$pad_right}{$align_right});}\n";
$pre_css .= "{$not_safari}.no-vert-scrollbar{$no_sdb} {$vals['sel']}{padding-left:calc({$wrap_p_left} + {$cnt_pad_l_noscb} + {$pad_left}{$align_left}); padding-right:calc({$wrap_p_right} + {$cnt_pad_r_noscb} + {$pad_right}{$align_right});}\n";
}
// xcss GENERAL Rules for Extended Areas when wider than sitewidth
// *** Add The content padding for above sitewidth ( _x )
if (aweaver_getopt($opt . '_extend_width')) {
$xcss .= "{$not_safari}{$no_sdb}{$vals['sel']}{padding-left:calc({$m_wrap_scb} + {$wrap_p_left} + {$cnt_pad_l_x} + {$pad_left}{$align_left});padding-right:calc({$m_wrap_scb} + {$wrap_p_right} + {$cnt_pad_r_x} + {$pad_right}{$align_right});}\n";
$xcss .= "{$not_safari}.no-vert-scrollbar{$no_sdb} {$vals['sel']}{padding-left:calc({$m_wrap_noscb} + {$wrap_p_left} + {$cnt_pad_l_x} + {$pad_left}{$align_left}); padding-right:calc({$m_wrap_noscb} + {$wrap_p_right} + {$cnt_pad_r_x} + {$pad_right}{$align_right});}\n";
}
} // End of Post Specific case ===================================================================
else { // CASE anything but posts #############################################################
//--- EXPAND & EXTEND COMMON RULES ---
$not_safari = '.wvrx-not-safari '; // space after for others
// pre_css General width Rules for ALL. **Adds margins rules for padding bug fix. **Need calc around margin for post mix of % and px
$pre_css .= "{$not_safari}{$vals['sel']}{max-width:none {$important};width:calc{$w_view_scb} {$important};margin-left: calc(-1 * ({$m_left}) - {$wrap_p_left});margin-right: calc(-1 * ({$m_right}) - {$wrap_p_right});}\n";
$pre_css .= ".wvrx-not-safari.no-vert-scrollbar {$vals['sel']}{width:{$w_view_noscb}{$important};}\n";
// xcss Expand margin Rules For ALL when over sitewidth
$xcss .= "{$not_safari}{$vals['sel']} {margin-left:calc(-1 * {$m_wrap_scb} - {$wrap_p_left} - {$m_left});margin-right:calc(-1 * {$m_wrap_scb} - {$wrap_p_right} - {$m_right});}\n";
$xcss .= ".wvrx-not-safari.no-vert-scrollbar {$vals['sel']} {margin-left:calc(-1 * {$m_wrap_noscb} - {$wrap_p_left} - {$m_left});margin-right:calc(-1 * ({$m_wrap_noscb}) - {$wrap_p_right} - {$m_right});}\n";
//--- EXTEND ONLY RULES ---
//--- pre_css General Padding rules
if (aweaver_getopt($opt . '_extend_width')) {
$pre_css .= "{$not_safari}{$vals['sel']}{padding-left:calc({$wrap_p_left} + {$pad_left}{$align_left}); padding-right:calc({$wrap_p_right} + {$pad_right}{$align_right});}\n";
}
// media_css SPECIALIZED Padding Rules for Limited width Sub Areas between 580px and sitewidth. ***Revised formula!
if ($width && aweaver_getopt($opt . '_extend_width')) {
$align = aweaver_getopt($opt . '_align');
$themew_less_one = $themew - 1;
// *** the rules below had a useless no-vert-scrolbar rules.
// *** The padding rules in this section do not contain viewport units so do not need a no-scrollbar version
switch ( $align ) {
case 'center':
$align_left = " + (100% - {$width}) / 2";
$align_right = $align_left; // center = same
//Centered Padding rules corrected
$media_css .= "{$not_safari}{$vals['sel']}{padding-left:calc({$wrap_p_left} + {$pad_left}{$align_left}); padding-right:calc({$wrap_p_right} + {$pad_right}{$align_right});}\n";
break;
case 'float-right':
$align_left = " + 100% - {$width}"; // fix up the left side
//Left padding rules
$media_css .= "{$not_safari}{$vals['sel']}{padding-left:calc({$wrap_p_left} + {$pad_left}{$align_left});}\n";
break;
default: // left
$align_right = " + 100% - {$width}"; // fix up the right side
//Right PAdding rules
$media_css .= "{$not_safari}{$vals['sel']}{padding-right:calc({$wrap_p_right} + {$pad_right}{$align_right});}\n";
break;
}
}
// xcss GENERAL Rules for Extended Areas when wider than sitewidth
if (aweaver_getopt($opt . '_extend_width')) {
$xcss .= "{$not_safari}{$vals['sel']}{padding-left:calc({$m_wrap_scb} + {$wrap_p_left} + {$pad_left}{$align_left});padding-right:calc({$m_wrap_scb} + {$wrap_p_right} + {$pad_right}{$align_right});}\n";
$xcss .= ".wvrx-not-safari.no-vert-scrollbar {$vals['sel']}{padding-left:calc({$m_wrap_noscb} + {$wrap_p_left} + {$pad_left}{$align_left}); padding-right:calc({$m_wrap_noscb} + {$wrap_p_right} + {$pad_right}{$align_right});}\n";
}
} // // end else CASE anything but posts ===================================================================
} // end if extended/expanded
} // end of foreach
//--- WRAP and WRITE CSS ---
if ($xcss) { // put generated content inside @media (themewidth)
$xcss = "{$vis_container}{$vis_content}\n@media (min-width:{$themew}px) {\n{$xcss} }\n";
}
if ($media_css) { // put generated content inside @media (580px-themewidth)
$media_css = "{$vis_container}{$vis_content}\n@media (min-width:580px) and (max-width:{$themew_less_one}px) {\n{$media_css} }\n";
}
aweaver_f_write($sout, "\n/* ** Expand/extend ** */\n" . $pre_css );
aweaver_f_write($sout, $xcss );
aweaver_f_write($sout, $media_css . " /* /EE */\n");
//----------------------End of EXPAND & EXTEND BG Attributes--------------------
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ END OF EXPAND & EXTEND BG TO FULL WIDTH ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// ================================ COLORS ===================================
// Colors need to go last because they might have CSS +
$titles = array(
'site_title' => '.wrapper #site-title a,.wrapper .site-title a',
'tagline' => '#site-tagline > span,.site-tagline > span',
'page_title' => '.page-title',
'post_title' => '.wrapper .post-title',
'archive_title' => '.archive-title',
'widget_title' => '.widget-title',
'm_header_mini' => '#nav-header-mini',
'content_h' => '.entry-content h1,.entry-content h2,.entry-content h3,.entry-content h4,.entry-content h5,.entry-content h6',
);
foreach ( $titles as $title => $rule ) {
aweaver_put_bgcolor($sout, $title . '_bgcolor', $rule );
// bar under some titles
if ( ( $val = (int)aweaver_getopt($title . '_underline_int') ) ) {
$titleColor = aweaver_getopt($title . '_color');
if ($titleColor == '' || $titleColor == 'inherit') $titleColor = aweaver_getopt('content_color'); // content_color, etc, colors are generated by $area . '_color'
if ($titleColor == ''|| $titleColor == 'inherit') $titleColor = aweaver_getopt('container_color');
if ($titleColor == ''|| $titleColor == 'inherit') $titleColor = aweaver_getopt('wrapper_color');
if ($titleColor == ''|| $titleColor == 'inherit') $titleColor = '#222'; /* if they want a border, this is the fallback color */
aweaver_f_write($sout, sprintf($rule . "{border-bottom: {$val}px solid {$titleColor};}\n"));
}
if ( $title == 'content_h') { // these aren't handled by adding a style
aweaver_put_rule_if_checked($sout, $title . '_normal', $rule . '{font-weight:normal !important;}'); // not bold?
$val = aweaver_getopt($title . '_italic');
if ($val == 'on')
aweaver_f_write($sout, "{$rule}{font-style:italic;}\n" );
else if ($val == 'off')
aweaver_f_write($sout, "{$rule}{font-style:normal;}\n" );
}
if ( $title == 'post_title' || $title == 'm_header_mini') // stupid special cases because want the bg to work right ...
$rule = $rule . ' a,' . $rule . ' a:visited';
aweaver_put_color($sout, $title . '_color', $rule );
}
aweaver_put_color($sout, 'post_title_hover_color','.wrapper .post-title a:hover');
aweaver_put_color($sout, 'm_header_mini_hover_color','#nav-header-mini a:hover');
$val = aweaver_getopt('m_header_mini_top_margin_dec' );
if ( $val != '' )
aweaver_f_write( $sout, sprintf("#nav-header-mini{margin-top:%.5fem}\n",$val ) );
aweaver_put_bgcolor($sout,'stickypost_bgcolor', '.blog .sticky');
aweaver_put_bgcolor($sout,'post_author_bgcolor','#author-info');
aweaver_put_bgcolor($sout,'hr_color','hr');
aweaver_put_bgcolor($sout,'post_info_top_bgcolor','.entry-meta');
aweaver_put_color($sout,'post_info_top_color','.entry-meta');
aweaver_put_bgcolor($sout,'post_info_bottom_bgcolor','.entry-utility');
aweaver_put_color($sout,'post_info_bottom_color','.entry-utility');
aweaver_put_bgcolor($sout,'input_bgcolor','input,textarea');
aweaver_put_color($sout,'input_color','input,textarea');
// ==================== SEARCH =====================
aweaver_put_bgcolor($sout,'search_bgcolor','.search-field,#header-search .search-field:focus,.menu-search .search-field:focus');
aweaver_put_color($sout,'search_color','.search-field, #header-search .search-field:focus');
$search_areas = array ( /* search box icon color */
'primary' => '#primary-widget-area',
'secondary' => '#secondary-widget-area',
'm_primary' => '.menu-primary .wvrx-menu-container',
'top' => '.widget-area-top',
'bottom' => '.widget-area-bottom',
'header_sb' => '.widget-area-header',
'footer' => '#colophon',
'footer_sb' => '.widget-area-footer',
'content' => '#content',
'container' => '#container',
'infobar' => '#infobar',
'wrapper' => '#wrapper',
'widget'=>'.widget'
);
foreach ($search_areas as $area => $tag) {
aweaver_put_color( $sout, $area . '_color', $tag . ' .search-form .search-submit');
}
aweaver_put_color( $sout, 'header_color', '#header-search .search-form::before');
aweaver_put_elementor_colors( $sout );
// =============================== TITLES ==================================
// injection area bg colors
$htmls = array ('preheader', 'header', 'prewrapper', 'container_top', 'postinfobar',
'precontent', 'postpostcontent', 'precomments', 'pagecontentbottom',
'postcomments', 'prefooter', 'postfooter', 'presidebar',
'fixedtop', 'fixedbottom', 'postheader'
);
foreach ( $htmls as $val) { // includes areas from Absolute Weaver Plus, too.
$prefix = ($val == 'postpostcontent') ? '.' : '#';
aweaver_put_bgcolor($sout,'inject_' . $val . '_bgcolor', $prefix . 'inject_' . $val);
}
if ( ( $val = aweaver_getopt('post_title_bottom_margin_dec') ) ) {
aweaver_f_write( $sout, ".post-title{margin-bottom:{$val}em;}\n" );
}
aweaver_f_write( $sout, "#inject_fixedtop,#inject_fixedbottom,.wvrx-fixedtop,.wvrx-fixonscroll{max-width:{$themew}px;}\n" );
aweaver_f_write( $sout, ".ie8 #inject_fixedtop,.ie8 #inject_fixedbottom,.ie8 .wvrx-fixedtop,.ie8 .wvrx-fixonscroll{max-width:{$themew}px;}\n" );
// Set position when browser below site-width
aweaver_f_write( $sout, "@media (max-width:{$themew}px) {.wvrx-fixedtop,.wvrx-fixonscroll,#inject_fixedtop,#inject_fixedbottom {left:0px;margin-left:0 !important;margin-right:0 !important;}}\n");
//----------------FIXED TOP Positionning rules --------------------------
//V1.1 Adds correction of the FixedTop areas when the Header has limited width (please review the code for correctness!)
//Margin adjustment needed for Fixed areas when header/footer are not Expanded
//Adjust Fixed areas margins for wrapper and header padding so they are properly aligned with the edges of the Site
//Without these negative margins, if there are paddings on the wrapper or the header, fixed top areas inside with be shifted
$hdpadl = aweaver_getopt_default('header_padding_L', 0);
$hdpadr = aweaver_getopt_default('header_padding_R', 0);
$wrpadl = aweaver_getopt_default('wrapper_padding_L', 0);
$wrpadr = aweaver_getopt_default('wrapper_padding_R', 0);
$allpadl = $hdpadl + $wrpadl;
$allpadr = $hdpadr + $wrpadr;
//Adding the unit and sign in a different variable as limited width calculations need the one without sign and unit
$allpadl_x = - $allpadl . 'px'; //Default values if no header width reduction
$allpadr_x = - $allpadr . 'px'; //Default values if no header width reduction
//limited header calculations
//These are only for when browser is wider than sitewidth. Below that, they are left:0 positionned with existing rules
$align = aweaver_getopt_default('header_align','left');
$width = aweaver_getopt_default('header_width_int',100);
$max_width = aweaver_getopt_default('header_max_width_int',0);
$reduct = ($themew - ($width / 100) * ($themew - $wrpadl - $wrpadr)) . 'px' ; // This is the width reduction when browser is larger than sitewidth
//!! We cant support both a width% and max-width at the same time, it would be way too complicated.
// Depending which one of if($width) or if($max_width) is last below, it will be the winning one (revert order between if($width) and if($max_width))
switch ($align) {
case 'center': // Centered case
if ( $width ) {
$allpadl_x = "calc(0px - {$hdpadl}px - {$reduct} / 2)";
$allpadr_x = "calc(0px - {$hdpadr}px - {$reduct} / 2)";
} elseif ( $max_width ) {
$allpadl_x = - $allpadl - ($themew - $wrpadl - $wrpadr - $max_width) / 2 . 'px';
$allpadr_x = - $allpadr - ($themew - $wrpadl - $wrpadr - $max_width) / 2 . 'px';
}
break;
case 'float-right': // Aligned right case
if ( $width ) {
$allpadl_x = "calc({$wrpadl}px - {$hdpadl}px - {$reduct})";
} elseif ( $max_width ) {
$allpadl_x = -$allpadl - ($themew - $wrpadl - $wrpadr - $max_width) . 'px';
}
break;
default: // Aligned left case
if ( $width ) {
$allpadr_x = "calc({$wrpadr}px - {$hdpadr}px - {$reduct})";
} elseif( $max_width ) {
$allpadr_x = -$allpadr - ($themew - $wrpadl - $wrpadr - $max_width) . 'px';
}
break;
}
// Rules for TOP Fixed Areas
if ( !aweaver_getopt_expand('expand_header') ) {
aweaver_f_write( $sout, "@media (min-width:{$themew}px) {
#inject_fixedtop {margin-left:-{$wrpadl}px;margin-right:-{$wrpadr}px}
.wvrx-fixedtop,.wvrx-fixonscroll{margin-left:{$allpadl_x};margin-right:{$allpadr_x}}
}\n");
}
// Rules for BOTTOM Fixed areas
if ( !aweaver_getopt_expand('expand_footer') ) {
aweaver_f_write( $sout, "@media (min-width:{$themew}px) {
#inject_fixedbottom {margin-left:-{$wrpadl}px;margin-right:-{$wrpadr}px}
}\n");
}
//------------------ End of Fixed Top Positioning rles ----------------------
// ================================ END RULES ===================================
// These rules need to be at the end
if (aweaver_getopt('_print_show_widgets')) {
aweaver_f_write( $sout, "@media print { /* print widget areas */
.widget-area{border:1px solid black !important;display:block !important; margin:.5em auto .75em auto !important;padding:.5em !important;width:98%!important;}
#colophon{border:1px solid black !important;display:block !important;margin:1em !important;padding:.5em !important;width:100% !important;}
.widget{margin-bottom:.75em !important;}
#primary-widget-area,#secondary-widget-area{float:left !important;width:48% !important;margin-left:2% !important;}
#footer-widget-area.widget-area{width:100% !important;margin:0 !important;}}\n");
}
// ================================ PRO AREAS ===================================
do_action('aweaverplus_css', $sout);
// need to handle inline code generation a bit differently for the customizer. In normal mode, we put all the generated
// CSS in one \n");
aweaver_f_write($sout, "\n\n");
$add_css = aweaver_getopt('add_css');
aweaver_f_write($sout, "\n\n"); // don't need - the standard is generated later
} else { // standard site - only output CSS if really there
if ($wvrx_css_plus != '') {
aweaver_f_write($sout, "\n/* CSS+ Rules */\n");
aweaver_f_write($sout, $wvrx_css_plus);
}
$add_css = aweaver_getopt('add_css');
if (!empty($add_css)) {
aweaver_f_write($sout, "\n/* Global Custom CSS Rules */\n");
aweaver_f_write($sout, apply_filters('aweaver_css',$add_css) );
}
}
aweaver_f_write($sout, "\n/* End Absolute Weaver CSS */\n");
} // end aweaver_output_style
//-----------------------------------------------------------------------------------------
// ************************************ SUPPORT FUNCTIONS **************************
function aweaver_css_style($sout, $name, $style) {
/* output a css rule style (include {}'s in style) */
if ($style == '' || !$name)
return;
aweaver_f_write($sout, "$name $style\n");
}
function aweaver_css_style_val($sout, $name, $style, $opt) {
/* output a css rule style with one value (include {}'s in style) */
$val = aweaver_getopt($opt);
if ($val == '' || $val === false || !$style || !$name)
return;
aweaver_f_write($sout, sprintf("$name $style\n",$val));
}
//--
function aweaver_fix_braces( $val ) {
$fix = str_replace( '{', '', $val );
$fix = str_replace( '}', '', $fix );
return '{' . $fix . '}';
}
//--
function aweaver_sidebar_style( $sout, $override = 0 ) {
// allow per page sidebar width overrides
$smart = aweaver_getopt_default( 'smart_margin_int', 1);
if ( $smart > 25 ) $smart = 1; // some sanity check
if ( ! $override ) {
$l_sb_w = aweaver_getopt_default('left_sb_width_int', '25');
$r_sb_w = aweaver_getopt_default('right_sb_width_int', '25');
$ls_sb_w = aweaver_getopt_default('left_split_sb_width_int', '25');
$rs_sb_w = aweaver_getopt_default('right_split_sb_width_int', '25');
} else {
$l_sb_w = $override; // using per page override - forces symmetrical split, but that's better than nothing
$r_sb_w = $override;
$ls_sb_w = $override;
$rs_sb_w = $override;
}
// emit code for .is-desktop to resize widget areas (need .is-desktop to make IE8 work on free or in-line CSS)
// Version 2.0.10 change: Because of significant degradation of desktop refresh using .is-desktop for these rules,
// they are now wrapped with the @media for desktops. This means that full support for non-default (non-25%) sidebars
// on the desktop is no longer supportd for IE8. Instead, we allow IE8 to gracefully degrade to only showing default widths.
// All the rules between the @media }{} formerly had .is-desktop leading each rule. These have been removed.
aweaver_f_write($sout,"@media screen and (min-width:768px) {\n");
if ( $r_sb_w != 25 || $smart != 1 || $override ) { // changed right sidebar width (or smart width)
$cw = 100 - $r_sb_w;
$cw_m = $cw - $smart;
$r_sb_m = $r_sb_w - $smart;
aweaver_f_write($sout, sprintf(".l-content-rsb{width:%.5f%%;}.l-content-rsb-m{width:%.5f%%;margin-right:%.5f%%;}
.l-sb-right{width:%.5f%%;}.l-sb-right-lm{width:%.5f%%;margin-left:%.5f%%;}.l-sb-right-rm {width:%.5f%%;margin-right:%.5f%%;}\n",
$cw, $cw_m, $smart, $r_sb_w, $r_sb_m, $smart, $r_sb_m, $smart ));
}
if ( $l_sb_w != 25 || $smart != 1 || $override ) { // changed left sidebar width
$cw = 100 - $l_sb_w;
$cw_m = $cw - $smart;
$l_sb_m = $l_sb_w - $smart;
aweaver_f_write($sout, sprintf(".l-content-lsb{width:%.5f%%;}.l-content-lsb-m{width:%.5f%%;margin-left:%.5f%%;}
.l-sb-left{width:%.5f%%;}.l-sb-left-lm{width:%.5f%%;margin-left:%.5f%%;}.l-sb-left-rm {width:%.5f%%;margin-right:%.5f%%;}\n",
$cw, $cw_m, $smart, $l_sb_w, $l_sb_m, $smart, $l_sb_m, $smart ));
}
if ( $ls_sb_w != 25 || $rs_sb_w != 25 || $smart != 1 || $override ) { // changed a split width
$cw = 100 - $ls_sb_w - $rs_sb_w;
$lsb_margin = $cw + $rs_sb_w;
$cw_l_m = $ls_sb_w + $smart;
$cw_m = $cw - $smart - $smart;
$l_m = $ls_sb_w - $smart;
$r_m = $rs_sb_w - $smart;
aweaver_f_write($sout,
sprintf(".l-sb-right-split{width:%.5f%%}\n",$rs_sb_w) .
sprintf(".l-sb-right-split-lm{width:%.5f%%;margin-left:%.5f%%;}\n", $rs_sb_w - $smart, $smart ) .
sprintf(".l-content-ssb{width:%.5f%%;margin-left:%.5f%%;}\n", $cw, $ls_sb_w ) .
sprintf(".l-content-ssb-m{width:%.5f%%;margin-left:%.5f%%;margin-right:%.5f%%;}\n", $cw - $smart - $smart, $ls_sb_w + $smart, $smart) .
sprintf(".l-content-ssbs{width:%.5f%%;}\n",$cw) .
sprintf(".l-content-ssbs-m{width:%.5f%%;margin-left:%.5f%%;margin-right:%.5f%%;}\n", $cw - $smart - $smart, $smart, $smart) .
sprintf(".l-sb-left-split{margin-left:-%.5f%%;width:%.5f%%}\n", 100 - $rs_sb_w, $ls_sb_w) .
sprintf(".l-sb-left-split-top{width:%.5f%%}\n", $ls_sb_w) .
sprintf(".l-sb-left-split-rm{margin-left:-%.5f%%;width:%.5f%%}\n", 100 - $rs_sb_w, $ls_sb_w-$smart) .
sprintf(".l-sb-left-split-top-rm {margin-right:%.5f%%;width:%.5f%%;}\n",$smart, $ls_sb_w-$smart));
}
aweaver_f_write($sout,"}\n");
if ( ! $override ) {
$sb_horizontal_areas = array (
'top' => '.widget-area-top',
'bottom' => '.widget-area-bottom',
'container' => '#container',
'footer' => '#colophon',
'footer_html' => '#footer-html',
'footer_sb' => '#footer-widget-area',
'alt:footer_sb' => '.widget-area-footer',
'header' => '#header',
'header_html' => '#header-html',
'header_sb' => '#header-widget-area',
'alt:header_sb' => '.widget-area-header',
'infobar' => '#infobar'
);
foreach ( $sb_horizontal_areas as $id => $tag ) { // horizontal area widths
$id = str_replace('alt:','',$id);
$w = aweaver_getopt( $id . '_width_int' );
$ltag = str_replace('.', '.l-',$tag);
if ($w === 0 || $w === '0') // detects 0 rather than false
aweaver_f_write( $sout, "{$ltag}{width:auto;}\n"); // changed to 100%: version 2.0.10
elseif ($w > 0)
aweaver_f_write( $sout, "{$ltag}{width:{$w}%;}.is-phone {$ltag}{width:100%}\n"); // changed to 100%: version 2.0.10
}
}
}
//--
function aweaver_put_link($sout,$id, $a, $ahover) {
aweaver_put_color($sout,$id.'_color',$a);
aweaver_put_color($sout,$id.'_hover_color',$ahover);
aweaver_put_rule_if_checked($sout, $id . '_u',$a . '{text-decoration:underline;}'); // link
$hover_ul = aweaver_getopt( $id . '_u_h' ); // hover underline?
if ( $hover_ul ) {
aweaver_f_write($sout, "{$ahover}{text-decoration:underline;}\n" );
if ( $id == 'link' )
aweaver_f_write($sout, ".wvrx-menu-container a:hover, #nav-header-mini a:hover{text-decoration:none;}\n" );
}
$val = aweaver_getopt($id . '_em');
if ($val == 'on')
aweaver_f_write($sout, "{$a}{font-style:italic;}\n" );
else if ($val == 'off')
aweaver_f_write($sout, "{$a}{font-style:normal;}\n" );
$val = aweaver_getopt($id . '_strong');
if ($val == 'on')
aweaver_f_write($sout, "{$a}{font-weight:bold;}\n" );
else if ($val == 'off')
aweaver_f_write($sout, "{$a}{font-weight:normal;}\n" );
}
//--
function aweaver_put_bgcolor($sout, $opt, $tag, $important = false ) {
// put bgcolor and CSS+
$imp = ($important) ? ' !important' : '';
if (($color = aweaver_getopt($opt)) && $color != 'inherit') {
if (strpos($color,'rgba') === false) { // regular color
aweaver_f_write($sout, sprintf("$tag {background-color:{$color}{$imp};}\n"));
} else { // rgba - so create IE8 compatible version as well
$argb = aweaver_rgba2argb($color);
$split = explode(',', $tag);
$ie8 = '';
foreach ($split as $id) {
if ($ie8 != '') {
$ie8 .= ',';
}
$ie8 .= '.ie8 ' . $id;
}
if (strpos($opt,'menubar') !== false || ($opt[0] == 'm' && $opt[1] == '_') ) { // menus don't work with transparent bg in IE 7/8
$bgcss = 'background-color:#' . substr($argb,3) . ';'; // use the non-transparent color provided
} else {
// reset background for IE
$bgcss = 'background-color:transparent;'."\n";
// Filters for IE:
$bgcss .= '-ms-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='.$argb.',endColorstr='.$argb.');'."\n";
$bgcss .= 'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='.$argb.',endColorstr='.$argb.');'."\n";
$bgcss .= 'zoom:1 !important;';
}
aweaver_f_write($sout, sprintf("$ie8 { $bgcss }\n"));
aweaver_f_write($sout, sprintf("$tag {background-color:$color{$imp};}\n")); // the standard value
}
}
aweaver_put_css_plus( $sout, $opt, $tag );
}
//--
function aweaver_rgba2argb($rgba_in) {
// convert rgba(1,2,3,.4) to #aarrggbb
if (strpos($rgba_in,'rgba') === false)
return $rgba_in;
$rgb = $rgba_in;
$rgb = str_replace('rgba','',$rgb); // eliminate the rgba() and spaces
$rgb = str_replace('(','',$rgb);
$rgb = str_replace(')','',$rgb);
$rgb = str_replace(' ','',$rgb);
list($r,$g,$b,$a) = explode(',',$rgb); // retrieve the rgba values
$a = intval($a * 255.);
$r = intval($r);
$g = intval($g);
$b = intval($b);
$hex = "#";
$hex .= str_pad(dechex($a), 2, "0", STR_PAD_LEFT);
$hex .= str_pad(dechex($r), 2, "0", STR_PAD_LEFT);
$hex .= str_pad(dechex($g), 2, "0", STR_PAD_LEFT);
$hex .= str_pad(dechex($b), 2, "0", STR_PAD_LEFT);
return $hex;
}
//--
function aweaver_put_color($sout, $id, $tag, $important = false) {
// put color and CSS+
if (($color = aweaver_getopt( $id )) && $color != 'inherit') {
if ($important)
aweaver_f_write($sout, sprintf("$tag {color:$color !important;}\n"));
else
aweaver_f_write($sout, sprintf("$tag {color:$color;}\n"));
}
aweaver_put_css_plus( $sout, $id, $tag );
}
function aweaver_put_css_plus( $sout, $id, $tag ) {
if ( ($style = aweaver_getopt($id . '_css')) ) {
global $wvrx_css_plus;
$prefix = '';
$suffix = '';
if (is_customize_preview()) { // Generate a rule that can be easily modified in the DOM
$prefix = "/*-=:{$id}_css:=-*/";
$suffix = "/*-:{$id}_css:-*/";
}
if ( strpos( $style, '%selector') !== false ) { // user is using $selectors
$tags = explode(',', $tag );
foreach ( $tags as $selector ) {
$replaced = str_replace( '%selector%', trim( $selector ), $style);
$wvrx_css_plus .= apply_filters( 'aweaver_css', sprintf( "%s%s %s%s\n", $prefix, $selector, $replaced,$suffix ));
//aweaver_f_write( $sout, apply_filters( 'aweaver_css', sprintf( "%s%s %s%s\n", $selector, $replaced ) ) );
}
} else {
$wvrx_css_plus .= apply_filters( 'aweaver_css', sprintf( "%s%s %s%s\n", $prefix,$tag, $style,$suffix ) );
// aweaver_f_write( $sout, apply_filters( 'aweaver_css', sprintf( "%s %s\n", $tag, $style ) ) );
}
}
}
function aweaver_put_rule_if_checked($sout, $id, $rule) {
// put just a rule if checked
if (aweaver_getopt_checked($id)) {
aweaver_f_write($sout, $rule . "\n");
}
}
function aweaver_put_rule_if_not_checked($sout, $id, $rule) {
// put just a rule if not checked
if (!aweaver_getopt_checked($id)) {
aweaver_f_write($sout, $rule . "\n");
}
}
function aweaver_put_elementor_colors( $sout ) {
/* generate CSS to override Elementor styling */
$color_1 = aweaver_getopt('elementor_primary_color');
$color_2 = aweaver_getopt('elementor_secondary_color');
$color_3 = aweaver_getopt('elementor_text_color');
$color_4 = aweaver_getopt('elementor_accent_color');
/* PRIMARY COLOR */
if ($color_1) {
aweaver_f_write($sout,
"/*PRIMARY*/.elementor-widget-heading .elementor-heading-title{color:{$color_1};}
.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:{$color_1};}
.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:{$color_1};border-color:{$color_1};}
.elementor-widget-image-box .elementor-image-box-content .elementor-image-box-title{color:{$color_1};}
.elementor-widget-icon.elementor-view-stacked .elementor-icon{background-color:{$color_1};}
.elementor-widget-icon.elementor-view-framed .elementor-icon, .elementor-widget-icon.elementor-view-default .elementor-icon{color:{$color_1};border-color:{$color_1};}
.elementor-widget-icon-box.elementor-view-stacked .elementor-icon{background-color:{$color_1};}
.elementor-widget-icon-box.elementor-view-framed .elementor-icon, .elementor-widget-icon-box.elementor-view-default .elementor-icon{color:{$color_1};border-color:{$color_1};}
.elementor-widget-icon-box .elementor-icon-box-content .elementor-icon-box-title{color:{$color_1};}
.elementor-widget-icon-list .elementor-icon-list-icon i{color:{$color_1};}
.elementor-widget-counter .elementor-counter-number-wrapper{color:{$color_1};}
.elementor-widget-progress .elementor-progress-wrapper .elementor-progress-bar{background-color:{$color_1};}
.elementor-widget-progress .elementor-title{color:{$color_1};}
.elementor-widget-testimonial .elementor-testimonial-name{color:{$color_1};}
.elementor-widget-tabs .elementor-tab-title{color:{$color_1};}
.elementor-widget-accordion .elementor-accordion .elementor-tab-title{color:{$color_1};}
.elementor-widget-toggle .elementor-toggle .elementor-tab-title{color:{$color_1};}
" );
}
/* SECONDARY COLOR */
if ($color_2) aweaver_f_write($sout,
"/*SECONDARY*/.elementor-widget-icon-list .elementor-icon-list-text{color:{$color_2};}
.elementor-widget-counter .elementor-counter-title{color:{$color_2};}
.elementor-widget-testimonial .elementor-testimonial-job{color:{$color_2};}
");
/* TEXT COLOR */
if ($color_3) aweaver_f_write($sout,
"/*TEXT*/.elementor-widget-image .widget-image-caption{color:{$color_3};}
.elementor-widget-text-editor{color:{$color_3};}
.elementor-widget-divider .elementor-divider-separator{border-top-color:{$color_3};}
.elementor-widget-image-box .elementor-image-box-content .elementor-image-box-description{color:{$color_3};}
.elementor-widget-icon-box .elementor-icon-box-content .elementor-icon-box-description{color:{$color_3};}
.elementor-widget-icon-list .elementor-icon-list-item:not(:last-child):after{border-top-color:{$color_3};}
.elementor-widget-testimonial .elementor-testimonial-content{color:{$color_3};}
.elementor-widget-tabs .elementor-tab-content{color:{$color_3};}
.elementor-widget-accordion .elementor-accordion .elementor-tab-content{color:{$color_3};}
.elementor-widget-toggle .elementor-toggle .elementor-tab-content{color:{$color_3};}
" );
/* ACCENT COLOR */
$accent_color = '';
if ($color_4) aweaver_f_write($sout,
"/*ACCENT*/.elementor-widget-button a.elementor-button, .elementor-widget-button .elementor-button{background-color:{$color_4};}
.elementor-widget-tabs .elementor-tab-title.elementor-active{color:{$color_4};}
.elementor-widget-accordion .elementor-accordion .elementor-tab-title.elementor-active{color:{$color_4};}
.elementor-widget-toggle .elementor-toggle .elementor-tab-title.elementor-active{color:{$color_4};}
");
}
?>