User:Pawanseerwani 1/GSoC proposal

This is my(Pawan Kumar D) GSoC proposal.

Simultaneous Modification of Multiple Pages with Semantic Forms

 * Public URL: https://www.mediawiki.org/wiki/User:Pawanseerwani_1/GSoC_proposal
 * Bugzilla report: Bug - 61989
 * Wikitech-l Announcement: GSoC Proposal
 * Project Announcement: Simultaneous Modification of Multiple Pages with Semantic Forms

Name and contact information
Name: Pawan Kumar D Email: pawanseerwani@gmail.com IRC or IM networks/handle(s): pawan_seerwani (channels : #mediawiki, #wikimedia-dev, #semantic-mediawiki, #gsoc) Location: Roorkee, Uttarakhand, India Typical working hours: 1:00 pm to 6:00 pm, 9:00 pm to 2:00am (IST) (~10 hours)

Synopsis
The aim of this project is to facilitate simultaneous modification of multiple pages(which were created using Semantic Forms), in a tabular format.

Right now the editing of multiple pages with Semantic Forms is rather cumbersome with users having to edit every page separately, then sending it off and waiting for the server reply to then click their way to the edit form for the next page. The aim of this project is to facilitate the simultaneous editing of the data of multiple pages displayed in a table, ideally giving a spreadsheet-like experience. This project would help a great deal in editing such multiple pages.

Deliverables
Goals of this project :

Required goals : Optional goals :
 * Create a tabular display of multiple pages with a single page in each row. (Note: Multiple pages being displayed should be created by a single Semantic Form)
 * Add Pagination & Search feature in the tabular display.
 * Option for editing of single/multiple pages from the tabular display.
 * Keyboard Navigation feature in the tabular display.
 * Using of Job queue for storing of modified data.
 * A parser function for modification of multiple pages.
 * Use the input widgets(as specified in the form definition) in the corresponding tabular structure
 * Create an #autoedit like parser function to modify multiple pages at once.
 * A mechanism to detect mass-modification of pages by a bot.

UI MockUp
Consider an example of Semantic Form:Book as given in this link

Assume we have created the following 3 pages using the above form, In order to edit multiple pages of the Form:Book, we would get the tabular display as :
 * 1) Game of Thrones by George RR Martin
 * 2) Angels and Demons by Dan Brown
 * 3) My experiments with truth by MK Gandhi

*Note  : Search row could not be shown here as wikitext currently does not allow tag. Refer to the screenshot below.

A Screenshot of the expected UI.

High Level Code Architecture
Here is a possible version of high level API class TabularStructure { public function displayTable; public function editSingleRow; public function saveSingleRow; public function saveMultipleRows; //Uses JobQueue for saving data of multiple pages public function search; //Only Ajax requests allowed ... } Major JavaScript Components var ajaxSearch = (function{ ... }); var ajaxPagination = (function{ ... }); var keyboardNavigation = (function{ ... });

About you
I am Pawan Kumar D (a.k.a Pawan Seerwani). I am currently pursuing my B.Tech in Computer Science Engineering from Indian Institute of Technology Roorkee, India. I love coding, chess and listening to music.

This project is my first opportunity to bond with an open source organization. Through the GSoC I wish to become a regular contributor in MediaWiki. I am very dedicated in what I do, and I hope this project would help a lot in enhancing my skills and learning new things.

Participation
During my work hours, I would always be logged in IRC (channels: #mediawiki, #wikimedia-dev) and also can always be reached at my email. I am an internet buff and have hard time staying off of it. During the project period I would be at my home(Shimoga, Karnataka) where I have a good broadband internet connection without any proxy issues, so disconnection won't be an issue.

I intend to (and always have) clear idea before I start working on a project. At each stage of development I would like to discuss implementation details with the mentor so that there are no delays/issues later on.

I would keep the progress of my work updated in my monthly reports. I will communicate with the community over the mailing lists (Wikitech-I) for any feedback, suggestions and queries. All the code will be hosted on Github, so that anyone can easily track my progress and give feedback.

Commitments (Other than GSoC) : My end-term exams would be finished by 7th May. So that won't be a issue. I have been placed(got a job), but yet to get my joining date. It should be somewhere around mid-july. I will update here know when I know it myself. Also the job involves an initial training period of 1.5 months which will be introductory, so I will have an ample amount of time for GSoC. :)

Past open source experience
Bugs I have worked on (Wikimedia) :
 * 1) Bug - 35370 (micro-task) (merged)
 * 2) Bug - 32678 (micro-task) (merged)
 * 3) Bug - 34925
 * 4) Bug - 40626