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

 * one or more conferences can be organized --->Admin can setup one or more conferences(a default set of pages would be created for each of those conferences and stored in a Mediawiki database just like any other wiki pages). Content and structure of those pages could be changed later by the admin ( or by someone who has been assigned special permissions by the admin).
 * conference can be easily configured with the help of preferences provided on the admin --->Various attributes pertaining to a conference like event can be set up by the admin once he creates a new Conference. 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 too.
 * creates a set of UI pages for your conference ( like Welcome page, Registration page,Proposal Submission page and some more depending upon the preferences set)
 * assignment of people can be done for specific events --->An admin can assign people different roles such as a developer, a committee member,reviewer etc.
 * also creates some Special Pages from where admin can very easily monitor the Conference related features
 * special badges for the attendees of the conference could also be created
 * all the details pertaining to the event ( or conference) can be downloaded in CSV( or XLS) format much like an Export feature we have in a wiki.
 * an email notification system would also be available
 * like/unlike buttons can also be integrated into the pages
 * event management features
 * site user can import conference schedule into their preferred calendar application
 * latest event feeds can also be included on the page like its done on this page
 * updates from other social media networks (like Facebook, Twitter) can also be integrated in the wiki pages
 * feeds from another wiki sites can also be included on the page . For example Wikimedia_News

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
(sample code ) It will just display a big button saying " Start a new conference " It will also display a big button saying "Start a voting panel" This page will only be visible to the with either bureaucrat and sysop rights And it will already display the conferences already running on this wiki and would also contain edit and monitor links to those conferences. (sample code ) The list of settings that would appear on this page 1. Title of the conference 2. Start Date 3. End Date 4. Description 5. Venue 6. Capacity Once these settings are set the user would move on the next part in conference settings Here an admin would get to chose the organizing team for the conference. Different permissions that i could think of :- 1. People who could modify this wiki 2. People who could monitor this wiki So here admin would have to enter the usernames of people he/she would want for the permissions mentioned above By default the person who created this conference will be given both the permissions. After completing this process user would be prompted to move on to the next set of settings Here admin would provide information about all the events that are going to take place during that conference. Admin would add new locations for the conference and after creating locations, he/she would eventually add new events with properties like start-time,end-time,day,location,topic and group. This page would contain list of pages that would be created by the software for this conference and links to those pages will be given and on each of these respective pages settings button would appear	on the page for admin to make the necessary changes. A delete link would appear next to all those links. And also a help icon would appear next to the links just to give a brief description of purpose the	page is for. It would also contain a button to create new pages for this conference ,and an admin could choose the namespace and the title for the same. And admin could even change the namespace and 	title for the pages already created by the software. (implementation, sample code ) 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. These are all the options that I could think of as of now. 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).
 * 1.Start a Conference page
 * 2. Conference Setup
 * Main Settings (part one)
 * Conference Settings (part two - User rights)
 * Conference Settings( part three - Events )
 * Conference Settings (part four - Pages)
 * 3. Dashboard

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 templates and magic words would serve a very important purpose of helping the admin in decorating the conference pages.
 * - which would help display a schedule for the specified conference
 * - for displaying sponsor banners
 * - for integrating an interface showing all the latest updates from Twitter, Facebook regarding this event.

User pages(wiki + special pages)
The extension by default creates a new category under the name of the conference and stores the UI pages in the very same category.These pages would be stored just like any other wiki page in the database.The title and the namespace of these pages would also be set by the extension itself(unless explicitly modified in the admin menu).Special pages written for this extension would carry the task of providing an admin an easy to configure interface where he/she would be able to manage and configure a particular event(or conference), whereas the other collection of pages per conference would provide an entry point for the visitors interested in the conference(more specifically the people who are interested in registering for that conference).

Database storage
(implementation)

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 idea Wikimania is built. wisconDB openconferenceware

Other Info

 * My GSOC-2012 proposal - http://www.mediawiki.org/wiki/User:Chughakshay16/GSOCProposal%282012%29
 * Other useful links also provided above
 * admin pages sample code - http://www.mediawiki.org/wiki/User:Chughakshay16/implementation
 * database schema details - http://www.mediawiki.org/wiki/User:Chughakshay16/databasedetails