$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();
?>
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 );
?>
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 );
?>
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 ) );
}
}