Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/classes/menu/translation-editor/class-wpml-translation-editor.php
2023-09-12 21:41:04 +02:00

176 lines
5.2 KiB
PHP

<?php
if ( ! class_exists( '_WP_Editors', false ) ) {
require ABSPATH . WPINC . '/class-wp-editor.php';
}
class WPML_Translation_Editor extends WPML_WPDB_And_SP_User {
/**
* @var WPML_Element_Translation_Job $job
*/
private $job;
/**
* @param SitePress $sitepress
* @param wpdb $wpdb
* @param WPML_Element_Translation_Job $job
*/
public function __construct(
&$sitepress,
&$wpdb,
$job
) {
parent::__construct( $wpdb, $sitepress );
$this->job = $job;
$this->add_hooks();
$this->enqueue_js();
}
public function add_hooks() {
add_filter( 'tiny_mce_before_init', [ $this, 'filter_original_editor_buttons' ], 10, 2 );
}
/**
* Enqueues the JavaScript used by the TM editor.
*/
public function enqueue_js() {
wp_enqueue_script( 'wpml-tm-editor-scripts' );
wp_localize_script(
'wpml-tm-editor-scripts',
'tmEditorStrings',
$this->get_translation_editor_strings()
);
}
/**
* @return string[]
*/
private function get_translation_editor_strings() {
$translation_memory_endpoint = apply_filters( 'wpml_st_translation_memory_endpoint', '' );
return array(
'dontShowAgain' => __(
"Don't show this again.",
'wpml-translation-management'
),
'learnMore' => __(
'<p>The administrator has disabled term translation from the translation editor. </p>
<p>If your access permissions allow you can change this under "Translation Management" - "Multilingual Content Setup" - "Block translating taxonomy terms that already got translated". </p>
<p>Please note that editing terms from the translation editor will affect all posts that have the respective terms associated.</p>',
'wpml-translation-management'
),
'warning' => __(
"Please be advised that editing this term's translation here will change the value of the term in general. The changes made here, will not only affect this post!",
'wpml-translation-management'
),
'title' => __(
'Terms translation is disabled',
'wpml-translation-management'
),
'confirm' => __(
'You have unsaved work. Are you sure you want to close without saving?',
'wpml-translation-management'
),
'cancel' => __(
'Cancel',
'wpml-translation-management'
),
'save' => __(
'Save',
'wpml-translation-management'
),
'hide_translated' => __(
'Hide completed',
'wpml-translation-management'
),
'save_and_close' => __(
'Save & Close',
'wpml-translation-management'
),
'loading_url' => ICL_PLUGIN_URL . '/res/img/ajax-loader.gif',
'saving' => __(
'Saving...',
'wpml-translation-management'
),
'translation_complete' => __(
'Translation is complete',
'wpml-translation-management'
),
'contentNonce' => wp_create_nonce( 'wpml_save_job_nonce' ),
'translationMemoryNonce' => \WPML\LIB\WP\Nonce::create( $translation_memory_endpoint ),
'translationMemoryEndpoint' => $translation_memory_endpoint,
'source_lang' => __(
'Original',
'wpml-translation-management'
),
'target_lang' => __(
'Translation to',
'wpml-translation-management'
),
'copy_all' => __(
'Copy all fields from original',
'wpml-translation-management'
),
'resign' => __(
'Resign',
'wpml-translation-management'
),
'resign_translation' => __(
'Are you sure you want to resign from this job?',
'wpml-translation-management'
),
'resign_url' => admin_url( 'admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php&icl_tm_action=save_translation&resign=1&job_id=' . $this->job->get_id() ),
'confirmNavigate' => __(
'You have unsaved changes!',
'wpml-translation-management'
),
'copy_from_original' => __(
'Copy from original',
'wpml-translation-management'
),
'show_diff' => __( 'Show differences', 'wpml-translation-management' ),
);
}
public function filter_original_editor_buttons( $config, $editor_id ) {
if ( strpos( $editor_id, '_original' ) > 0 ) {
$config['toolbar1'] = ' ';
$config['toolbar2'] = ' ';
$config['readonly'] = '1';
}
return $config;
}
public function output_editors( $field ) {
echo '<div id="' . $field['field_type'] . '_original_editor" class="original_value mce_editor_origin">';
wp_editor(
$field['field_data'],
$field['field_type'] . '_original',
array(
'textarea_rows' => 4,
'editor_class' => 'wpml_content_tr original_value mce_editor_origin',
'media_buttons' => false,
'quicktags' => array( 'buttons' => 'empty' ),
)
);
echo '</div>';
echo '<div id="' . $field['field_type'] . '_translated_editor" class="mce_editor translated_value">';
wp_editor(
$field['field_data_translated'],
$field['field_type'],
array(
'textarea_rows' => 4,
'editor_class' => 'wpml_content_tr translated_value',
'media_buttons' => true,
'textarea_name' => 'fields[' . $field['field_type'] . '][data]',
)
);
echo '</div>';
}
}