translation_jobs = $translation_jobs; $this->tm_api = &$tm_api; $this->post_link_factory = &$post_link_factory; $this->post_types = $sitepress->get_translatable_documents( true ); $this->post_types = apply_filters( 'wpml_get_translatable_types', $this->post_types ); } public function get() { $model = array(); $model['strings'] = array( 'job_id' => __( 'Job ID', 'wpml-translation-management' ), 'title' => __( 'Title', 'wpml-translation-management' ), 'type' => __( 'Type', 'wpml-translation-management' ), 'language' => __( 'Language', 'wpml-translation-management' ), 'status' => __( 'Translation status', 'wpml-translation-management' ), 'deadline' => __( 'Deadline', 'wpml-translation-management' ), 'check_all' => __( 'Check all', 'wpml-translation-management' ), 'confirm' => __( 'Are you sure you want to resign from this job?', 'wpml-translation-management' ), ); $model['jobs'] = array(); foreach ( $this->translation_jobs as $job ) { $job->post_title = apply_filters( 'the_title', $job->post_title ); $job->tm_post_link = $this->get_post_link( $job ); $job->post_type = $this->get_post_type( $job ); $job->icon = $this->tm_instance->status2icon_class( $job->status, $job->needs_update ); $job->status_text = $this->get_status_text( $job ); $job->edit_url = $this->get_edit_url( $job ); $job->button_text = $this->get_button_text( $job ); $job->is_doing_job = $this->is_doing_job( $job ); $job->resign_text = $this->get_resign_text( $job ); $job->resign_url = $this->get_resign_url( $job ); $model['jobs'][] = $job; } return $model; } private function get_post_link( $job ) { $view_original_text = __( 'View original', 'wpml-translation-management' ); $tm_post_link = $this->post_link_factory->view_link_anchor( $job->original_doc_id, $view_original_text ); $element_type_prefix = $this->tm_instance->get_element_type_prefix_from_job( $job ); if ( $this->tm_instance->is_external_type( $element_type_prefix ) ) { $url = apply_filters( 'wpml_external_item_url', '', $job->original_doc_id ); $tm_post_link = '' . $view_original_text . ''; } $original_element_type = $job->original_post_type; $original_element_type = explode( '_', $original_element_type ); if ( count( $original_element_type ) > 1 ) { unset( $original_element_type[0] ); } $original_element_type = join( '_', $original_element_type ); $tm_post_link = apply_filters( 'wpml_document_view_item_link', $tm_post_link, $view_original_text, $job, $element_type_prefix, $original_element_type ); return $tm_post_link; } private function get_post_type( $job ) { if ( ! isset( $this->post_type_names[ $job->original_post_type ] ) ) { $type = $job->original_post_type; $name = $type; switch ( $job->element_type_prefix ) { case 'post': $type = substr( $type, 5 ); break; case 'package': $type = substr( $type, 8 ); break; } if ( isset( $this->post_types[ $type ] ) ) { $name = $this->post_types[ $type ]->labels->singular_name; } $this->post_type_names [ $job->original_post_type ] = $name; } return $this->post_type_names[ $job->original_post_type ]; } private function get_status_text( $job ) { $status = $this->tm_api->get_translation_status_label( $job->status ); if ( $job->needs_update ) { $status .= __( ' - (needs update)', 'wpml-translation-management' ); } return $status; } private function get_edit_url( $job ) { $edit_url = ''; if ( $job->original_doc_id ) { $translation_queue_page = admin_url( 'admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php&job_id=' . $job->job_id ); $edit_url = apply_filters( 'icl_job_edit_url', $translation_queue_page, $job->job_id ); } return $edit_url; } private function get_button_text( $job ) { $job_status = (int) $job->status; $needs_edit = in_array( $job_status, array( ICL_TM_WAITING_FOR_TRANSLATOR, ICL_TM_IN_PROGRESS, ICL_TM_COMPLETE ), true ); $is_editable = ( (int) $job->translator_id ) > 0 && $needs_edit; if ( $is_editable ) { if ( $job_status == ICL_TM_COMPLETE ) { $button_text = __( 'Edit', 'wpml-translation-management' ); } else { $button_text = __( 'Translate', 'wpml-translation-management' ); } } else { $button_text = __( 'Take and translate', 'wpml-translation-management' ); } return $button_text; } private function get_resign_text( $job ) { return $this->is_doing_job( $job ) ? __( 'Resign', 'wpml-translation-management' ) : ''; } private function is_doing_job( $job ) { return $job->translator_id > 0 && ( $job->status == ICL_TM_WAITING_FOR_TRANSLATOR || $job->status == ICL_TM_IN_PROGRESS ); } private function get_resign_url( $job ) { return admin_url( 'admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php&icl_tm_action=save_translation&resign=1&job_id=' . $job->job_id ); } }