'.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};} "); } ?>