jenkins-bot has submitted this change and it was merged.

Change subject: Allow non-translators to sign up
......................................................................


Allow non-translators to sign up

Change-Id: I0f09771d0eef58c238f0260c7bd1747145bbcc8d
---
M MainPage.i18n.php
M Resources.php
M resources/css/ext.translate.mainpage.css
M resources/js/ext.translate.mainpage.js
M specials/SpecialTwnMainPage.php
5 files changed, 143 insertions(+), 67 deletions(-)

Approvals:
  Santhosh: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/MainPage.i18n.php b/MainPage.i18n.php
index bd4d892..f9df1a5 100644
--- a/MainPage.i18n.php
+++ b/MainPage.i18n.php
@@ -58,6 +58,12 @@
        'twnmp-choose-another-language' => 'Choose another language...',
        'twnmp-choose-fill-account-details' => 'Fill in your account details',
 
+       'twnmp-join-community' => 'Join the community',
+       'twnmp-join-community-desc' => 'If you are a developer interested in 
documenting translations, or just exploring the platform, you are also 
welcome.',
+       'twnmp-join-community-reason' => 'Why are you interested in joining?',
+       'twnmp-create-account-cancel' => 'Cancel',
+       'twnmp-join-community-info' => 'Not a translator? You can still join 
the community.',
+
        'twnmp-stats-number-k' => '$1k',
        'twnmp-select-target-language' => 'Select language',
        'twn-mainpage-total-messages-in-language' => '{{PLURAL:$1|One 
message|$1 messages}}',
@@ -232,6 +238,11 @@
 
 Parameters:
 * $1 - total number of messages.',
+       'twnmp-join-community' => 'Header in the signup form for 
non-translators',
+       'twnmp-join-community-desc' => 'Not for non-translators who are signing 
up via the main page',
+       'twnmp-join-community-reason' => 'Label for a text area',
+       'twnmp-create-account-cancel' => 'A button',
+       'twnmp-join-community-info' => 'A note at the end of the sign up form 
in the main page',
 );
 
 /** Afrikaans (Afrikaans)
diff --git a/Resources.php b/Resources.php
index bab8e8a..4dedf51 100644
--- a/Resources.php
+++ b/Resources.php
@@ -3,7 +3,7 @@
  * JavaScript and CSS resource definitions.
  *
  * @file
- * @license GPL2+
+ * @license GPL-2.0+
  */
 
 $resourcePaths = array(
@@ -14,13 +14,14 @@
 $wgResourceModules['ext.translate.mainpage'] = array(
        'scripts' => 'resources/js/ext.translate.mainpage.js',
        'dependencies' => array(
-               'ext.translate.mainpage.icons',
-               'ext.uls.interface',
                'ext.translate.groupselector',
+               'ext.translate.mainpage.icons',
                'ext.translate.statsbar',
-               'mediawiki.util',
-               'mediawiki.Uri',
+               'ext.uls.interface',
+               'mediawiki.api.login',
                'mediawiki.language',
+               'mediawiki.Uri',
+               'mediawiki.util',
        ),
        'messages' => array(
                'twnmp-show-more-projects',
diff --git a/resources/css/ext.translate.mainpage.css 
b/resources/css/ext.translate.mainpage.css
index b0c31ad..7493e90 100644
--- a/resources/css/ext.translate.mainpage.css
+++ b/resources/css/ext.translate.mainpage.css
@@ -177,6 +177,20 @@
        padding: 10px;
 }
 
+.login-widget .dev-signup {
+       background-color: #f2eae2;
+       cursor: pointer;
+       padding: 10px;
+}
+
+.login-widget .only-dev {
+       padding: 5px 10px 0 10px;
+}
+
+.login-widget .only-dev textarea {
+       padding: 5px;
+}
+
 .signup-language-selector {
        font-size: 12pt;
        background-color: #E0E0E0;
diff --git a/resources/js/ext.translate.mainpage.js 
b/resources/js/ext.translate.mainpage.js
index e308f4f..bbe0533 100644
--- a/resources/js/ext.translate.mainpage.js
+++ b/resources/js/ext.translate.mainpage.js
@@ -258,8 +258,35 @@
        }
 
        $( document ).ready( function () {
+               var $form = $( '.login-widget' ), $submit;
+
                signupLanguageSelector();
-               $( '.login-widget' ).on( 'submit', loginFormHandler );
+               $form.on( 'submit', loginFormHandler );
+
+               $form.find( '.dev-signup' ).click( function () {
+                       $form.find( '.only-dev' ).removeClass( 'hide' );
+                       $form.find( '.only-nondev' ).addClass( 'hide' );
+                       $form.find( '.required' ).trigger( 'change' );
+               } );
+
+               $form.find( 'button.cancel' ).click( function ( e ) {
+                       e.preventDefault();
+                       $form.find( '.only-dev' ).addClass( 'hide' );
+                       $form.find( '.only-nondev' ).removeClass( 'hide' );
+                       $form.find( '.required' ).trigger( 'change' );
+               } );
+
+               $submit = $form.find( 'button[type=submit]' );
+               $submit.prop( 'disabled', true );
+               $form.on( 'change keyup', '.required', function () {
+                       var anyEmpty = false;
+
+                       $form.find( '.required:visible' ).each( function () {
+                               anyEmpty = anyEmpty || $( this ).val().trim() 
=== '';
+                       } );
+                       $submit.prop( 'disabled', anyEmpty );
+               } );
+
                setupProjectTiles();
        } );
 }( jQuery, mediaWiki ) );
diff --git a/specials/SpecialTwnMainPage.php b/specials/SpecialTwnMainPage.php
index 81e9e84..3ac89fa 100644
--- a/specials/SpecialTwnMainPage.php
+++ b/specials/SpecialTwnMainPage.php
@@ -481,82 +481,105 @@
                $languageCode = $this->getLanguage()->getCode();
                $languageName = TranslateUtils::getLanguageName( $languageCode 
);
 
-               // Shortcut for creating row elements
-               $row = array( 'class' => 'row' );
-
-               $out = Html::openElement( 'form',
-                       array( 'class' => 'five columns main-widget 
login-widget',
-                               'method' => 'post',
-                               'action' => SpecialPage::getTitleFor( 
'Userlogin' )
-                                       ->getLocalUrl( array(
-                                               'returnto' => 
'Special:MainPage',
-                                               'type' => 'signup' ) ),
-                       ) );
-
-               $out .= Html::hidden( 'wpSandboxToken', 
ApiTranslateSandbox::getToken() );
-               $out .= Html::element( 'h1', $row, $this->msg( 
'twnmp-become-translator' )->text() );
-               $out .= Html::element(
-                       'h2',
-                       $row,
-                       $this->msg( 'twnmp-choose-languages-you-know' )->text()
+               $defaultLanguage = Xml::checkLabel(
+                       $languageName,
+                       'signuplanguage',
+                       'language-' . $languageCode,
+                       true
                );
-               $out .= Html::openElement( 'ul', array( 'class' => 'row 
signup-languages' ) );
-               $out .= Html::openElement( 'li' );
-               $out .= Xml::checkLabel( $languageName, 'signuplanguage', 
'language-' . $languageCode, true );
-               $out .= Html::closeElement( 'li' );
-               $out .= Html::closeElement( 'ul' );
-               $out .= Html::openElement( 'div', $row );
-               $out .= Html::openElement( 'div', array( 'class' => 'eight 
columns' ) );
-               $out .= Html::element(
-                       'div',
-                       array( 'class' => 'signup-language-selector' ),
-                       $this->msg( 'twnmp-choose-another-language' )->text()
-               );
-               $out .= Html::closeElement( 'div' );
-               $out .= Html::closeElement( 'div' );
-               $out .= Html::element(
-                       'h2',
-                       $row,
-                       $this->msg( 'twnmp-choose-fill-account-details' 
)->text()
-               );
-               $out .= Html::openElement( 'div', $row );
-               $out .= Html::element( 'input', array(
-                       'class' => 'eleven columns',
+               $username = Html::element( 'input', array(
+                       'class' => 'eleven columns required',
                        'name' => 'wpName',
-                       // @todo IE doesn't support placeholders
+                       'required',
                        'placeholder' => $this->msg( 
'twnmp-signup-username-placeholder' )->text(),
                ) );
-               $out .= Html::closeElement( 'div' );
-
-               $out .= Html::openElement( 'div', $row );
-               $out .= Html::element( 'input', array(
-                       'class' => 'eleven columns',
+               $password = Html::element( 'input', array(
+                       'class' => 'eleven columns required',
                        'name' => 'wpPassword',
                        'type' => 'password',
-                       // @todo IE doesn't support placeholders
+                       'required',
                        'placeholder' => $this->msg( 
'twnmp-signup-password-placeholder' )->text(),
                ) );
-               $out .= Html::closeElement( 'div' );
-
-               $out .= Html::openElement( 'div', $row );
-               $out .= Html::element( 'input', array(
-                       'class' => 'eleven columns',
+               $email = Html::element( 'input', array(
+                       'class' => 'eleven columns required',
                        'name' => 'wpEmail',
                        'type' => 'email',
-                       // @todo IE doesn't support placeholders
+                       'required',
                        'placeholder' => $this->msg( 
'twnmp-signup-email-placeholder' )->text(),
                ) );
-               $out .= Html::closeElement( 'div' );
+               $reasonInput = Html::element( 'textarea', array(
+                       'class' => 'eleven columns required',
+                       'name' => 'reason',
+                       'rows' => '4',
+                       'required',
+               ) );
 
-               $out .= Html::openElement( 'div', $row );
-               $out .= Html::element( 'button', array(
-                       'class' => 'six columns green button offset-by-three',
-               ), $this->msg( 'twnmp-create-account-button' )->text() );
-               $out .= Html::closeElement( 'div' );
+               $contents = <<<HTML
+       <h1 class="row only-dev hide">
+               {$this->msg( 'twnmp-join-community' )->escaped()}
+       </h1>
+       <div class="row only-dev hide label">
+               {$this->msg( 'twnmp-join-community-desc' )->escaped()}
+       </div>
+       <h1 class="row only-nondev">
+               {$this->msg( 'twnmp-become-translator' )->escaped()}
+       </h1>
+       <h2 class="row only-nondev">
+               {$this->msg( 'twnmp-choose-languages-you-know' )->escaped()}
+       </h2>
+       <ul class="row signup-languages only-nondev">
+               <li>
+                       $defaultLanguage
+               </li>
+       </ul>
+       <div class="row only-nondev">
+               <div class="eight columns">
+                       <div class="signup-language-selector">
+                               {$this->msg( 'twnmp-choose-another-language' 
)->escaped()}
+                       </div>
+               </div>
+       </div>
+       <h2 class="row">
+               {$this->msg( 'twnmp-choose-fill-account-details' )->text()}
+       </h2>
+       <div class="row">$username</div>
+       <div class="row">$password</div>
+       <div class="row">$email</div>
+       <div class="row label only-dev hide">
+               {$this->msg( 'twnmp-join-community-reason' )->escaped()}
+       </div>
+       <div class="row only-dev hide">$reasonInput</div>
+       <div class="row">
+               <button class="six columns green button" type="submit">
+                       {$this->msg( 'twnmp-create-account-button' )->escaped()}
+               </button>
+               <button class="four columns button offset-by-one only-dev 
cancel hide">
+                       {$this->msg( 'twnmp-create-account-cancel' )->escaped()}
+               </button>
+       </div>
+       <div class="row dev-signup only-nondev">
+               <a>{$this->msg( 'twnmp-join-community-info' )->escaped()}</a>
+       </div>
+HTML;
 
-               $out .= Html::closeElement( 'form' );
+               $token = Html::hidden( 'wpSandboxToken', 
ApiTranslateSandbox::getToken() );
 
-               return $out;
+               $action = SpecialPage::getTitleFor( 'Userlogin' )->getLocalUrl(
+                       array(
+                               'returnto' => 'Special:MainPage',
+                               'type' => 'signup'
+                       )
+               );
+
+               $out = Html::rawElement( 'form',
+                       array( 'class' => 'five columns main-widget 
login-widget',
+                               'method' => 'post',
+                               'action' => $action,
+                       ),
+                       "\n\t$token\n$contents\n"
+               );
+
+               return "\n$out\n";
        }
 
        public function userStats() {

-- 
To view, visit https://gerrit.wikimedia.org/r/64591
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I0f09771d0eef58c238f0260c7bd1747145bbcc8d
Gerrit-PatchSet: 9
Gerrit-Project: mediawiki/extensions/TwnMainPage
Gerrit-Branch: master
Gerrit-Owner: Nikerabbit <[email protected]>
Gerrit-Reviewer: KartikMistry <[email protected]>
Gerrit-Reviewer: Nikerabbit <[email protected]>
Gerrit-Reviewer: Pginer <[email protected]>
Gerrit-Reviewer: Santhosh <[email protected]>
Gerrit-Reviewer: jenkins-bot

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

Reply via email to