function create_layout() { $layout_ids = $_POST['data']; $stylesheet = $_POST['stylesheet']; $layout_slug = !empty($_POST['layout_slug']) ? $_POST['layout_slug'] : false; $load_dev = $_POST['load_dev'] == 1 ? true : false; $post_type = isset($_POST['new_post']) ? $_POST['new_post'] : false; $parsed = false; if (empty($layout_ids)) { $this->_out(new Upfront_JsonResponse_Error("No such layout")); } upfront_switch_stylesheet($stylesheet); if (is_string($layout_ids)) { $layout_ids = Upfront_EntityResolver::ids_from_url($layout_ids); $parsed = true; } // Start by nulling out the layout $layout = false; // Check if we're to inherit a layout from a page template if (!empty($_POST['use_existing'])) { // Resolve existing page template to a layout $tpl = preg_replace('/page_tpl-(.*)\\.php/', '\\1', $_POST['use_existing']); $theme = Upfront_ChildTheme::get_instance(); $settings = $theme->get_theme_settings(); if (!empty($tpl) && !empty($settings)) { $required_pages = $settings->get('required_pages'); if (!empty($required_pages)) { $required_pages = json_decode($required_pages, true); } $specificity = !empty($required_pages[$tpl]['layout']) ? $required_pages[$tpl]['layout'] : false; if (!empty($specificity)) { $template_layout = Upfront_Layout::from_entity_ids(array('specificity' => $specificity)); if (!empty($template_layout) && !$template_layout->is_empty()) { $layout = $template_layout; $layout->set('layout', $layout_ids); $layout->set('current_layout', $layout_ids['specificity']); } } } } // If we still don't have a template set, make one up if (empty($layout)) { $layout = Upfront_Layout::create_layout($layout_ids, $layout_slug); } global $post, $upfront_ajax_query; if (!$upfront_ajax_query) { $upfront_ajax_query = false; } if ($post_type) { $post = Upfront_PostModel::create($post_type); // set new layout IDS based on the created post ID $cascade = array('type' => 'single', 'item' => $post_type, 'specificity' => $post->ID); $layout_ids = Upfront_EntityResolver::get_entity_ids($cascade); } else { $post = $post; if ($post && is_singular()) { $layout_ids = Upfront_EntityResolver::get_entity_ids(); } else { if ($_POST['post_id']) { $posts = get_posts(array('include' => $_POST['post_id'], 'suppress_filters' => false)); if (sizeof($posts)) { $post = $posts[0]; } } } } $response = array('post' => $post, 'layout' => $layout->to_php(), 'cascade' => $layout_ids, 'query' => $upfront_ajax_query); $this->_out(new Upfront_JsonResponse_Success($response)); }
/** * Get AJAX URL with layout entity id added to arguments */ function upfront_ajax_url($action, $args = '') { $args = wp_parse_args($args); $args['action'] = $action; $args['layout'] = Upfront_EntityResolver::get_entity_ids(); if (current_user_can('switch_themes') && !empty($_GET['dev'])) { $args['load_dev'] = 1; } return admin_url('admin-ajax.php?' . http_build_query($args)); }
public function get_entity_ids_value() { $entities = array(); $entities = Upfront_Layout::get_parsed_cascade(); if (empty($entities)) { $entities = Upfront_EntityResolver::get_entity_ids(); } $entities['storage_key'] = Upfront_Model::get_storage_key(); return base64_encode(json_encode($entities)); }
<?php the_post(); $layout = Upfront_Output::get_layout(Upfront_EntityResolver::get_entity_ids()); get_header(); echo $layout->apply_layout(); get_footer();
function inject_upfront_dependencies() { if (!Upfront_Permissions::current(Upfront_Permissions::BOOT)) { return false; } // Do not inject for users that can't use this $url = self::get_root_url(); //Boot Edit Mode if the querystring contains the editmode param if (isset($_GET['editmode'])) { echo upfront_boot_editor_trigger(); } $storage_key = apply_filters('upfront-data-storage-key', Upfront_Layout::STORAGE_KEY); $save_storage_key = $storage_key; $is_ssl = is_ssl() ? '&ssl=1' : ''; if (isset($_GET['dev']) && current_user_can('switch_themes') && apply_filters('upfront-enable-dev-saving', true)) { $save_storage_key .= '_dev'; } $script_urls = array("{$url}/scripts/require.js", admin_url('admin-ajax.php?action=upfront_load_main' . $is_ssl), "{$url}/scripts/main.js"); $deps = Upfront_CoreDependencies_Registry::get_instance(); foreach ($script_urls as $url) { $deps->add_script($url); } echo '<script type="text/javascript"> var _upfront_post_data=' . json_encode(array('layout' => Upfront_EntityResolver::get_entity_ids(), 'post_id' => is_singular() ? apply_filters('upfront-data-post_id', get_the_ID()) : false)) . '; var _upfront_storage_key = "' . $storage_key . '"; var _upfront_save_storage_key = "' . $save_storage_key . '"; var _upfront_stylesheet = "' . get_stylesheet() . '"; var _upfront_debug_mode = ' . (int) isset($_GET['debug']) . '; var _upfront_please_hold_on = ' . json_encode(__('Please, hold on for just a little bit more', 'upfront')) . '; </script>'; echo <<<EOAdditivemarkup \t<div id="sidebar-ui" class="upfront-ui"></div> \t<div id="settings" style="display:none"></div> \t<div id="contextmenu" style="display:none"></div> EOAdditivemarkup; do_action('upfront-core-inject_dependencies'); }