/**
  * Enqueue Function.
  * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
  * @return void
  */
 public function enqueue()
 {
     $post_types = get_post_types(array('_builtin' => false));
     /** @var array $options */
     $options = get_option('wpglobus_option');
     $options_post_types = empty($options['post_type']) ? array() : $options['post_type'];
     $disabled_post_types = array();
     /**
      * Add CPT from woocommerce
      */
     $disabled_post_types[] = 'product';
     $disabled_post_types[] = 'product_variation';
     $disabled_post_types[] = 'shop_order';
     $disabled_post_types[] = 'shop_order_refund';
     $disabled_post_types[] = 'shop_coupon';
     $disabled_post_types[] = 'shop_webhook';
     $enabled_post_types = array();
     foreach ($post_types as $post_type) {
         if (!in_array($post_type, $disabled_post_types, true)) {
             $enabled_post_types[] = $post_type;
         }
     }
     wp_enqueue_script('wpglobus-redux-field-post_types', plugins_url('/field_post_types' . WPGlobus::SCRIPT_SUFFIX() . '.js', __FILE__), array('jquery'), WPGlobus::SCRIPT_VER(), true);
     wp_localize_script('wpglobus-redux-field-post_types', 'wpglobus_post_types', array('post_type' => $enabled_post_types, 'options' => $options_post_types));
 }
 /**
  * Hook for event data
  *
  * @since 1.5.4
  *
  * @param MC4WP_Form object $form
  *
  * @return void
  */
 public static function filter__data($form)
 {
     $matches = array();
     preg_match_all('/{:[a-z]{2}}(.*){:}/m', $form->content, $matches);
     $matches = $matches[0];
     /**
      * @see tab Forms from 'Edit Form' page of MailChimp for WP
      * for example: wp-admin/admin.php?page=mailchimp-for-wp-forms&view=edit-form&form_id=%POST_ID%
      */
     foreach ($matches as $match) {
         $form->content = str_replace($match, WPGlobus_Core::text_filter($match, WPGlobus::Config()->language), $form->content);
         $form->post->post_content = str_replace($match, WPGlobus_Core::text_filter($match, WPGlobus::Config()->language), $form->post->post_content);
     }
     /**
      * @see tab Messages from Edit Form page of MailChimp for WP
      */
     foreach ($form->messages as $type => $attrs) {
         if (is_object($form->messages[$type])) {
             $form->messages[$type]->text = WPGlobus_Core::text_filter($attrs->text, WPGlobus::Config()->language);
         } else {
             if (is_string($form->messages[$type])) {
                 /**
                  * We don't need to filter string because in this case $form->messages array contains keys for meta.
                  * @see $form->post_meta:protected
                  * @see file default-form-messages.php
                  *
                  * @since 1.6.1
                  */
                 //$form->messages[ $type ] = WPGlobus_Core::text_filter( $attrs, WPGlobus::Config()->language );
             }
         }
     }
 }
 /**
  * Filter for event data
  * 
  * @since 1.2.2
  * @param array $json
  * @param WP_Post object $event
  * @param array $additional
  *
  * @return array
  */
 public static function filter__events_data($json, $event, $additional)
 {
     if (!empty($json['title'])) {
         $json['title'] = WPGlobus_Core::text_filter($json['title'], WPGlobus::Config()->language);
     }
     return $json;
 }
 /**
  * @since 1.5.4
  */
 public static function action__add_layer_html($slider, $slide)
 {
     /**
      * @todo find how to translate field "params" from "wp_revslider_slides" table
      * @see output.class.php:620
      * @see db.class.php:130
      */
     $link = $slide->getParam('link', '');
     if (!empty($link)) {
         self::$links[$link] = WPGlobus_Core::text_filter($link, WPGlobus::Config()->language);
     }
 }
function wpglobus_js_composer_load()
{
    if (!defined('WPB_VC_VERSION')) {
        return;
    }
    if (defined('WPGLOBUS_VERSION')) {
        if (WPGlobus::Config()->toggle == 'off') {
            return;
        }
        add_filter('tiny_mce_before_init', 'wpglobus_js_composer_tiny_mce_before_init');
        function wpglobus_js_composer_tiny_mce_before_init($mceInit)
        {
            global $post;
            if (empty($post)) {
                return $mceInit;
            }
            if (false !== strpos($mceInit['selector'], 'content')) {
                $mceInit['setup'] = "function(editor) {\n\t\t\t\t\teditor.on( 'change', function(e) {\n\t\t\t\t\t\tif ( typeof WPGlobusJsComposer !== 'undefined' ) { \n\t\t\t\t\t\t\tWPGlobusJsComposer.change(e, editor);\n\t\t\t\t\t\t}\t\n\t\t\t\t\t});\n\t\t\t\t}";
            }
            return $mceInit;
        }
        add_action('admin_print_scripts', 'wpglobus_js_composer_admin_enqueue_scripts', 99);
        function wpglobus_js_composer_admin_enqueue_scripts()
        {
            global $post;
            if (!is_admin()) {
                return;
            }
            if (empty($post)) {
                return;
            }
            $wpglobus_composer_script_suffix = '.min';
            if (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) {
                $wpglobus_composer_script_suffix = '';
            }
            wp_register_script('wpglobus-js-composer', plugin_dir_url(__FILE__) . 'wpglobus_js_composer120' . $wpglobus_composer_script_suffix . ".js", array('jquery'), WPGLOBUS_JS_COMPOSER_VERSION, true);
            wp_enqueue_script('wpglobus-js-composer');
            wp_localize_script('wpglobus-js-composer', 'WPGlobusJsComposer', array('wpglobus_composer_version' => WPGLOBUS_JS_COMPOSER_VERSION, 'wpb_vc_version' => WPB_VC_VERSION));
        }
    }
}
    /**
     * Print page header.
     */
    public static function print_header()
    {
        $url_wpglobus_logo = WPGlobus::internal_images_url() . '/wpglobus-logo-180x180.png';
        ?>
		<style>
			.wp-badge.wpglobus-badge {
				background:      #ffffff url(<?php 
        echo esc_url($url_wpglobus_logo);
        ?>
) no-repeat;
				background-size: contain;
			}
		</style>

		<?php 
        echo '<div class="wrap about-wrap wpglobus-about-wrap">';
        ?>

		<h1 class="wpglobus"><span class="wpglobus-wp">WP</span>Globus
			<span class="wpglobus-version"><?php 
        echo esc_html(WPGLOBUS_VERSION);
        ?>
</span>
		</h1>

		<div class="wpglobus-motto"><?php 
        esc_html_e('Multilingual Everything!', 'wpglobus');
        ?>
</div>
		<div class="about-text">
			<?php 
        esc_html_e('WPGlobus is a family of WordPress plugins assisting you in making multilingual WordPress blogs and sites.', 'wpglobus');
        ?>
		</div>

		<div class="wp-badge wpglobus-badge"></div>
		<?php 
    }
Пример #7
0
 /**
  * Enqueue Function.
  * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
  * @return void
  */
 public function enqueue()
 {
     $post_types = get_post_types(array('_builtin' => false));
     /** @var array $options */
     $options = get_option('wpglobus_option');
     $options_post_types = empty($options['post_type']) ? array() : $options['post_type'];
     /**
      * Add CPT from woocommerce
      * moved to class-wpglobus.php:175
      * @todo remove after test
      */
     /* 
     			$disabled_post_types = array();
     			$disabled_post_types[] = 'product';
     			$disabled_post_types[] = 'product_variation';
     			$disabled_post_types[] = 'shop_order';
     			$disabled_post_types[] = 'shop_order_refund';
     			$disabled_post_types[] = 'shop_coupon';
     			$disabled_post_types[] = 'shop_webhook';
     			// */
     $enabled_post_types = array();
     foreach ($post_types as $post_type) {
         if (in_array($post_type, WPGlobus::Config()->disabled_entities, true)) {
             if (array_key_exists($post_type, $options_post_types)) {
                 /**
                  * Add to enabled_post_types array for WPGlobus Post types setting page
                  */
                 $enabled_post_types[] = $post_type;
             }
         } else {
             $enabled_post_types[] = $post_type;
         }
     }
     wp_enqueue_script('wpglobus-redux-field-post_types', plugins_url('/field_post_types' . WPGlobus::SCRIPT_SUFFIX() . '.js', __FILE__), array('jquery'), WPGlobus::SCRIPT_VER(), true);
     wp_localize_script('wpglobus-redux-field-post_types', 'wpglobus_post_types', array('post_type' => $enabled_post_types, 'options' => $options_post_types));
 }
    /**
     * Add language tabs to wpseo metabox ( .wpseo-metabox-tabs-div )
     */
    public static function action__wpseo_tab_content()
    {
        /** @global WP_Post $post */
        global $post;
        $type = empty($post) ? '' : $post->post_type;
        if (WPGlobus::O()->disabled_entity($type)) {
            return;
        }
        $permalink = array();
        if ('publish' == $post->post_status) {
            $permalink['url'] = get_permalink($post->ID);
            $permalink['action'] = 'complete';
        } else {
            $permalink['url'] = trailingslashit(home_url());
            $permalink['action'] = '';
        }
        ?>

		<div id="wpglobus-wpseo-tabs">    <?php 
        /**
         * Use span with attributes 'data' for send to js script ids, names elements for which needs to be set new ids, names with language code.
         */
        ?>
			<span id="wpglobus-wpseo-attr"
			      data-ids="wpseosnippet,wpseosnippet_title,yoast_wpseo_focuskw,focuskwresults,yoast_wpseo_title,yoast_wpseo_title-length-warning,yoast_wpseo_metadesc,yoast_wpseo_metadesc-length,yoast_wpseo_metadesc_notice"
			      data-names="yoast_wpseo_focuskw,yoast_wpseo_title,yoast_wpseo_metadesc"
			      data-qtip="snippetpreviewhelp,focuskwhelp,titlehelp,metadeschelp">
			</span>
			<ul class="wpglobus-wpseo-tabs-list">    <?php 
        $order = 0;
        foreach (WPGlobus::Config()->open_languages as $language) {
            ?>
					<li id="wpseo-link-tab-<?php 
            echo $language;
            ?>
"
					    data-language="<?php 
            echo $language;
            ?>
"
					    data-order="<?php 
            echo $order;
            ?>
"
					    class="wpglobus-wpseo-tab"><a
							href="#wpseo-tab-<?php 
            echo $language;
            ?>
"><?php 
            echo WPGlobus::Config()->en_language_name[$language];
            ?>
</a>
					</li> <?php 
            $order++;
        }
        ?>
			</ul>    <?php 
        $metadesc = get_post_meta($post->ID, '_yoast_wpseo_metadesc', true);
        $wpseotitle = get_post_meta($post->ID, '_yoast_wpseo_title', true);
        $focuskw = get_post_meta($post->ID, '_yoast_wpseo_focuskw', true);
        foreach (WPGlobus::Config()->open_languages as $language) {
            $permalink['url'] = WPGlobus_Utils::localize_url($permalink['url'], $language);
            $url = apply_filters('wpglobus_wpseo_permalink', $permalink['url'], $language);
            if ($url != $permalink['url']) {
                /* We accept that user's filter make complete permalink for draft */
                /* @todo maybe need more investigation */
                $permalink['action'] = 'complete';
            } else {
                if ('publish' != $post->post_status) {
                    /**
                     * We cannot get post-name-full to make correct url here ( for draft & auto-draft ). We do it in JS
                     * @see var wpseosnippet_url in wpglobus-wpseo-**.js
                     */
                    $permalink['action'] = '';
                }
            }
            ?>
				<div id="wpseo-tab-<?php 
            echo $language;
            ?>
" class="wpglobus-wpseo-general"
				     data-language="<?php 
            echo $language;
            ?>
"
				     data-url-<?php 
            echo $language;
            ?>
="<?php 
            echo $url;
            ?>
"
				     data-permalink="<?php 
            echo $permalink['action'];
            ?>
"
				     data-metadesc="<?php 
            echo esc_html(WPGlobus_Core::text_filter($metadesc, $language, WPGlobus::RETURN_EMPTY));
            ?>
"
				     data-wpseotitle="<?php 
            echo esc_html(WPGlobus_Core::text_filter($wpseotitle, $language, WPGlobus::RETURN_EMPTY));
            ?>
"
				     data-focuskw="<?php 
            echo WPGlobus_Core::text_filter($focuskw, $language, WPGlobus::RETURN_EMPTY);
            ?>
">
				</div> <?php 
        }
        ?>
		</div>
	<?php 
    }
 /**
  * All the possible arguments for Redux.
  * For full documentation on arguments, please refer to:
  * https://github.com/ReduxFramework/ReduxFramework/wiki/Arguments
  **/
 public function setArguments()
 {
     $this->args = array('opt_name' => WPGlobus::Config()->option, 'display_name' => 'WPGlobus', 'display_version' => WPGLOBUS_VERSION, 'menu_type' => 'menu', 'allow_sub_menu' => true, 'menu_title' => 'WPGlobus', 'page_title' => 'WPGlobus', 'google_api_key' => '', 'async_typography' => false, 'admin_bar' => false, 'global_variable' => '', 'dev_mode' => false, 'customizer' => true, 'page_priority' => null, 'page_parent' => 'themes.php', 'page_permissions' => 'manage_options', 'menu_icon' => '', 'last_tab' => '', 'page_icon' => 'icon-themes', 'page_slug' => WPGlobus::OPTIONS_PAGE_SLUG, 'save_defaults' => true, 'default_show' => false, 'default_mark' => '', 'show_import_export' => false, 'transient_time' => 60 * MINUTE_IN_SECONDS, 'output' => true, 'output_tag' => true, 'footer_credit' => '&copy; Copyright 2014-' . date('Y') . ', <a href="' . WPGlobus::URL_WPGLOBUS_SITE . '">WPGlobus</a>.', 'database' => 'options', 'system_info' => false, 'hide_reset' => true, 'disable_tracking' => true, 'ajax_save' => false, 'hints' => array('icon' => 'icon-question-sign', 'icon_position' => 'right', 'icon_color' => 'lightgray', 'icon_size' => 'normal', 'tip_style' => array('color' => 'light', 'shadow' => true, 'rounded' => false, 'style' => ''), 'tip_position' => array('my' => 'top left', 'at' => 'bottom right'), 'tip_effect' => array('show' => array('effect' => 'slide', 'duration' => '500', 'event' => 'mouseover'), 'hide' => array('effect' => 'slide', 'duration' => '500', 'event' => 'click mouseleave'))));
     $this->args['intro_text'] = (include 'wpglobus-options-header.php');
     // Add content after the form.
     //		$this->args['footer_text'] =
     //			'&copy; Copyright 2014-' . date( 'Y' ) . ', <a href="' . WPGlobus::URL_WPGLOBUS_SITE . '">WPGlobus</a>.';
     // SOCIAL ICONS -> Setup custom links in the footer for quick links in your panel footer icons.
     $ga_campaign = '?utm_source=wpglobus-options-socials&utm_medium=link&utm_campaign=options-panel';
     $this->args['share_icons'][] = array('url' => 'http://www.wpglobus.com/quick-start/' . $ga_campaign, 'title' => esc_html__('Read the Quick Start Guide', 'wpglobus'), 'icon' => 'el el-question-sign');
     $this->args['share_icons'][] = array('url' => 'http://www.wpglobus.com/' . $ga_campaign, 'title' => esc_html__('Visit our website', 'wpglobus'), 'icon' => 'el el-globe');
     $this->args['share_icons'][] = array('url' => 'http://www.wpglobus.com/shop/extensions/woocommerce-wpglobus/' . $ga_campaign, 'title' => esc_html__('Buy WooCommerce WPGlobus extension', 'wpglobus'), 'icon' => 'el el-icon-shopping-cart');
     $this->args['share_icons'][] = array('url' => 'https://github.com/WPGlobus', 'title' => esc_html__('Collaborate on GitHub', 'wpglobus'), 'icon' => 'el el-github');
     $this->args['share_icons'][] = array('url' => 'https://www.facebook.com/WPGlobus', 'title' => esc_html__('Like us on Facebook', 'wpglobus'), 'icon' => 'el el-facebook');
     $this->args['share_icons'][] = array('url' => 'https://twitter.com/WPGlobus', 'title' => esc_html__('Follow us on Twitter', 'wpglobus'), 'icon' => 'el el-twitter');
     $this->args['share_icons'][] = array('url' => 'https://www.linkedin.com/company/wpglobus', 'title' => esc_html__('Find us on LinkedIn', 'wpglobus'), 'icon' => 'el el-linkedin');
     $this->args['share_icons'][] = array('url' => 'https://plus.google.com/+Wpglobus', 'title' => esc_html__('Circle us on Google+', 'wpglobus'), 'icon' => 'el el-googleplus');
 }
 /** 
  * Declare script for new buttons
  *
  * @since 1.0.0
  *
  * @param array $plugin_array
  * @return array
  */
 function mce_external_plugins($plugin_array)
 {
     $plugin_array[$this->button_separator] = plugin_dir_url(__FILE__) . 'wpglobus-for-black-studio-widget' . self::$_SCRIPT_SUFFIX . '.js';
     foreach (WPGlobus::Config()->enabled_languages as $language) {
         $plugin_array[$this->button . $language] = plugin_dir_url(__FILE__) . 'wpglobus-for-black-studio-widget' . self::$_SCRIPT_SUFFIX . '.js';
     }
     return $plugin_array;
 }
 /**
  * @deprecated
  * @codeCoverageIgnore
  * Return true if language is in array of opened languages, otherwise false
  * @param string $language
  * @return bool
  */
 public static function is_open($language)
 {
     return in_array($language, WPGlobus::Config()->open_languages, true);
 }
Пример #12
0
 /**
  * Filter @see wp_trim_words
  * @qa    At the /wp-admin/index.php page is a Quick Draft metabox
  *      which shows 3 last post drafts. This filter lets post content in default language.
  * @since 1.0.14
  *
  * @param string $text          The trimmed text.
  * @param int    $num_words     The number of words to trim the text to.
  * @param string $more          An optional string to append to the end of the trimmed text, e.g. &hellip;.
  * @param string $original_text The text before it was trimmed.
  *
  * @return string
  */
 public static function filter__wp_trim_words($text, $num_words, $more, $original_text)
 {
     $text = WPGlobus_Core::text_filter($original_text, WPGlobus::Config()->language);
     if (null === $more) {
         $more = __('&hellip;');
     }
     $text = wp_strip_all_tags($text);
     /* translators: If your word count is based on single characters (East Asian characters),
        enter 'characters'. Otherwise, enter 'words'. Do not translate into your own language. */
     if ('characters' == _x('words', 'word count: words or characters?') && preg_match('/^utf\\-?8$/i', get_option('blog_charset'))) {
         $text = trim(preg_replace("/[\n\r\t ]+/", ' ', $text), ' ');
         preg_match_all('/./u', $text, $words_array);
         $words_array = array_slice($words_array[0], 0, $num_words + 1);
         $sep = '';
     } else {
         $words_array = preg_split("/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY);
         $sep = ' ';
     }
     if (count($words_array) > $num_words) {
         array_pop($words_array);
         $text = implode($sep, $words_array);
         $text = $text . $more;
     } else {
         $text = implode($sep, $words_array);
     }
     return $text;
 }
Пример #13
0
    /**
     * Echo the widget content
     *
     * @param array $args     Display arguments including before_title, after_title, before_widget, and after_widget.
     * @param array $instance The settings for the particular instance of the widget
     */
    public function widget($args, $instance)
    {
        if (!empty($instance['type'])) {
            $type = $instance['type'];
        } else {
            $type = 'flags';
        }
        $inside = '';
        $enabled_languages = WPGlobus::Config()->enabled_languages;
        switch ($type) {
            case 'list':
                $code = '<div class="list">{{inside}}</div>';
                break;
            case 'list_with_flags':
                $code = '<div class="list flags">{{inside}}</div>';
                break;
            case 'select':
            case 'select_with_code':
                $code = '<div class="select-styled"><select onchange="document.location.href = this.value;">{{inside}}</select></div>';
                break;
            case 'dropdown':
            case 'dropdown_with_flags':
                $sorted[] = WPGlobus::Config()->language;
                foreach ($enabled_languages as $language) {
                    if ($language != WPGlobus::Config()->language) {
                        $sorted[] = $language;
                    }
                }
                $enabled_languages = $sorted;
                $code = '<div class="dropdown-styled"> <ul>
					  <li>
						{{language}}
						<ul>
							{{inside}}
						</ul>
					  </li>
					</ul></div>';
                break;
            default:
                //	This is case 'flags'. Having is as default makes $code always set.
                $code = '<div class="flags-styled">{{inside}}</div>';
                break;
        }
        /**
         * Filter enabled languages.
         *
         * Returning array.
         *
         * @since 1.0.13
         *
         * @param array     $enabled_languages 			 An array with languages to show off in menu.
         * @param string    WPGlobus::Config()->language The current language.
         */
        $enabled_languages = apply_filters('wpglobus_extra_languages', $enabled_languages, WPGlobus::Config()->language);
        /**
         * Class for link in a and option tags. Used for adding hash.
         * @see class wpglobus-selector-link 
         * @since 1.2.0
         */
        $link_classes['selector_link'] = 'wpglobus-selector-link';
        /**
         * Class for flag box
         * @since 1.4.0
         */
        $flag_classes = array();
        echo $args['before_widget'];
        if (!empty($instance['title'])) {
            echo $args['before_title'] . $instance['title'] . $args['after_title'];
        }
        foreach ($enabled_languages as $language) {
            $selected = '';
            /**
             * Init current language class
             */
            $link_classes['current_language'] = '';
            /**
             * Init current language class for flag box
             */
            $flag_classes['current_language'] = '';
            if ($language == WPGlobus::Config()->language) {
                $selected = ' selected';
                switch ($type) {
                    case 'flags':
                        $flag_classes['current_language'] = 'wpglobus-current-language';
                        break;
                    case 'list':
                    case 'list_with_flags':
                    case 'dropdown':
                    case 'dropdown_with_flags':
                        $link_classes['current_language'] = 'wpglobus-current-language';
                        break;
                }
            }
            $url = WPGlobus_Utils::localize_current_url($language);
            $flag = WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[$language];
            switch ($type) {
                case 'flags':
                    $inside .= '<span class="flag ' . implode(' ', $flag_classes) . '">';
                    $inside .= '<a href="' . $url . '" class="' . implode(' ', $link_classes) . '"><img src="' . $flag . '"/></a>';
                    $inside .= '</span>';
                    break;
                case 'list':
                case 'list_with_flags':
                    $inside .= '<a href="' . $url . '" class="' . implode(' ', $link_classes) . '">' . '<img src="' . $flag . '" alt=""/>' . ' ' . '<span class="name">' . WPGlobus::Config()->language_name[$language] . '</span>' . ' ' . '<span class="code">' . strtoupper($language) . '</span>' . '</a>';
                    break;
                case 'select':
                    $inside .= '<option class="' . implode(' ', $link_classes) . '" ' . $selected . ' value="' . $url . '">' . WPGlobus::Config()->language_name[$language] . '</option>';
                    break;
                case 'select_with_code':
                    $inside .= '<option class="' . implode(' ', $link_classes) . '" ' . $selected . ' value="' . $url . '">' . WPGlobus::Config()->language_name[$language] . '&nbsp;(' . strtoupper($language) . ')</option>';
                    break;
                case 'dropdown':
                    if ('' != $selected) {
                        $code = str_replace('{{language}}', '<a class="' . implode(' ', $link_classes) . '" href="' . $url . '">' . WPGlobus::Config()->language_name[$language] . '&nbsp;(' . strtoupper($language) . ')</a>', $code);
                    } else {
                        $inside .= '<li><a class="' . implode(' ', $link_classes) . '" href="' . $url . '">' . WPGlobus::Config()->language_name[$language] . '&nbsp;(' . strtoupper($language) . ')</a></li>';
                    }
                    break;
                case 'dropdown_with_flags':
                    if ('' != $selected) {
                        $code = str_replace('{{language}}', '<a class="' . implode(' ', $link_classes) . '" href="' . $url . '"><img src="' . $flag . '"/>&nbsp;&nbsp;' . WPGlobus::Config()->language_name[$language] . '</a>', $code);
                    } else {
                        $inside .= '<li><a class="' . implode(' ', $link_classes) . '" href="' . $url . '"><img src="' . $flag . '"/>&nbsp;&nbsp;' . WPGlobus::Config()->language_name[$language] . '</a></li>';
                    }
                    break;
            }
        }
        echo str_replace('{{inside}}', $inside, $code);
        echo $args['after_widget'];
    }
Пример #14
0
 /**
  * Enqueue Function.
  * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
  *
  * @since       1.0.0
  * @access      public
  * @return      void
  */
 public function enqueue()
 {
     /** @var array $parent_args */
     $parent_args = $this->parent->args;
     if ($parent_args['dev_mode']) {
         wp_enqueue_style('redux-field-wpglobus_checkbox', plugins_url('/field_wpglobus_checkbox' . WPGlobus::SCRIPT_SUFFIX() . '.css', __FILE__), array(), WPGlobus::SCRIPT_VER());
     }
     wp_enqueue_script('redux-field-wpglobus_checkbox', plugins_url('/field_wpglobus_checkbox' . WPGlobus::SCRIPT_SUFFIX() . '.js', __FILE__), array('jquery', 'redux-js'), WPGlobus::SCRIPT_VER(), true);
 }
Пример #15
0
 /**
  * Load Customize Control JS
  */
 public static function action__customize_controls_enqueue_scripts()
 {
     /** 
      * @see wp.customize.control elements
      * for example wp.customize.control('blogname');
      */
     $disabled_setting_mask = array();
     /** navigation menu elements */
     $disabled_setting_mask[] = 'nav_menu_item';
     $disabled_setting_mask[] = 'nav_menu[';
     $disabled_setting_mask[] = 'nav_menu_locations';
     $disabled_setting_mask[] = 'new_menu_name';
     /** widgets */
     $disabled_setting_mask[] = 'widgets';
     /** color elements */
     $disabled_setting_mask[] = 'color';
     /** yoast seo */
     $disabled_setting_mask[] = 'wpseo';
     /** css elements */
     $disabled_setting_mask[] = 'css';
     /** social networks elements */
     $disabled_setting_mask[] = 'facebook';
     $disabled_setting_mask[] = 'twitter';
     $disabled_setting_mask[] = 'linkedin';
     $disabled_setting_mask[] = 'behance';
     $disabled_setting_mask[] = 'dribbble';
     $disabled_setting_mask[] = 'instagram';
     /** since 1.4.4 */
     $disabled_setting_mask[] = 'tumblr';
     $disabled_setting_mask[] = 'flickr';
     $disabled_setting_mask[] = 'wordpress';
     $disabled_setting_mask[] = 'youtube';
     $disabled_setting_mask[] = 'pinterest';
     $disabled_setting_mask[] = 'github';
     $disabled_setting_mask[] = 'rss';
     $disabled_setting_mask[] = 'google';
     $disabled_setting_mask[] = 'email';
     /**
      * Filter to disable fields in customizer. 
      * @see wp.customize.control elements
      * Returning array.
      * @since 1.4.0
      *
      * @param array $disabled_setting_mask An array of disabled masks.
      */
     $disabled_setting_mask = apply_filters('wpglobus_customize_disabled_setting_mask', $disabled_setting_mask);
     $element_selector = array('input[type=text]', 'textarea');
     /**
      * Filter for element selectors. 
      * Returning array.
      * @since 1.4.0
      *
      * @param array $element_selector An array of selectors.
      */
     $element_selector = apply_filters('wpglobus_customize_element_selector', $element_selector);
     $set_link_by = array('link', 'url');
     /**
      * Filter of masks to determine links.
      * @see value data-customize-setting-link of element			 
      * Returning array.
      * @since 1.4.0
      *
      * @param array $set_link_by An array of masks.
      */
     $set_link_by = apply_filters('wpglobus_customize_setlinkby', $set_link_by);
     wp_enqueue_script('wpglobus-customize-control140', WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-customize-control140' . WPGlobus::SCRIPT_SUFFIX() . '.js', array('jquery'), WPGLOBUS_VERSION, true);
     wp_localize_script('wpglobus-customize-control140', 'WPGlobusCustomize', array('version' => WPGLOBUS_VERSION, 'languageAdmin' => WPGlobus::Config()->language, 'disabledSettingMask' => $disabled_setting_mask, 'elementSelector' => $element_selector, 'setLinkBy' => $set_link_by));
 }
Пример #16
0
 /**
  * Convert string to text with default language
  *
  * @param mixed $data
  *
  * @return mixed $data
  */
 public static function convert($data)
 {
     if (empty($data)) {
         return '';
     }
     if (is_null($data)) {
         return $data;
     }
     if (is_bool($data)) {
         return $data;
     }
     if (is_float($data)) {
         return $data;
     }
     if (is_int($data)) {
         return $data;
     }
     if (is_string($data)) {
         $data = WPGlobus_Core::text_filter($data, WPGlobus::Config()->default_language, WPGlobus::RETURN_EMPTY);
         /**
          * Set double apostrophe for mySQL UPDATE
          */
         return str_replace("'", "''", $data);
     }
     foreach ($data as $key => $value) {
         if (is_array($data)) {
             /** @noinspection AlterInForeachInspection */
             $data[$key] = self::convert($value);
         } else {
             if (is_object($data)) {
                 $data->{$key} = self::convert($value);
             }
         }
     }
     return $data;
 }
Пример #17
0
 /**
  * Define function for add item actions by name 'column_code'
  * @since 1.0.0
  *
  * @param  $item array
  *
  * @return string
  */
 function column_wpglobus_code($item)
 {
     if (!empty($this->table_fields['wpglobus_code']['actions'])) {
         $config = WPGlobus::Config();
         $actions = array();
         foreach ($this->table_fields['wpglobus_code']['actions'] as $action => $data) {
             /** add actions for language code */
             $class = $data['ajaxify'] ? 'class="ajaxify"' : '';
             switch ($action) {
                 case 'edit':
                     $actions['edit'] = sprintf('<a %1s href="%2s">%3s</a>', $class, admin_url() . 'admin.php?page=' . WPGlobus::LANGUAGE_EDIT_PAGE . '&lang=' . $item['wpglobus_code'] . '&action=edit', $data['caption']);
                     break;
                 case 'delete':
                     if ($item['wpglobus_code'] == $config->default_language) {
                         $actions['delete'] = sprintf('<a %1s href="#">%2s</a>', $class, __('Default language', 'wpglobus'));
                     } else {
                         $actions['delete'] = sprintf('<a %1s href="%2s">%3s</a>', $class, admin_url() . 'admin.php?page=' . WPGlobus::LANGUAGE_EDIT_PAGE . '&lang=' . $item['wpglobus_code'] . '&action=delete', $data['caption']);
                     }
                     break;
             }
         }
         return sprintf('%1s %2s', $item['wpglobus_code'], $this->row_actions($actions));
     } else {
         return $item['wpglobus_code'];
     }
 }
 /**
  * Enqueue Function.
  * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
  *
  * @since       1.0.0
  * @access      public
  * @return      void
  */
 public function enqueue()
 {
     /** @var array $parent_args */
     $parent_args = $this->parent->args;
     if ($parent_args['dev_mode'] && !wp_style_is('redux-field-wpglobus_ace-editor-css')) {
         wp_enqueue_style('redux-field-wpglobus_ace-editor-css', plugins_url('/field_wpglobus_ace_editor' . WPGlobus::SCRIPT_SUFFIX() . '.css', __FILE__), array(), WPGlobus::SCRIPT_VER());
     }
     if (!wp_script_is('ace-editor-js')) {
         wp_enqueue_script('ace-editor-js', '//cdn.jsdelivr.net/ace/1.2.0/min/ace.js', array('jquery'), null, true);
     }
     if (!wp_script_is('redux-field-wpglobus_ace_editor-js')) {
         wp_enqueue_script('redux-field-wpglobus_ace_editor-js', plugins_url('/field_wpglobus_ace_editor' . WPGlobus::SCRIPT_SUFFIX() . '.js', __FILE__), array('jquery', 'ace-editor-js', 'redux-js'), WPGlobus::SCRIPT_VER(), true);
     }
 }
    /**
     * Add language tabs to wpseo metabox ( .wpseo-metabox-tabs-div )
     */
    public static function action__wpseo_tab_content()
    {
        /** @global WP_Post $post */
        global $post;
        $type = empty($post) ? '' : $post->post_type;
        if (WPGlobus::O()->disabled_entity($type)) {
            return;
        }
        $permalink = array();
        if ('publish' === $post->post_status) {
            $permalink['url'] = get_permalink($post->ID);
            $permalink['action'] = 'complete';
        } else {
            $permalink['url'] = trailingslashit(home_url());
            $permalink['action'] = '';
        }
        // #wpseo-metabox-tabs
        /**
         * Array of id to make multilingual
         */
        $ids = array('wpseo-add-keyword-popup', 'wpseosnippet', 'snippet_preview', 'title_container', 'snippet_title', 'snippet_sitename', 'url_container', 'snippet_citeBase', 'snippet_cite', 'meta_container', 'snippet_meta', 'yoast_wpseo_focuskw_text_input', 'yoast_wpseo_focuskw', 'focuskwresults', 'yoast_wpseo_title', 'yoast_wpseo_metadesc', 'yoast_wpseo_linkdex', 'wpseo-pageanalysis', 'yoast-seo-content-analysis', 'YoastSEO-plugin-loading', 'snippet-editor-title', 'snippet-editor-slug', 'snippet-editor-meta-description');
        $names = array('yoast_wpseo_focuskw_text_input', 'yoast_wpseo_focuskw', 'yoast_wpseo_title', 'yoast_wpseo_metadesc', 'yoast_wpseo_linkdex');
        $qtip = array('snippetpreviewhelp', 'focuskw_text_inputhelp', 'pageanalysishelp', 'snippetpreview-help', 'focuskw_text_input-help', 'pageanalysis-help', 'snippetpreview-help-toggle', 'focuskw_text_input-help-toggle', 'pageanalysis-help-toggle');
        ?>

		<div id="wpglobus-wpseo-tabs" style="width:90%; float:right;">    <?php 
        /**
         * Use span with attributes 'data' for send to js script ids, names elements for which needs to be set new ids, names with language code.
         */
        ?>
			<span id="wpglobus-wpseo-attr"
			      data-ids="<?php 
        echo esc_attr(implode(',', $ids));
        ?>
"
			      data-names="<?php 
        echo esc_attr(implode(',', $names));
        ?>
"
			      data-qtip="<?php 
        echo esc_attr(implode(',', $qtip));
        ?>
">
			</span>
			<ul class="wpglobus-wpseo-tabs-list">    <?php 
        $order = 0;
        foreach (WPGlobus::Config()->open_languages as $language) {
            ?>
					<li id="wpseo-link-tab-<?php 
            echo esc_attr($language);
            ?>
"
					    data-language="<?php 
            echo esc_attr($language);
            ?>
"
					    data-order="<?php 
            echo esc_attr($order);
            ?>
"
					    class="wpglobus-wpseo-tab"><a
							href="#wpseo-tab-<?php 
            echo $language;
            ?>
"><?php 
            echo esc_attr(WPGlobus::Config()->en_language_name[$language]);
            ?>
</a>
					</li> <?php 
            $order++;
        }
        ?>
			</ul> <?php 
        /**
         * Get meta description
         */
        $metadesc = get_post_meta($post->ID, '_yoast_wpseo_metadesc', true);
        /**
         * Get title
         */
        $wpseotitle = get_post_meta($post->ID, '_yoast_wpseo_title', true);
        /**
         * From Yoast3 focus keyword key is '_yoast_wpseo_focuskw_text_input'
         */
        $focuskw = get_post_meta($post->ID, '_yoast_wpseo_focuskw_text_input', true);
        /**
         * make yoast cite base
         */
        list($yoast_permalink) = get_sample_permalink($post->ID);
        $yoast_permalink = str_replace(array('%pagename%', '%postname%'), '', urldecode($yoast_permalink));
        /**
         *  Set cite does not editable by default
         */
        $cite_contenteditable = 'false';
        foreach (WPGlobus::Config()->open_languages as $language) {
            $yoast_cite_base = WPGlobus_Utils::localize_url($yoast_permalink, $language);
            $yoast_cite_base = str_replace(array('http://', 'https://'), '', $yoast_cite_base);
            $yoast_cite_base = str_replace('//', '/', $yoast_cite_base);
            $permalink['url'] = WPGlobus_Utils::localize_url($permalink['url'], $language);
            $url = apply_filters('wpglobus_wpseo_permalink', $permalink['url'], $language);
            if ($url !== $permalink['url']) {
                /* We accept that user's filter make complete permalink for draft */
                /* @todo maybe need more investigation */
                $permalink['action'] = 'complete';
            } else {
                if ('publish' !== $post->post_status) {
                    /**
                     * We cannot get post-name-full to make correct url here ( for draft & auto-draft ). We do it in JS
                     * @see var wpseosnippet_url in wpglobus-wpseo-**.js
                     */
                    $permalink['action'] = '';
                }
            }
            ?>
				<div id="wpseo-tab-<?php 
            echo $language;
            ?>
" class="wpglobus-wpseo-general"
				     data-language="<?php 
            echo $language;
            ?>
"
				     data-url-<?php 
            echo $language;
            ?>
="<?php 
            echo esc_attr($url);
            ?>
"
				     data-yoast-cite-base="<?php 
            echo esc_attr($yoast_cite_base);
            ?>
"
				     data-cite-contenteditable="<?php 
            echo esc_attr($cite_contenteditable);
            ?>
"
				     data-permalink="<?php 
            echo esc_attr($permalink['action']);
            ?>
"
				     data-metadesc="<?php 
            echo esc_attr(WPGlobus_Core::text_filter($metadesc, $language, WPGlobus::RETURN_EMPTY));
            ?>
"
				     data-wpseotitle="<?php 
            echo esc_attr(WPGlobus_Core::text_filter($wpseotitle, $language, WPGlobus::RETURN_EMPTY));
            ?>
"
				     data-focuskw="<?php 
            echo esc_attr(WPGlobus_Core::text_filter($focuskw, $language, WPGlobus::RETURN_EMPTY));
            ?>
">
				</div> <?php 
        }
        ?>
		</div>
		<?php 
    }
Пример #20
0
 /**
  * Generates content for a single row of the table
  *
  * @since 1.5.10
  * @access public
  *
  * @param object $item The current item
  */
 public function single_row($item)
 {
     $style = '';
     if (in_array($item['wpglobus_code'], WPGlobus::Config()->enabled_languages)) {
         $style = ' style="background-color:#0ff;" ';
     }
     echo '<tr' . $style . '>';
     $this->single_row_columns($item);
     echo '</tr>';
 }
 /**
  * Collect data for the beacon.
  * @return array
  */
 protected static function get_data()
 {
     $user = wp_get_current_user();
     $theme = wp_get_theme();
     $data = array('name' => WPGlobus_Filters::filter__text($user->display_name), 'email' => $user->user_email, 'home_url' => home_url(), 'site_url' => site_url(), 'REMOTE_ADDR' => $_SERVER['REMOTE_ADDR'], 'SERVER_PORT' => $_SERVER['SERVER_PORT'], 'OS' => implode(' ', array(php_uname('s'), php_uname('r'), php_uname('v'))), 'PHP_SAPI' => PHP_SAPI, 'PHP_VERSION' => PHP_VERSION, 'loaded_extensions' => implode(', ', get_loaded_extensions()), 'wp_version' => $GLOBALS['wp_version'], 'is_multisite' => is_multisite() ? 'Y' : 'N', 'theme' => $theme->display('Name') . ' ' . $theme->display('ThemeURI') . ' by ' . $theme->get('Author') . ' ' . $theme->get('AuthorURI') . (is_child_theme() ? '; child of ' . $theme->display('Template') : ''), 'enabled_languages' => implode(', ', WPGlobus::Config()->enabled_languages));
     // The list of plugins is formatted here for display on the admin page,
     // to fit into one table cell.
     $active_plugins = array();
     foreach (wp_get_active_and_valid_plugins() as $plugin) {
         $plugin_data = get_plugin_data($plugin);
         $plugin_file = str_replace(trailingslashit(WP_PLUGIN_DIR), '', dirname($plugin));
         $active_plugins[] = $plugin_file . ':' . $plugin_data['Version'];
     }
     $data['active_plugins'] = implode(', ', $active_plugins);
     return $data;
 }
 /**
  * Enqueue admin JS scripts.
  *
  * @param string $hook_page The current admin page.
  */
 public static function enqueue_scripts($hook_page)
 {
     if ('plugin-install.php' === $hook_page) {
         $i18n = array();
         $i18n['current_version'] = esc_html__('Current Version', 'wpglobus');
         $i18n['get_it'] = esc_html__('Get it now!', 'wpglobus');
         $i18n['card_header'] = esc_html__('Premium add-on', 'wpglobus');
         $i18n['installed'] = esc_html__('Installed', 'wpglobus');
         wp_register_script('wpglobus-plugin-install', WPGlobus::$PLUGIN_DIR_URL . '/includes/js/wpglobus-plugin-install' . WPGlobus::SCRIPT_SUFFIX() . '.js', array('jquery'), WPGLOBUS_VERSION, true);
         wp_enqueue_script('wpglobus-plugin-install');
         wp_localize_script('wpglobus-plugin-install', 'WPGlobusPluginInstall', array('version' => WPGLOBUS_VERSION, 'hookPage' => $hook_page, 'pluginCard' => self::$plugin_card, 'pluginData' => array_merge(self::$paid_plugins, self::$free_plugins), 'i18n' => $i18n));
     }
 }
        /**
         * Output options page
         *
         * @since 1.0.0
         * @return void
         */
        function on_translate_options_page()
        {
            /** @global string $pagenow */
            global $pagenow;
            /** @global wpdb $wpdb */
            global $wpdb;
            /** @todo These two vars are set inside a condition. Should refactor. */
            $page = '';
            $option = false;
            $tab_active = array();
            $tab_active[self::TRANSLATE_OPTIONS_PAGE] = '';
            $tab_active[self::SETTINGS_PAGE] = '';
            if ($pagenow == 'admin.php' && isset($_GET['page'])) {
                $page = $_GET['page'];
                if (self::TRANSLATE_OPTIONS_PAGE == $page) {
                    $tab_active[self::TRANSLATE_OPTIONS_PAGE] = ' nav-tab-active';
                    if (isset($_GET['option'])) {
                        $option = $_GET['option'];
                    } else {
                        $option = false;
                    }
                } elseif (self::SETTINGS_PAGE == $page) {
                    $tab_active[self::SETTINGS_PAGE] = ' nav-tab-active';
                }
            }
            if (isset($_POST['wpglobus_translate_form'])) {
                $opts = str_replace(array("\r"), '', $_POST['wpglobus_translate_options']);
                $opts = explode("\n", $opts);
                $this->options['wpglobus_translate_options'] = $opts;
                update_option(self::TRANSLATE_OPTIONS_KEY, $this->options);
            }
            if (isset($_POST['wpglobus_settings_form'])) {
                $opts = str_replace(array("\r"), '', $_POST['disabled_masks']);
                $opts = explode("\n", $opts);
                $this->options['wpglobus_disabled_masks'] = $opts;
                update_option(self::TRANSLATE_OPTIONS_KEY, $this->options);
            }
            if (!isset($this->options['wpglobus_disabled_masks'])) {
                $filename = plugin_dir_path(__FILE__) . 'masks.txt';
                if (file_exists($filename)) {
                    $data = file($filename);
                    if (false !== $data) {
                        $r = implode(',', $data);
                        $r = str_replace(array("\r", "\n"), '', $r);
                        $this->disabled_masks = explode(',', $r);
                    }
                }
            } else {
                $this->disabled_masks = $this->options['wpglobus_disabled_masks'];
            }
            ?>
			
			<div class="wrap">

				<h2><?php 
            /**
             * @quirk
             * This should be H2, so that it goes above the WP admin notices
             */
            esc_html_e('WPGlobus Translate Options', '');
            ?>
</h2>


				<div class="wrap translate_options-wrap">
		
					<h2 class="nav-tab-wrapper">
						<a href="admin.php?page=<?php 
            echo self::TRANSLATE_OPTIONS_PAGE;
            ?>
" class="nav-tab<?php 
            echo $tab_active[self::TRANSLATE_OPTIONS_PAGE];
            ?>
">
							<?php 
            _e('All options');
            ?>
						</a><a href="admin.php?page=<?php 
            echo self::SETTINGS_PAGE;
            ?>
" class="nav-tab<?php 
            echo $tab_active[self::SETTINGS_PAGE];
            ?>
">
							<?php 
            _e('Settings');
            ?>
						</a><a href="admin.php?page=<?php 
            echo self::ABOUT_PAGE;
            ?>
" class="nav-tab">
							<?php 
            _e('About', '');
            ?>
						</a>
					</h2>		

					<?php 
            switch ($page) {
                case self::TRANSLATE_OPTIONS_PAGE:
                    ?>
						
						<form method="post" id="options"> <?php 
                    $search = false;
                    if (!empty($_POST['search'])) {
                        $search = $_POST['search'];
                        $option = '[]';
                    }
                    if ($option) {
                        $show_source = false;
                        if (isset($_GET['source']) && 'true' == $_GET['source']) {
                            $show_source = true;
                        }
                        $option_names = array();
                        if ($search) {
                            $show_source = true;
                            $results = $wpdb->get_results("SELECT option_name FROM {$wpdb->options} WHERE option_value LIKE '%{$search}%' AND option_name NOT LIKE '_%transient%' ORDER BY option_name ASC");
                            foreach ($results as $opt_obj) {
                                $option_names[] = $opt_obj->option_name;
                            }
                        } else {
                            $option_names[] = $option;
                        }
                        if (empty($option_names)) {
                            ?>
									<h4>Not found</h4> <?php 
                        } else {
                            foreach ($option_names as $option) {
                                ?>
										
										<h3><a href="#" class="wpglobus-translate" title="Click to add to the translation list" data-source="<?php 
                                echo $option;
                                ?>
"><?php 
                                echo $option;
                                ?>
<span></span></a></h3>
										<?php 
                                if ($show_source) {
                                    ?>
											<h4><a href="?page=<?php 
                                    echo self::TRANSLATE_OPTIONS_PAGE . '&option=' . $option;
                                    ?>
">back</a></h4>	<?php 
                                    $data = $wpdb->get_var("SELECT option_value FROM {$wpdb->options} WHERE option_name='{$option}'");
                                } else {
                                    ?>
											<h4><a href="?page=<?php 
                                    echo self::TRANSLATE_OPTIONS_PAGE . '&option=' . $option . '&source=true';
                                    ?>
">source</a></h4>	<?php 
                                    $data = get_option($option);
                                }
                                ?>
										<table class="" style="width:100%">
										<tbody><tr>
											<td style="width:70%;">
											<?php 
                                if ($show_source) {
                                    if ($search) {
                                        $data = preg_split('/' . $search . '/ui', $data);
                                        $output = $data[0];
                                    } else {
                                        $output = $data;
                                    }
                                    if (sizeof($data) == 1) {
                                        ?>
														<div class="textarea"><pre><?php 
                                        echo htmlspecialchars($output);
                                        ?>
</pre></div>	<?php 
                                    } else {
                                        ?>
														<div class="textarea"> <?php 
                                        for ($i = 0; $i < sizeof($data); $i++) {
                                            ?>
																<pre style="margin-bottom:0;"><?php 
                                            echo htmlspecialchars($data[$i]);
                                            ?>
</pre> <?php 
                                            if (!empty($data[$i + 1])) {
                                                ?>
																	<span style="background-color:#0f0;"><?php 
                                                echo $search;
                                                ?>
</span>
																	<pre style="margin-top:0;"><?php 
                                                echo htmlspecialchars($data[$i + 1]);
                                                ?>
</pre>	<?php 
                                            }
                                            $i++;
                                        }
                                        ?>
	
														</div>	<?php 
                                    }
                                } else {
                                    if ($data) {
                                        if (is_array($data) || is_object($data)) {
                                            foreach ($data as $key => $items) {
                                                echo $this->get_item($key, $items, $option);
                                            }
                                        } else {
                                            echo $this->get_item($option, $data, false);
                                        }
                                    }
                                }
                                ?>
</td>
											<td style="vertical-align:top;width:30%;">
												<?php 
                                $this->get_float_block();
                                ?>
											</td>
										</tr>
										</tbody>
										</table>
										<?php 
                            }
                        }
                    } else {
                        $filename = plugin_dir_path(__FILE__) . 'options.txt';
                        if (file_exists($filename)) {
                            $data = file($filename);
                            if (false !== $data) {
                                ?>
										
										<div class="search">Find text in the Options table: <input id="search" size="40" name="search" value="" />
										<input type="submit" value="Search" /></div> <?php 
                                $r = implode(',', $data);
                                $r = str_replace(array("\r", "\n"), '', $r);
                                $this->disabled_options = explode(',', $r);
                                $options = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}options AS opt WHERE opt.option_name NOT LIKE '_%transient%' ORDER BY opt.option_name ASC");
                                ?>
										<table class="" style="width:100%">
											<tbody><tr>
											<td style="width:70%;"> <?php 
                                echo '<ul>';
                                foreach ($options as $option) {
                                    if (!in_array($option->option_name, $this->disabled_options)) {
                                        if (!$this->check_masks($option->option_name)) {
                                            echo '<li><a href="?page=' . self::TRANSLATE_OPTIONS_PAGE . '&option=' . $option->option_name . '">' . $option->option_name . '</a></li>';
                                        }
                                    }
                                }
                                echo '</ul>';
                                ?>
 
											</td>
											<td style="vertical-align:top;width:30%;">
												<?php 
                                $this->get_float_block();
                                ?>
											</td>
											</tr>
											</tbody>
										</table> <?php 
                            }
                        }
                    }
                    // endif $option;
                    ?>
							
						</form>	<!-- #options --><?php 
                    break;
                case self::SETTINGS_PAGE:
                    $masks = implode("\n", $this->disabled_masks);
                    ?>
						
						<div class="settings-page">
							<form method="post">
								<div>Disabled masks :</div>
								<textarea name="disabled_masks" id="disabled_masks" cols="80" rows="30"><?php 
                    echo $masks;
                    ?>
</textarea>
								<input type="hidden" name="wpglobus_settings_form" value="" />
								<div>
									<input type="submit" value="Save" />
								</div>	
							</form>	
						</div>
						
						<?php 
                    break;
                case self::ABOUT_PAGE:
                    /**
                     * @todo Store these texts in options (self-demo)
                     */
                    ?>
						<div class="about-page" style="max-width: 30em;">
							<?php 
                    if ('ru' === WPGlobus::Config()->language) {
                        ?>
								<!--@formatter:off-->
<p>
При разработке плагина WPGlobus учитывался фактор быстродействия, поэтому для разбора языковых меток были использованы всего 2 фильтра для опций 'blogdescription' и 'blogname' из таблицы 'wp_options'.</p>
<p>
При работе возникает необходимость использовать фильтры и для других опций. Плагин WPGlobus Translate Options позволяет добавить те опции, которые нужно выводить, разобрав текст по языковым меткам.</p>
<p>
Для примера можно взять тему <a href="https://wordpress.org/themes/ample/" target="_blank">Ample</a> из репозитория. Она имеет встроенный слайдер, в настройках которого можно добавить текст для наложения на слайды. Если затем указать опцию 'ample' в разделе Options to translate, то текст будет выведен на слайдах согласно согласно выбранному языку.
</p>
<!--@formatter:on-->
						<?php 
                    } else {
                        ?>
								<!--@formatter:off-->
<p>In the WPGlobus core plugin, we are keeping the amount of filters as low as possible, to minimize the potential performance hit. Therefore, only two WordPress options, 'blogdescription' and 'blogname' are supported by default.</p>
<p>Sometimes, it is necessary to allow multiple languages in other options. For instance, the slider used in the <a href="https://wordpress.org/themes/ample/" target="_blank">Ample</a> theme stores the textual overlays in the options table. With the WPGlobus Translate Options plugin, all you need is to add 'ample' into the Options to translate, and all the slider texts will be multilingual!
</p>
<!--@formatter:on-->
						<?php 
                    }
                    ?>
						</div>
						<?php 
                    break;
            }
            ?>
				</div>
				
			</div>			<?php 
        }
Пример #24
0
    /**
     * Add language selector to admin bar
     * @since 1.0.8
     *
     * @param WP_Admin_Bar $wp_admin_bar
     */
    public function on_admin_bar_menu(WP_Admin_Bar $wp_admin_bar)
    {
        $available_languages = get_available_languages();
        $user_id = get_current_user_id();
        if (!$user_id) {
            return;
        }
        $wp_admin_bar->add_menu(array('id' => 'wpglobus-language-select', 'parent' => 'top-secondary', 'title' => '<span class="ab-icon">' . '<img src="' . WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[WPGlobus::Config()->language] . '"/>' . '</span><span class="ab-label">' . WPGlobus::Config()->language_name[WPGlobus::Config()->language] . '</span>'));
        $add_more_languages = array();
        foreach (WPGlobus::Config()->enabled_languages as $language) {
            if (WPGlobus::Config()->language === $language) {
                continue;
            }
            $locale = WPGlobus::Config()->locale[$language];
            if ($locale != 'en_US') {
                if (!in_array($locale, $available_languages)) {
                    $add_more_languages[] = WPGlobus::Config()->language_name[$language];
                    continue;
                }
            }
            $wp_admin_bar->add_menu(array('parent' => 'wpglobus-language-select', 'id' => 'wpglobus-' . $language, 'title' => '<span><img src="' . WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[$language] . '" /></span>&nbsp;&nbsp;' . WPGlobus::Config()->language_name[$language], 'href' => admin_url('options-general.php'), 'meta' => array('tabindex' => -1, 'onclick' => 'wpglobus_select_lang("' . $locale . '");return false;')));
        }
        if (!empty($add_more_languages)) {
            $title = __('Add', 'wpglobus') . ' (' . implode(', ', $add_more_languages) . ')';
            $wp_admin_bar->add_menu(array('parent' => 'wpglobus-language-select', 'id' => 'wpglobus-add-languages', 'title' => $title, 'href' => admin_url('options-general.php'), 'meta' => array('tabindex' => -1)));
        }
        ?>
		<!--suppress AnonymousFunctionJS -->
		<script type="text/javascript">
			//<![CDATA[
			jQuery(document).ready(function ($) {
				$('#wpglobus-default-locale').on('click', function (e) {
					wpglobus_select_lang('<?php 
        echo WPGlobus::Config()->locale[WPGlobus::Config()->language];
        ?>
');
				});
				wpglobus_select_lang = function (locale) {
					$.post(ajaxurl, {
						action: 'WPGlobus_process_ajax',
						order : {action: 'wpglobus_select_lang', locale: locale}
					}, function (d) {
					})
						.done(function () {
							window.location.reload();
						});
				}
			});
			//]]>
		</script>
		<?php 
    }
 /**
  * Load Customize Control JS
  */
 public static function action__customize_controls_enqueue_scripts()
 {
     /**
      * @see wp.customize.control elements
      * for example wp.customize.control('blogname');
      */
     $disabled_setting_mask = array();
     /** navigation menu elements */
     $disabled_setting_mask[] = 'nav_menu_item';
     $disabled_setting_mask[] = 'nav_menu[';
     $disabled_setting_mask[] = 'nav_menu_locations';
     $disabled_setting_mask[] = 'new_menu_name';
     /** widgets */
     $disabled_setting_mask[] = 'widgets';
     /** color elements */
     $disabled_setting_mask[] = 'color';
     /** yoast seo */
     $disabled_setting_mask[] = 'wpseo';
     /** css elements */
     $disabled_setting_mask[] = 'css';
     /** social networks elements */
     $disabled_setting_mask[] = 'facebook';
     $disabled_setting_mask[] = 'twitter';
     $disabled_setting_mask[] = 'linkedin';
     $disabled_setting_mask[] = 'behance';
     $disabled_setting_mask[] = 'dribbble';
     $disabled_setting_mask[] = 'instagram';
     /** since 1.4.4 */
     $disabled_setting_mask[] = 'tumblr';
     $disabled_setting_mask[] = 'flickr';
     $disabled_setting_mask[] = 'wordpress';
     $disabled_setting_mask[] = 'youtube';
     $disabled_setting_mask[] = 'pinterest';
     $disabled_setting_mask[] = 'github';
     $disabled_setting_mask[] = 'rss';
     $disabled_setting_mask[] = 'google';
     $disabled_setting_mask[] = 'email';
     /** since 1.5.9 */
     $disabled_setting_mask[] = 'dropbox';
     $disabled_setting_mask[] = 'foursquare';
     $disabled_setting_mask[] = 'vine';
     $disabled_setting_mask[] = 'vimeo';
     /** since 1.6.0 */
     $disabled_setting_mask[] = 'yelp';
     /**
      * Filter to disable fields in customizer.
      * @see wp.customize.control elements
      * Returning array.
      * @since 1.4.0
      *
      * @param array $disabled_setting_mask An array of disabled masks.
      */
     $disabled_setting_mask = apply_filters('wpglobus_customize_disabled_setting_mask', $disabled_setting_mask);
     $element_selector = array('input[type=text]', 'textarea');
     /**
      * Filter for element selectors.
      * Returning array.
      * @since 1.4.0
      *
      * @param array $element_selector An array of selectors.
      */
     $element_selector = apply_filters('wpglobus_customize_element_selector', $element_selector);
     $set_link_by = array('link', 'url');
     /**
      * Filter of masks to determine links.
      * @see value data-customize-setting-link of element
      * Returning array.
      * @since 1.4.0
      *
      * @param array $set_link_by An array of masks.
      */
     $set_link_by = apply_filters('wpglobus_customize_setlinkby', $set_link_by);
     /**
      * Filter of disabled sections.
      *
      * Returning array.
      * @since 1.5.0
      *
      * @param array $disabled_sections An array of sections.
      */
     $disabled_sections = array();
     $disabled_sections = apply_filters('wpglobus_customize_disabled_sections', $disabled_sections);
     /**
      * Generate language select button for customizer
      * @since 1.6.0
      */
     $attributes['href'] = '#';
     $attributes['style'] = 'margin-left:48px;';
     $attributes['class'] = 'customize-controls-close wpglobus-customize-selector';
     /**
      * Filter of attributes to generate language selector button.
      * For example @see Divi theme http://www.elegantthemes.com/gallery/divi/ .
      *
      * Returning array.
      * @since 1.6.0
      *
      * @param array $attributes An array of attributes.
      * @param string Name of current theme.
      */
     $attributes = apply_filters('wpglobus_customize_language_selector_attrs', $attributes, WPGlobus_Customize_Options::get_theme('name'));
     $string = '';
     foreach ($attributes as $attribute => $value) {
         if (null !== $value) {
             $string .= esc_attr($attribute) . '="' . esc_attr($value) . '" ';
         }
     }
     $selector_button = sprintf('<a %1$s>%2$s</a>', trim($string), '<span class="wpglobus-globe"></span>');
     wp_enqueue_script('wpglobus-customize-control140', WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-customize-control140' . WPGlobus::SCRIPT_SUFFIX() . '.js', array('jquery'), WPGLOBUS_VERSION, true);
     wp_localize_script('wpglobus-customize-control140', 'WPGlobusCustomize', array('version' => WPGLOBUS_VERSION, 'selectorButton' => $selector_button, 'languageAdmin' => WPGlobus::Config()->language, 'disabledSettingMask' => $disabled_setting_mask, 'elementSelector' => $element_selector, 'setLinkBy' => $set_link_by, 'disabledSections' => $disabled_sections, 'controlClass' => 'wpglobus-customize-control'));
 }
Пример #26
0
 /**
  * Enqueue Function.
  * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
  *
  * @return void
  */
 public function enqueue()
 {
     wp_enqueue_style('wpglobus-redux-field-table', plugins_url('/field_table' . WPGlobus::SCRIPT_SUFFIX() . '.css', __FILE__), array(), WPGlobus::SCRIPT_VER());
     wp_enqueue_script('wpglobus-redux-field-table', plugins_url('/field_table' . WPGlobus::SCRIPT_SUFFIX() . '.js', __FILE__), array('jquery'), WPGlobus::SCRIPT_VER(), true);
 }
 /**
  * Keeps only one language in all textual fields of the `$post` object.
  *
  * @see \WPGlobus_Core::text_filter for the parameters description
  * @param WP_Post $post The Post object. Object always passed by reference.
  * @param string  $language
  * @param string  $return
  * @param string  $default_language
  */
 public static function translate_wp_post(WP_Post $post, $language = '', $return = WPGlobus::RETURN_IN_DEFAULT_LANGUAGE, $default_language = '')
 {
     /**
      * `$default_language` not passed
      */
     if (!$default_language) {
         if (class_exists('WPGlobus_Config')) {
             $default_language = WPGlobus::Config()->default_language;
         } else {
             // When in unit tests
             $default_language = 'en';
         }
     }
     /**
      * `$language` not passed
      */
     if (empty($language)) {
         $language = $default_language;
     }
     $fields = array('post_title', 'post_content', 'post_excerpt', 'title', 'attr_title');
     foreach ($fields as $_) {
         if (!empty($post->{$_})) {
             $post->{$_} = self::text_filter($post->{$_}, $language, $return, $default_language);
         }
     }
 }
Пример #28
0
}
$opts = $helper->get_box_options($box->ID);
$css = $opts['css'];
$content = $box->post_content;
$data_attrs = '';
$box_class = '';
$width = !empty($css['width']) ? $css['width'] : '';
// run filters on content
$content = apply_filters('spu/popup/content', $content, $box);
// Qtranslate support
if (function_exists('qtrans_useCurrentLanguageIfNotFoundShowAvailable')) {
    $content = qtrans_useCurrentLanguageIfNotFoundShowAvailable($content);
}
// WPGlobus support
if (class_exists('WPGlobus')) {
    $content = WPGlobus_Core::text_filter($content, WPGlobus::Config()->language);
}
do_action('spu/popup/before_popup', $box, $opts, $css);
?>
<style type="text/css">
#spu-<?php 
echo $box->ID;
?>
 {
	background-color: <?php 
echo !empty($css['background_color']) ? esc_attr($css['background_color']) : 'white';
?>
;
	<?php 
if (!empty($css['color'])) {
    ?>
Пример #29
0
 * Initialize
 */
WPGlobus::$PLUGIN_DIR_PATH = plugin_dir_path(__FILE__);
WPGlobus::$PLUGIN_DIR_URL = plugin_dir_url(__FILE__);
WPGlobus::Config();
require_once 'includes/class-wpglobus-filters.php';
require_once 'includes/wpglobus-controller.php';
if (defined('WPSEO_VERSION')) {
    require_once 'includes/class-wpglobus-wpseo.php';
    WPGlobus_WPSEO::controller();
}
/**
 * Theme compatibility
 */
/**
 * Fix multilingual strings in basic `Customize`
 *
 * @since 1.2.1
 */
require_once 'includes/class-wpglobus-customize.php';
WPGlobus_Customize::controller();
/**
 * Support of theme option panels and customizer
 * @since 1.3.0
 */
if (WPGlobus_WP::in_wp_admin() && !WPGlobus_WP::is_admin_doing_ajax()) {
    require_once 'includes/admin/class-wpglobus-wp-theme.php';
    WPGlobus::Config()->WPGlobus_WP_Theme = new WPGlobus_WP_Theme();
}
require_once 'updater/class-wpglobus-updater.php';
# --- EOF
Пример #30
0
define('WPGLOBUS_PLUGIN_BASENAME', plugin_basename(__FILE__));
/** @todo Get rid of these */
global $WPGlobus;
global $WPGlobus_Options;
require_once 'includes/class-wpglobus-config.php';
require_once 'includes/class-wpglobus-utils.php';
require_once 'includes/class-wpglobus-wp.php';
require_once 'includes/class-wpglobus-widget.php';
require_once 'includes/class-wpglobus.php';
require_once 'includes/class-wpglobus-core.php';
/**
 * Initialize
 */
WPGlobus::$PLUGIN_DIR_PATH = plugin_dir_path(__FILE__);
WPGlobus::$PLUGIN_DIR_URL = plugin_dir_url(__FILE__);
WPGlobus::Config();
require_once 'includes/class-wpglobus-filters.php';
require_once 'includes/wpglobus-controller.php';
if (defined('WPSEO_VERSION')) {
    if (version_compare(WPSEO_VERSION, '3.0.0', '<')) {
        require_once 'includes/class-wpglobus-wpseo.php';
        WPGlobus_WPSEO::controller();
    } else {
        require_once 'includes/class-wpglobus-yoastseo30.php';
        WPGlobus_YoastSEO::controller();
    }
}
/**
 * Support of theme option panels and customizer
 * @since 1.4.0
 */