<?php

$install_url = siteorigin_panels_lite_plugin_activation_install_url();
$home = get_theme_mod('siteorigin_panels_home_page_enabled', siteorigin_panels_lite_setting('home-page-default'));
$toggle_url = wp_nonce_url(admin_url('admin-ajax.php?action=panels_lite_toggle&panels_new=' . ($home ? 0 : 1)), 'toggle_panels_home');
?>
<div class="wrap" id="panels-home-page">
	<div id="icon-index" class="icon32"><br></div>
	<h2>
		<?php 
esc_html_e('Custom Home Page', 'vantage');
?>

		<a id="panels-toggle-switch" href="<?php 
echo esc_url($toggle_url);
?>
" class="state-<?php 
echo $home ? 'on' : 'off';
?>
 subtle-move">
			<div class="on-text"><?php 
_e('ON', 'vantage');
?>
</div>
			<div class="off-text"><?php 
_e('OFF', 'vantage');
?>
</div>
			<img src="<?php 
echo get_template_directory_uri();
?>
Ejemplo n.º 2
0
/**
 * Renders the home page if we need it.
 */
function siteorigin_panels_lite_home_render()
{
    $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');
    // Create the skeleton of the grids
    $grids = array();
    foreach ($panels_data['grids'] as $gi => $grid) {
        $gi = intval($gi);
        $grids[$gi] = array();
        for ($i = 0; $i < $grid['cells']; $i++) {
            $grids[$gi][$i] = array();
        }
    }
    foreach ($panels_data['widgets'] as $widget) {
        $grids[intval($widget['info']['grid'])][intval($widget['info']['cell'])][] = $widget;
    }
    ob_start();
    foreach ($grids as $gi => $cells) {
        $grid_classes = array('panel-grid');
        $grid_classes = apply_filters('siteorigin_panels_row_classes', $grid_classes);
        $grid_classes = array_map('esc_attr', $grid_classes);
        ?>
<div class="<?php 
        echo implode(' ', $grid_classes);
        ?>
" id="pg-<?php 
        echo 'home-' . $gi;
        ?>
"><?php 
        if (!empty($panels_data['grids'][$gi]['style'])) {
            ?>
<div class="panel-row-style <?php 
            echo esc_attr('panel-row-style-' . $panels_data['grids'][$gi]['style']);
            ?>
"><?php 
        }
        foreach ($cells as $ci => $widgets) {
            $cell_classes = apply_filters('siteorigin_panels_row_cell_classes', array('panel-grid-cell'));
            $cell_classes = array_map('esc_attr', $cell_classes);
            ?>
<div class="<?php 
            echo implode(' ', $cell_classes);
            ?>
" id="pgc-<?php 
            echo 'home-' . $gi . '-' . $ci;
            ?>
"><?php 
            foreach ($widgets as $pi => $widget_info) {
                $data = $widget_info;
                unset($data['info']);
                siteorigin_panels_lite_the_widget($widget_info['info']['class'], $data, $gi, $ci, $pi, $pi == 0, $pi == count($widgets) - 1);
            }
            if (empty($widgets)) {
                echo '&nbsp;';
            }
            ?>
</div><?php 
        }
        ?>
</div><?php 
        if (!empty($panels_data['grids'][$gi]['style'])) {
            ?>
</div><?php 
        }
    }
    $html = ob_get_clean();
    return apply_filters('siteorigin_panels_render', $html, 'home', null);
}
Ejemplo n.º 3
0
/**
 * @param string $post_id
 *
 * @return mixed|void
 */
function siteorigin_panels_lite_home_render($post_id = 'home')
{
    if (empty($post_id)) {
        $post_id = get_the_ID();
    }
    global $siteorigin_panels_current_post;
    $old_current_post = $siteorigin_panels_current_post;
    $siteorigin_panels_current_post = $post_id;
    // Try get the cached panel from in memory cache.
    global $siteorigin_panels_cache;
    if (!empty($siteorigin_panels_cache) && !empty($siteorigin_panels_cache[$post_id])) {
        return $siteorigin_panels_cache[$post_id];
    }
    // Load the default layout
    $layouts = apply_filters('siteorigin_panels_prebuilt_layouts', array());
    $prebuilt_id = siteorigin_panels_lite_setting('home-page-default') ? siteorigin_panels_lite_setting('home-page-default') : 'home';
    $panels_data = !empty($layouts[$prebuilt_id]) ? $layouts[$prebuilt_id] : current($layouts);
    $panels_data = apply_filters('siteorigin_panels_data', $panels_data, $post_id);
    if (empty($panels_data) || empty($panels_data['grids'])) {
        return '';
    }
    // Create the skeleton of the grids
    $grids = array();
    if (!empty($panels_data['grids']) && !empty($panels_data['grids'])) {
        foreach ($panels_data['grids'] as $gi => $grid) {
            $gi = intval($gi);
            $grids[$gi] = array();
            for ($i = 0; $i < $grid['cells']; $i++) {
                $grids[$gi][$i] = array();
            }
        }
    }
    // We need this to migrate from the old $panels_data that put widget meta into the "info" key instead of "panels_info"
    if (!empty($panels_data['widgets']) && is_array($panels_data['widgets'])) {
        foreach ($panels_data['widgets'] as $i => $widget) {
            if (empty($panels_data['widgets'][$i]['panels_info'])) {
                $panels_data['widgets'][$i]['panels_info'] = $panels_data['widgets'][$i]['info'];
                unset($panels_data['widgets'][$i]['info']);
            }
        }
    }
    if (!empty($panels_data['widgets']) && is_array($panels_data['widgets'])) {
        foreach ($panels_data['widgets'] as $widget) {
            // Put the widgets in the grids
            $grids[intval($widget['panels_info']['grid'])][intval($widget['panels_info']['cell'])][] = $widget;
        }
    }
    ob_start();
    if (current_user_can('edit_theme_options')) {
        $install_url = siteorigin_panels_lite_plugin_activation_install_url();
        $home = get_theme_mod('siteorigin_panels_home_page_enabled', siteorigin_panels_lite_setting('home-page-default'));
        $toggle_url = add_query_arg('redirect', add_query_arg(false, false), wp_nonce_url(admin_url('admin-ajax.php?action=panels_lite_toggle&panels_new=' . ($home ? 0 : 1)), 'toggle_panels_home'));
        ?>
		<p class="siteorigin-panels-lite-message">
			<?php 
        if (current_user_can('install_plugins')) {
            ?>
				<?php 
            printf(__('<a href="%s">Install Page Builder</a> to <a href="%s">edit</a> this default home page.', 'vantage'), $install_url, admin_url('themes.php?page=so_panels_home_page'));
            ?>
			<?php 
        }
        ?>

			<?php 
        printf(__("<a href='%s'>Disable this page</a> if you'd prefer to have a standard blog home.", 'vantage'), $toggle_url);
        ?>
		</p>
		<?php 
    }
    // Add the panel layout wrapper
    echo '<div id="pl-' . $post_id . '">';
    global $siteorigin_panels_inline_css;
    if (empty($siteorigin_panels_inline_css)) {
        $siteorigin_panels_inline_css = '';
    }
    echo apply_filters('siteorigin_panels_before_content', '', $panels_data, $post_id);
    foreach ($grids as $gi => $cells) {
        $grid_classes = apply_filters('siteorigin_panels_row_classes', array('panel-grid'), $panels_data['grids'][$gi]);
        $grid_attributes = apply_filters('siteorigin_panels_row_attributes', array('class' => implode(' ', $grid_classes), 'id' => 'pg-' . $post_id . '-' . $gi), $panels_data['grids'][$gi]);
        // This allows other themes and plugins to add html before the row
        echo apply_filters('siteorigin_panels_before_row', '', $panels_data['grids'][$gi], $grid_attributes);
        echo '<div ';
        foreach ($grid_attributes as $name => $value) {
            echo $name . '="' . esc_attr($value) . '" ';
        }
        echo '>';
        $style_attributes = array();
        if (!empty($panels_data['grids'][$gi]['style']['class'])) {
            $style_attributes['class'] = array('panel-row-style-' . $panels_data['grids'][$gi]['style']['class']);
        }
        // Themes can add their own attributes to the style wrapper
        $row_style_wrapper = siteorigin_panels_lite_start_style_wrapper('row', $style_attributes, !empty($panels_data['grids'][$gi]['style']) ? $panels_data['grids'][$gi]['style'] : array());
        if (!empty($row_style_wrapper)) {
            echo $row_style_wrapper;
        }
        foreach ($cells as $ci => $widgets) {
            // Themes can add their own styles to cells
            $cell_classes = apply_filters('siteorigin_panels_row_cell_classes', array('panel-grid-cell'), $panels_data);
            $cell_attributes = apply_filters('siteorigin_panels_row_cell_attributes', array('class' => implode(' ', $cell_classes), 'id' => 'pgc-' . $post_id . '-' . $gi . '-' . $ci), $panels_data);
            echo '<div ';
            foreach ($cell_attributes as $name => $value) {
                echo $name . '="' . esc_attr($value) . '" ';
            }
            echo '>';
            $cell_style_wrapper = siteorigin_panels_lite_start_style_wrapper('cell', array(), !empty($panels_data['grids'][$gi]['style']) ? $panels_data['grids'][$gi]['style'] : array());
            if (!empty($cell_style_wrapper)) {
                echo $cell_style_wrapper;
            }
            foreach ($widgets as $pi => $widget_info) {
                $instance = $widget_info;
                unset($instance['panels_info']);
                // TODO this wrapper should go in the before/after widget arguments
                $widget_style_wrapper = siteorigin_panels_lite_start_style_wrapper('widget', array(), !empty($widget_info['panels_info']['style']) ? $widget_info['panels_info']['style'] : array());
                siteorigin_panels_lite_the_widget($widget_info['panels_info']['class'], $instance, $gi, $ci, $pi, $pi == 0, $pi == count($widgets) - 1, $post_id, $widget_style_wrapper);
            }
            if (empty($widgets)) {
                echo '&nbsp;';
            }
            if (!empty($cell_style_wrapper)) {
                echo '</div>';
            }
            echo '</div>';
        }
        echo '</div>';
        // Close the
        if (!empty($row_style_wrapper)) {
            echo '</div>';
        }
        // This allows other themes and plugins to add html after the row
        echo apply_filters('siteorigin_panels_after_row', '', $panels_data['grids'][$gi], $grid_attributes);
    }
    echo apply_filters('siteorigin_panels_after_content', '', $panels_data, $post_id);
    echo '</div>';
    $html = ob_get_clean();
    // Reset the current post
    $siteorigin_panels_current_post = $old_current_post;
    return apply_filters('siteorigin_panels_render', $html, $post_id, !empty($post) ? $post : null);
}