Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Created by ra.
- * Date: 4/14/2016
- */
- // Ready to load the shortcodes
- require_once('tdc_util.php');
- require_once('tdc_state.php');
- require_once('tdc_ajax.php');
- require_once('tdc_guttenberg.php');
- add_action( 'enqueue_block_editor_assets', function() {
- if (TDC_DEPLOY_MODE == 'deploy' ) {
- wp_enqueue_script('js_files_for_gutenberg_style', TDC_URL . '/assets/js/js_files_for_gutenberg_style.min.js', array('jquery', 'wp-blocks', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-data'
- ), TD_COMPOSER, true);
- }else {
- wp_enqueue_script('tdcGutenbergStyle', TDC_URL . '/assets/js/tdcGutenbergStyle.js', array('jquery', 'wp-blocks', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-data'
- ), TD_COMPOSER, true);
- }
- });
- if ( tdc_guttenberg::is_gutenberg() or substr( get_bloginfo('version'), 0, 1) > 4 )
- new tdc_guttenberg();
- // shortcodes
- require_once('tdc_composer_block.php' );
- require_once('shortcodes/tdc_zone.php' );
- require_once('shortcodes/vc_row.php' );
- require_once('shortcodes/vc_row_inner.php' );
- require_once('shortcodes/vc_column.php' );
- require_once('shortcodes/vc_column_inner.php' );
- require_once('shortcodes/vc_column_text.php' );
- require_once('shortcodes/vc_raw_html.php' );
- require_once('shortcodes/vc_empty_space.php' );
- require_once('shortcodes/vc_widget_sidebar.php' );
- require_once('shortcodes/vc_single_image.php' );
- require_once('shortcodes/vc_separator.php' );
- require_once('shortcodes/vc_wp_recentcomments.php' );
- // mapper and internal map
- require_once('tdc_mapper.php');
- require_once('tdc_map.php');
- /**
- * WP-admin - Edit page with tagDiv composer
- */
- add_action('admin_bar_menu', 'tdc_on_admin_bar_menu', 100);
- function tdc_on_admin_bar_menu() {
- global $wp_admin_bar, $post;
- $is_bbpress = $is_buddypress = false;
- // bbpress
- if ( is_plugin_active( 'bbpress/bbpress.php') ) {
- if ( function_exists( 'is_bbpress' ) && is_bbpress() ) {
- $is_bbpress = true;
- }
- }
- // buddypress
- if ( is_plugin_active( 'buddypress/bp-loader.php') ) {
- if ( function_exists( 'is_buddypress' ) && is_buddypress() ) {
- $is_buddypress = true;
- }
- }
- if (
- is_user_logged_in() &&
- current_user_can('publish_pages') &&
- is_admin_bar_showing() &&
- is_page() &&
- ! $is_bbpress &&
- ! $is_buddypress &&
- ! td_util::is_mobile_theme()
- ) {
- $wp_admin_bar->add_menu( array(
- 'id' => 'tdc_edit',
- 'meta' => array(
- 'title' => 'Edit with TD Composer'
- ),
- 'title' => 'Edit with TD Composer',
- 'href' => admin_url( 'post.php?post_id=' . $post->ID . '&td_action=tdc&tdbTemplateType=page&prev_url=' . rawurlencode( tdc_util::get_current_url() ) )
- ) );
- }
- }
- // Set the tdc_state
- $tdcPageSettings = tdc_util::get_get_val( 'tdc-page-settings' );
- if ( 'post' === basename($_SERVER["SCRIPT_FILENAME"], '.php') && false !== $tdcPageSettings ) {
- add_action('admin_head', 'on_admin_head_add_page_settings');
- function on_admin_head_add_page_settings() {
- ?>
- <style>
- #wpcontent {
- margin-left: 0;
- margin-top: -30px;
- }
- #nav-menus-frame {
- margin-top: 0;
- }
- #wpadminbar,
- #screen-meta,
- #screen-meta-links,
- #adminmenumain,
- #wpfooter,
- .wrap > h1,
- .wrap > h2,
- .wrap > .manage-menus,
- .menu-save,
- .delete-action,
- .error,
- .update-nag,
- .major-publishing-actions,
- .page-title-action,
- .notice,
- #submitdiv,
- #postimagediv,
- #post-body-content,
- #td_mobile_wp_editor_content_meta_box,
- .edit-post-visual-editor,
- .edit-post-header,
- .edit-post-layout .components-notice-list,
- .edit-post-layout .components-panel__header,
- .edit-post-layout .components-panel__body.edit-post-post-status,
- .edit-post-layout .components-panel__body.edit-post-last-revision__panel {
- display: none !important;
- }
- #wpbody-content {
- padding-bottom: 0;
- }
- .edit-post-layout {
- padding-top: 0 !important;
- }
- .edit-post-sidebar {
- top: 0;
- }
- </style>
- <script>
- (function(){
- jQuery(window).load(function() {
- var $wpbodyContent = jQuery( '#wpbody-content' ),
- $wrap = $wpbodyContent.children( '.wrap' ),
- $normalSortables = $wpbodyContent.find( '#normal-sortables' );
- $wrap.siblings().hide();
- $wrap.children( 'form' ).siblings().hide();
- $normalSortables.children().each(function(index, el) {
- var $el = jQuery(el),
- elId = $el.attr( 'id' );
- if ( 'td_homepage_loop_metabox' !== elId && 'td_page_metabox' !== elId ) {
- $el.hide();
- }
- });
- });
- })();
- </script>
- <?php
- // // Disables all the updates notifications regarding plugins, themes & WordPress completely.
- // tdc_disable_notification();
- }
- }
- // Set the tdc_state
- $tdcMenuSettings = tdc_util::get_get_val( 'tdc-menu-settings' );
- if ( 'nav-menus' === basename($_SERVER["SCRIPT_FILENAME"], '.php') && false !== $tdcMenuSettings ) {
- add_action('admin_head', 'on_admin_head_add_menu_settings');
- function on_admin_head_add_menu_settings() {
- ?>
- <style>
- #wpcontent {
- margin-left: 0;
- margin-top: -30px;
- }
- #nav-menus-frame {
- margin-top: 0;
- }
- #wpadminbar,
- #screen-meta,
- #screen-meta-links,
- #screen-options-link-wrap,
- #adminmenumain,
- #wpfooter,
- .wrap > h1,
- .wrap > h2,
- .wrap > .manage-menus,
- .menu-save,
- .delete-action,
- .error,
- .update-nag,
- .major-publishing-actions,
- .menu-settings {
- display: none !important;
- }
- #wpbody-content {
- padding-bottom: 0;
- }
- </style>
- <script>
- (function(){
- jQuery(window).load(function() {
- var $wpbodyContent = jQuery( '#wpbody-content' );
- $wrap = $wpbodyContent.children( '.wrap' );
- $wrap.siblings().hide();
- $wrap.children().each(function(index, el) {
- var $el = jQuery(el),
- elId = $el.attr( 'id' );
- if ( 'nav-menus-frame' !== elId ) {
- $el.hide();
- }
- });
- });
- })();
- </script>
- <?php
- // Disables all the updates notifications regarding plugins, themes & WordPress completely.
- tdc_disable_notification();
- }
- }
- /**
- * edit with td composer
- */
- if ( is_user_logged_in() && current_user_can('publish_pages') && 'page' === tdc_util::get_get_val('post_type') ) {
- add_filter( 'page_row_actions', 'tdc_on_page_row_actions', 10, 2 );
- function tdc_on_page_row_actions( $actions, $post ) {
- if ( $post->ID === (int) get_option( 'page_for_posts' ) ) {
- $actions['edit_tdc_composer'] = '<a href="#">TD Composer is disabled on Posts Page</a>';
- } else {
- $actions['edit_tdc_composer'] = '<a href="' . admin_url( 'post.php?post_id=' . $post->ID . '&td_action=tdc&tdbTemplateType=page&prev_url=' . rawurlencode(tdc_util::get_current_url()) ) . '">Edit with TD Composer</a>';
- }
- return $actions;
- }
- }
- /**
- * Disables all the updates notifications regarding plugins, themes & WordPress completely.
- */
- function tdc_disable_notification() {
- add_filter( 'pre_site_transient_update_core','tdc_on_remove_core_updates' );
- add_filter( 'pre_site_transient_update_plugins','tdc_on_remove_core_updates' );
- add_filter( 'pre_site_transient_update_themes','tdc_on_remove_core_updates' );
- function tdc_on_remove_core_updates(){
- global $wp_version;
- return (object) array('last_checked'=> time(),'version_checked'=> $wp_version);
- }
- }
- // Remove the auto added paragraphs - as VC does
- // Important! Remove from 'page' and from 'tdb_templates' (custom post type used by template builder)
- add_filter( 'the_content', 'tdc_on_remove_wpautop', 9 );
- function tdc_on_remove_wpautop($content) {
- global $post;
- if ( ( 'page' === get_post_type() || 'tdb_templates' === get_post_type() ) && td_util::is_pagebuilder_content( $post ) ) {
- remove_filter( 'the_content', 'wpautop' );
- }
- return $content;
- }
- /**
- * load font icons
- */
- add_action( 'wp_enqueue_scripts', 'tdc_on_load_font_icon' ); // load them last
- function tdc_on_load_font_icon() {
- $icon_fonts = array();
- // Filter used to modify the post checked for icon fonts
- $post_id = apply_filters( 'tdc_filter_icon_fonts_post_id', get_the_ID() );
- $post_icon_fonts = get_post_meta( $post_id, 'tdc_icon_fonts', true );
- // echo '<pre>';
- // var_dump($tdc_icon_fonts);
- // echo '</pre>';
- if ( ! empty( $post_icon_fonts ) && is_array( $post_icon_fonts ) ) {
- foreach ( $post_icon_fonts as $font_id => $font_settings ) {
- $icon_fonts[ $font_id ] = $font_settings;
- }
- }
- // Get font icons for footer
- $tds_footer_page = td_util::get_option('tds_footer_page');
- if ( intval($tds_footer_page) !== $post_id ) {
- $footer_icon_fonts = get_post_meta( $tds_footer_page, 'tdc_icon_fonts', true );
- if ( ! empty( $footer_icon_fonts ) && is_array( $footer_icon_fonts ) ) {
- foreach ( $footer_icon_fonts as $font_id => $font_settings ) {
- if ( ! isset( $icon_fonts[ $font_id ] ) ) {
- $icon_fonts[ $font_id ] = $font_settings;
- }
- }
- }
- }
- foreach ( $icon_fonts as $font_id => $font_settings ) {
- if ( isset( $font_settings['theme_font'] ) ) {
- continue;
- }
- wp_enqueue_style( $font_id, TDC_URL . $font_settings['css_file'], false, TD_COMPOSER );
- }
- }
- // Set the tdc_state
- $td_action = tdc_util::get_get_val( 'td_action' );
- if ( false === $td_action ) {
- tdc_state::set_is_live_editor_iframe( false );
- } else {
- tdc_state::set_is_live_editor_iframe( true );
- }
- $tmpJobId = tdc_util::get_get_val( 'uuid' );
- if ( false === $tmpJobId ) {
- tdc_state::set_is_live_editor_ajax( false );
- } else {
- tdc_state::set_is_live_editor_ajax( true );
- }
- if ( ! tdc_state::is_live_editor_iframe() && ! tdc_state::is_live_editor_ajax() ) {
- // All hooks necessary for tdb
- add_action( 'admin_head', 'tdc_on_admin_head_for_tbm' );
- function tdc_on_admin_head_for_tbm() {
- $is_page_for_posts = false;
- global $post;
- if ( ! is_null( $post )) {
- $is_page_for_posts = $post->ID == get_option( 'page_for_posts' );
- }
- $tdc_admin_settings = array(
- 'adminUrl' => admin_url(),
- 'hasUserRights' => is_user_logged_in() && current_user_can('publish_pages'),
- 'isPageForPosts' => $is_page_for_posts,
- );
- ob_start();
- ?>
- <script>
- window.tdcAdminSettings = <?php echo json_encode( $tdc_admin_settings );?>;
- //console.log(window.tdcAdminSettings);
- </script>
- <?php
- $buffer = ob_get_clean();
- echo $buffer;
- }
- add_action( 'admin_enqueue_scripts', 'tdc_on_admin_enqueue_scripts_for_tbm' );
- function tdc_on_admin_enqueue_scripts_for_tbm() {
- // load the css
- if ( true === TDC_USE_LESS ) {
- wp_enqueue_style('tdc_wp_admin_main', TDC_URL . '/td_less_style.css.php?part=tdc_wp_admin_main', false, TD_COMPOSER );
- } else {
- wp_enqueue_style('tdc_wp_admin_main', TDC_URL . '/assets/css/tdc_wp_admin_main.css', false, TD_COMPOSER);
- }
- // load the js
- if (TDC_DEPLOY_MODE == 'deploy') {
- wp_enqueue_script('js_files_for_wp_admin', TDC_URL . '/assets/js/js_files_for_wp_admin.min.js', array('jquery', 'underscore'), TD_COMPOSER, true);
- } else {
- tdc_util::enqueue_js_files_array(tdc_config::$js_files_for_wp_admin, array('jquery', 'underscore'));
- }
- }
- return;
- }
- // DO NOT CONTINUE IF COMPOSER IS NOT LIVE OR IN AJAX
- /**
- * WP-admin - add js in header on all the admin pages (wp-admin and the iframe Wrapper. Does not run in the iframe)
- * It's on general, and not only for 'td-action=tdc' because it's also used on widgets' page.
- */
- add_action( 'admin_head', 'tdc_on_admin_head' );
- function tdc_on_admin_head() {
- //map_not_registered_shortcodes();
- $mappedShortcodes = tdc_mapper::get_mapped_shortcodes();
- $mappedBlockTemplates = tdc_mapper::get_mapped_block_templates();
- global $wp_registered_sidebars;
- foreach ( $mappedShortcodes as &$mappedShortcode ) {
- if ( 'vc_widget_sidebar' === $mappedShortcode[ 'base' ] ) {
- foreach ( $mappedShortcode[ 'params' ] as &$param ) {
- if ( 'sidebar_id' === $param[ 'param_name' ] ) {
- $param[ 'value' ][ __( '- Please select a sidebar -', 'td_composer' ) ] = '';
- foreach ( $wp_registered_sidebars as $key => $val ) {
- $param[ 'value' ][ $val[ 'name' ] ] = $key;
- }
- break;
- }
- }
- continue;
- }
- // Replace the 'dropdown' params values with values of the 'tdc_value' index (because VC does not render well default values of dropdown params)
- if ( 'td_block_instagram' === $mappedShortcode[ 'base' ] ||
- 'td_block_exchange' === $mappedShortcode[ 'base' ] ) {
- foreach ( $mappedShortcode[ 'params' ] as &$param ) {
- if ( 'dropdown' === $param[ 'type' ] && isset($param['tdc_value'] ) ) {
- $param['value'] = $param['tdc_value'];
- }
- }
- continue;
- }
- }
- $globalStyle = array();
- $settingsStyle = array();
- $groups = array();
- foreach ( td_api_style::get_all() as $style_id => $style ) {
- $group_style = $style['group'];
- if ( ! in_array( $group_style, $groups ) ) {
- $groups[] = $group_style;
- $settingsStyle[ $group_style ] = td_api_style::get_styles_by_group( $group_style );
- $globalStyle[ $group_style ] = td_options::get( $group_style, $style_id );
- }
- }
- // the settings that we load in wp-admin and wrapper. We need json to be sure we don't get surprises with the encoding/escaping
- // save the previous url - used when the X in composer is pressed to close it down.
- if (tdc_util::get_get_val('prev_url') != '') {
- $previous_url = htmlspecialchars_decode ( tdc_util::get_get_val('prev_url') );
- } else {
- $previous_url = get_edit_post_link(get_the_ID(), '');
- }
- $mappedFontFamily = array();
- $mappedFontWeight = array();
- $mappedFontTransform = array();
- $mappedFontStyle = array();
- foreach ( $mappedShortcodes as &$element ) {
- foreach ( $element['params'] as &$param ) {
- if ( strpos( $param['param_name'], 'font_family' ) > 0 ) {
- if ( empty( $mappedFontFamily ) ) {
- $mappedFontFamily = $param['value'];
- }
- $param['value'] = '';
- } else if ( strpos( $param['param_name'], 'font_weight' ) > 0 ) {
- if ( empty( $mappedFontWeight ) ) {
- $mappedFontWeight = $param['value'];
- }
- $param['value'] = '';
- } else if ( strpos( $param['param_name'], 'font_transform' ) > 0 ) {
- if ( empty( $mappedFontTransform ) ) {
- $mappedFontTransform = $param['value'];
- }
- $param['value'] = '';
- } else if ( strpos( $param['param_name'], 'font_style' ) > 0 ) {
- if ( empty( $mappedFontStyle ) ) {
- $mappedFontStyle = $param['value'];
- }
- $param['value'] = '';
- }
- }
- }
- foreach ( $settingsStyle as &$group ) {
- foreach ( $group as &$element ) {
- foreach ( $element['params'] as &$param ) {
- if ( strpos( $param['param_name'], 'font_family' ) > 0 ) {
- if ( empty( $mappedFontFamily ) ) {
- $mappedFontFamily = $param['value'];
- }
- $param['value'] = '';
- } else if ( strpos( $param['param_name'], 'font_weight' ) > 0 ) {
- if ( empty( $mappedFontWeight ) ) {
- $mappedFontWeight = $param['value'];
- }
- $param['value'] = '';
- } else if ( strpos( $param['param_name'], 'font_transform' ) > 0 ) {
- if ( empty( $mappedFontTransform ) ) {
- $mappedFontTransform = $param['value'];
- }
- $param['value'] = '';
- } else if ( strpos( $param['param_name'], 'font_style' ) > 0 ) {
- if ( empty( $mappedFontStyle ) ) {
- $mappedFontStyle = $param['value'];
- }
- $param['value'] = '';
- }
- }
- }
- }
- $tdb_header_templates = array();
- // read the tdb category templates
- $wp_query_templates = new WP_Query( array(
- 'post_type' => 'tdb_templates',
- 'posts_per_page' => -1,
- 'meta_key' => 'tdb_template_type',
- 'meta_value' => 'header'
- )
- );
- if ( !empty( $wp_query_templates->posts ) ) {
- foreach ( $wp_query_templates->posts as $post ) {
- $tdb_header_templates[] = array(
- 'text' => $post->post_title,
- 'val' => 'tdb_template_' . $post->ID
- );
- }
- }
- $global_header_template_id = td_api_header_style::get_header_template_id();
- $global_header_template_content = '';
- if ( ! empty( $global_header_template_id ) && td_global::is_tdb_template( $global_header_template_id, true ) ) {
- $global_header_template_id = td_global::tdb_get_template_id( $global_header_template_id );
- $global_header_template_content = get_post_field('post_content', $global_header_template_id );
- }
- $tdc_admin_settings = array(
- 'adminUrl' => admin_url(),
- 'ABSPATH' => ABSPATH,
- 'editPostUrl' => get_edit_post_link( get_the_ID(), '' ),
- 'previousUrl' => $previous_url, //this is uesd to redirect to the previous url when the composer is closed
- 'wpRestNonce' => wp_create_nonce('wp_rest'),
- 'wpRestUrl' => rest_url(),
- 'permalinkStructure' => get_option('permalink_structure'),
- 'pluginUrl' => TDC_URL,
- 'themeName' => TD_THEME_NAME,
- 'mappedShortcodes' => $mappedShortcodes, // get ALL the mapped shortcodes / we should turn off pretty print
- 'mappedFontFamily' => $mappedFontFamily,
- 'mappedFontWeight' => $mappedFontWeight,
- 'mappedFontTransform' => $mappedFontTransform,
- 'mappedFontStyle' => $mappedFontStyle,
- 'mappedBlockTemplates' => $mappedBlockTemplates, // get ALL the mapped block templates / we should turn off pretty print
- 'customized' => array(
- 'menus' => new stdClass()
- ),
- 'globalBlockTemplate' => td_options::get('tds_global_block_template', 'td_block_template_1'),
- 'globalStyle' => $globalStyle,
- 'settingsStyle' => $settingsStyle,
- 'registeredSidebars' => $GLOBALS['wp_registered_sidebars'],
- 'hasUserRights' => is_user_logged_in() && current_user_can('publish_pages'),
- 'tdcSavings' => td_util::get_option( 'tdc_savings' ),
- 'deployMode' => TDC_DEPLOY_MODE,
- 'tdbHeaderTemplates' => $tdb_header_templates,
- 'headerTemplateId' => $global_header_template_id,
- 'headerTemplateContent' => $global_header_template_content
- );
- echo '<script>window.tdcAdminSettings = ' . json_encode( $tdc_admin_settings ) . '</script>';
- ob_start();
- ?>
- <script>
- for ( var shortcode in window.tdcAdminSettings.mappedShortcodes ) {
- var params = window.tdcAdminSettings.mappedShortcodes[shortcode].params;
- for ( var param in params ) {
- if ( params[param].param_name.indexOf( 'font_family' ) > 0 && '' === params[param]['value'] ) {
- params[param]['value'] = window.tdcAdminSettings.mappedFontFamily;
- } else if ( params[param].param_name.indexOf( 'font_weight' ) > 0 && '' === params[param]['value'] ) {
- params[param]['value'] = window.tdcAdminSettings.mappedFontWeight;
- } else if ( params[param].param_name.indexOf( 'font_transform' ) > 0 && '' === params[param]['value'] ) {
- params[param]['value'] = window.tdcAdminSettings.mappedFontTransform;
- } else if ( params[param].param_name.indexOf( 'font_style' ) > 0 && '' === params[param]['value'] ) {
- params[param]['value'] = window.tdcAdminSettings.mappedFontStyle;
- }
- }
- }
- for ( var group in window.tdcAdminSettings.settingsStyle ) {
- for ( var style in window.tdcAdminSettings.settingsStyle[group] ) {
- var params = window.tdcAdminSettings.settingsStyle[group][style].params;
- for (var param in params) {
- if (params[param].param_name.indexOf('font_family') > 0 && '' === params[param]['value']) {
- params[param]['value'] = window.tdcAdminSettings.mappedFontFamily;
- } else if (params[param].param_name.indexOf('font_weight') > 0 && '' === params[param]['value']) {
- params[param]['value'] = window.tdcAdminSettings.mappedFontWeight;
- } else if (params[param].param_name.indexOf('font_transform') > 0 && '' === params[param]['value']) {
- params[param]['value'] = window.tdcAdminSettings.mappedFontTransform;
- } else if (params[param].param_name.indexOf('font_style') > 0 && '' === params[param]['value']) {
- params[param]['value'] = window.tdcAdminSettings.mappedFontStyle;
- }
- }
- }
- }
- // Code necessary to supply some vc functionality that VC does not register when tagDiv composer runs as frontend editor
- window.vc_user_access = function() {
- return {
- editor: function ( editor ) {
- return false;
- },
- partAccess: function ( editor ) {
- return false;
- },
- check: function ( part, rule, custom, not_check_state ) {
- return false;
- },
- getState: function ( part ) {
- return false;
- },
- shortcodeAll: function ( shortcode ) {
- return false;
- },
- shortcodeEdit: function ( shortcode ) {
- return false;
- },
- shortcodeValidateOldMethod: function ( shortcode ) {
- return false;
- },
- updateMergedCaps: function ( rule ) {
- return false;
- }
- };
- };
- //console.log(window.tdcAdminSettings);
- </script>
- <?php
- $buffer = ob_get_clean();
- echo $buffer;
- }
- // Code necessary to remove some vc functionality that interfere with tagDiv composer
- if ( class_exists( 'Vc_Manager' ) && method_exists( 'Vc_Manager', 'getInstance' ) ) {
- $vc_instance = Vc_Manager::getInstance();
- remove_action( 'init', array(
- $vc_instance,
- 'init',
- ), 9 );
- }
- add_action( 'after_setup_theme', 'tdc_on_register_external_shortcodes' );
- function tdc_on_register_external_shortcodes() {
- if ( tdc_state::is_live_editor_iframe() || tdc_state::is_live_editor_ajax() ) {
- register_external_shortcodes();
- } else {
- wrap_external_shortcodes();
- }
- }
- /**
- * Registers the js script:
- */
- add_action( 'admin_enqueue_scripts', 'tdc_on_admin_enqueue_scripts' );
- function tdc_on_admin_enqueue_scripts() {
- // load the css
- if ( true === TDC_USE_LESS ) {
- wp_enqueue_style('tdc_wp_admin_main', TDC_URL . '/td_less_style.css.php?part=tdc_wp_admin_main', false, TD_COMPOSER );
- } else {
- wp_enqueue_style('tdc_wp_admin_main', TDC_URL . '/assets/css/tdc_wp_admin_main.css', false, TD_COMPOSER);
- }
- // load the js
- if (TDC_DEPLOY_MODE == 'deploy') {
- wp_enqueue_script('js_files_for_wp_admin', TDC_URL . '/assets/js/js_files_for_wp_admin.min.js', array('jquery', 'underscore'), TD_COMPOSER, true);
- } else {
- tdc_util::enqueue_js_files_array(tdc_config::$js_files_for_wp_admin, array('jquery', 'underscore'));
- }
- // Disable the confirmation messages at leaving pages
- if ( tdc_state::is_live_editor_iframe() || tdc_state::is_live_editor_ajax() ) {
- wp_dequeue_script( 'autosave' );
- wp_deregister_script( 'ace-editor' );
- }
- //remove_action( 'vc-settings-render-tab-vc-custom_css', 'vc_page_settings_custom_css_load' );
- }
- if (!empty($td_action)) {
- // $_GET['post_id'] is requiered from now on
- $post_id = tdc_util::get_get_val( 'post_id' );
- if (empty($post_id)) {
- echo 'No post_id received via GET';
- die;
- }
- switch ($td_action) {
- case 'tdc':
- // Wrapper edit page
- $current_post = get_post($post_id);
- do_action_ref_array( 'the_post', array( &$current_post ) );
- tdc_state::set_post($current_post);
- /**
- * on wrap body class
- */
- add_filter( 'admin_body_class', 'on_admin_body_class_wrap');
- function on_admin_body_class_wrap( $classes ) {
- $classes .= ' tdc';
- global $post;
- $current_post_type = get_post_type( $post );
- $tdbTemplateType = tdc_util::get_get_val('tdbTemplateType');
- if ( false !== $tdbTemplateType ) {
- $current_post_type = $tdbTemplateType;
- }
- $classes .= ' tdb-template-type-' . $current_post_type;
- return $classes;
- }
- /**
- * on wrapper current_screen
- */
- add_action( 'current_screen', 'on_current_screen_load_wrap');
- function on_current_screen_load_wrap() {
- // @todo The 'tiny_mce' doesn't work as dependency. That's why it was independently loaded
- wp_enqueue_script( 'tiny_mce', includes_url( '/js/tinymce/tinymce.min.js' ) );
- //wp_enqueue_script( 'tiny_mce', '//tinymce.cachefly.net/4.1/tinymce.min.js' );
- if (TDC_DEPLOY_MODE == 'deploy') {
- wp_enqueue_script('js_files_for_wrapper', TDC_URL . '/assets/js/js_files_for_wrapper.min.js', array(
- 'jquery',
- 'backbone',
- 'underscore',
- 'shortcode' // the parser depends of wp.shortcode (shortcode.js wp file)
- ), TD_COMPOSER, true);
- } else {
- tdc_util::enqueue_js_files_array(tdc_config::$js_files_for_wrapper, array(
- 'jquery',
- 'backbone',
- 'underscore',
- 'shortcode' // the parser depends of wp.shortcode (shortcode.js wp file)
- ));
- }
- if ( true === TDC_USE_LESS ) {
- wp_enqueue_style('td_composer_edit', TDC_URL . '/td_less_style.css.php?part=wrap_main', false, TD_COMPOSER);
- } else {
- wp_enqueue_style('td_composer_edit', TDC_URL . '/assets/css/wrap_main.css', false, TD_COMPOSER);
- }
- remove_all_actions('admin_notices');
- remove_all_actions('network_admin_notices');
- // Disables all the updates notifications regarding plugins, themes & WordPress completely.
- tdc_disable_notification();
- require_once('templates/frontend.tpl.php');
- die;
- }
- /**
- * admin enqueue scripts
- */
- add_action( 'admin_enqueue_scripts', 'on_admin_enqueue_scripts'); // load them last
- function on_admin_enqueue_scripts() {
- foreach ( tdc_config::$font_settings as $font_id => $font_settings ) {
- if ( $font_id === 'font_newspaper' && 'Newsmag' === TD_THEME_NAME ) {
- continue;
- }
- if ( isset( $font_settings['theme_font'] ) ) {
- wp_enqueue_style( $font_id, get_stylesheet_directory_uri() . $font_settings['css_file'], false, TD_THEME_VERSION );
- continue;
- }
- wp_enqueue_style( $font_id, TDC_URL . $font_settings['css_file'], false, TD_COMPOSER );
- $file_path = plugin_dir_path( __FILE__ ) . 'templates/' . $font_settings['template_file'];
- if ( ! file_exists( $file_path ) ) {
- $handle_file = fopen( $file_path, 'w+');
- //check response
- if ( $handle_file !== false ) {
- switch ( $font_settings[ 'name' ] ) {
- case 'Font Awesome':
- case 'Typicons':
- case 'Open Iconic':
- case 'tagDiv Multi-purpose':
- $json_font_response = td_remote_http::get_page( TDC_URL . $font_settings[ 'css_file' ], __CLASS__ );
- if ( false === $json_font_response ) {
- td_log::log( __FILE__, __FUNCTION__, 'Failed to get font icons', $json_font_response );
- } else {
- preg_match_all( "/\.tdc-font-" . $font_settings[ 'family_class' ] . "-(.*)\:before/", $json_font_response, $output_array );
- if ( is_array( $output_array ) && count( $output_array ) ) {
- $response[ $font_id ][ 'classes' ] = $output_array[ 1 ];
- $span_icons = '';
- foreach ( $response[ $font_id ][ 'classes' ] as $font_class ) {
- $css_class = 'tdc-font-' . $font_settings[ 'family_class' ] . ' tdc-font-' . $font_settings[ 'family_class' ] . '-' . $font_class;
- $span_icons .= '<span data-font_class="' . $css_class . '"><i class="' . $css_class . '"></i></span>' . PHP_EOL;
- }
- fwrite( $handle_file, $span_icons );
- clearstatcache();
- }
- }
- break;
- }
- fclose( $handle_file );
- }
- }
- }
- }
- break;
- case 'tdc_edit':
- // Iframe content post
- add_filter( 'show_admin_bar', '__return_false' );
- add_filter( 'body_class', 'tdc_on_body_class' );
- function tdc_on_body_class( $classes ) {
- $classes[] = 'tdc-theme-' . TD_THEME_NAME;
- return $classes;
- }
- add_filter( 'the_content', function($content) {
- if ( ! function_exists( 'td_replace_vc_column_text' ) ) {
- function td_replace_vc_column_text( $matches ) {
- return '[vc_column_text' . $matches[ 1 ] . ']' . base64_encode( $matches[ 2 ] ) . '[/vc_column_text]';
- }
- }
- if ( shortcode_exists( 'vc_column_text' ) && has_shortcode( $content, 'vc_column_text' ) ) {
- // Double regex instead of one regex (preg_match and preg_replace_callback) - with one regex we need to parse content for replacing text, to supply what does the second regex
- // This first regex check is to allow second regex replacement to apply only when 'vc_column_text' has content
- preg_match("/\[vc_column_text(.*)\](.*)\[\/vc_column_text\]/sU", $content, $matches);
- if ( is_array( $matches ) && count( $matches ) ) {
- $content = preg_replace_callback( "/\[vc_column_text(.*)\](.*)\[\/vc_column_text\]/sU", 'td_replace_vc_column_text', $content );
- }
- }
- if ( ! function_exists( 'td_replace_td_block_text_with_title' ) ) {
- function td_replace_td_block_text_with_title( $matches ) {
- return '[td_block_text_with_title' . $matches[ 1 ] . ']' . base64_encode( $matches[ 2 ] ) . '[/td_block_text_with_title]';
- }
- }
- if ( shortcode_exists( 'td_block_text_with_title' ) && has_shortcode( $content, 'td_block_text_with_title' ) ) {
- // Double regex instead of one regex (preg_match and preg_replace_callback) - with one regex we need to parse content for replacing text, to supply what does the second regex
- // This first regex check is to allow second regex replacement to apply only when 'td_block_text_with_title' has content
- preg_match("/\[td_block_text_with_title(.*)\](.*)\[\/td_block_text_with_title\]/sU", $content, $matches);
- if ( is_array( $matches ) && count( $matches ) ) {
- $content = preg_replace_callback("/\[td_block_text_with_title(.*)\](.*)\[\/td_block_text_with_title\]/sU", 'td_replace_td_block_text_with_title', $content);
- }
- }
- return $content;
- }, 10, 1 );
- add_filter( 'the_content', 'tdc_on_the_content', 10000, 1 );
- function tdc_on_the_content( $content ) {
- if ( isset( $_POST['tdc_content'] ) ) {
- //echo $_POST['tdc_content'];die;
- //return $_POST['tdc_content'];
- return do_shortcode( stripslashes ( $_POST['tdc_content'] ) );
- }
- return $content;
- }
- add_filter( 'get_post_metadata', 'tdc_on_get_post_metadata', 10, 4 );
- function tdc_on_get_post_metadata( $value, $object_id, $meta_key, $single ) {
- tdc_state::set_customized_settings();
- if ( 'td_mega_menu_cat' === $meta_key || 'td_mega_menu_page_id' === $meta_key ) {
- // Look inside of the customized menu settings
- $customized_menu_settings = tdc_state::get_customized_menu_settings();
- if ( false !== $customized_menu_settings ) {
- foreach ( $customized_menu_settings as $key_menu_settings => $value_menu_settings ) {
- if ( isset($value_menu_settings[ $meta_key .'[' . $object_id . ']' ] ) ) {
- return $value_menu_settings[ $meta_key .'[' . $object_id . ']' ];
- }
- }
- }
- } else if ( 'td_homepage_loop' === $meta_key || 'td_page' === $meta_key ) {
- // Look inside of the customized page settings
- $customized_page_settings = tdc_state::get_customized_page_settings();
- if ( false !== $customized_page_settings ) {
- return array( $customized_page_settings[ $meta_key ] );
- }
- } else if ( '_wp_page_template' === $meta_key ) {
- $customized_page_settings = tdc_state::get_customized_page_settings();
- if ( false !== $customized_page_settings ) {
- return array( $customized_page_settings[ 'page_template' ] );
- }
- }
- return $value;
- }
- add_filter( 'wp_get_nav_menu_items', 'tdc_on_wp_get_nav_menu_items', 10, 3 );
- function tdc_on_wp_get_nav_menu_items( $items, $menu, $args ) {
- //var_dump($menu);
- tdc_state::set_customized_settings();
- $menu_settings = tdc_state::get_customized_menu_settings( $menu->term_id );
- if ( false !== $menu_settings ) {
- //var_dump($menu_settings);
- //return $items;
- $new_items = array();
- foreach ( $menu_settings as $key => $value) {
- if ( 0 === strpos( $key, 'menu-item-db-id' ) ) {
- $item = new stdClass();
- $item->ID = $value;
- $item->post_type = 'nav_menu_item';
- if ( isset($menu_settings[ "menu-item-object-id[$value]" ] ) ) {
- $item->object_id = $menu_settings[ "menu-item-object-id[$value]" ];
- }
- if ( isset($menu_settings[ "menu-item-object[$value]" ] ) ) {
- $item->object = $menu_settings[ "menu-item-object[$value]" ];
- }
- if ( isset($menu_settings[ "menu-item-parent-id[$value]" ] ) ) {
- $item->menu_item_parent = $menu_settings[ "menu-item-parent-id[$value]" ];
- }
- if ( isset($menu_settings[ "menu-item-type[$value]" ] ) ) {
- $item->type = $menu_settings[ "menu-item-type[$value]" ];
- }
- if ( isset($menu_settings[ "menu-item-title[$value]" ] ) ) {
- $item->title = $menu_settings[ "menu-item-title[$value]" ];
- }
- if ( isset($menu_settings[ "menu-item-url[$value]" ] ) ) {
- $item->url = $menu_settings[ "menu-item-url[$value]" ];
- }
- if ( isset($menu_settings[ "menu-item-title[$value]" ] ) ) {
- $item->title = $menu_settings[ "menu-item-title[$value]" ];
- $item->post_title = $item->title;
- }
- if ( isset($menu_settings[ "menu-item-attr-title[$value]" ] ) ) {
- $item->attr_title = $menu_settings[ "menu-item-attr-title[$value]" ];
- }
- if ( isset($menu_settings[ "menu-item-description[$value]" ] ) ) {
- $item->description = $menu_settings[ "menu-item-description[$value]" ];
- }
- if ( isset($menu_settings[ "menu-item-classes[$value]" ] ) ) {
- $item->classes = $menu_settings[ "menu-item-classes[$value]" ];
- }
- if ( isset($menu_settings[ "menu-item-xfn[$value]" ] ) ) {
- $item->xfn = $menu_settings[ "menu-item-xfn[$value]" ];
- }
- if ( isset($menu_settings[ "menu-item-position[$value]" ] ) ) {
- $item->menu_order = $menu_settings[ "menu-item-position[$value]" ];
- }
- if ( isset($menu_settings[ "menu-item-db-id[$value]" ] ) ) {
- $item->db_id = $menu_settings[ "menu-item-db-id[$value]" ];
- }
- if ( isset($menu_settings[ "td_mega_menu_cat[$value]" ] ) ) {
- $item->td_mega_menu_cat = $menu_settings[ "td_mega_menu_cat[$value]" ];
- }
- if ( isset($menu_settings[ "td_mega_menu_page_id[$value]" ] ) ) {
- $item->td_mega_menu_page_id = $menu_settings[ "td_mega_menu_page_id[$value]" ];
- }
- // CODE SECTION FROM wp customizer >>>
- $post = new WP_Post( (object) $item );
- if ( empty( $post->post_author ) ) {
- $post->post_author = get_current_user_id();
- }
- if ( ! isset( $post->type_label ) ) {
- if ( 'post_type' === $post->type ) {
- $object = get_post_type_object( $post->object );
- if ( $object ) {
- $post->type_label = $object->labels->singular_name;
- } else {
- $post->type_label = $post->object;
- }
- } elseif ( 'taxonomy' == $post->type ) {
- $object = get_taxonomy( $post->object );
- if ( $object ) {
- $post->type_label = $object->labels->singular_name;
- } else {
- $post->type_label = $post->object;
- }
- } else {
- $post->type_label = __( 'Custom Link' );
- }
- }
- /** This filter is documented in wp-includes/nav-menu.php */
- $post->attr_title = apply_filters( 'nav_menu_attr_title', $post->attr_title );
- /** This filter is documented in wp-includes/nav-menu.php */
- $post->description = apply_filters( 'nav_menu_description', wp_trim_words( $post->description, 200 ) );
- /** This filter is documented in wp-includes/nav-menu.php */
- $post = apply_filters( 'wp_setup_nav_menu_item', $post );
- // <<< CODE SECTION FROM wp customizer
- $new_items[] = $post;
- }
- }
- // CODE SECTION FROM wp customizer >>>
- foreach ( $new_items as $item ) {
- foreach ( get_object_vars( $item ) as $key => $value ) {
- $item->$key = $value;
- }
- }
- // <<< CODE SECTION FROM wp customizer
- //print_r($new_items);
- return $new_items;
- }
- return $items;
- }
- /**
- * iframe enqueue scripts
- */
- add_action( 'wp_enqueue_scripts', 'on_wp_enqueue_scripts_iframe', 1010); // load them last
- function on_wp_enqueue_scripts_iframe() {
- if (TDC_DEPLOY_MODE == 'deploy') {
- wp_enqueue_script('js_files_for_iframe', TDC_URL . '/assets/js/js_files_for_iframe.min.js', array(
- 'jquery',
- 'underscore'
- ), TD_COMPOSER, true);
- } else {
- tdc_util::enqueue_js_files_array(tdc_config::$js_files_for_iframe, array(
- 'jquery',
- 'underscore'
- ));
- }
- if ( true === TDC_USE_LESS ) {
- wp_enqueue_style('td_composer_iframe_main', TDC_URL . '/td_less_style.css.php?part=iframe_main', false, TD_COMPOSER);
- } else {
- wp_enqueue_style('td_composer_iframe_main', TDC_URL . '/assets/css/iframe_main.css', false, TD_COMPOSER);
- }
- }
- /**
- * Load all fonts in iframe, to be sure we have all fonts when a do_job callback finishes
- */
- add_action( 'get_footer', 'on_get_footer_load_all_fonts' );
- function on_get_footer_load_all_fonts() {
- foreach ( tdc_config::$font_settings as $font_id => $font_settings ) {
- if ( isset( $font_settings['theme_font'] ) ) {
- continue;
- }
- wp_enqueue_style( $font_id, TDC_URL . $font_settings['css_file'], false, TD_COMPOSER );
- }
- if ( td_util::get_check_installed_plugins() ) {
- ob_start();
- ?>
- <script>
- setTimeout(function() {
- window.top.tdConfirm.modal({
- caption: 'Did you disable any TagDiv plugins?',
- htmlInfoContent: "We've got some errors at loading API files. It could happen because of a disabled TagDiv plugin!",
- textYes: 'Ok',
- callbackYes: function () {
- window.top.tb_remove();
- },
- hideNoButton: true
- });
- }, 3000);
- </script>
- <?php
- echo ob_get_clean();
- }
- }
- break;
- default:
- // Unknown td_action - kill execution
- echo 'Unknown td_action received: ' . $td_action;
- die;
- }
- }
- add_action('admin_head', 'on_admin_head_add_tdc_loader');
- function on_admin_head_add_tdc_loader() {
- if (!tdc_state::is_live_editor_iframe()) {
- return;
- }
- ?>
- <style>
- .tdc-fullscreen-loader-wrap {
- opacity: 1 !important;
- }
- </style>
- <div class="tdc-fullscreen-loader-wrap" style=""></div>
- <?php
- }
- // Add the necessary scripts for css tab on widgets
- add_action( 'load-widgets.php', 'tdc_load_widget' );
- function tdc_load_widget() {
- if (td_util::tdc_is_installed()) {
- if (TDC_DEPLOY_MODE === 'deploy') {
- wp_enqueue_script('js_files_for_widget', TDC_URL . '/assets/js/js_files_for_widget.min.js', array(
- 'jquery',
- 'underscore',
- 'backbone'
- ), TD_COMPOSER, true);
- } else {
- // Load tdc js scripts needed for the css tab in the widget panel of the theme
- tdc_util::enqueue_js_files_array(tdc_config::$js_files_for_widget, array('jquery', 'underscore', 'backbone'));
- // wp_enqueue_script( 'tdcAdminIFrameUI', TDC_URL . '/assets/js/tdcAdminIFrameUI.js', array( 'underscore', 'backbone' ) );
- // wp_enqueue_script( 'tdcCssEditor', TDC_URL . '/assets/js/tdcCssEditor.js', array( 'underscore' ) );
- // wp_enqueue_script( 'tdcSidebarPanel', TDC_URL . '/assets/js/tdcSidebarPanel.js' );
- // wp_enqueue_script( 'tdcUtil', TDC_URL . '/assets/js/tdcUtil.js' );
- // wp_enqueue_script( 'tdcJobManager', TDC_URL . '/assets/js/tdcJobManager.js' );
- }
- // Add viewport intervals
- td_js_buffer::add_variable('td_viewport_interval_list', td_global::$td_viewport_intervals);
- // Load media
- add_action( 'admin_enqueue_scripts', 'on_load_widget_admin_enqueue_scripts' );
- function on_load_widget_admin_enqueue_scripts() {
- wp_enqueue_media();
- }
- }
- }
Add Comment
Please, Sign In to add comment