????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 52.14.186.192 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/www.astacus.se/wp-content/plugins/cornerstone/includes/classes/builder/ |
Upload File : |
<?php /** * This class manages the primary editing interface for Cornerstone */ class Cornerstone_Builder extends Cornerstone_Plugin_Component { private $preview; private $templateLoader; private $router; public $mixins; public $dependencies = array( 'Router', 'Injector', 'Control_Mixins', 'Data_Controller' ); /** * Determine whether we are working in the iframe, or primary screen. */ public function setup() { if ( $this->isPreview() ) $this->preview = $this->plugin->loadComponent( 'Preview_Window' ); add_action( 'template_redirect', array( $this, 'load' ), 0 ); } /** * Load the editor. This restructures the hooks for wp_head and * adds a hook to replace the main template with our own. */ public function load() { if ( $this->isPreview() || !$this->isEditing() || defined( 'IFRAME_REQUEST' ) || ( ( isset( $_REQUEST['wp_customize'] ) && 'on' == $_REQUEST['wp_customize'] ) ) ) return; if ( apply_filters('_cornerstone_classic_redirect', ! isset($_GET['cornerstone_classic'] ) ) ) { $post = $this->plugin->common()->locatePost(); if ( ! $post ) { return; } wp_safe_redirect( $this->plugin->common()->get_app_route_url( 'content', $post->ID, 'builder' ) ); exit; } add_filter( 'redirect_canonical', array( $this, 'redirect_canonical' ), 10, 2); add_action( 'wp_clean_slate_options', array( $this, 'slateConfig' ) ); WP_Clean_Slate::init(); do_action( 'cornerstone_load_builder' ); add_action( 'admin_bar_menu', array( $this, 'adminBarMenu'), 9999 ); // Enqueue Styles & Scripts add_action( 'wp_enqueue_scripts_clean', array( $this, 'dependencyEnqueues' ) ); add_action( 'wp_enqueue_scripts_clean', array( $this, 'enqueueStyles' ) ); add_action( 'wp_enqueue_scripts_clean', array( $this, 'enqueueScripts' ) ); // Add boilerplate HTML with entry points for our Backbone Application add_action( 'wp_clean_slate_content', array( $this, 'boilerplateHTML' ) ); // Additional filters add_filter( 'wp_title', array( $this, 'title' ), 10, 3 ); add_filter( '_cornerstone_front_end', '__return_false' ); nocache_headers(); } public function slateConfig( $options ) { $settings = $this->plugin->settings(); $options['showAdminBar'] = (bool) $settings['show_wp_toolbar']; return $options; } /** * Enqueue dependency libraries. These won't load in the preview window */ public function dependencyEnqueues() { Cornerstone_Code_Editor::instance()->register(); Cornerstone_Huebert::instance()->register(); wp_enqueue_script( 'cs-huebert' ); wp_enqueue_script( 'cs-code-editor' ); wp_enqueue_media(); $this->primeEditor(); } /** * Enqueue styles for the front end interface */ public function enqueueStyles() { $this->plugin->loadComponent( 'App' )->register_font_styles(); wp_register_style( 'cs-dashicons', '/wp-includes/css/dashicons.min.css' ); wp_enqueue_style( 'cs-styles', $this->plugin->css( 'admin/builder' ), array( 'cs-open-sans', 'cs-lato', 'cs-dashicons' ), $this->plugin->version() ); wp_enqueue_style( 'cs-huebert-style' ); wp_enqueue_style( 'cs-code-editor-style' ); } /** * Enqueue scripts for the front end interface */ public function enqueueScripts() { $this->plugin->component( 'Core_Scripts' )->register_scripts(); // Register wp_register_script( 'cs-builder', $this->plugin->js( 'admin/builder' ), array( 'cs-core' ), $this->plugin->version(), true ); // Enqueue with Data wp_localize_script( 'cs-builder', 'csBuilderData', $this->get_config_data() ); wp_enqueue_script( 'cs-builder' ); } /** * Populate csConfig for javascript * Filter cornerstone_data allows additional data to be sent, * but prevents some original data to be modified */ public function get_config_data() { $settings = $this->plugin->settings(); return cs_booleanize( wp_parse_args( array( 'strings' => $this->plugin->i18n_group( 'builder', false ), 'isPreview' => $this->isPreview(), 'post' => $this->get_post_data(), 'dashboardEditUrl' => get_edit_post_link(), 'frontEndUrl' => get_the_permalink(), 'fontAwesome' => $this->plugin->common()->getFontIcons(), 'editorMarkup' => $this->getWPeditor(), 'remoteRenderDelay' => apply_filters( 'cornerstone_render_debounce', 200 ), 'loginURL' => wp_login_url( get_permalink() ), 'scrollTopSelector' => apply_filters( 'cornerstone_scrolltop_selector', null ), 'savedLast' => get_the_modified_time('U'), 'visualEnhancements' => (bool) $settings['visual_enhancements'], 'helpTextEnabled' => (bool) $settings['help_text'], 'keybindings' => apply_filters('cornerstone_keybindings', $this->plugin->config_group( 'builder/keybindings' ) ), 'cssClassMap' => $this->plugin->config_group( 'common/class-map' ), ), apply_filters( 'cornerstone_config_data', array() ) ) ); } /** * Pull the meta data for this post and prepare it for javascript * @return array */ public function get_post_data() { $id = get_the_id(); $controller = $this->plugin->component( 'Data_Controller' ); return array( 'post_id' => $id, 'elements' => $controller->get_elements( $id ) ); } /** * Create a link to be used for the preview frame * @param string $post_id Provide a post ID to check, or it will automatically detect one * @return string URL for the preview pane. */ public function get_preview_url( $post_id = '') { $post = $this->plugin->common()->locatePost( $post_id ); return add_query_arg( array( 'cornerstone_preview' => 1 ), get_permalink( $post->ID ) ); } /** * Replace wp_title */ public function title( $title, $sep, $seplocation ) { $csTitle = $this->plugin->common()->properTitle(); if ( is_rtl() ) { $title .= ' ' . $csTitle; } else { $title = $csTitle . ' ' . $title; } return $title; } /** * Add DOM insertion point for Backbone App */ public function boilerplateHTML( ) { $this->view( 'builder/boilerplate', true, array( 'preview_url' => $this->get_preview_url() ), true ); } /** * Prepare the WordPress Editor (wp_editor) for use as a control * This thing does NOT like to be used in multiple contexts where it's added and removed dynamically. * We're creating some initial settings here to be used later. * Callings this function also triggers all the required styles/scripts to be enqueued. * @return none */ public function primeEditor() { // Remove all 3rd party integrations to prevent plugin conflicts. remove_all_actions('before_wp_tiny_mce'); remove_all_filters('mce_external_plugins'); remove_all_filters('mce_buttons'); remove_all_filters('tiny_mce_before_init'); add_filter( 'tiny_mce_before_init', '_mce_set_direction' ); // Cornerstone's editor is modified, so we will allow visual editing for all users. add_filter( 'user_can_richedit', '__return_true' ); if( apply_filters( 'cornerstone_use_br_tags', false ) ) { add_filter('tiny_mce_before_init', array( $this, 'allowBrTags' ) ); } // Allow integrations to use hooks above before the editor is primed. do_action('cornerstone_before_wp_editor'); ob_start(); wp_editor( '%%PLACEHOLDER%%','cswpeditor', array( //'quicktags' => false, 'tinymce'=> array( 'toolbar1' => 'bold,italic,strikethrough,underline,bullist,numlist,forecolor,wp_adv', 'toolbar2' => 'link,unlink,alignleft,aligncenter,alignright,alignjustify,outdent,indent', 'toolbar3' => 'formatselect,pastetext,removeformat,charmap,undo,redo' ), 'editor_class' => 'cs-wp-editor', 'drag_drop_upload' => true ) ); $this->cachedWPeditor = ob_get_clean(); } /** * Get the WP Editor markup if it's been primed * @return string */ public function getWPeditor() { return isset( $this->cachedWPeditor ) ? $this->cachedWPeditor : ''; } /** * Depending on workflow, users may wish to allow <br> tags. * This can be conditionally enabled with a filter. * add_filter( 'cornerstone_use_br_tags', '__return_true' ); */ public function allowBrTags( $init ) { $init['forced_root_block'] = false; return $init; } /** * Check if the proper conditions are met to load Cornerstone * @return boolean */ public function isEditing() { return ( ( isset($_REQUEST['cornerstone']) && $_REQUEST['cornerstone'] == 1 ) && is_singular() && $this->plugin->common()->isPostTypeAllowed() ); } /** * Remove the Cornerstone edit link from the toolbar. * @return none */ public function adminBarMenu() { global $wp_admin_bar; $wp_admin_bar->remove_menu( 'cs-edit-link' ); $type = get_post_type_object( get_post_type() ); $wp_admin_bar->add_menu( array( 'id' => 'cornerstone-view-link', 'title' => $type->labels->view_item, 'href' => get_the_permalink(), 'meta' => array( 'class' => 'cornerstone-view-link' ) ) ); } public function redirect_canonical( $redirect_url, $requested_url ) { if ( apply_filters( 'cornerstone_no_permalinks', false ) ) return false; return $redirect_url; } /** * Is this the iFrame? * Check if the ?cornerstone_preview=1 query string has been added to the URL * @return boolean [description] */ public function isPreview() { return ( isset($_GET['cornerstone_preview']) && $_GET['cornerstone_preview'] == 1 ); } }