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