User:Chughakshay16/ConventionExtension

This page contains the details of an extension which I (Chughakshay16) would like to develop as part of a GSOC-2012 project, which would help convert any wiki into a conference like website such as Wikimania. Currently Wikimania is hand-tailored to meet its needs(features it currently supports). With the help of this extension wiki admin can set up a conference with features like proposal submission, voting and registration. Thread link which i have started at wikitech-l.

Features

 * creates a set of wiki pages for your conference ( like Welcome page, Registration page,Proposal Submission page and some more depending upon the preferences set)
 * easy configuration of permissions for the conference through a new user group 'organizer'
 * also creates some Special Pages from where admin can very easily monitor the Conference related features(Dashboard). Features such as the information on speakers, rooms used during the conference,assignment of teams of people for delegating the work at a conference can be configured here too.
 * special badges for the attendees of the conference could also be created
 * all the details for the conference can be exported in XML format
 * event management features(events can be added/removed at any time)
 * modified user pages (users can see information about their conference signups, transactions etc.)
 * create user-input forms(submission form, registration form..)

Architecture and Workflow
There are 5 major modules which would handle the workflow of this extension :- This consist of all the API modules which would be handling ajax calls from the client.All the classes would inherit from the ApiBase class. The role of the classes present in this module would be to manage model objects which are created from the database queries. This represents a data abstraction layer which would contain all the functions for fetching conference information from the database. All the model objects(data object)would come under this module. It consists of all the SpecialPage subclasses which handle most of the implementation of Admin interfaces and other user-input forms.
 * 1. api
 * 2. manager
 * 3. dao
 * 4. model
 * 5. specials

Admin Pages

 * 1.Start a Conference page
 * UI mockup

Dashboard for the conference (even thought its a special page but its look would be different from the rest of the special pages). Admin or a set of users permitted by admin can monitor the changes occurring on the wiki like keeping a check on vandalism, number of attendees registered for the event.More details about the dashboard can be found here -http://www.mediawiki.org/wiki/User:Chughakshay16/dashboard. Once the preferences are set by the admin via the admin pages, a collection of UI pages would be created by this extension which would contain the default set of features that a conference website normally offers( like welcome, registration and submission pages).

Custom Tags and Magic Words
Besides modifying the UI pages(created by the extension)by hand, one can use a new set of custom tags,parser functions and magic words that would be present with this extension to change the appearance of these pages in whichever way they want. As of now i could think of some custom tags such as,. A number of magic words would also be available to the admin to use it on the wiki pages such as,. These tags and magic words would serve a very important purpose of helping the admin in filling the content for conference pages.
 * - which would help display a schedule for the specified conference
 * - for displaying the information of attendees(such as country, username,arrival time, departure time..)

Wiki pages + User-Input forms
Proposal submission, regsitration, scholarship application forms will be implemented using Special pages, and all user provided information in these forms will be stored in the database for admin to review in the Dashboard. After the admin selects the wiki pages(see in Conference Settings(part three) ) for the conference, these pages are automatically created with the default content.

Data Storage Architecture
In fig 1 and fig 2 ,term wiki page means a row which belongs to page table. every conference would have 4 types of users involved : 1. speaker 2. account( account for the conference) 3. applicant (for scholarship) 4. organizer(which would have the editing rights for the conference) There would be wiki pages for storing the content of the conference.And content would be stored in a specific format in order to retrieve it later easily. the content that is stored in the pages is showing in the following lines :- start_date | end_date | venue | description start_time | end_time | topic | group country | affiliation | blog_url room_no | description | image_url category | post title | type | abstract | track | ''length' '| slides_info | slot_req first_name | last_name type | dietary_restr | other_dietary_restr | other_info | badge_info issued_by | passport_no | valid until | place | dob | country first_name | last_name | title | sex | affiliation | url | address | city | postal | country | email | fax | phone | q-2 | q-3a | q-3b | q-4 | qc -1 | qc-2 | qc-3 | qc-4a | qc-4b | qt-1 | qt-2a | qt-2b | qt-3 | qt-4 | qs-1 | qs-2 | qs-3 | qs-4 | comments All the pages that would be created for storing the conference content would be associated with some other conference pages. The relationship among these tables would be maintained by storing 'parent' properties.For example,every submission would be linked to a specific author page.
 * FIG 1
 * Conference (wiki page)
 * Event(wiki page)
 * Speaker(wiki page)
 * Location(wiki page)
 * Organizer(wiki page)
 * Submission(wiki page)
 * Account(wiki page)
 * Registration(wiki page)
 * Passport Info(wiki page)
 * Applicant(wiki page)
 * FIG 2

Useful Resources
To completely understand the functioning of a conference management system, i went through the code base of a couple of open source ones available out there. Crawling through their code base helped me set my approach for developing this extension.The Wikimania website was of great help to me, a lot of concepts I used above were based on the logic Wikimania was built.
 * wisconDB
 * openconferenceware
 * scholarship template(wikimania 2006) -http://wikimania2006.wikimedia.org/wiki/Scholarships/Application
 * scholarships code used for wikimania- https://github.com/saper/Scholarships

Other Info

 * My GSOC-2012 proposal - http://www.mediawiki.org/wiki/User:Chughakshay16/GSOCProposal%282012%29
 * details about the dashboard - http://www.mediawiki.org/wiki/User:Chughakshay16/dashboard