/** * return all styles from all elements */ public function generate_element_css($demo = false) { $base = new Essential_Grid_Base(); $allowed_wrap_styles = Essential_Grid_Item_Element::get_allowed_styles_for_wrap(); $wait_for_styles = Essential_Grid_Item_Element::get_wait_until_output_styles(); echo '<!-- ESSENTIAL GRID SKIN CSS -->' . "\n"; if (!empty($this->layers_css)) { foreach ($this->layers_css as $layers_css) { if (!empty($layers_css['idle'])) { echo '<style type="text/css">'; $css = ''; foreach ($layers_css['idle'] as $class => $settings) { $wait = array(); $forbidden = array(); if (!empty($this->add_css_wrap) && isset($this->add_css_wrap[$class])) { $forbidden = $allowed_wrap_styles; } //write hover only if no tag inside the text exists $d_i = $layers_css['settings'][$class]['important']; //add important or not $position_found = false; if (!empty($settings)) { $settings = $this->clean_up_styles($settings); $css .= '.' . $class . ' {' . "\n"; foreach ($settings as $style => $value) { $jump_next = false; foreach ($wait_for_styles as $k => $wf) { //check if we wait until end to write style, depending on what setting the other styles have if (in_array($style, $wf['wait'])) { $wait[$k][] = array($style, $value); $jump_next = true; } } if ($jump_next) { continue; } if (!in_array($style, $forbidden)) { $css .= ' ' . $style . ': ' . stripslashes($value) . $d_i . ';' . "\n"; } if ($style == 'position') { $position_found = true; } } if (!$position_found) { $css .= ' position: relative;' . "\n"; } $css .= ' z-index: 2 !important;' . "\n"; if (!empty($this->add_css_wrap) && isset($this->add_css_wrap[$class]) && isset($this->add_css_wrap[$class]['a']) && $this->add_css_wrap[$class]['a']['display'] == true) { $css .= ' display: block;' . "\n"; } if (!empty($wait)) { foreach ($wait as $wait_for => $wait_styles) { if (isset($settings[$wait_for])) { if (is_array($wait_for_styles[$wait_for]['not-if'])) { $do_continue = false; foreach ($wait_for_styles[$wait_for]['not-if'] as $wf) { if (strpos($settings[$wait_for], $wf) !== false) { $do_continue = true; break; } } if ($do_continue) { continue; } } else { if ($settings[$wait_for] === $wait_for_styles[$wait_for]['not-if']) { continue; } } foreach ($wait_styles as $ww) { if (!in_array($ww[0], $forbidden)) { $css .= ' ' . $ww[0] . ': ' . stripslashes($ww[1]) . $d_i . ';' . "\n"; } } } } } $css .= '}' . "\n"; } } echo $base->compress_css($css); echo '</style>' . "\n"; } if (!empty($layers_css['hover'])) { echo '<style type="text/css">'; $css = ''; foreach ($layers_css['hover'] as $class => $settings) { if (!empty($this->add_css_tags) && isset($this->add_css_tags[$class])) { continue; } //write hover only if no tag inside the text exists $wait = array(); $d_i = $layers_css['settings'][$class]['important']; //add important or not if (!empty($settings)) { $settings = $this->clean_up_styles($settings); $css .= '.' . $class . ':hover {' . "\n"; foreach ($settings as $style => $value) { $jump_next = false; foreach ($wait_for_styles as $k => $wf) { //check if we wait until end to write style, depending on what setting the other styles have if (in_array($style, $wf['wait'])) { $wait[$k][] = array($style, $value); $jump_next = true; } } if ($jump_next) { continue; } $css .= ' ' . $style . ': ' . stripslashes($value) . $d_i . ';' . "\n"; } if (!empty($wait)) { foreach ($wait as $wait_for => $wait_styles) { if (isset($settings[$wait_for]) && $settings[$wait_for] !== $wait_for_styles[$wait_for]['not-if']) { if (is_array($wait_for_styles[$wait_for]['not-if'])) { $do_continue = false; foreach ($wait_for_styles[$wait_for]['not-if'] as $wf) { if (strpos($settings[$wait_for], $wf) !== false) { $do_continue = true; break; } } if ($do_continue) { continue; } } else { if ($settings[$wait_for] === $wait_for_styles[$wait_for]['not-if']) { continue; } } foreach ($wait_styles as $ww) { $css .= ' ' . $ww[0] . ': ' . stripslashes($ww[1]) . $d_i . ';' . "\n"; } } } } $css .= '}' . "\n"; } } echo $base->compress_css($css); echo '</style>' . "\n"; } //check for custom css on tags if (!empty($this->add_css_tags)) { $allowed_styles = Essential_Grid_Item_Element::get_allowed_styles_for_tags(); foreach ($this->add_css_tags as $class => $tags) { if (!empty($layers_css['idle'][$class])) { // we write the idle styles $d_i = $layers_css['settings'][$class]['important']; //add important or not foreach ($tags as $tag => $do) { echo '<style type="text/css">'; $css = ''; $css .= '.' . $class . ' ' . $tag . ' {' . "\n"; $layers_css['idle'][$class] = $this->clean_up_styles($layers_css['idle'][$class]); foreach ($layers_css['idle'][$class] as $style => $value) { if (in_array($style, $allowed_styles)) { $css .= ' ' . $style . ': ' . stripslashes($value) . $d_i . ';' . "\n"; } } $css .= '}' . "\n"; echo $base->compress_css($css); echo '</style>' . "\n"; } } if (!empty($layers_css['hover'][$class])) { // we write the hover styles $d_i = $layers_css['settings'][$class]['important']; //add important or not foreach ($tags as $tag => $do) { echo '<style type="text/css">'; $css = ''; $css .= '.' . $class . ' ' . $tag . ':hover {' . "\n"; $layers_css['hover'][$class] = $this->clean_up_styles($layers_css['hover'][$class]); foreach ($layers_css['hover'][$class] as $style => $value) { if (in_array($style, $allowed_styles)) { $css .= ' ' . $style . ': ' . stripslashes($value) . $d_i . ';' . "\n"; } } $css .= '}' . "\n"; echo $base->compress_css($css); echo '</style>' . "\n"; } } } } //check for custom css on wrappers for example if (!empty($this->add_css_wrap)) { $allowed_cat_tag_styles = Essential_Grid_Item_Element::get_allowed_styles_for_cat_tag(); foreach ($this->add_css_wrap as $class => $tags) { if (!empty($layers_css['idle'][$class])) { // we write the idle styles $d_i = $layers_css['settings'][$class]['important']; //add important or not foreach ($tags as $tag => $do) { echo '<style type="text/css">'; $css = ''; $css .= '.' . $class . '-' . $tag . ' {' . "\n"; $position_found = false; if (!empty($this->add_css_wrap) && isset($this->add_css_wrap[$class]) && isset($this->add_css_wrap[$class]['a']) && $this->add_css_wrap[$class]['a']['full'] == true) { // set more styles (used for cat & tag list) $allowed_styles = array_merge($allowed_cat_tag_styles, $allowed_wrap_styles); } else { $allowed_styles = $allowed_wrap_styles; } $layers_css['idle'][$class] = $this->clean_up_styles($layers_css['idle'][$class]); foreach ($layers_css['idle'][$class] as $style => $value) { if (in_array($style, $allowed_styles)) { $css .= ' ' . $style . ': ' . stripslashes($value) . $d_i . ';' . "\n"; if ($style == 'position') { $position_found = true; } } } if (!$position_found) { $css .= ' position: relative;' . "\n"; } $css .= '}' . "\n"; echo $base->compress_css($css); echo '</style>' . "\n"; } } } } } } if (!empty($this->media_css)) { foreach ($this->media_css as $skin_id => $media_css) { if (!empty($media_css)) { echo '<style type="text/css">'; $css = ''; $handle = $this->loaded_skins[$skin_id]['handle']; $css .= '.eg-' . esc_attr($handle) . '-wrapper .esg-entry-media-wrapper {' . "\n"; $media_css = $this->clean_up_styles($media_css); foreach ($media_css as $style => $value) { $css .= ' ' . $style . ': ' . stripslashes($value) . ';' . "\n"; // !important; } $css .= '}' . "\n"; echo $base->compress_css($css); echo '</style>' . "\n"; } } } if (!empty($this->cover_css)) { foreach ($this->cover_css as $skin_id => $cover_css) { if (!empty($cover_css)) { echo '<style type="text/css">'; $css = ''; $handle = $this->loaded_skins[$skin_id]['handle']; $css .= '.eg-' . esc_attr($handle) . '-container {' . "\n"; $cover_css = $this->clean_up_styles($cover_css); foreach ($cover_css as $style => $value) { $css .= ' ' . $style . ': ' . stripslashes($value) . ';' . "\n"; // !important; } $css .= '}' . "\n"; echo $base->compress_css($css); echo '</style>' . "\n"; } } } if (!empty($this->content_css)) { foreach ($this->content_css as $skin_id => $content_css) { if (!empty($content_css)) { echo '<style type="text/css">'; $css = ''; $handle = $this->loaded_skins[$skin_id]['handle']; $css .= '.eg-' . esc_attr($handle) . '-content {' . "\n"; $content_css = $this->clean_up_styles($content_css); foreach ($content_css as $style => $value) { $css .= ' ' . $style . ': ' . stripslashes($value) . ';' . "\n"; // !important } $css .= '}' . "\n"; echo $base->compress_css($css); echo '</style>' . "\n"; } } } if (!empty($this->wrapper_css)) { foreach ($this->wrapper_css as $skin_id => $wrapper_css) { if (!empty($wrapper_css)) { echo '<style type="text/css">'; $css = ''; $handle = $this->loaded_skins[$skin_id]['handle']; $css .= '.esg-grid .mainul li.eg-' . esc_attr($handle) . '-wrapper {' . "\n"; $wrapper_css = $this->clean_up_styles($wrapper_css); foreach ($wrapper_css as $style => $value) { $css .= ' ' . $style . ': ' . stripslashes($value) . ';' . "\n"; // !important if ($style == 'overflow') { $css .= '-webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC) !important;' . "\n"; } } $css .= '}' . "\n"; echo $base->compress_css($css); echo '</style>' . "\n"; } } } echo '<!-- ESSENTIAL GRID END SKIN CSS -->' . "\n\n"; //check if post has custom settings for all elements //if($demo == false) // $this->output_element_css_by_meta(); }