/extensions/Translate/utils/UserToggles.php

https://github.com/ChuguluGames/mediawiki-svn · PHP · 114 lines · 59 code · 15 blank · 40 comment · 4 complexity · 0ded0be07d818b7c132ee37d1b8660fb MD5 · raw file

  1. <?php
  2. /**
  3. * Contains classes for addition of extension specific preference settings.
  4. *
  5. * @file
  6. * @author Siebrand Mazeland
  7. * @author Niklas Laxström
  8. * @copyright Copyright © 2008-2010 Siebrand Mazeland, Niklas Laxström
  9. * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
  10. */
  11. /**
  12. * Class to add Translate specific preference settings.
  13. */
  14. class TranslatePreferences {
  15. /**
  16. * Add 'translate-pref-nonewsletter' preference.
  17. * This is actually specific to translatewiki.net
  18. *
  19. * @return \bool true
  20. */
  21. public static function onGetPreferences( $user, &$preferences ) {
  22. global $wgEnableEmail, $wgUser, $wgEnotifRevealEditorAddress;
  23. // Only show is e-mail is enabled and user has a confirmed e-mail address.
  24. if ( $wgEnableEmail && $wgUser->isEmailConfirmed() ) {
  25. // 'translate-pref-nonewsletter' is used as opt-out for
  26. // users with a confirmed e-mail address
  27. $prefs = array(
  28. 'translate-nonewsletter' => array(
  29. 'type' => 'toggle',
  30. 'section' => 'personal/email',
  31. 'label-message' => 'translate-pref-nonewsletter'
  32. )
  33. );
  34. // Add setting after 'enotifrevealaddr'
  35. $preferences = wfArrayInsertAfter( $preferences, $prefs,
  36. $wgEnotifRevealEditorAddress ? 'enotifrevealaddr' : 'enotifminoredits' );
  37. }
  38. return true;
  39. }
  40. /**
  41. * Add 'translate-editlangs' preference.
  42. * These are the languages also shown when translating.
  43. *
  44. * @return \bool true
  45. */
  46. public static function translationAssistLanguages( $user, &$preferences ) {
  47. // Get selector.
  48. $select = self::languageSelector();
  49. // Set target ID.
  50. $select->setTargetId( 'mw-input-translate-editlangs' );
  51. // Get available languages.
  52. $languages = Language::getLanguageNames( false );
  53. $preferences['translate-editlangs'] = array(
  54. 'class' => 'HTMLJsSelectToInputField',
  55. 'section' => 'editing/translate',
  56. 'label-message' => 'translate-pref-editassistlang',
  57. 'help-message' => 'translate-pref-editassistlang-help',
  58. 'select' => $select,
  59. 'valid-values' => array_keys( $languages ),
  60. 'name' => 'translate-editlangs',
  61. );
  62. return true;
  63. }
  64. /**
  65. * Add 'translate-jsedit' preference.
  66. * An option to disable the javascript edit interface.
  67. *
  68. * @return \bool true
  69. */
  70. public static function translationJsedit( $user, &$preferences ) {
  71. $preferences['translate-jsedit'] = array(
  72. 'class' => 'HTMLCheckField',
  73. 'section' => 'editing/translate',
  74. 'label-message' => 'translate-pref-jsedit',
  75. );
  76. return true;
  77. }
  78. /**
  79. * JavsScript selector for language codes.
  80. */
  81. protected static function languageSelector() {
  82. global $wgLang;
  83. if ( is_callable( array( 'LanguageNames', 'getNames' ) ) ) {
  84. $languages = LanguageNames::getNames( $wgLang->getCode(),
  85. LanguageNames::FALLBACK_NORMAL
  86. );
  87. } else {
  88. $languages = Language::getLanguageNames( false );
  89. }
  90. ksort( $languages );
  91. $selector = new XmlSelect( 'mw-language-selector', 'mw-language-selector' );
  92. foreach ( $languages as $code => $name ) {
  93. $selector->addOption( "$code - $name", $code );
  94. }
  95. $jsSelect = new JsSelectToInput( $selector );
  96. $jsSelect->setSourceId( 'mw-language-selector' );
  97. return $jsSelect;
  98. }
  99. }