http://www.mediawiki.org/wiki/Special:Code/MediaWiki/99525

Revision: 99525
Author:   demon
Date:     2011-10-11 18:34:06 +0000 (Tue, 11 Oct 2011)
Log Message:
-----------
Various work in progress on WM ext

Modified Paths:
--------------
    trunk/extensions/Wikimania/Wikimania.php
    trunk/extensions/Wikimania/backend/WikimaniaRegistration.php
    trunk/extensions/Wikimania/lang/Wikimania.i18n.php
    trunk/extensions/Wikimania/specials/SpecialRegisterForWikimania.php
    trunk/extensions/Wikimania/sql/tables.sql

Added Paths:
-----------
    trunk/extensions/Wikimania/resources/
    trunk/extensions/Wikimania/resources/ext.wikimania.css

Modified: trunk/extensions/Wikimania/Wikimania.php
===================================================================
--- trunk/extensions/Wikimania/Wikimania.php    2011-10-11 18:33:35 UTC (rev 
99524)
+++ trunk/extensions/Wikimania/Wikimania.php    2011-10-11 18:34:06 UTC (rev 
99525)
@@ -64,6 +64,15 @@
 $wgGroupPermissions['sysop']['wikimania-admin'] = true;
 
 /**
+ * RL
+ */
+$wgResourceModules['ext.wikimania'] = array(
+       'localBasePath' => dirname( __FILE__ ) . '/resources',
+       'remoteExtPath' => 'Wikimania/resources',
+       'styles'  => 'ext.wikimania.css',
+);
+
+/**
  * Configuration array for Wikimania. It is a complex array, with many 
sub-options.
  * Dates, unless otherwise specified, should be in MediaWiki timestamp format,
  * that is: YYYYMMDDHHMMSS

Modified: trunk/extensions/Wikimania/backend/WikimaniaRegistration.php
===================================================================
--- trunk/extensions/Wikimania/backend/WikimaniaRegistration.php        
2011-10-11 18:33:35 UTC (rev 99524)
+++ trunk/extensions/Wikimania/backend/WikimaniaRegistration.php        
2011-10-11 18:34:06 UTC (rev 99525)
@@ -2,18 +2,85 @@
 /**
  * Class referring to a specific registration
  */
-class WikimaniaRegistration {
+class WikimaniaRegistration extends HTMLForm {
+       public function  __construct( Wikimania $wm, $context = null ) {
+               parent::__construct( $this->getFields( $wm, $context->getUser() 
), $context, 'wikimania' );
+       }
 
-       private static function fieldList() {
-               return array(
-               );
+       public static function generateRegistrationID( User $u ) {
+               $str = $u->getName() . ":" . microtime() . ":" . wfGetIP();
+               return substr( sha1( $str ), 0, 5 );
        }
 
-       public static function getFields() {
-               return array_keys( self::fieldList() );
+       private function getFields( Wikimania $wm, User $u ) {
+               static $fields;
+               if( !$fields ) {
+                       $langList = array_flip( LanguageNames::getNames( 
$u->getOption( 'lang') ) );
+                       $langListWithEmpty = $langList;
+                       $langListWithEmpty[''] = '';
+                       $fields = array(
+                               /** PERSONAL INFORMATION **/
+                               'reg_fname' => array(
+                                       'type' => 'text',
+                                       'label-message' => 
'wikimania-reg-fname',
+                                       'section' => 'personal-info',
+                                       'required' => true,
+                               ),
+                               'reg_lname' => array(
+                                       'type' => 'text',
+                                       'label-message' => 
'wikimania-reg-lname',
+                                       'section' => 'personal-info',
+                                       'required' => true,
+                               ),
+                               'reg_gender' => array(
+                                       'type' => 'radio',
+                                       'label-message' => 
'wikimania-reg-gender',
+                                       'options' => 
self::getGenderPossibilities(),
+                                       'section' => 'personal-info',
+                                       'required' => true,
+                               ),
+                               'reg_country' => array(
+                                       'type' => 'select',
+                                       'options' => array(),
+                                       'section' => 'personal-info',
+                                       'required' => true,
+                               ),
+                               /** LINGUISTIC ABILItIES **/
+                               'langn' => array(
+                                       'type' => 'select',
+                                       'label-message' => 
'wikimania-reg-langn',
+                                       'options' => $langList,
+                                       'section' => 'linguistic-abilities',
+                                       'required' => true,
+                               ),
+                               'lang1' => array(
+                                       'type' => 'select',
+                                       'label-message' => 
'wikimania-reg-lang1',
+                                       'options' => $langListWithEmpty,
+                                       'section' => 'linguistic-abilities',
+                               ),
+                               'lang2' => array(
+                                       'type' => 'select',
+                                       'label-message' => 
'wikimania-reg-lang2',
+                                       'options' => $langListWithEmpty,
+                                       'section' => 'linguistic-abilities',
+                               ),
+                               'lang3' => array(
+                                       'type' => 'select',
+                                       'label-message' => 
'wikimania-reg-lang3',
+                                       'options' => $langListWithEmpty,
+                                       'section' => 'linguistic-abilities',
+                               ),
+                       );
+               }
+               return $fields;
        }
 
-       public static function buildSchema() {
-
+       private static function getGenderPossibilities() {
+               return array(
+                       wfMsg( 'gender-male') => 'male',
+                       wfMsg( 'gender-female') => 'female',
+                       wfMsg( 'wikimania-reg-gender-decline') => 'decline'
+               );
        }
 }

Modified: trunk/extensions/Wikimania/lang/Wikimania.i18n.php
===================================================================
--- trunk/extensions/Wikimania/lang/Wikimania.i18n.php  2011-10-11 18:33:35 UTC 
(rev 99524)
+++ trunk/extensions/Wikimania/lang/Wikimania.i18n.php  2011-10-11 18:34:06 UTC 
(rev 99525)
@@ -18,6 +18,17 @@
        'right-wikimania-admin' => 'Manage Wikimania registrations',
        'right-wikimania-register' => 'Register for Wikimania',
        'right-wikimania-checkstatus' => 'Check status of a Wikimania 
registration',
+       'wikimania-personal-info' => 'Personal identification data',
+       'wikimania-reg-fname' => 'First name',
+       'wikimania-reg-lname' => 'Last name',
+       'wikimania-reg-gender' => 'Gender',
+       'wikimania-reg-gender-decline' => 'Decline to answer',
+       'wikimania-reg-country' => 'Country of residence',
+       'wikimania-linguistic-abilities' => 'Linguistic abilities',
+       'wikimania-reg-langn' => 'Native language',
+       'wikimania-reg-lang1' => 'Second language',
+       'wikimania-reg-lang2' => 'Third language',
+       'wikimania-reg-lang3' => 'Fourth language',
 );
 
 /**
@@ -33,4 +44,11 @@
        'right-wikimania-admin' => 'User right for managing Wikimania 
registerations',
        'right-wikimania-register' => 'User right for registering for 
Wikimania',
        'right-wikimania-checkstatus' => 'User right for checking Wikimania 
registration status',
+       'wikimania-personal-info' => 'Section header for personal ID fields',
+       'wikimania-reg-fname' => "User's given name for registration form",
+       'wikimania-reg-lname' => "User's surname for registration form",
+       'wikimania-reg-gender' => "User's gender for registration form",
+       'wikimania-reg-gender-decline' => 'Option to decline answering "gender" 
question',
+       'wikimania-reg-country' => 'Country the user lives in',
+       'wikimania-linguistic-abilities' => "Form section for user's language 
abilities",
 );

Added: trunk/extensions/Wikimania/resources/ext.wikimania.css
===================================================================
--- trunk/extensions/Wikimania/resources/ext.wikimania.css                      
        (rev 0)
+++ trunk/extensions/Wikimania/resources/ext.wikimania.css      2011-10-11 
18:34:06 UTC (rev 99525)
@@ -0,0 +1,3 @@
+/**
+ * CSS for Wikimania
+ */

Modified: trunk/extensions/Wikimania/specials/SpecialRegisterForWikimania.php
===================================================================
--- trunk/extensions/Wikimania/specials/SpecialRegisterForWikimania.php 
2011-10-11 18:33:35 UTC (rev 99524)
+++ trunk/extensions/Wikimania/specials/SpecialRegisterForWikimania.php 
2011-10-11 18:34:06 UTC (rev 99525)
@@ -9,6 +9,8 @@
 
        public function execute( $par = '' ) {
                $this->setHeaders();
-               $this->getOutput()->addHTML( '<p>Todo</p>' );
+               $this->getOutput()->addModules( 'ext.wikimania' );
+               $form = new WikimaniaRegistration( Wikimania::getWikimania(), 
$this->getContext() );
+               $form->show();
        }
 }

Modified: trunk/extensions/Wikimania/sql/tables.sql
===================================================================
--- trunk/extensions/Wikimania/sql/tables.sql   2011-10-11 18:33:35 UTC (rev 
99524)
+++ trunk/extensions/Wikimania/sql/tables.sql   2011-10-11 18:34:06 UTC (rev 
99525)
@@ -21,8 +21,8 @@
        -- Last name
        reg_lname varchar(255) not null,
 
-       -- Gender
-       reg_sex varchar(1) not null,
+       -- Gender (male, female, decline)
+       reg_sex varchar(8) not null,
 
        -- Country of residence
        reg_country varchar(4) not null,


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

Reply via email to