Esempio n. 1
0
 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));
 }
Esempio n. 2
0
 public static function list_saved_layout($storage_key = '')
 {
     global $wpdb;
     self::set_storage_key($storage_key);
     $storage_key = self::get_storage_key();
     $layouts = $wpdb->get_results("SELECT * FROM {$wpdb->options} WHERE ( `option_name` LIKE '{$storage_key}-single%' OR `option_name` LIKE '{$storage_key}-archive%' )");
     $return = array();
     foreach ($layouts as $layout) {
         if (preg_match("/^{$storage_key}-([^-]+)(-([^-]+)|)(-([^-]+)|)\$/", $layout->option_name, $match)) {
             $ids = array();
             if (!empty($match[3]) && !empty($match[5])) {
                 $ids['specificity'] = $match[1] . '-' . $match[3] . '-' . $match[5];
             }
             if ($match[3]) {
                 $ids['item'] = $match[1] . '-' . $match[3];
             }
             $ids['type'] = $match[1];
             $layout_id = !empty($ids['specificity']) ? $ids['specificity'] : ($ids['item'] ? $ids['item'] : $ids['type']);
             $return[$layout_id] = array('layout' => $ids, 'label' => Upfront_EntityResolver::layout_to_name($ids));
             if ($ids['type'] == 'single') {
                 $query = new WP_Query(array('post_type' => $post_type->name, 'post_status' => 'publish'));
                 $query->parse_query();
                 $post = $query->next_post();
                 $return[$layout_id]['latest_post'] = $post->ID;
             }
         }
     }
     return $return;
 }
Esempio n. 3
0
/**
 * 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));
}
Esempio n. 4
0
<?php

the_post();
$layout = Upfront_Output::get_layout(Upfront_EntityResolver::get_entity_ids());
get_header();
echo $layout->apply_layout();
get_footer();
Esempio n. 5
0
 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));
 }
Esempio n. 6
0
    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');
    }