diff options
Diffstat (limited to 'www/wiki/extensions/Translate/utils/TuxMessageTable.php')
-rw-r--r-- | www/wiki/extensions/Translate/utils/TuxMessageTable.php | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/utils/TuxMessageTable.php b/www/wiki/extensions/Translate/utils/TuxMessageTable.php new file mode 100644 index 00000000..41d52a8a --- /dev/null +++ b/www/wiki/extensions/Translate/utils/TuxMessageTable.php @@ -0,0 +1,75 @@ +<?php + +class TuxMessageTable extends ContextSource { + protected $group; + protected $language; + + public function __construct( IContextSource $context, MessageGroup $group, $language ) { + $this->setContext( $context ); + $this->group = $group; + if ( Language::isKnownLanguageTag( $language ) ) { + $this->language = $language; + } else { + $this->language = $context->getLanguage()->getCode(); + } + } + + public function fullTable() { + $modules = []; + Hooks::run( 'TranslateBeforeAddModules', [ &$modules ] ); + $this->getOutput()->addModules( $modules ); + + $sourceLang = Language::factory( $this->group->getSourceLanguage() ); + $targetLang = Language::factory( $this->language ); + $batchSize = 100; + + $list = Html::element( 'div', [ + 'class' => 'row tux-messagelist', + 'data-grouptype' => get_class( $this->group ), + 'data-sourcelangcode' => $sourceLang->getCode(), + 'data-sourcelangdir' => $sourceLang->getDir(), + 'data-targetlangcode' => $targetLang->getCode(), + 'data-targetlangdir' => $targetLang->getDir(), + ] ); + + $groupId = htmlspecialchars( $this->group->getId() ); + $msg = $this->msg( 'tux-messagetable-loading-messages' ) + ->numParams( $batchSize ) + ->escaped(); + + $loader = <<<HTML +<div class="tux-messagetable-loader hide" data-messagegroup="$groupId" data-pagesize="$batchSize"> + <span class="tux-loading-indicator"></span> + <div class="tux-messagetable-loader-info">$msg</div> +</div> +HTML; + + $hideOwn = $this->msg( 'tux-editor-proofreading-hide-own-translations' )->escaped(); + $clearTranslated = $this->msg( 'tux-editor-clear-translated' )->escaped(); + $modeTranslate = $this->msg( 'tux-editor-translate-mode' )->escaped(); + $modePage = $this->msg( 'tux-editor-page-mode' )->escaped(); + $modeProofread = $this->msg( 'tux-editor-proofreading-mode' )->escaped(); + + $actionbar = <<<HTML +<div class="tux-action-bar hide row"> + <div class="three columns tux-message-list-statsbar" data-messagegroup="$groupId"></div> + <div class="three columns text-center"> + <button class="toggle button tux-proofread-own-translations-button hide-own hide"> + $hideOwn + </button> + <button class="toggle button tux-editor-clear-translated hide">$clearTranslated</button> + </div> + <div class="six columns tux-view-switcher text-center"> + <button class="toggle down translate-mode-button">$modeTranslate + </button><button class="toggle down page-mode-button">$modePage + </button><button class="toggle hide proofread-mode-button">$modeProofread + </button> + </div> +</div> +HTML; + + // Actual message table is fetched and rendered at client side. This just provides + // the loader and action bar. + return $list . $loader . $actionbar; + } +} |