[geeklog-devel] GSOC 2010 application for Improvement in Configurations GUI

Abhishek Shrivastava abhi.nitt at gmail.com
Sat Mar 27 20:46:03 EDT 2010


Hello everyone,
I have sent the first draft of my GSOC proposal. Please take a review of it.
You can either read my proposal at
http://docs.google.com/View?id=dcgmhqp5_8dzq66rdp or go down and read :


Abstract

Geeklog has a large number of configurations available which makes it tough
for a user to quickly find and edit one. Also only users in "root" group has
access to the site-wide configurations, a subset of which should be
otherwise available to the "local administrators group" depending on the
module they admin. I propose to fix these issues by adopting an AJAX based
approach for the configuration search and altering the config class to add
access-control on per-option basis. All the custom javascript codes would be
replaced by jQuery which would be adapted as the default javascript library
for Geeklog.

Proposal :

Hello everyone,

My name is Abhishek Shrivastava. I am a third year student at National
Institute of Technology at Trichy in India, studying Electronics and
Communications Engineering. I am highly interested in working with the
Geeklog project for the GSOC 2010. I have strong command over PHP, MySQL,
AJAX, C++ and JAVA languages as I have been using them for creating
applications and websites for more than 6 years. I am an active user of FOSS
Softwares and the member of LUG (Linux Users Group) of my college. I am also
the core member of the Central Webteam of my college, which is responsible
for the development of my college website as well as the entire Local Area
Network services. My college website is being hosted on a custom Content
Management System called "Pragyan CMS", built from scratch to suit to our
needs. I am also the developer of "Agate CMS", a small, structured and easy
tutorial CMS I developed from scratch to teach the basics of CMS to my
junior batch of webteam. Some other web applications I have made in PHP
include a Webmail Application, an AJAX-based RSS Feeds Aggregator and an
AJAX-based file browser. I have extensive experience in creating custom CMS
using PHP and MySQL and AJAX-based rich GUI.

The most recent php-based project I worked upon was the "Agate Content
Management System". This is a micro-content management system with all the
minimum basic features a CMS needs like user-management, user-registration,
articles-management, page-managements, page-templates etc. It also features
FCKEditor for editing page contents and page-specific templates. While
writing this CMS, my main focus was to minimize DB Hits to make it fast and
at the same time keep it well-structured so that it is easy to be understood
by my juniors. This and the Pragyan CMS have given me a practical insight to
the working of a CMS core.

You can contact me at abhi.nitt at gmail.com. I also blog at
abhishekdelta.wordpress.com. My blog is mostly technical and about my Linux
ventures.

I am interested in Geeklog because of its well-structured code and really
helpful documentation. Understanding the source code of Geeklog was much
easier than other CMS. I feel the fine permission structure of Geeklog and
its numerous configurations makes it a very flexible and "tweakable" CMS, in
which every minor-configuration are editable, which are otherwise, in most
CMS cases, are hidden deep into the source-code of the configuration files.
Geeklog thus has a lot of potential and I really want to be a part of it and
contribute as much as I can.

I want to work on the idea of "Improving the Configuration GUI" (
http://wiki.geeklog.net/index.php/SoC_improve_configuration_gui). This idea
interests me because I strongly believe that "configurations" is one of the
major strengths of Geeklog, which makes it different from other CMS, giving
the user more power over the CMS. However, in the current state, the user
has to dig into hundreds of configurations to search for the one he needs.
This can be fixed by using a "search box" for the configurations, which can
suggest the user some configurations fields based on what the user types, on
real-time basis. I propose to implement this using AJAX to create an
interactive environment for the user. Also, sometimes, the user needs a
group of configurations to edit rather than individual configurations. This
can also be taken care of by grouping the configurations into certain number
of groups and then using a similar AJAX-based "search box" for configuration
groups.

Another feature which should be added to the "Configurations GUI" is to
provide controlled-access to local administrators, which include story
admins, topic admins, etc. Right now, only users belonging to the "Root"
group has access to the site-wide configurations which also include
individual modules configurations like SpamX, Stories, Links, Polls, etc.
Ideally, users belonging to Polls-admin and Stories-admin should have access
to configurations related to polls and stories respectively. This would
require adding new fields to the conf_values table to accomodate
local-admin-permissions values. A complete review and re-grouping of the
configurations is required to suit the needs of users. One easy way to map
between individual options, configuration groups, and user permissions, is
to create another table which would map configuration groups to
user-permissions, while the mapping between individual options and
configuration groups can be done at the existing conf_values table itself.

Further improvement of the GUI needs to be done by using jQuery and AJAX
instead of the existing javascript codes which handles dynamic configuration
entries addition and deletion. Using jQuery has its own advantages like
being a lightweight framework than anyother javascript framework, it will
speed up operations. jQuery also provides a wide range of plugins for
specific needs, which can be used for Geeklog in future versions to make it
more interactive. This would be the first step in the complete replacement
of the javascript codes in Geeklog by jQuery. jQuery also features useful
plugins like "Advanced Form Validator" which could be used to validate the
user input to the configurations strictly. jQuery has a very well documented
API for all its plugins, and hence it would be very comfortable to use and
adopt jQuery as the default framework for Geeklog.

Overall, this project will completely overhaul the way Configuration works
and looks to the user. The end-product of this project will be a totally new
version of configurations page with rich GUI based on jQuery, AJAX-based
search tools for configurations and per-option-based access control lists
for users.

I have also made myself familiar with the "Geeklog Way of doing things" and
found a bug in the SpamX module (
http://project.geeklog.net/tracking/view.php?id=1102) and also created a new
patch for the feature request of "Spam Filter Use Counter" (
http://project.geeklog.net/tracking/view.php?id=1076). This patch involves
adding an additional "counter" field to the spamx table, which is then
incremented as and when the filter detects a particular kind of spam, which
includes IP Blacklists, HTTP Headers, IP of URL Blacklists, Personal
Blacklists and SLV Whitelists. The bug I found while writing this patch was
actually a "typo" error, but had serious implications in the sense it
completely blocked the user from adding new "IP of URL" filter rules to the
SpamX module.


Please note that the above methods I explained are what I have in my mind
right now. Some of them may not be the best way to achieve the task, but I
would discuss in more detail with the mentor (if I get selected) and have a
brainstorming to work out efficient methods.

I would work out and include the deliverables schedule in my next draft of
the application.
Thank you for reading this, I really hope to work with you guys in the
future :)

Feedbacks would be very much appreciated.

With Best Regards,
Abhishek Shrivastava
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist8.pair.net/pipermail/geeklog-devel/attachments/20100328/8cd3bd15/attachment.html>


More information about the geeklog-devel mailing list