PATH:
var
/
www
/
clients
/
client1
/
web1
/
web
/
wp-content
/
sitepress-multilingual-cms
/
classes
/
menu-elements
<?php class WPML_Admin_Scripts_Setup extends WPML_Full_Translation_API { const PRIORITY_ENQUEUE_SCRIPTS = 10; /** @var string $page */ private $page; /** * @param wpdb $wpdb * @param SitePress $sitepress * @param WPML_Post_Translation $post_translation * @param WPML_Terms_Translations $term_translation * @param string $page */ public function __construct( &$wpdb, &$sitepress, &$post_translation, &$term_translation, $page ) { parent::__construct( $sitepress, $wpdb, $post_translation, $term_translation ); $this->page = $page; } public function add_admin_hooks() { add_action( 'admin_print_scripts', array( $this, 'wpml_js_scripts_setup' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'wpml_css_setup' ), self::PRIORITY_ENQUEUE_SCRIPTS ); } public function register_styles() { wp_register_style( 'otgs-dialogs', ICL_PLUGIN_URL . '/res/css/otgs-dialogs.css', array( 'wp-jquery-ui-dialog' ), ICL_SITEPRESS_VERSION ); wp_register_style( 'wpml-dialog', ICL_PLUGIN_URL . '/res/css/dialog.css', array( 'otgs-dialogs' ), ICL_SITEPRESS_VERSION ); wp_register_style( 'wpml-wizard', ICL_PLUGIN_URL . '/res/css/wpml-wizard.css', null, ICL_SITEPRESS_VERSION ); } private function print_js_globals() { $icl_ajax_url = wpml_get_admin_url( array( 'path' => 'admin.php', 'query' => array( 'page' => WPML_PLUGIN_FOLDER . '/menu/languages.php' ), ) ); ?> <script type="text/javascript"> // <![CDATA[ var icl_ajx_url = '<?php echo esc_url( $icl_ajax_url ); ?>', icl_ajx_saved = '<?php echo icl_js_escape( __( 'Data saved', 'sitepress' ) ); ?>', icl_ajx_error = '<?php echo icl_js_escape( __( 'Error: data not saved', 'sitepress' ) ); ?>', icl_default_mark = '<?php echo icl_js_escape( __( 'default', 'sitepress' ) ); ?>', icl_this_lang = '<?php echo esc_js( $this->sitepress->get_current_language() ); ?>', icl_ajxloaderimg_src = '<?php echo esc_url( ICL_PLUGIN_URL ); ?>/res/img/ajax-loader.gif', icl_cat_adder_msg = '<?php echo icl_js_escape( sprintf( __( 'To add categories that already exist in other languages go to the <a%s>category management page</a>', 'sitepress' ), ' href="' . admin_url( 'edit-tags.php?taxonomy=category' ) . '"' ) ); ?>'; // ]]> <?php if ( ! $this->sitepress->get_setting( 'ajx_health_checked' ) && ! (bool) get_option( '_wpml_inactive' ) ) { $error = __( "WPML can't run normally. There is an installation or server configuration problem. %1\$sShow details%2\$s", 'sitepress' ); $error_message = sprintf( $error, '<a href="#" onclick="jQuery(this).parent().next().slideToggle()">', '</a>' ); ?> addLoadEvent(function () { jQuery.ajax({ type : "POST", url : icl_ajx_url, data : "icl_ajx_action=health_check", error: function (msg) { var icl_initial_language = jQuery('#icl_initial_language'); if (icl_initial_language.length) { icl_initial_language.find('input').attr('disabled', 'disabled'); } jQuery('.wrap').prepend('<div class="error"><p><?php echo icl_js_escape( $error_message );?></p><p style="display:none"><?php echo icl_js_escape( __( 'AJAX Error:', 'sitepress' ) ); ?> ' + msg.statusText + ' [' + msg.status + ']<br />URL:' + icl_ajx_url + '</p></div>'); } }); }); <?php } ?> </script> <?php } public function wpml_js_scripts_setup() { // TODO: [WPML 3.3] move javascript to external resource (use wp_localize_script() to pass arguments) global $pagenow, $sitepress; $default_language = $this->sitepress->get_default_language(); $current_language = $this->sitepress->get_current_language(); $page_basename = $this->page; $this->print_js_globals(); $wpml_script_setup_args['default_language'] = $default_language; $wpml_script_setup_args['current_language'] = $current_language; do_action( 'wpml_scripts_setup', $wpml_script_setup_args ); if ( 'options-reading.php' === $pagenow ) { $this->print_reading_options_js(); } elseif ( in_array( $pagenow, array( 'categories.php', 'edit-tags.php', 'edit.php', 'term.php', ), true ) && $current_language !== $default_language ) { $this->correct_status_links_js( $current_language ); } if ( 'edit-tags.php' === $pagenow || 'term.php' === $pagenow ) { $post_type = isset( $_GET['post_type'] ) ? '&post_type=' . esc_html( $_GET['post_type'] ) : ''; $admin_url = admin_url( 'edit-tags.php' ); $admin_url = add_query_arg( 'taxonomy', esc_js( $_GET['taxonomy'] ), $admin_url ); $admin_url = add_query_arg( 'lang', $current_language, $admin_url ); $admin_url = add_query_arg( 'message', 3, $admin_url ); if ( $post_type ) { $admin_url = add_query_arg( 'post_type', $post_type, $admin_url ); } ?> <script type="text/javascript"> addLoadEvent(function () { var edit_tag = jQuery('#edittag'); if (edit_tag.find('[name="_wp_original_http_referer"]').length && edit_tag.find('[name="_wp_http_referer"]').length) { edit_tag.find('[name="_wp_original_http_referer"]').val('<?php echo esc_js( $admin_url ); ?>'); } }); </script> <?php } $trid = filter_input( INPUT_GET, 'trid', FILTER_SANITIZE_NUMBER_INT ); $source_lang = null !== $trid ? filter_input( INPUT_GET, 'source_lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS ) : null; if ( 'post-new.php' === $pagenow ) { if ( $trid ) { $translations = $this->post_translations->get_element_translations( false, $trid ); $sticky_posts = wpml_sticky_post_sync()->get_unfiltered_sticky_posts_option(); $is_sticky = false; foreach ( $translations as $t ) { if ( in_array( $t, $sticky_posts ) ) { $is_sticky = true; break; } } if ( $this->sitepress->get_setting( 'sync_ping_status' ) || $this->sitepress->get_setting( 'sync_comment_status' ) ) { $this->print_ping_and_comment_sync_js( $trid, $source_lang ); } if ( $this->sitepress->get_setting( 'sync_private_flag' ) && 'private' === $this->post_translations->get_original_post_status( $trid, $source_lang ) ) { ?> <script type="text/javascript">addLoadEvent(function () { jQuery('#visibility-radio-private').prop('checked', true); jQuery('#post-visibility-display').html('<?php echo icl_js_escape( __( 'Private', 'sitepress' ) ); ?>'); }); </script> <?php } if ( $this->sitepress->get_setting( 'sync_post_taxonomies' ) ) { $this->print_tax_sync_js(); } $custom_field_note = new WPML_Sync_Custom_Field_Note( $this->sitepress ); $custom_field_note->print_sync_copy_custom_field_note( $source_lang, $translations ); } ?> <?php if ( ! empty( $is_sticky ) && $this->sitepress->get_setting( 'sync_sticky_flag' ) ) : ?> <script type="text/javascript"> addLoadEvent( function () { var block_editor = wpml_get_block_editor(); if(block_editor){ document.addEventListener('DOMContentLoaded', function () { block_editor.then(function () { setTimeout(function () { wp.data.dispatch('core/editor').editPost({sticky: true}); }, 100); }); }); } else { jQuery('#sticky').prop('checked', true); var post_visibility_display = jQuery('#post-visibility-display'); post_visibility_display.html(post_visibility_display.html() + ', <?php echo icl_js_escape( __( 'Sticky', 'sitepress' ) ); ?>'); } } ); </script> <?php endif; ?> <?php } if ( ( 'page-new.php' === $pagenow || ( 'post-new.php' === $pagenow && isset( $_GET['post_type'] ) ) ) && ( $trid && ( $this->sitepress->get_setting( 'sync_page_template' ) || $this->sitepress->get_setting( 'sync_page_ordering' ) ) ) ) { $this->print_mo_sync_js( $trid, $source_lang ); } if ( $this->sitepress->is_post_edit_screen() && $this->sitepress->get_setting( 'sync_post_date' ) ) { $this->print_sync_date_js(); } if ( 'post-new.php' === $pagenow && isset( $_GET['trid'] ) && $sitepress->get_setting( 'sync_post_format' ) && function_exists( 'get_post_format' ) ) { $format = $this->post_translations->get_original_post_format( $trid, $source_lang ); ?> <script type="text/javascript"> addLoadEvent(function () { jQuery('#post-format-' + '<?php echo $format; ?>').prop('checked', true); }); </script> <?php } wp_enqueue_script( 'theme-preview' ); if ( 'languages' === $page_basename || 'string-translation' === $page_basename ) { wp_enqueue_script( 'wp-color-picker' ); wp_register_style( 'wpml-color-picker', ICL_PLUGIN_URL . '/res/css/colorpicker.css', array( 'wp-color-picker' ), ICL_SITEPRESS_VERSION ); wp_enqueue_style( 'wpml-color-picker' ); wp_enqueue_script( 'jquery-ui-sortable' ); } } /** * Prints JavaScript to display correct links on the posts by status break down and also fixes links * to category and tag pages * * @param string $current_language */ private function correct_status_links_js( $current_language ) { ?> <script type="text/javascript"> addLoadEvent( function () { jQuery(document).ready( function () { jQuery('.subsubsub>li a').each( function () { var h = jQuery(this).attr('href'); var urlg = -1 === h.indexOf('?') ? '?' : '&'; jQuery(this).attr('href', h + urlg + 'lang=<?php echo esc_js( $current_language ); ?>'); } ); jQuery('.column-categories a, .column-tags a, .column-posts a').each( function () { jQuery(this).attr('href', jQuery(this).attr('href') + '&lang=<?php echo esc_js( $current_language ); ?>'); } ); } ); } ); </script> <?php } /** * Prints the JavaScript for synchronizing page order or page template on the post edit screen. * * @param int $trid * @param string $source_lang */ private function print_mo_sync_js( $trid, $source_lang ) { $menu_order = $this->sitepress->get_setting( 'sync_page_ordering' ) ? $this->post_translations->get_original_menu_order( $trid, $source_lang ) : null; $page_template = $this->sitepress->get_setting( 'sync_page_template' ) ? get_post_meta( $this->post_translations->get_element_id( $source_lang, $trid ), '_wp_page_template', true ) : null; if ( $menu_order || $page_template ) { ?> <script type="text/javascript">addLoadEvent(function () { <?php if ( $menu_order ) { ?> jQuery('#menu_order').val(<?php echo esc_js( $menu_order ); ?>); <?php } if ( $page_template && 'default' !== $page_template ) { ?> jQuery('#page_template').val('<?php echo esc_js( $page_template ); ?>'); <?php } ?> });</script> <?php } } /** * Prints the JavaScript for synchronizing ping and comment status for a post translation on the post edit screen. * * @param int $trid * @param string $source_lang */ private function print_ping_and_comment_sync_js( $trid, $source_lang ) { ?> <script type="text/javascript">addLoadEvent(function () { var comment_status = jQuery('#comment_status'); var ping_status = jQuery('#ping_status'); <?php if ( $this->sitepress->get_setting( 'sync_comment_status' ) ) : ?> <?php if ( $this->post_translations->get_original_comment_status( $trid, $source_lang ) === 'open' ) : ?> comment_status.prop('checked', true); <?php else : ?> comment_status.prop('checked', false); <?php endif; ?> <?php endif; ?> <?php if ( $this->sitepress->get_setting( 'sync_ping_status' ) ) : ?> <?php if ( $this->post_translations->get_original_ping_status( $trid, $source_lang ) === 'open' ) : ?> ping_status.prop('checked', true); <?php else : ?> ping_status.prop('checked', false); <?php endif; ?> <?php endif; ?> });</script> <?php } /** * Prints the JavaScript for disabling editing the post_date on the post edit screen, * when the synchronize post_date for translations setting is activated. */ private function print_sync_date_js() { $post_id = $this->get_current_req_post_id(); if ( $post_id !== null ) { $original_id = $this->post_translations->get_original_element( $post_id ); if ( $original_id && (int) $original_id !== (int) $post_id ) { $original_date = get_post_field( 'post_date', $original_id ); $exp = explode( ' ', $original_date ); list( $aa, $mm, $jj ) = explode( '-', $exp[0] ); list( $hh, $mn, $ss ) = explode( ':', $exp[1] ); ?> <script type="text/javascript"> addLoadEvent( function () { jQuery('#aa').val('<?php echo esc_js( $aa ); ?>').attr('readonly', 'readonly'); jQuery('#mm').val('<?php echo esc_js( $mm ); ?>').attr('disabled', 'disabled').attr('id', 'mm-disabled').attr('name', 'mm-disabled'); // create a hidden element for month because we wont get anything returned from the disabled month dropdown. jQuery('<input type="hidden" id="mm" name="mm" value="<?php echo $mm; ?>" />').insertAfter('#mm-disabled'); jQuery('#jj').val('<?php echo esc_js( $jj ); ?>').attr('readonly', 'readonly'); jQuery('#hh').val('<?php echo esc_js( $hh ); ?>').attr('readonly', 'readonly'); jQuery('#mn').val('<?php echo esc_js( $mn ); ?>').attr('readonly', 'readonly'); jQuery('#ss').val('<?php echo esc_js( $ss ); ?>').attr('readonly', 'readonly'); var timestamp = jQuery('#timestamp'); timestamp.find('b').append(( '<span> <?php esc_html_e( 'Copied From the Original', 'sitepress' ); ?></span>')); timestamp.next().html('<span style="margin-left:1em;"><?php esc_html_e( 'Edit', 'sitepress' ); ?></span>'); }); </script> <?php } } } private function print_tax_sync_js() { $post_type = isset( $_GET['post_type'] ) ? $_GET['post_type'] : 'post'; $source_lang = isset( $_GET['source_lang'] ) ? filter_input( INPUT_GET, 'source_lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS ) : $this->sitepress->get_default_language(); $trid = filter_var( $_GET['trid'], FILTER_SANITIZE_NUMBER_INT ); $translations = $this->sitepress->get_element_translations( $trid, 'post_' . $post_type ); if ( ! isset( $translations[ $source_lang ] ) ) { return; } $current_lang = $this->sitepress->get_current_language(); $translatable_taxs = $this->sitepress->get_translatable_taxonomies( true, $post_type ); $all_taxs = get_object_taxonomies( $post_type ); $js = array(); $this->sitepress->switch_lang( $source_lang ); foreach ( $all_taxs as $tax ) { $tax_detail = get_taxonomy( $tax ); $terms = get_the_terms( $translations[ $source_lang ]->element_id, $tax ); $term_names = array(); if ( $terms ) { foreach ( $terms as $term ) { if ( $tax_detail->hierarchical ) { $term_id = in_array( $tax, $translatable_taxs ) ? $this->term_translations->term_id_in( $term->term_id, $current_lang, false ) : $term->term_id; $js[] = "jQuery('#in-" . $tax . '-' . $term_id . "').prop('checked', true);"; } else { if ( in_array( $tax, $translatable_taxs ) ) { $term_id = $this->term_translations->term_id_in( $term->term_id, $current_lang, false ); if ( $term_id ) { $term = get_term( $term_id, $tax ); $term_names[] = esc_js( $term->name ); } } else { $term_names[] = esc_js( $term->name ); } } } } if ( $term_names ) { $js[] = "jQuery('#" . esc_js( $tax ) . ".taghint').css('visibility','hidden');"; $js[] = "jQuery('#new-tag-" . esc_js( $tax ) . "').val('" . esc_js( join( ', ', $term_names ) ) . "');"; } } $this->sitepress->switch_lang( null ); if ( $js ) { ?> <script type="text/javascript"> // <![CDATA[ addLoadEvent(function(){ <?php echo join( PHP_EOL, $js ); ?> jQuery().ready(function() { jQuery(".tagadd").click(); jQuery('html, body').prop({scrollTop:0}); jQuery('#title').focus(); }); }); // ]]> </script> <?php } } private function get_current_req_post_id() { return isset( $_GET['post'] ) ? filter_var( $_GET['post'], FILTER_SANITIZE_NUMBER_INT ) : null; } private function print_reading_options_js() { list( $warn_home, $warn_posts ) = $this->verify_home_and_blog_pages_translations(); if ( $warn_home || $warn_posts ) { ?> <script type="text/javascript"> addLoadEvent(function () { jQuery('input[name="show_on_front"]').parent().parent().parent().parent().append('<?php echo str_replace( "'", "\\'", $warn_home . $warn_posts ); ?>'); }); </script> <?php } } function wpml_css_setup() { if ( isset( $_GET['page'] ) ) { $page = basename( $_GET['page'] ); $page_basename = str_replace( '.php', '', $page ); $page_basename = preg_replace( '/[^\w-]/', '', $page_basename ); } wp_enqueue_style( 'sitepress-style', ICL_PLUGIN_URL . '/res/css/style.css', array(), ICL_SITEPRESS_VERSION ); if ( isset( $page_basename ) && file_exists( WPML_PLUGIN_PATH . '/res/css/' . $page_basename . '.css' ) ) { wp_enqueue_style( 'sitepress-' . $page_basename, ICL_PLUGIN_URL . '/res/css/' . $page_basename . '.css', array(), ICL_SITEPRESS_VERSION ); } wp_enqueue_style( 'wpml-dialog' ); wp_enqueue_style( 'otgs-icons' ); wp_enqueue_style( 'wpml-wizard' ); wp_enqueue_style( 'thickbox' ); } private function verify_home_and_blog_pages_translations() { $warn_home = $warn_posts = ''; $page_on_front = get_option( 'page_on_front' ); if ( 'page' === get_option( 'show_on_front' ) && $page_on_front ) { $warn_home = $this->missing_page_warning( $page_on_front, __( 'Your home page does not exist or its translation is not published in %s.', 'sitepress' ) ); } $page_for_posts = get_option( 'page_for_posts' ); if ( $page_for_posts ) { $warn_posts = $this->missing_page_warning( $page_for_posts, __( 'Your blog page does not exist or its translation is not published in %s.', 'sitepress' ), 'margin-top:4px;' ); } return array( $warn_home, $warn_posts ); } /** * @param int $original_page_id * @param string $label * @param string $additional_css * * @return string */ private function missing_page_warning( $original_page_id, $label, $additional_css = '' ) { $warn_posts = ''; if ( $original_page_id ) { $page_posts_translations = $this->post_translations->get_element_translations( $original_page_id ); $missing_posts = array(); $active_languages = $this->sitepress->get_active_languages(); foreach ( $active_languages as $lang ) { if ( ! isset( $page_posts_translations[ $lang['code'] ] ) || get_post_status( $page_posts_translations[ $lang['code'] ] ) !== 'publish' ) { $missing_posts[] = $lang['display_name']; } } if ( ! empty( $missing_posts ) ) { $warn_posts = '<div class="icl_form_errors" style="font-weight:bold;' . $additional_css . '">'; $warn_posts .= sprintf( $label, join( ', ', $missing_posts ) ); $warn_posts .= '<br />'; $warn_posts .= '<a href="' . get_edit_post_link( $original_page_id ) . '">' . __( 'Edit this page to add translations', 'sitepress' ) . '</a>'; $warn_posts .= '</div>'; } } return $warn_posts; } }
[-] class-wpml-lang-domains-box.php
[edit]
[-] class-wpml-tm-post-edit-link-anchor.php
[edit]
[-] PostTypesUI.php
[edit]
[-] class-wpml-tm-post-link-anchor.php
[edit]
[-] class-wpml-taxonomy-translation-screen-data.php
[edit]
[+]
post-edit-screen
[-] class-wpml-tm-post-view-link-title.php
[edit]
[-] class-wpml-custom-types-translation-ui.php
[edit]
[-] class-wpml-tm-post-link.php
[edit]
[-] class-wpml-inactive-content-render.php
[edit]
[-] class-wpml-support-page.php
[edit]
[-] class-wpml-tm-post-edit-custom-field-settings-menu.php
[edit]
[-] class-wpml-user-options-menu.php
[edit]
[-] class-wpml-admin-scripts-setup.php
[edit]
[-] class-wpml-tm-post-view-link-anchor.php
[edit]
[-] class-wpml-tm-post-link-factory.php
[edit]
[-] class-wpml-custom-columns-factory.php
[edit]
[+]
..
[-] class-wpml-translation-tree.php
[edit]
[-] class-wpml-taxonomy-translation-ui.php
[edit]
[-] PostLinkUrl.php
[edit]
[-] class-wpml-custom-columns.php
[edit]
[-] class-wpml-taxonomy-translation.php
[edit]