Esempio n. 1
0
 /**
  * @param array $args
  * @param array $instance
  */
 function widget($args, $instance)
 {
     if (empty($instance['template'])) {
         return;
     }
     if (is_admin()) {
         return;
     }
     $template = $instance['template'];
     $query_args = $instance;
     unset($query_args['template']);
     unset($query_args['additional']);
     unset($query_args['sticky']);
     unset($query_args['title']);
     $query_args = wp_parse_args($instance['additional'], $query_args);
     global $wp_query;
     $query_args['paged'] = $wp_query->get('paged');
     switch ($instance['sticky']) {
         case 'ignore':
             $query_args['ignore_sticky_posts'] = 1;
             break;
         case 'only':
             $query_args['post__in'] = get_option('sticky_posts');
             break;
         case 'exclude':
             $query_args['post__not_in'] = get_option('sticky_posts');
             break;
     }
     global $post;
     if (!empty($post) && !siteorigin_panels_lite_is_home()) {
         // Exclude the current post to prevent possible infinite loop
         if (!empty($query_args['post__not_in'])) {
             $query_args['post__not_in'][] = $post->ID;
         } else {
             $query_args['post__not_in'] = array($post->ID);
         }
     }
     // Create the query
     query_posts($query_args);
     echo $args['before_widget'];
     $instance['title'] = apply_filters('widget_title', $instance['title'], $instance, $this->id_base);
     if (!empty($instance['title'])) {
         echo $args['before_title'] . $instance['title'] . $args['after_title'];
     }
     if (strpos('/' . $instance['template'], '/content') !== false) {
         while (have_posts()) {
             the_post();
             locate_template($instance['template'], true, false);
         }
     } else {
         locate_template($instance['template'], true, false);
     }
     echo $args['after_widget'];
     // Reset everything
     wp_reset_query();
     wp_reset_postdata();
 }
Esempio n. 2
0
/**
 * Echo the CSS for the current panel
 *
 * @action wp_print_styles
 */
function siteorigin_panels_lite_css()
{
    if (!siteorigin_panels_lite_is_home()) {
        return;
    }
    $layouts = apply_filters('siteorigin_panels_prebuilt_layouts', array());
    if (empty($layouts[siteorigin_panels_lite_setting('home-page-default')])) {
        return;
    }
    $panels_data = $layouts[siteorigin_panels_lite_setting('home-page-default')];
    $panels_data = apply_filters('siteorigin_panels_data', $panels_data, 'home');
    // Exit if we don't have panels data
    if (empty($panels_data)) {
        return;
    }
    $settings = siteorigin_panels_lite_setting();
    $panels_mobile_width = $settings['mobile-width'];
    $panels_margin_bottom = $settings['margin-bottom'];
    $css = array();
    $css[1920] = array();
    $css[$panels_mobile_width] = array();
    // This is a mobile resolution
    // Add the grid sizing
    $ci = 0;
    foreach ($panels_data['grids'] as $gi => $grid) {
        $cell_count = intval($grid['cells']);
        for ($i = 0; $i < $cell_count; $i++) {
            $cell = $panels_data['grid_cells'][$ci++];
            if ($cell_count > 1) {
                $css_new = 'width:' . round($cell['weight'] * 100, 3) . '%';
                if (empty($css[1920][$css_new])) {
                    $css[1920][$css_new] = array();
                }
                $css[1920][$css_new][] = '#pgc-home-' . $gi . '-' . $i;
            }
        }
        // Add the bottom margin to any grids that aren't the last
        if ($gi != count($panels_data['grids']) - 1) {
            $css[1920]['margin-bottom: ' . $panels_margin_bottom . 'px'][] = '#pg-home-' . $gi;
        }
        if ($cell_count > 1) {
            if (empty($css[1920]['float:left'])) {
                $css[1920]['float:left'] = array();
            }
            $css[1920]['float:left'][] = '#pg-home-' . $gi . ' .panel-grid-cell';
        }
        if ($settings['responsive']) {
            // Mobile Responsive
            $mobile_css = array('float:none', 'width:auto');
            foreach ($mobile_css as $c) {
                if (empty($css[$panels_mobile_width][$c])) {
                    $css[$panels_mobile_width][$c] = array();
                }
                $css[$panels_mobile_width][$c][] = '#pg-home-' . $gi . ' .panel-grid-cell';
            }
            for ($i = 0; $i < $cell_count; $i++) {
                if ($i != $cell_count - 1) {
                    $css_new = 'margin-bottom:' . $panels_margin_bottom . 'px';
                    if (empty($css[$panels_mobile_width][$css_new])) {
                        $css[$panels_mobile_width][$css_new] = array();
                    }
                    $css[$panels_mobile_width][$css_new][] = '#pgc-home-' . $gi . '-' . $i;
                }
            }
        }
    }
    if ($settings['responsive']) {
        // Add CSS to prevent overflow on mobile resolution.
        $panel_grid_css = 'margin-left: 0 !important; margin-right: 0 !important;';
        $panel_grid_cell_css = 'padding: 0 !important;';
        if (empty($css[$panels_mobile_width][$panel_grid_css])) {
            $css[$panels_mobile_width][$panel_grid_css] = array();
        }
        if (empty($css[$panels_mobile_width][$panel_grid_cell_css])) {
            $css[$panels_mobile_width][$panel_grid_cell_css] = array();
        }
        $css[$panels_mobile_width][$panel_grid_css][] = '.panel-grid';
        $css[$panels_mobile_width][$panel_grid_cell_css][] = '.panel-grid-cell';
    }
    // Add the bottom margin
    $bottom_margin = 'margin-bottom: ' . $panels_margin_bottom . 'px';
    $bottom_margin_last = 'margin-bottom: 0 !important';
    if (empty($css[1920][$bottom_margin])) {
        $css[1920][$bottom_margin] = array();
    }
    if (empty($css[1920][$bottom_margin_last])) {
        $css[1920][$bottom_margin_last] = array();
    }
    $css[1920][$bottom_margin][] = '.panel-grid-cell .panel';
    $css[1920][$bottom_margin_last][] = '.panel-grid-cell .panel:last-child';
    // This is for the side margins
    $magin_half = $settings['margin-sides'] / 2;
    $side_margins = "margin: 0 -{$magin_half}px 0 -{$magin_half}px";
    $side_paddings = "padding: 0 {$magin_half}px 0 {$magin_half}px";
    if (empty($css[1920][$side_margins])) {
        $css[1920][$side_margins] = array();
    }
    if (empty($css[1920][$side_paddings])) {
        $css[1920][$side_paddings] = array();
    }
    $css[1920][$side_margins][] = '.panel-grid';
    $css[1920][$side_paddings][] = '.panel-grid-cell';
    /**
     * Filter the unprocessed CSS array
     */
    $css = apply_filters('siteorigin_panels_css', $css);
    // Build the CSS
    $css_text = '';
    krsort($css);
    foreach ($css as $res => $def) {
        if (empty($def)) {
            continue;
        }
        if ($res < 1920) {
            $css_text .= '@media (max-width:' . $res . 'px)';
            $css_text .= ' { ';
        }
        foreach ($def as $property => $selector) {
            $selector = array_unique($selector);
            $css_text .= implode(' , ', $selector) . ' { ' . $property . ' } ';
        }
        if ($res < 1920) {
            $css_text .= ' } ';
        }
    }
    echo '<style type="text/css">';
    echo $css_text;
    echo '</style>';
}
Esempio n. 3
0
/**
 *
 */
function siteorigin_panels_lite_css()
{
    if (!siteorigin_panels_lite_is_home()) {
        return;
    }
    $layouts = apply_filters('siteorigin_panels_prebuilt_layouts', array());
    if (empty($layouts[siteorigin_panels_lite_setting('home-page-default')])) {
        return;
    }
    $panels_data = $layouts[siteorigin_panels_lite_setting('home-page-default')];
    $panels_data = apply_filters('siteorigin_panels_data', $panels_data, 'home');
    ?>
<style type="text/css"><?php 
    echo siteorigin_panels_lite_generate_css('home', $panels_data);
    ?>
</style><?php 
}