$strings */ public function __construct( $strings ) { global $sitepress; $this->strings = $strings; if ( ! empty( $strings ) ) { $this->strings_in_page = icl_get_strings_tracked_in_pages( $strings ); } $this->additional_columns_to_render = wpml_collect(); $this->active_languages = $sitepress->get_active_languages(); } public function render() { ?> strings ); $this->render_table_header_or_footer( 'thead' ); $this->render_table_header_or_footer( 'tfoot' ); ?> strings ) ) { ?> strings as $string_id => $icl_string ) { $this->render_string_row( $string_id, $icl_string ); } } ?>
active_languages ); $getFlagData = function ( $langData ) { return [ 'title' => $langData['display_name'], 'flagUrl' => Languages::getFlagUrl( $langData['code'] ), 'code' => $langData['code'], ]; }; $makeFlag = function ( $langData ) { ob_start(); ?> <?php esc_attr_e( $langData['title'] ); ?> active_languages ) ->map( Fns::map( $getFlagData ) ) ->map( Fns::map( $makeFlag ) ) ->map( Fns::reduce( WPML\FP\Str::concat(), '' ) ); ?> <> additional_columns_to_render->contains( 'context' ) ) : ?> additional_columns_to_render->contains( 'name' ) ) : ?> additional_columns_to_render->contains( 'view' ) ) : ?> get(); ?> <> render_checkbox_cell( $icl_string ); ?> additional_columns_to_render->contains( 'context' ) ) : ?> additional_columns_to_render->contains( 'name' ) ) : ?> hide_if_md5( $icl_string['name'] ) ); ?> additional_columns_to_render->contains( 'view' ) ) : ?> render_view_column( $string_id ); ?>
>
'; } private function render_view_column( $string_id ) { if ( isset( $this->strings_in_page[ ICL_STRING_TRANSLATION_STRING_TRACKING_TYPE_SOURCE ][ $string_id ] ) ) { $thickbox_url = $this->get_thickbox_url( WPML_ST_String_Tracking_AJAX_Factory::ACTION_POSITION_IN_SOURCE, $string_id ); ?> <?php esc_attr_e( 'view in page', 'wpml-string-translation' ); ?> strings_in_page[ ICL_STRING_TRANSLATION_STRING_TRACKING_TYPE_PAGE ][ $string_id ] ) ) { $thickbox_url = $this->get_thickbox_url( WPML_ST_String_Tracking_AJAX_Factory::ACTION_POSITION_IN_PAGE, $string_id ); ?> <?php esc_attr_e( 'view in page', 'wpml-string-translation' ); ?> WPML_ST_FOLDER . '/menu/string-translation.php', 'action' => $action, 'nonce' => wp_create_nonce( $action ), 'string_id' => $string_id, 'width' => 810, 'height' => 600, ), 'admin-ajax.php' ); } private function hide_if_md5( $str ) { return preg_replace( '#^((.+)( - ))?([a-z0-9]{32})$#', '$2', $str ); } /** * @param array $string */ public function updateColumnsForString( $string ) { if ( ! $this->additional_columns_to_render->contains( 'context' ) && $string['gettext_context'] ) { $this->additional_columns_to_render->push( 'context' ); } if ( ! $this->additional_columns_to_render->contains( 'name' ) && $this->hide_if_md5( $string['name'] ) ) { $this->additional_columns_to_render->push( 'name' ); } if ( ! $this->additional_columns_to_render->contains( 'view' ) && $this->is_string_tracked( $string['string_id'] ) ) { $this->additional_columns_to_render->push( 'view' ); } } private function is_string_tracked( $string_id ) { $tracked_source = Obj::prop( ICL_STRING_TRANSLATION_STRING_TRACKING_TYPE_SOURCE, $this->strings_in_page ); $tracked_page = Obj::prop( ICL_STRING_TRANSLATION_STRING_TRACKING_TYPE_PAGE, $this->strings_in_page ); return ( $tracked_source && Obj::prop( $string_id, $tracked_source ) ) || ( $tracked_page && Obj::prop( $string_id, $tracked_page ) ); } }