Page MenuHomePhabricator

GSoC 2019 Proposal: T213759: Page Forms: add an editable calendar interface
Closed, DeclinedPublic



Full Name: Drishya Ramesh
University: Amrita Vishwa Vidyapeetham
IRC Username: drishya8
Gerrit Profile: drishya
MediaWiki Username: DrishyaR
Time zone: UTC +5:30 (IST - India)
Location: Kerala, India
Typical Working Hours: 5:00pm to 11:00pm (workdays) and 10:00am to 8:00pm (weekends)
Mentors: @Yaron_Koren @yashdeep97 Erik Biegert


The Page Forms Extension in MediaWiki allows users to create and edit pages using forms. This project aims at adding a new Special Page, having a calendar interface (built using FullCalendar JS library) to the Page Forms Extension. This page will allow users to create and edit pages which includes template calls containing one or more date fields.


Features and Implementation
1. Enable the users to modify or edit multiple template calls simultaneously using a calendar-like interface :

This feature will be implemented by creating a Special Page, having a calendar-like interface, allowing users to edit or modify all the calls to a specific template which contains date fields. This page will have date cells which correlate to the template calls for the various dates and events. This page can be designed using the features and adding characteristics from the FullCalendar JS Library.
An example is given below:

private function createCalendar( $template_name, $form_name );
  defaultView: 'monthView'
  eventClick: function(calEvent, jsEvent, view) {
    alert('Event: ' + calEvent.title);
    alert('Coordinates: ' + jsEvent.pageX + ',' + jsEvent.pageY);
    alert('View: ' +;
    $(this).css('border-color', 'red');
2. Enable ideal input type for the parameters of the template calls :

Add support to obtain the ideal type of an input for each parameter of the template and display it accordingly with the corresponding template call in each cell. This can also be improved by using features from the FullCalendar JavaScript Library.

$propertyType = $templateField->getPropertyType()
if ( $propertyType == '_dat' ) {
       $gridParamValues['type'] = 'date';
elseif ( $propertyType == '_boo' ) {
       $gridParamValues['type'] = 'checkbox';
elseif ( $propertyType == '_txt' || $propertyType == '_cod' ){
       $gridParamValues['type'] = 'textarea';
3. Create an option to add new pages from the same interface :

New pages, which uses or calls one particular template, can be created from the same interface. It can be done by using special methods like “insertItem” and the backend can be implemented using methods like those found in PF_FormEdit.php and PF_FormStart.php.

$rep = new calendarTemplatesPage();
$rep->execute( $query );
$sp = SpecialPageFactory::getPage('PageEdit');
4. Pagination and renaming of pages can be enabled for the Special Page :

If a template has multiple template calls from a large number of pages, then this Special Page can display them in an organised manner by having the mentioned pages, paginated. This can be implemented using header-footer options available, as in Also, renaming of pages can be implemented using API:Move.

5. Add-on Feature : Create and Implement the same Special Page through a map-like interface :

Implement a page to create and drag around markers on a map, such that a similar editing interface as that proposed above, can be made using a map interface. It can be implemented using OpenLayers or Google Maps.


May 6th - May 27thCommunity Bonding period: Install all the requirements and get familiarised with the codebase by solving issues and bugs in the PageForms extension. Remain active on IRC and Gerrit, contact and communicate continuously with mentors, members and other participants.
May 28th - June 13thCreate the required Special Page for the interface to edit Template calls: Develop the code to create the interface and set the date cells with the appropriate Template calls and implement the saving and editing functions. Also,implement and execute data validation for the same.
June 14th - June 23thImplement the feature to ensure ideal input parameters to the Template Calls : Develop the code to obtain and ensure the ideal input type for each Template calls with date fields and communicate with mentors regarding the same.
June 24th - June 28thPHASE I EVALUATION
June 29th - July 3rd Provide refinements to Phase 1 implementations : Check for the expandability of the Phase 1 implementations. Ensure its working for larger set of data patterns without failures.
July 4th - July 13th Create the option to add new pages using same templates from the same interface : Write the code to add new pages from the same interface using PHP. Test the user-interface accordingly (using unit tests).
July 14th - July 21st Implement the option for Pagination and renaming : Write the necessary code to implement pagination in case of large data sets and also add the feature to rename any (new/existing) page from the interface.
July 22nd - July 26thPHASE II EVALUATION
July 27th - July 31st Improvise Phase 2 Implementations : Check for the expandability of Phase 2 implementations and add features and fix bugs such that it satisfies all conditions.
Aug 1st - Aug 15thImplement the Add-on feature : Develop code for creating the map interface for editing and creating pages using maps.
Aug 16th - Aug 22thBuffer Time : Test rigorously for bugs and issues using unit testing (in xUnit) and/or E2E testing in the interface and fix them. Provide extensive documentation for all the implementation and make sure it is done thoroughly for the code.
Aug 23rd - Aug 25thFinal Report and Project Summary Submission

About Me:

I am a freshman Computer Science Engineering student from Amrita Vishwa Vidyapeetham, Kerala, India. I am part of an Open Source community in my University - FOSS@Amrita and was introduced to MediaWiki via the club through a Wikimedia Contribution Drive conducted in August 2018. I have been contributing to MediaWiki since the last few months and have got a few patch sets merged into the code base. I love contributing to Open Source projects and enjoy working on web development .

Contributions to MediaWiki:

Other Successful Contributions :


Web Development : PHP, JS, HTML/CSS, MySQL
Operating Systems: Linux, Windows
Version Control System: Git, Gerrit

GSoC Information

Any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?

I will be attending my end-semester exams for approx. 2 weeks, from 6th May to 21st May, which will be during the community bonding period. Hence, I will not be able to remain active during this period. However, I do not have any other commitments for the remaining duration of the program and will be able to work for 40+ hours per week.

Applying to any other organisation this year?

No, I’m planning to apply for GSoC’19 through Wikimedia only.

Applying for both Outreachy and GSoC this year?

No, I’m planning to apply for GSoC’19 only.

What does making this project happen mean to you?

As a novice to Open Source, I’m thrilled to be part of the Wikimedia Foundation this year. I am excited to work on this project as it would be a great opportunity to contribute to the movement and work on programs used by numerous people on a daily basis. I feel it would be an amazing learning experience as well as one which is utilitarian.

Event Timeline

(look for next steps in the email you'll receive shortly with an option to request for a debrief on why your proposal was not accepted)