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 edit

  • 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.)
  • creates user-input forms(submission form, registration form..)

Under the Hood edit

Architecture and Workflow edit

 
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
special

it will contain all the classes(extending SpecialPage) implementing dashboard,setup and user-input form pages

tags

parser tags which would be used to store information about the conference ( such as <location..../> for storing information in a Location(wiki page))

Admin Pages edit

1.Start a Conference page
UI mockup

It will just display a big button saying " Start a new conference " This page will only be visible to a user with either bureaucrat and sysop rights And it will display the info for conferences already running on this wiki and would also contain edit and monitor(dashboard) links to those conferences.

2. Conference Setup
UI mockups for the Conference Setup special page
  • Main Settings (part one)

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

  • Conference Settings (part two - User rights)

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 who would have these above stated user rights. 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

  • Conference Settings (part three - Pages)

This page would display the list of pages that will be created for this conference. Namespace, Title and Type will be shown for all the pages and any of these values can be changed for them.Each of these pages would be created with their default content.

  • Conference Settings( part four - Events & Locations )

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.

3. Dashboard

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

UI mockups for the Dashboard

Some of the Dashboard pages are similar to the ones in the conference setup page, so just the different ones are shown here.

Custom Wiki Markup Tags and Magic Words edit

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 <schedule>, <attendees>.

  • <schedule> - which would help display a schedule for the specified conference
  • <attendees> - for displaying the information of attendees(such as country, username,arrival time, departure time..)

A number of magic words would also be available to the admin to use it on the wiki pages such as {{CONFERENCE_TITLE}},{{CONFERENCE_DESCRIPTION}}. These tags and magic words would serve a very important purpose of helping the admin in filling the content for conference pages.

Wiki pages + User-Input forms edit

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 edit

   
  Note: In Fig 1 and Fig2 ,the word (wiki page) just means that a corresponding row exists in the page table for that entity.

FIG 1

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.
  Note: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 :-

  • Conference (wiki page)

start_date | end_date | venue | description

  • Event(wiki page)

start_time | end_time | topic | group

  • Speaker(wiki page)

country | affiliation | blog_url

  • Location(wiki page)

room_no | description | image_url

  • Organizer(wiki page)

category | post

  • Submission(wiki page)

title | type | abstract | track | length| slides_info | slot_req

  • Account(wiki page)

first_name | last_name

  • Registration(wiki page)

type | dietary_restr | other_dietary_restr | other_info | badge_info

  • Passport Info(wiki page)

issued_by | passport_no | valid until | place | dob | country

  • Applicant(wiki page)

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

FIG 2

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 will have a user property in the page_properties table which would point to the user_id in user table.

Useful Resources edit

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.

Other Info edit