Google Summer of Code Application 2010
Project Idea: File Upload question type
Abhinav Chittora Education : Graduation (B. Tech) 8th Semester Major : Information Technology College : Engineering College Bikaner Table of Contents:
1. Contact Information 2. Project Outline i. How we are going to upload files? ii. Where we are going to store uploaded files? iii. Configuration Options for Questions iv. Administer Roles? v. Data Entry/ Statistics/ Printable Survey/ Response Browsing/ Response Editing, how? vi. Third Party processing hooks? vii. Any thing else? 3. How will limesurvey benefit from the project? 4. Time line 5. Experience in Open Source development 6. Project related experience 7. Academic Experience 8. Why Limesurvey? 9. References & Important Links Contact Information:
Name : Abhinav Chittora Email Id : bijolianabhi[at]gmail[dot]com IRC Nick : Abhinav1 IM & user id : Google Talk ( [email protected]) & Skype (bijolianabhi) Location : Bikaner ( India) Time Zone : IST (UTC + 05:30) Phone No. : +91 9460351625 Blog Address : http://experiencesoc.wordpress.com (Blog to show Google Summer of code Progress)
Project Outline:
Limesurvey, The Open Source Survey Application has been working in Open Source field since February 20, 2003. In its early days it was called PHPSurveyor. Limesurvey has proposed many idea for Google Summer of Code 2010. File Upload Question Type is one of them and I found myself capable to complete this project.
File uploading is the main task that should be done carefully. Uploaded files should be stored at server according to survey. For this we have to note these points: -
1. How we are going to upload files? Ans: We can upload files using CakePHP with model and without model. My personal opinion is to use CakePHP to upload files with model, since we can utilize power of CakePHP with model.
2. Where we are going to store uploaded files? Ans: We can store files outside the webroot folder on the server so that we can easily protect them from the unauthorized access. Each survey will have a directory to upload the files. All the files uploaded as a response of a question in survey will be stored in a directory. Naming will be done according to token or token+time stamp.
3. Configuration Options for Questions. Ans: While defining question with file type we have to make sure about following configuration options, this configuration options can be added in advance settings:- 1. Maximum upload size ( it also depends on the PHP configuration) 2. Number of files uploaded as answer. ( this can easily handled by PHP) 3. Should the file mark as public? (just make a check box to make it public. Since the survey statistic can be viewed publicly so if user checks the button "Make Public" then the file will be available to download for users.) 4. Allowed file extensions.( we can use filter while file choose dialog to filter the files, All extension should be in upper case so that we can easily handle that.) 5. Can user remove the remove the uploaded files.
4. Administer Role? Ans: What will be admin role after uploading the files? Here I am describing some tasks of admin that can be accomplished: 1. Downloading the uploaded files ( make a page to show the list of uploaded file with check box. Admin will check the files to download them as a archived form.) 2. Viewing the uploaded files ( we can make link the name of file to preview the file and admin can download that by “ right click-> save link as “. 3. Deleting the uploaded file ( admin must have permission to delete the file, there will be option to delete the file/files). 4. Altering the uploaded files. ( admin will able to change the content and the details for the files). 5. Data Entry/ Statistics / Printable Survey / Response Browsing/ Response Editing, How? Ans: Data Entry Screen is the page where which is used to enter data in paper based survey. It should be compact and effective. If we are uploading pictures then the files can be easily shown on the page, and if we are going to upload other documents such as pdf files, document files then we can only add that on the page.
Now come to Statistics page, it is used to show the statistics of the survey. Statistics will include total no of file uploaded and the total files size. So that survey admin can get the file system statistics.
In case of printable survey and we need picture to upload as answer then we can add a space to affix the picture or just add a note behind the survey that please attach the picture with survey.
Response browsing is the toughest task after uploading the files on the server. We have to make an interface so that the admin can browse the responses and uploaded files as well as. For this I am going to make a separate page that will contains table of all the files, here admin can browse the files by clicking them. If admin will click on a picture then it will open a
Response browsing for Images: If the uploaded file is Image with any possible format then for browsing there will be a slide show based on Lightbox 2 which is based on JQuery. Slide show with Lightbox is not only a fancy slide show but also it provide some cool navigation feature. so I like Lightbox plugin of JQuery.
Response browsing for Documents: If the uploaded file are documents i.e. *.doc, *.odt, *.txt, *.rtf, *.pdf, *.ppt, *.xls, and Other document formats then we can use Google Document List API [0]. There will be a link to view these files that will open the files in new tab/ windows. Google's Document List API is used to Share/Create documents.
Response browsing for Video/Audio files: If user uploads some video/audio files with any format that is supported then we can create a trigger that will convert the uploaded files into the open media format such as *.ogg, *.ogv. that we can easily browse using
Response edit can be done on the same page that is described in response browsing page. Admin will have a option to edit/ delete/ add files here.
6. Third party Processing hooks? Ans: Third party processing refers to processing uploaded files before used by third party. This processing include cropping pictures/ adding watermarks in documents/ converting video in specific format etc.
While defining a question having file type, we can provide some configuration option that can used for processing the files. For example if the application developer have Javascript images processing tool then we can easily provide him to attach the Javascript function as a trigger. We provide facility to add third party function to be called by limesurvey. For this we have to add a textbox which will take input a function name which should be called just after uploading the file. Through this we can easily integrate third party processing tools.
Although Limesurvey need not to process the files it self but some processing tools for example Image cropping that are not much heavy can be added to Limesurvey. Image cropping can be done by Javascript Libraries. For example JCrop which is based on JQuery can be used for Image Processing. If we use this then we need not to worry about the confiltion and compitability.
7. Any thing else? Ans: I am going to make response browsing more user friendly by adding Slide shows and Document viewer in Limesurvey. Slide Show/ Document viewer can be added via some popular Javascript libraries such that Jquery, Prototype, YUI, Mootool etc. (for Slide show my personal choice is Lightbox.)
How will LimeSurvey benefit from my project? Currently Limesurvey does not support file type question, After completing the project Limesurvey will able to add question with file type. This will be great feature for Limesurvey.
Time Line: Here I am providing time line that I will follow. I Hope, I will follow that as state:
• Before coding period starts: Understanding the code, bounding with community. • First Fortnight( May 24 – June 07, 2010)
◦ Adding file type question in Limesurvey. ◦ My university exams will be scheduled so I have to concentrate on study.
• Second Fortnight ( June 08- June 23, 2010)
◦ Providing Security for uploaded files ◦ Removing security threads. ◦ Simultaneously working on feature suggestions by the community.
• Third Fortnight (24 June – 12 July, 2010)
◦ Adding configuration options for file type questions. ◦ Code submission for first midterm evaluation.* ◦ Simultaneously working on feature suggestions by the community.
• Forth Fortnight ( 13 July – 28 July, 2010)
◦ Adding Administrator tasks. ◦ Adding Data Entry screen/ Printable Survey/ Response Browsing Screen. ◦ Simultaneously working on feature suggestions by the community.
• Fifth Fortnight ( 29 July – 16 August, 2010)
◦ Adding third party processing hooks ◦ Documenting the work done so far. ◦ Simultaneously working on feature suggestions by the community.
• Sixth Fortnight ( from 17 August, 2010)
◦ Work on Documentation, testing and bug removing. ◦ Work on improving code.
• After August 30, 2010**
◦ Party time :) After party I am available to code for community to code any time and will continue contributing to organization.** Note: *Submitting code for midterm refers that I am ready for evaluation. I will commit code weekly. ** Continue to support Limesurvey and fix bugs in the future.
Experience in Open Source development:
Since Last 2 years I am working for Open Source development, I love the spirit of Open Source development. My first Open Source contribution was for Mozilla Firefox. I developed a extension that will integrate the Google Gadget in sidebar of Firefox. That was hosted at [2]. This extension got over 600 downloads in its first month that shows that it was appreciated by the community and users.
After that I contributed for some other Open Source Communities which include Xiph.org Foundation, Drupal and Geeklog. I am founder member of Linux User Group Bikaner (lugb) and spreading Open Source.
Project Related Experience
I am Currently developing “Online Collaboration Tools” which is based on PHP and Jquery. Other than this I have developed many small scale application that enhanced my experience with PHP and Jquery.
I participated “My Face of Orkut” event organized under National level Tech fest Sakshama X'08. In this event we have to developed a Social Networking website. I developed a application in PHP and secured second position.
Since last 3 months I am studying code of Limesurvey and now I feel that I am ready to code for Limesurvey. Limesurvey uses CakePHP which is the famous and my favorite framework for MVC architecture. I am involved with Limesurvey in not only with coding but also translation. I have committed Hindi translation for Limesurvey. I filed bug for LS1[3], which is still not resolved, I would love to resolve that.
Academic Experience
I was selected for Google Summer of Code 2009 for Xiph.org Foundation, and successfully completed the project “Making an extension for Mozilla Firefox to record sound locally and to stream to Icecast server.“ After that I developed a small multimedia application that is able to play all the open media formats in Linux environment (My working environment is Linux and Fedora is my favorite distribution).
Why Limesurvey?
Since last 3 months I am following Limesurvey and this year I was particularly interested in enhancing my knowledge in web development. It was January,2010 when I came into touch with Limesurvey. I was given a task to survey in college about the college administration. I was not pleased with paper survey and Google about any online survey tool, and I got limesurvey, Google forms as result. I liked limesurvey since it is a open source survey tool and it is based on CakePHP, which uses MVC architecture. I personally like MVC architecture. One of my favorite content management system Joomla is also based on MVC architecture.
References and Important Links:
1. LimeSurvey http://tinyurl.com/yotkt3 2. CakePHP http://tinyurl.com/8u9s2 3. MVC Architecture http://tinyurl.com/cpzjcm 4. Limesurvey Idea Page http://tinyurl.com/y48bkkn
Other Links mentioned in Proposal: [0] http://tinyurl.com/5q6zmm [1] http://tinyurl.com/rbf2ub [2] http://tinyurl.com/dnzjyw [3] http://tinyurl.com/yjjn2e9