<?php
namespace Linguator\Admin\Views;

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

use WP_Term;

// phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound

/**
 * Displays the translations fields for terms
 *
 * @package Linguator
 *
 * @var Linguator_Admin_Filters_Term $this      Linguator_Admin_Filters_Term object.
 * @var Linguator_Language           $lang      The post language. Default language if no language assigned yet.
 * @var string                 $taxonomy  Taxonomy name.
 * @var string                 $post_type Post type.
 */





if ( isset( $term_id ) ) {
	// Edit term form ?>
	<th scope="row"><?php esc_html_e( 'Translations', 'translate-words' ); ?></th>
	<td>
	<?php
}
else {
	// Add term form
	?>
	<p><?php esc_html_e( 'Translations', 'translate-words' ); ?></p>
	<?php
}
?>
<table class="widefat term-translations"  id="<?php echo isset( $term_id ) ? 'edit' : 'add'; ?>-term-translations">
	<?php
	foreach ( $this->model->get_languages_list() as $language ) {
		if ( $language->term_id == $lang->term_id ) {
			continue;
		}

		// Look for any existing translation in this language
		// Take care not to propose a self link
		$translation = null;
		if ( isset( $term_id ) && ( $translation_id = $this->model->term->get_translation( $term_id, $language ) ) && $translation_id != $term_id ) {
			$translation = get_term( $translation_id, $taxonomy );
		}
		if ( ! empty( $from_term_id ) && ( $translation_id = $this->model->term->get( $from_term_id, $language ) ) && ! $this->model->term->get_translation( $translation_id, $lang ) ) {
			$translation = get_term( $translation_id, $taxonomy );
		}
		$translation_exists = $translation instanceof WP_Term;

		$add_link = isset( $term_id ) ? $this->links->new_term_translation_link( $term_id, $taxonomy, $post_type, $language ) : ''; // Do not display the add new link in add term form ($term_id not set).
		$link = $add_link;

		if ( $translation_exists ) {
			$link = $this->links->edit_term_translation_link( $translation->term_id, $taxonomy, $post_type );
		}
		?>
		<tr>
			<th class = "lmat-language-column">
				<span class = "lmat-translation-flag"><?php echo $language->flag ? wp_kses( $language->flag, array( 'img' => array( 'src' => true, 'alt' => true, 'class' => true, 'width' => true, 'height' => true, 'style' => true ), 'span' => array( 'class' => true ), 'abbr' => array() ), array_merge( wp_allowed_protocols(), array( 'data' ) ) ) : esc_html( $language->slug ); ?></span>
				<?php
				printf(
					'<span class="lmat-language-name%1$s">%2$s</span>',
					isset( $term_id ) ? '' : ' screen-reader-text',
					esc_html( $language->name )
				);
				?>
			</th>
			<?php
			if ( isset( $term_id ) ) {
				?>
				<td class = "hidden"><?php echo wp_kses_post( $add_link ); ?></td>
				<td class = "lmat-edit-column"><?php echo wp_kses_post( $link ); ?></td>
				<?php
			}
			?>
			<td class = "lmat-translation-column">
				<?php
				printf(
					'<label class="screen-reader-text" for="tr_lang_%1$s">%2$s</label>
					<input type="hidden" class="htr_lang" name="term_tr_lang[%1$s]" id="htr_lang_%1$s" value="%3$d" />
					<span lang="%6$s" dir="%7$s"><input type="text" class="tr_lang" id="tr_lang_%1$s" value="%4$s"%5$s /></span>',
					esc_attr( $language->slug ),
					/* translators: accessibility text */
					esc_html__( 'Translation', 'translate-words' ),
					$translation_exists ? (int) $translation->term_id : 0,
					$translation_exists ? esc_attr( $translation->name ) : '',
					disabled( empty( $disabled ), false, false ),
					esc_attr( $language->get_locale( 'display' ) ),
					( $language->is_rtl ? 'rtl' : 'ltr' )
				);
				?>
			</td>
		</tr>
		<?php
	} // End foreach
	?>
</table>
<?php

if ( isset( $term_id ) ) {
	// Edit term form
	?>
	</td>
	<?php
}
