summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'MLEB/Translate/specials/SpecialMagic.php')
-rw-r--r--MLEB/Translate/specials/SpecialMagic.php243
1 files changed, 0 insertions, 243 deletions
diff --git a/MLEB/Translate/specials/SpecialMagic.php b/MLEB/Translate/specials/SpecialMagic.php
deleted file mode 100644
index dbf9be19..00000000
--- a/MLEB/Translate/specials/SpecialMagic.php
+++ /dev/null
@@ -1,243 +0,0 @@
-<?php
-/**
- * Contains logic for special page Special:AdvancedTranslate
- *
- * @file
- * @author Niklas Laxström
- * @author Siebrand Mazeland
- * @license GPL-2.0-or-later
- */
-
-/**
- * This special page helps with the translations of %MediaWiki features that are
- * not in the main messages array (special page aliases, magic words, namespace names).
- *
- * @ingroup SpecialPage TranslateSpecialPage
- */
-class SpecialMagic extends SpecialPage {
- const MODULE_MAGIC = 'words';
- const MODULE_SPECIAL = 'special';
- const MODULE_NAMESPACE = 'namespace';
-
- /**
- * List of supported modules
- */
- private $aModules = [
- self::MODULE_SPECIAL,
- self::MODULE_NAMESPACE,
- self::MODULE_MAGIC
- ];
-
- /**
- * Page options
- */
- private $options = [];
- private $defaults = [];
- private $nondefaults = [];
-
- public function __construct() {
- parent::__construct( 'Magic' );
- }
-
- public function doesWrites() {
- return true;
- }
-
- protected function getGroupName() {
- return 'wiki';
- }
-
- /**
- * @see SpecialPage::getDescription
- *
- * @return string
- */
- public function getDescription() {
- return $this->msg( 'translate-magic-pagename' )->text();
- }
-
- /**
- * Returns HTML5 output of the form
- * GLOBALS: $wgScript
- * @return string
- */
- protected function getForm() {
- global $wgScript;
-
- $form = Xml::tags( 'form',
- [
- 'action' => $wgScript,
- 'method' => 'get'
- ],
-
- '<table><tr><td>' .
- $this->msg( 'translate-page-language' )->escaped() .
- '</td><td>' .
- TranslateUtils::languageSelector(
- $this->getLanguage()->getCode(),
- $this->options['language']
- ) .
- '</td></tr><tr><td>' .
- $this->msg( 'translate-magic-module' )->escaped() .
- '</td><td>' .
- $this->moduleSelector( $this->options['module'] ) .
- '</td></tr><tr><td colspan="2">' .
- Xml::submitButton( $this->msg( 'translate-magic-submit' )->text() ) . ' ' .
- Xml::submitButton(
- $this->msg( 'translate-magic-cm-export' )->text(),
- [ 'name' => 'export' ]
- ) .
- '</td></tr></table>' .
- Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() )
- );
-
- return $form;
- }
-
- /**
- * Helper function get module selector.
- *
- * @param string $selectedId Which value should be selected by default
- * @return string HTML5-compatible select-element.
- */
- protected function moduleSelector( $selectedId ) {
- // Give grep a chance to find the usages:
- // translate-magic-words, translate-magic-special, translate-magic-namespace
- $selector = new XmlSelect( 'module', 'module', $selectedId );
- foreach ( $this->aModules as $code ) {
- $selector->addOption( $this->msg( 'translate-magic-' . $code )->text(), $code );
- }
-
- return $selector->getHTML();
- }
-
- protected function setup( $parameters ) {
- $defaults = [
- /* str */'module' => '',
- /* str */'language' => $this->getUser()->getOption( 'language' ),
- /* bool */'export' => false,
- /* bool */'savetodb' => false,
- ];
-
- /**
- * Place where all non default variables will end.
- */
- $nondefaults = [];
-
- /**
- * Temporary store possible values parsed from parameters.
- */
- $options = $defaults;
- $request = $this->getRequest();
- foreach ( $options as $v => $t ) {
- if ( is_bool( $t ) ) {
- $r = $request->getBool( $v, $options[$v] );
- } elseif ( is_int( $t ) ) {
- $r = $request->getInt( $v, $options[$v] );
- } elseif ( is_string( $t ) ) {
- $r = $request->getText( $v, $options[$v] );
- }
-
- if ( !isset( $r ) ) {
- throw new MWException( '$r was not set' );
- }
-
- wfAppendToArrayIfNotDefault( $v, $r, $defaults, $nondefaults );
- }
-
- $this->defaults = $defaults;
- $this->nondefaults = $nondefaults;
- $this->options = $nondefaults + $defaults;
- }
-
- /**
- * The special page running code
- *
- * @param null|string $parameters
- * @throws MWException|PermissionsError
- */
- public function execute( $parameters ) {
- $this->setup( $parameters );
- $this->setHeaders();
-
- $out = $this->getOutput();
- $out->addHelpLink( '//translatewiki.net/wiki/FAQ#Special:AdvancedTranslate', true );
-
- $out->addHTML( $this->getForm() );
-
- if ( !$this->options['module'] ) {
- return;
- }
- switch ( $this->options['module'] ) {
- case 'alias':
- case self::MODULE_SPECIAL:
- $o = new SpecialPageAliasesCM( $this->options['language'] );
- break;
- case self::MODULE_MAGIC:
- $o = new MagicWordsCM( $this->options['language'] );
- break;
- case self::MODULE_NAMESPACE:
- $o = new NamespaceCM( $this->options['language'] );
- break;
- default:
- throw new MWException( "Unknown module {$this->options['module']}" );
- }
-
- $request = $this->getRequest();
- if ( $this->options['savetodb'] && $request->wasPosted() ) {
- if ( !$this->getUser()->isAllowed( 'translate' ) ) {
- throw new PermissionsError( 'translate' );
- }
-
- $errors = [];
- $o->loadFromRequest( $request );
- $o->validate( $errors );
- if ( $errors ) {
- $out->wrapWikiMsg( '<div class="error">$1</div>',
- 'translate-magic-notsaved' );
- $this->outputErrors( $errors );
- $out->addHTML( $o->output() );
-
- return;
- } else {
- $o->save( $request );
- $out->wrapWikiMsg( '<strong>$1</strong>', 'translate-magic-saved' );
- $out->addHTML( $o->output() );
-
- return;
- }
- }
-
- if ( $this->options['export'] ) {
- $output = $o->export();
- if ( $output === '' ) {
- $out->addWikiMsg( 'translate-magic-nothing-to-export' );
-
- return;
- }
- $result = Xml::element( 'textarea', [ 'rows' => '30' ], $output );
- $out->addHTML( $result );
-
- return;
- }
-
- $out->addWikiMsg( 'translate-magic-help' );
- $errors = [];
- $o->validate( $errors );
- if ( $errors ) {
- $this->outputErrors( $errors );
- }
- $out->addHTML( $o->output() );
- }
-
- protected function outputErrors( $errors ) {
- $count = $this->getLanguage()->formatNum( count( $errors ) );
- $out = $this->getOutput();
- $out->addWikiMsg( 'translate-magic-errors', $count );
- $out->addHTML( '<ol>' );
- foreach ( $errors as $error ) {
- $out->addHTML( "<li>$error</li>" );
- }
- $out->addHTML( '</ol>' );
- }
-}