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
Most of the work in this extension will be done by the following modules :
 * model
 * it will contain all the data objects for this conference


 * api
 * it will be comprised of classes(extending ApiBase) which would handle all the ajax calls

it will contain all the classes(extending SpecialPage) implementing dashboard,setup and user-input form pages parser tags which would be used to store information about the conference ( such as  for storing information in a Location(wiki page))
 * special
 * tags

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 Fig2 ,the word (wiki page) just means that a corresponding row exists in the page table for that entity. Every conference would have 4 types of users involved : 1. speaker(who has submitted a proposal) 2. account holder( who has an account for the conference) 3. applicant(who has applied for scholarship) 4. organizer(who has the editing rights for the conference) For every user present in the user table, corresponding four properties (speaker,organizer,account,applicant) can be set in the user_properties table. Each of these properties contain the link to their respective page_id of wiki pages. The wiki pages will be used to store content for the conference.Each of these pages would have some content associated with it and some corresponding properties in the page_properties table. Parser tags would be used for storing the content in these pages. 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 pages would be maintained by storing the 'parent' property in the page_properties table.For example,every submission page 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
 * basic workflow code - http://www.mediawiki.org/wiki/User:Chughakshay16/implementation