https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113669

Revision: 113669
Author:   amire80
Date:     2012-03-12 21:19:31 +0000 (Mon, 12 Mar 2012)
Log Message:
-----------
Completing the form fields.

Modified Paths:
--------------
    trunk/extensions/TranslationNotifications/SpecialNotifyTranslators.php
    trunk/extensions/TranslationNotifications/TranslationNotifications.i18n.php

Modified: trunk/extensions/TranslationNotifications/SpecialNotifyTranslators.php
===================================================================
--- trunk/extensions/TranslationNotifications/SpecialNotifyTranslators.php      
2012-03-12 21:17:23 UTC (rev 113668)
+++ trunk/extensions/TranslationNotifications/SpecialNotifyTranslators.php      
2012-03-12 21:19:31 UTC (rev 113669)
@@ -25,12 +25,19 @@
 
        public function execute( $parameters ) {
                global $wgUser, $wgOut;
+               $this->setHeaders();
+
                if ( !$wgUser->isallowed( self::$right ) ) {
                        throw new PermissionsError( self::$right );
                }
 
-               $wgOut->addModules( 
'ext.translationnotifications.notifytranslators' );
+               $htmlFormDataModel = $this->getDataModel();
 
+               if ( !is_array( $htmlFormDataModel ) ) {
+                       $wgOut->addWikiMsg( $htmlFormDataModel );
+                       return;
+               }
+
                $context = $this->getContext();
                $htmlForm = new HtmlForm( $this->getDataModel(), $context, 
'translationnotifications' );
                $htmlForm->setId( 'notifytranslators-form' );
@@ -39,10 +46,35 @@
                $htmlForm->setSubmitCallback( array( $this, 'formSubmit' ) );
                $htmlForm->show();
 
-               $this->setHeaders();
+               $wgOut->addModules( 
'ext.translationnotifications.notifytranslators' );
        }
 
-       public function getDataModel() {
+       /**
+        * Builds the form fields
+        *
+        * @return array or string with an error message key in case of error
+        */
+       private function getDataModel() {
+
+               // Translatable pages dropdown
+               $translatablePagesIDs = 
TranslatablePage::getTranslatablePages();
+               if ( count ( $translatablePagesIDs ) ) {
+                       return 
'translationnotifications-error-no-translatable-pages';
+               }
+
+               $translatablePagesOptions = array();
+               foreach ( $translatablePagesIDs as $translatablePagesID ) {
+                       $translatablePagesOptions[Title::newFromID( 
$translatablePagesID )->getText()] = $translatablePagesID;
+               }
+
+               $m['TranslatablePage'] = array(
+                       'type' => 'select',
+                       'label-message' => array( 
'translationnotifications-translatablepage-title' ),
+                       'options' => $translatablePagesOptions,
+                       'default' => 'unset',
+               );
+
+               // Languages to notify input box
                $m['LanguagesToNotify'] = array(
                        'type' => 'text',
                        'rows' => 20,
@@ -50,19 +82,37 @@
                        'label-message' => 
'translationnotifications-languages-to-notify-label',
                );
 
-               $m['NotificationText'] = array(
-                       'type' => 'textarea',
-                       'rows' => 20,
-                       'cols' => 80,
-                       'label-message' => 'emailmessage',
+               // Priotity dropdown
+               $priorityOptions = array();
+               $priorities = array( 'unset', 'high', 'medium', 'low' );
+
+               foreach ( $priorities as $priority ) {
+                       $priorityMessage = wfMessage( 
"translationnotifications-priority-$priority" )->plain();
+                       $priorityOptions[$priorityMessage] = $priority;
+               }
+
+               $m['Priority'] = array(
+                       'type' => 'select',
+                       'label-message' => array( 
'translationnotifications-priority' ),
+                       'options' => $priorityOptions,
+                       'default' => 'unset',
                );
 
+               // Deadline date input box with datepicker
                $m['DeadlineDate'] = array(
                        'type' => 'text',
                        'size' => 20,
                        'label-message' => 
'translationnotifications-deadline-label',
                );
 
+               // Custom text
+               $m['NotificationText'] = array(
+                       'type' => 'textarea',
+                       'rows' => 20,
+                       'cols' => 80,
+                       'label-message' => 'emailmessage',
+               );
+
                return $m;
        }
 }

Modified: 
trunk/extensions/TranslationNotifications/TranslationNotifications.i18n.php
===================================================================
--- trunk/extensions/TranslationNotifications/TranslationNotifications.i18n.php 
2012-03-12 21:17:23 UTC (rev 113668)
+++ trunk/extensions/TranslationNotifications/TranslationNotifications.i18n.php 
2012-03-12 21:19:31 UTC (rev 113669)
@@ -42,7 +42,14 @@
        'translationnotifications-notifytranslators' => 'Notify translators',
        'translationnotifications-send-notification-button' => 'Send a 
notification to translators',
        'translationnotifications-deadline-label' => 'Deadline to indicate in 
this notification:',
-       'translationnotifications-languages-to-notify-label' => 'Which 
languages to notify (code):',
+       'translationnotifications-languages-to-notify-label' => 'Which 
languages to notify (comma-separated codes):',
+       'translationnotifications-priority' => 'Priority:',
+       'translationnotifications-priority-high' => 'high',
+       'translationnotifications-priority-medium' => 'medium',
+       'translationnotifications-priority-low' => 'low',
+       'translationnotifications-priority-unset' => '(unset)',
+       'translationnotifications-translatablepage-title' => 'Translatable page 
name:',
+       'translationnotifications-error-no-translatable-pages' => 'There are no 
translatable pages in this wiki.',
 );
 
 /** Message documentation (Message documentation)
@@ -80,6 +87,13 @@
        'translationnotifications-send-notification-button' => 'A title for the 
submit button of the translator notification form.',
        'translationnotifications-deadline-label' => 'A label for the deadline 
field, which will have a datepicker.',
        'translationnotifications-languages-to-notify-label' => 'A label for 
language codes field.',
+       'translationnotifications-priority' => 'A label for translation 
priority field.',
+       'translationnotifications-priority-high' => 'high (priority), an item 
in a dropdown box.',
+       'translationnotifications-priority-medium' => 'medium (priority), an 
item in a dropdown box.',
+       'translationnotifications-priority-low' => 'low (priority), an item in 
a dropdown box.',
+       'translationnotifications-priority-unset' => 'unset (priority), an item 
in a dropdown box.',
+       'translationnotifications-translatablepage-title' => 'A label for 
language codes field. Can be translated as "A page designated for translation, 
intended for translation", etc.',
+       'translationnotifications-error-no-translatable-pages' => 'An error 
message.',
 );
 
 /** Belarusian (Taraškievica orthography) (‪Беларуская (тарашкевіца)‬)


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to