コード例 #1
0
 function ajax_calls($call, $data)
 {
     global $wpdb, $sitepress;
     switch ($call) {
         case 'assign_translator':
             $translator_data = TranslationProxy_Service::get_translator_data_from_wpml($data['translator_id']);
             $service_id = $translator_data['translation_service'];
             $translator_id = $translator_data['translator_id'];
             $assign_translation_job = $this->assign_translation_job($data['job_id'], $translator_id, $service_id, $data['job_type']);
             if ($assign_translation_job) {
                 $translator_edit_link = '';
                 if ($translator_id) {
                     if ($service_id == TranslationProxy::get_current_service_id()) {
                         $job = $this->get_translation_job($data['job_id']);
                         /** @var $ICL_Pro_Translation WPML_Pro_Translation */
                         global $ICL_Pro_Translation;
                         $ICL_Pro_Translation->send_post($job->original_doc_id, array($job->language_code), $translator_id, $data['job_id']);
                         $project = TranslationProxy::get_current_project();
                         $translator_edit_link = TranslationProxy_Popup::get_link($project->translator_contact_iframe_url($translator_id), array('title' => __('Contact the translator', 'sitepress'), 'unload_cb' => 'icl_thickbox_refresh')) . esc_html(TranslationProxy_Translator::get_translator_name($translator_id)) . "</a> ({$project->service}->name)";
                     } else {
                         $translator_edit_link = '<a href="' . TranslationManagement::get_translator_edit_url($data['translator_id']) . '">' . esc_html($wpdb->get_var($wpdb->prepare("SELECT display_name FROM {$wpdb->users} WHERE ID=%d", $data['translator_id']))) . '</a>';
                     }
                 }
                 echo wp_json_encode(array('error' => 0, 'message' => $translator_edit_link, 'status' => TranslationManagement::status2text(ICL_TM_WAITING_FOR_TRANSLATOR), 'service' => $service_id));
             } else {
                 echo wp_json_encode(array('error' => 1));
             }
             break;
         case 'icl_cf_translation':
         case 'icl_tcf_translation':
             if (!empty($data['cf'])) {
                 foreach ($data['cf'] as $k => $v) {
                     $cft[base64_decode($k)] = $v;
                 }
                 if (isset($cft)) {
                     $this->settings[$call === 'icl_tcf_translation' ? WPML_TERM_META_SETTING_INDEX_PLURAL : WPML_POST_META_SETTING_INDEX_PLURAL] = $cft;
                     $this->save_settings();
                 }
             }
             echo '1|';
             break;
         case 'icl_doc_translation_method':
             $this->settings['doc_translation_method'] = intval($data['t_method']);
             $sitepress->set_setting('doc_translation_method', $this->settings['doc_translation_method']);
             $sitepress->save_settings(array('hide_how_to_translate' => empty($data['how_to_translate'])));
             if (isset($data['tm_block_retranslating_terms'])) {
                 $sitepress->set_setting('tm_block_retranslating_terms', $data['tm_block_retranslating_terms']);
             } else {
                 $sitepress->set_setting('tm_block_retranslating_terms', '');
             }
             if (isset($data['tm_block_retranslating_terms'])) {
                 $sitepress->set_setting('tm_block_retranslating_terms', $data['tm_block_retranslating_terms']);
             } else {
                 $sitepress->set_setting('tm_block_retranslating_terms', '');
             }
             $this->save_settings();
             echo '1|';
             break;
         case 'reset_duplication':
             $this->reset_duplicate_flag($_POST['post_id']);
             break;
         case 'set_duplication':
             $new_id = $this->set_duplicate($_POST['wpml_original_post_id'], $_POST['post_lang']);
             wp_send_json_success(array('id' => $new_id));
             break;
         case 'make_duplicates':
             $mdata['iclpost'] = array($data['post_id']);
             $langs = explode(',', $data['langs']);
             foreach ($langs as $lang) {
                 $mdata['duplicate_to'][$lang] = 1;
             }
             $this->make_duplicates($mdata);
             do_action('wpml_new_duplicated_terms', (array) $mdata['iclpost'], false);
             break;
     }
 }
コード例 #2
0
 public static function get_current_service_info($info = array())
 {
     global $sitepress;
     if (!$sitepress->get_setting('translation_service')) {
         $sitepress->set_setting('translation_service', false);
         $sitepress->save_settings();
     }
     $service = self::get_current_service();
     if ($service) {
         $service_info = array();
         if (icl_do_not_promote()) {
             $service_info['name'] = __('Translation Service', 'sitepress');
             $service_info['logo'] = false;
             $service_info['header'] = __('Translation Service', 'sitepress');
             $service_info['description'] = false;
             $service_info['contact_url'] = false;
         } else {
             $service_info['name'] = $service->name;
             $service_info['logo'] = $service->logo_url;
             $service_info['header'] = $service->name;
             $service_info['description'] = $service->description;
             $service_info['contact_url'] = $service->url;
         }
         $service_info['setup_url'] = TranslationProxy_Popup::get_link('@select-translators;from_replace;to_replace@', array('ar' => 1), true);
         $service_info['has_quote'] = $service->quote_iframe_url != '';
         $service_info['has_translator_selection'] = $service->has_translator_selection;
         $service_info['default_service'] = $service->default_service;
         $info[$service->id] = $service_info;
     }
     return $info;
 }
コード例 #3
0
 /**
  * Returns array of remote translators. Works only with ICL as a Translation Service
  *
  * @return array
  */
 public static function translation_service_translators_list()
 {
     $translators = array();
     if (!TranslationProxy::translator_selection_available()) {
         return $translators;
     }
     $project = TranslationProxy::get_current_project();
     if (!$project) {
         return $translators;
     }
     $lang_status = TranslationProxy_Translator::get_language_pairs();
     if (empty($lang_status)) {
         return $translators;
     }
     $action_link_args = array('title' => __('Contact translator', 'sitepress'), 'unload_cb' => 'icl_thickbox_refresh', 'ar' => 1);
     foreach ($lang_status as $language_pair) {
         $language_from = $language_pair['from'];
         $language_pair_translators = $language_pair['translators'];
         if ($language_pair_translators) {
             foreach ($language_pair_translators as $translator) {
                 $translator_item = array();
                 if (isset($translators[$translator['id']])) {
                     $translator_item = $translators[$translator['id']];
                     $translator_item['langs'][$language_from][] = $language_pair['to'];
                 } else {
                     $translator_item['name'] = $translator['nickname'];
                     $translator_item['langs'][$language_from][] = $language_pair['to'];
                     $translator_item['type'] = $project->service->name;
                     $url = $project->translator_contact_iframe_url($translator['id']);
                     $action_link = '';
                     if ($url) {
                         $action_link = TranslationProxy_Popup::get_link($url, $action_link_args) . __('Contact translator', 'sitepress') . '</a>';
                     }
                     $translator_item['action'] = $action_link;
                 }
                 $translators[$translator['id']] = $translator_item;
             }
         }
     }
     return $translators;
 }
コード例 #4
0
 protected function get_translator_html($job)
 {
     $job = (object) $job;
     $current_service_name = TranslationProxy::get_current_service_name();
     $translation_services = array('local', TranslationProxy::get_current_service_id());
     $translator = '';
     if ($job->translation_service && $job->translation_service !== 'local') {
         try {
             $project = TranslationProxy::get_current_project();
             if ($project) {
                 if ($project->service->has_translator_selection) {
                     $translator_contact_iframe_url = $project->translator_contact_iframe_url($job->translator_id);
                     $iframe_args = array('title' => __('Contact the translator', 'wpml-translation-management'), 'unload_cb' => 'icl_thickbox_refresh');
                     $translator .= TranslationProxy_Popup::get_link($translator_contact_iframe_url, $iframe_args);
                     $translator .= esc_html($job->translator_name);
                     $translator .= "</a> (" . $current_service_name . ")";
                 } else {
                     $translator .= $current_service_name;
                 }
             } else {
                 $translator .= esc_html($job->translator_name);
             }
         } catch (Exception $e) {
             // Just doesn't create the output
         }
     } elseif ($job->status == ICL_TM_COMPLETE) {
         $translator_data = get_userdata($job->translator_id);
         $translator_name = $translator_data ? $translator_data->display_name : "";
         $translator = '<span class="icl-finished-local-name">' . $translator_name . '</span>';
     } else {
         $translator .= '<span class="icl_tj_select_translator">';
         $selected_translator = isset($job->translator_id) ? $job->translator_id : false;
         $disabled = false;
         if ($job->translation_service && $job->translation_service !== 'local' && is_numeric($job->translation_service)) {
             $selected_translator = TranslationProxy_Service::get_wpml_translator_id($job->translation_service, $job->translator_id);
             $disabled = true;
         }
         $job_id = isset($job->job_id) ? $job->job_id : $job->id;
         $local_only = isset($job->local_only) ? $job->local_only : true;
         $args = array('id' => 'icl_tj_translator_for_' . $job_id, 'name' => 'icl_tj_translator_for_' . $job_id, 'from' => $job->source_language_code, 'to' => $job->language_code, 'selected' => $selected_translator, 'services' => $translation_services, 'disabled' => $disabled, 'echo' => false, 'local_only' => $local_only);
         $translator .= TranslationManagement::translators_dropdown($args);
         $translator .= '<input type="hidden" id="icl_tj_ov_' . $job_id . '" value="' . (int) $job->translator_id . '" />';
         $translator .= '<input type="hidden" id="icl_tj_ty_' . $job_id . '" value="' . strtolower($this->get_type()) . '" />';
         $translator .= '<span class="icl_tj_select_translator_controls" id="icl_tj_tc_' . $job_id . '">';
         $translator .= '<input type="button" class="button-secondary icl_tj_ok" value="' . __('Send', 'wpml-translation-management') . '" />&nbsp;';
         $translator .= '<input type="button" class="button-secondary icl_tj_cancel" value="' . __('Cancel', 'wpml-translation-management') . '" />';
         $translator .= '</span>';
     }
     return $translator;
 }