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.
 * 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

Custom Wiki Markup 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 wiki pages for admin to review in the Dashboard. After the admin confirms which conference pages he/she wants to create during the setup phase/or from the dashboard, those pages are created automatically 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) 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. For pages which represent users in mediawiki have a user property in the page_properties table which would point to the user_id of user table.
 * 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