/**
  * Enqueue scripts
  *
  * @since 1.0.0
  *
  * @return void
  */
 function on_admin_scripts()
 {
     wp_register_script('wpglobus-black-studio-widget-init', plugin_dir_url(__FILE__) . 'wpglobus-for-black-studio-widget-init.js', array(), WPGLOBUS_BS_WIDGET, true);
     wp_enqueue_script('wpglobus-black-studio-widget-init');
     wp_localize_script('wpglobus-black-studio-widget-init', 'WPGlobusBSWidget', array('data' => array('version' => WPGLOBUS_BS_WIDGET, 'button_separator' => $this->button_separator, 'text_separator' => '', 'icon' => 'wpglobus-bs-separator', 'button' => $this->button, 'button_class' => 'wpglobus_bs_widget_button_', 'button_classes' => 'widget btn wpglobus_bs_widget_button', 'pagenow' => WPGlobus_WP::pagenow())));
 }
Exemplo n.º 2
0
 /**
  * Enqueue admin scripts
  * @return void
  */
 public function on_admin_scripts()
 {
     $post = get_post();
     $type = empty($post->post_type) ? '' : $post->post_type;
     if ($this->disabled_entity($type)) {
         return;
     }
     /**
      * Dequeue autosave for prevent alert from wp.autosave.server.postChanged() after run post_edit in wpglobus.admin.js
      * @see wp-includes\js\autosave.js
      */
     wp_dequeue_script('autosave');
     $pagenow = WPGlobus_WP::pagenow();
     $config = WPGlobus::Config();
     /**
      * Get array of enabled pages for loading js
      */
     $enabled_pages = $this->enabled_pages;
     /**
      * Init $post_content
      */
     $post_content = '';
     /**
      * Init $post_title
      */
     $post_title = '';
     /**
      * Init $post_excerpt
      */
     $post_excerpt = '';
     /**
      * Init $page_action
      */
     $page_action = '';
     /**
      * Init $page
      */
     $page = '';
     /**
      * Init array data depending on the context for localize script
      */
     $data = array('default_language' => $config->default_language, 'language' => $config->language, 'enabled_languages' => $config->enabled_languages, 'open_languages' => $config->open_languages, 'en_language_name' => $config->en_language_name, 'locale_tag_start' => self::LOCALE_TAG_START, 'locale_tag_end' => self::LOCALE_TAG_END);
     if (!in_array($pagenow, $enabled_pages)) {
         $page = WPGlobus_WP::plugin_page();
     }
     if ('' == $page) {
         /**
          * Now get $pagenow
          */
         $page = isset($pagenow) ? $pagenow : '';
         if ('post.php' == $page || 'post-new.php' == $page) {
             $page_action = 'post-edit';
             /**
              * We use $post_content, $post_title at edit post page
              */
             /**
              * Set $post_content for default language
              * because we have text with all languages and delimiters in $post->post_content
              * next we send $post_content to js with localize script
              * @see post_edit() in admin.globus.js
              */
             $post_content = WPGlobus_Core::text_filter($post->post_content, $config->default_language);
             /**
              * Set $post_title for default language
              */
             $post_title = WPGlobus_Core::text_filter($post->post_title, $config->default_language);
         }
     }
     if (self::LANGUAGE_EDIT_PAGE === $page) {
         /**
          * Using the same 'select2-js' ID as Redux Plugin does, to avoid duplicate enqueueing
          */
         if (!wp_script_is('select2-js')) {
             wp_enqueue_script('select2-js', WPGlobus::$PLUGIN_DIR_URL . 'lib/select2.min.js', array('jquery'), '3.5.2', true);
         }
     }
     if (in_array($page, $enabled_pages)) {
         /**
          * Init $tabs_suffix
          */
         $tabs_suffix = array();
         if (in_array($page, array('post.php', 'post-new.php', 'edit-tags.php', 'term.php'))) {
             /**
              * Make suffixes for tabs
              */
             foreach ($config->enabled_languages as $language) {
                 if ($language == $config->default_language) {
                     $tabs_suffix[] = 'default';
                 } else {
                     $tabs_suffix[] = $language;
                 }
             }
         }
         $i18n = array();
         $i18n['cannot_disable_language'] = __('You cannot disable the main language.', 'wpglobus');
         if ('post.php' == $page || 'post-new.php' == $page) {
             /**
              * Add template for standard excerpt meta box
              */
             $data['template'] = '';
             foreach (WPGlobus::Config()->enabled_languages as $language) {
                 $return = $language == WPGlobus::Config()->default_language ? WPGlobus::RETURN_IN_DEFAULT_LANGUAGE : WPGlobus::RETURN_EMPTY;
                 $classes = in_array($language, WPGlobus::Config()->open_languages) ? 'wpglobus-excerpt wpglobus-translatable' : 'wpglobus-excerpt wpglobus-translatable hidden';
                 $data['template'] .= '<textarea data-language="' . $language . '" placeholder="' . WPGlobus::Config()->en_language_name[$language] . '" class="' . $classes . '" rows="1" cols="40" name="excerpt-' . $language . '" id="excerpt-' . $language . '">';
                 $data['template'] .= WPGlobus_Core::text_filter($post->post_excerpt, $language, $return);
                 $data['template'] .= '</textarea>';
                 if (defined('WPSEO_VERSION')) {
                     /**
                      * @todo This is the only place with WPSEO not in its own class.
                      */
                     $blogname = get_option('blogname');
                     $blogdesc = get_option('blogdescription');
                     $data['blogname'][$language] = WPGlobus_Core::text_filter($blogname, $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE);
                     $data['blogdescription'][$language] = WPGlobus_Core::text_filter($blogdesc, $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE);
                 }
             }
             $data['modify_excerpt'] = true;
             if (isset($this->vendors_scripts['WOOCOMMERCE']) && $this->vendors_scripts['WOOCOMMERCE'] && 'product' == $post->post_type) {
                 $data['modify_excerpt'] = false;
             }
             $data['tagsdiv'] = array();
             $data['tag'] = array();
             $tags = $this->_get_taxonomies($post->post_type, 'non-hierarchical');
             if (!empty($tags)) {
                 foreach ($tags as $tag) {
                     $data['tagsdiv'][] = 'tagsdiv-' . $tag;
                     $data['tag'][$tag] = self::_get_terms($tag);
                 }
             }
             /**
              * Check for support 'title'
              */
             $data['support']['title'] = true;
             if (!post_type_supports($post->post_type, 'title')) {
                 $data['support']['title'] = false;
             }
             /**
              * Check for support 'editor'
              */
             $data['support']['editor'] = true;
             if (!post_type_supports($post->post_type, 'editor')) {
                 $data['support']['editor'] = false;
             }
             if (!empty($post)) {
                 $data['post_type'] = $post->post_type;
                 $opts = (array) get_option(WPGlobus::Config()->option_post_meta_settings);
                 if (empty($opts)) {
                     $data['post_meta_settings'] = '';
                 } else {
                     $data['post_meta_settings'] = $opts;
                 }
             }
             $data['customFieldsEnabled'] = true;
             /**
              * Filter to enable/disable multilingual custom fields on post.php|post-new.php page.
              * Returning boolean.
              * @since 1.6.5
              *
              * @param boolean		 $data[ 'customFieldsEnabled' ] Enabled by default.
              * @param WP_Post Object $post Current post.
              */
             $data['customFieldsEnabled'] = apply_filters('wpglobus_custom_fields_enabled', $data['customFieldsEnabled'], $post);
             if ($data['customFieldsEnabled']) {
                 $data['customFieldsEnabled'] = 'true';
             } else {
                 $data['customFieldsEnabled'] = 'false';
             }
         } else {
             if ('nav-menus.php' === $page) {
                 $page_action = 'menu-edit';
                 $menu_items = array();
                 $post_titles = array();
                 /** @global wpdb $wpdb */
                 global $wpdb;
                 $_query = new WP_Query(array('post_type' => 'nav_menu_item', 'nopaging' => true));
                 /**
                  * Array of menu items.
                  *
                  * @var WP_Post[] $items
                  */
                 $items = $_query->posts;
                 unset($_query);
                 foreach ($items as $item) {
                     $item->post_title = trim($item->post_title);
                     if (empty($item->post_title)) {
                         $item_type = get_post_meta($item->ID, '_menu_item_type', true);
                         $item_object = get_post_meta($item->ID, '_menu_item_object', true);
                         $item_object_id = get_post_meta($item->ID, '_menu_item_object_id', true);
                         $_raw_title = '';
                         if ('post_type' === $item_type) {
                             $_raw_title = get_post_field('post_title', $item_object_id);
                         } elseif ('taxonomy' === $item_type) {
                             /**
                              * Here we need the raw term. Temporary need to disable our filter.
                              */
                             remove_filter('get_term', array('WPGlobus_Filters', 'filter__get_term'), 0);
                             $term = get_term_by('id', $item_object_id, $item_object);
                             add_filter('get_term', array('WPGlobus_Filters', 'filter__get_term'), 0);
                             $_raw_title = $term->name;
                         }
                         $_raw_title = trim($_raw_title);
                         if (!empty($_raw_title)) {
                             $item->post_title = $_raw_title;
                             // Save the raw title in the menu.
                             $wpdb->query($wpdb->prepare("UPDATE {$wpdb->posts} SET post_title = '%s' WHERE ID = %d", $_raw_title, $item->ID));
                         }
                     }
                     // Empty post_title.
                     /**
                      * Add raw data for Navigation Label
                      */
                     $menu_items[$item->ID]['input.edit-menu-item-title']['source'] = $item->post_title;
                     /**
                      * Add raw data for Title Attribute
                      */
                     $menu_items[$item->ID]['input.edit-menu-item-attr-title']['source'] = $item->post_excerpt;
                     $menu_items[$item->ID]['item-title'] = WPGlobus_Core::text_filter($item->post_title, $config->default_language);
                     $post_titles[$item->post_title] = $menu_items[$item->ID]['item-title'];
                     foreach (self::Config()->enabled_languages as $language) {
                         $return = $language == self::Config()->default_language ? WPGlobus::RETURN_IN_DEFAULT_LANGUAGE : WPGlobus::RETURN_EMPTY;
                         /**
                          * Navigation Label
                          */
                         $menu_items[$item->ID][$language]['input.edit-menu-item-title']['caption'] = WPGlobus_Core::text_filter($item->post_title, $language, $return);
                         /**
                          * Title Attribute
                          */
                         $menu_items[$item->ID][$language]['input.edit-menu-item-attr-title']['caption'] = WPGlobus_Core::text_filter($item->post_excerpt, $language, $return);
                         /**
                          * Navigation Label classes
                          */
                         $menu_items[$item->ID][$language]['input.edit-menu-item-title']['class'] = 'widefat wpglobus-menu-item wpglobus-item-title wpglobus-translatable';
                         /**
                          * Title Attribute classes
                          */
                         $menu_items[$item->ID][$language]['input.edit-menu-item-attr-title']['class'] = 'widefat wpglobus-menu-item wpglobus-item-attr wpglobus-translatable';
                     }
                 }
                 $data['items'] = $menu_items;
                 $data['post_titles'] = $post_titles;
                 $i18n['save_nav_menu'] = __('*) Available after the menu is saved.', 'wpglobus');
             } else {
                 if ('edit-tags.php' == $page || 'term.php' == $page) {
                     global $tag;
                     $data['taxonomy'] = empty($_GET['taxonomy']) ? false : $_GET['taxonomy'];
                     $data['tag_id'] = empty($_GET['tag_ID']) ? false : $_GET['tag_ID'];
                     $data['has_items'] = true;
                     if ($data['tag_id']) {
                         /**
                          * For example url: edit-tags.php?action=edit&taxonomy=category&tag_ID=4&post_type=post
                          */
                         $page_action = 'taxonomy-edit';
                     } else {
                         /**
                          * For example url: edit-tags.php?taxonomy=category
                          * edit-tags.php?taxonomy=product_cat&post_type=product
                          */
                         if (!empty($_GET['taxonomy'])) {
                             $terms = get_terms($_GET['taxonomy'], array('hide_empty' => false));
                             if (is_wp_error($terms) or empty($terms)) {
                                 $data['has_items'] = false;
                             }
                         }
                         $page_action = 'taxonomy-quick-edit';
                     }
                     if ($data['tag_id']) {
                         foreach ($config->enabled_languages as $language) {
                             $lang = $language == $config->default_language ? 'default' : $language;
                             if ('default' == $lang) {
                                 $data['i18n'][$lang]['name'] = WPGlobus_Core::text_filter($tag->name, $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE);
                                 $data['i18n'][$lang]['description'] = WPGlobus_Core::text_filter($tag->description, $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE);
                             } else {
                                 $data['i18n'][$lang]['name'] = WPGlobus_Core::text_filter($tag->name, $language, WPGlobus::RETURN_EMPTY);
                                 $data['i18n'][$lang]['description'] = WPGlobus_Core::text_filter($tag->description, $language, WPGlobus::RETURN_EMPTY);
                             }
                         }
                     } else {
                         /**
                          * Get template for quick edit taxonomy name at edit-tags.php page
                          */
                         $data['template'] = $this->_get_quickedit_template();
                     }
                 } else {
                     if ('edit.php' == $page) {
                         $page_action = 'edit.php';
                         $post_type = 'post';
                         if (!empty($_GET['post_type'])) {
                             $post_type = $_GET['post_type'];
                         }
                         global $posts;
                         $data['has_items'] = empty($posts) ? false : true;
                         /**
                          * Get template for quick edit post title at edit.php page
                          */
                         $data['template'] = $this->_get_quickedit_template();
                         $tags = $this->_get_taxonomies($post_type, 'non-hierarchical');
                         if (!empty($tags)) {
                             foreach ($tags as $tag) {
                                 $terms = self::_get_terms($tag);
                                 if (!empty($terms)) {
                                     $data['tags'][] = $tag;
                                     $data['names'][$tag] = 'tax_input[' . $tag . ']';
                                     $data['tag'][$tag] = $terms;
                                     $data['value'][$tag] = '';
                                     // just init
                                     $data['value'][$tag]['post_id'] = '';
                                     // just init
                                 }
                             }
                         }
                     } else {
                         if ('options-general.php' == $page) {
                             $page_action = 'options-general.php';
                         } else {
                             if ('widgets.php' == $page) {
                                 $page_action = 'widgets.php';
                             } else {
                                 if ('customize.php' == $page) {
                                     if (version_compare(WPGLOBUS_VERSION, '1.4.0-beta1', '<')) {
                                         $html = sprintf(__('You are customizing %s'), '<strong class="theme-name site-title"><span id="wpglobus-customize-info">' . esc_html(WPGlobus_Core::text_filter(get_option('blogname'), WPGlobus::Config()->default_language)) . '</span></strong>');
                                     } else {
                                         // @since 1.4.0 class panel-title site-title
                                         $html = sprintf(__('You are customizing %s'), '<strong class="panel-title site-title"><span id="wpglobus-customize-info">' . esc_html(WPGlobus_Core::text_filter(get_option('blogname'), WPGlobus::Config()->default_language)) . '</span></strong>');
                                     }
                                     $page_action = 'customize.php';
                                     $page_data_key = 'customize';
                                     $page_data_values = array('info' => array('element' => '#customize-info .preview-notice', 'html' => $html), 'addElements' => array('wpglobus_blogname' => array('origin' => 'blogname', 'origin_element' => '#customize-control-blogname input', 'origin_parent' => '#customize-control-blogname', 'element' => '#customize-control-wpglobus_blogname input', 'value' => WPGlobus_Core::text_filter(get_option('blogname'), WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY)), 'wpglobus_blogdescription' => array('origin' => 'blogdescription', 'origin_element' => '#customize-control-blogdescription input', 'origin_parent' => '#customize-control-blogdescription', 'element' => '#customize-control-wpglobus_blogdescription input', 'value' => WPGlobus_Core::text_filter(get_option('blogdescription'), WPGlobus::Config()->language, WPGlobus::RETURN_EMPTY))));
                                 } else {
                                     if (in_array($page, array('wpglobus_options', self::LANGUAGE_EDIT_PAGE))) {
                                         $page_action = 'wpglobus_options';
                                     } else {
                                         if (in_array($page, array(self::PAGE_WPGLOBUS_CLEAN))) {
                                             $page_action = 'wpglobus_clean';
                                         } else {
                                             if (in_array($page, array(self::PAGE_WPGLOBUS_ADMIN_CENTRAL))) {
                                                 /**
                                                  * @since 1.6.6
                                                  */
                                                 $page_action = 'wpglobusAdminCentral';
                                             } else {
                                                 $page_action = $page;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
         wp_register_script('wpglobus-admin', self::$PLUGIN_DIR_URL . "includes/js/wpglobus-admin" . self::$_SCRIPT_SUFFIX . ".js", array('jquery', 'jquery-ui-dialog', 'jquery-ui-tabs'), WPGLOBUS_VERSION, true);
         wp_enqueue_script('wpglobus-admin');
         /**
          * We need to send the HTML breaks and not \r\n to the JS,
          * because we do element.text(...), and \r\n are being removed by TinyMCE
          * See other places with the same bookmark.
          * @bookmark EDITOR_LINE_BREAKS
          * added 24.05.2015
          * @todo     what's next with wpautop?  @see 'wpautop()' in https://make.wordpress.org/core/2015/05/14/dev-chat-summary-may-13/
          */
         if (has_filter('the_content', 'wpautop')) {
             $post_content_autop = wpautop($post_content);
         } else {
             $post_content_autop = $post_content;
         }
         /**
          * Filter for data to send to JS.
          * Returning array.
          * @since 1.5.5
          *
          * @param array  $data        An array with data.
          * @param string $page_action Page.
          */
         $data = apply_filters('wpglobus_localize_data', $data, $page_action);
         wp_localize_script('wpglobus-admin', 'WPGlobusAdmin', array('version' => WPGLOBUS_VERSION, 'page' => $page_action, 'content' => $post_content_autop, 'title' => $post_title, 'excerpt' => $post_excerpt, 'ajaxurl' => admin_url('admin-ajax.php'), 'parentClass' => __CLASS__, 'process_ajax' => __CLASS__ . '_process_ajax', 'flag_url' => $config->flags_url, 'tabs' => $tabs_suffix, 'i18n' => $i18n, 'data' => $data));
         if (empty($page_data_key)) {
             $page_data_key = 'page_custom_data';
         }
         if (empty($page_data_values)) {
             $page_data_values = null;
         }
         /**
          * Add multisite property
          * @since 1.6.0
          */
         $is_multisite = 'false';
         if (is_multisite()) {
             $is_multisite = 'true';
         }
         /**
          * Filter for custom data to send to JS.
          * Returning array or null.
          * @since 1.2.9
          *
          * @param array  $page_data_values An array with custom data or null.
          * @param string $page_data_key    Data key. @since 1.3.0
          * @param string $page_action      Page. @since 1.5.0
          */
         $page_data_values = apply_filters('wpglobus_localize_custom_data', $page_data_values, $page_data_key, $page_action);
         wp_localize_script('wpglobus-admin', 'WPGlobusCoreData', array_merge(array('version' => WPGLOBUS_VERSION, 'default_language' => $config->default_language, 'language' => $config->language, 'enabled_languages' => $config->enabled_languages, 'open_languages' => $config->open_languages, 'en_language_name' => $config->en_language_name, 'locale_tag_start' => self::LOCALE_TAG_START, 'locale_tag_end' => self::LOCALE_TAG_END, 'page' => $page_action, 'multisite' => $is_multisite, 'pluginInstallLocation' => array('single' => 'plugin-install.php?tab=search&s=WPGlobus&source=WPGlobus', 'multisite' => 'network/plugin-install.php?tab=search&s=WPGlobus&source=WPGlobus')), array($page_data_key => $page_data_values)));
         /**
          * Enqueue js for ACF support
          */
         if (($this->vendors_scripts['ACF'] || $this->vendors_scripts['ACFPRO']) && in_array($page, array('post.php', 'post-new.php'))) {
             /**
              * Filter to disable translation of selected ACF and ACF Pro fields.
              * @since 1.5.0
              *
              * To exclude field in ACF plugin you need to use the field name from Field Group ( usually wp-admin/edit.php?post_type=acf ).
              * To exclude field in ACF Pro plugin you need to use id, see Wrapper Attributes section on field's edit page.
              *
              * @param array   $disabled_fields Default is empty array.
              * @param boolean $is_acf_pro      Type of ACF plugin.
              *
              * @return array
              */
             $disabled_fields = apply_filters('wpglobus_disabled_acf_fields', array(), $this->vendors_scripts['ACFPRO']);
             wp_register_script('wpglobus-acf', self::$PLUGIN_DIR_URL . "includes/js/wpglobus-vendor-acf" . self::$_SCRIPT_SUFFIX . ".js", array('jquery', 'wpglobus-admin'), WPGLOBUS_VERSION, true);
             wp_enqueue_script('wpglobus-acf');
             wp_localize_script('wpglobus-acf', 'WPGlobusAcf', array('wpglobus_version' => WPGLOBUS_VERSION, 'pro' => $this->vendors_scripts['ACFPRO'] ? true : false, 'disabledFields' => $disabled_fields));
         }
         if ('widgets.php' == $page) {
             $disabled_widgets_mask = array('rss-url');
             /**
              * Filter to disable making multilingual element on widgets.php page.
              * @since 1.5.3
              *
              * @param array $disabled_widgets_mask Array of disabled masks.
              *
              * @return array
              */
             $disabled_widgets_mask = apply_filters('wpglobus_disabled_widgets_mask', $disabled_widgets_mask);
             wp_register_script('wpglobus-widgets', self::$PLUGIN_DIR_URL . "includes/js/wpglobus-widgets" . self::$_SCRIPT_SUFFIX . ".js", array('jquery', 'underscore', 'wpglobus-admin'), WPGLOBUS_VERSION, true);
             wp_enqueue_script('wpglobus-widgets');
             wp_localize_script('wpglobus-widgets', 'WPGlobusWidgets', array('wpglobus_version' => WPGLOBUS_VERSION, 'disabledMask' => $disabled_widgets_mask));
         }
     }
     // endif $enabled_pages
 }