<?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(); ?>
/** * 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 ' '; } ?> </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); }
/** * @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 ' '; } 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); }