Summer of Code 2009 Project Ideas

From Joomla! Documentation

Revision as of 15:07, 16 March 2009 by Willebil (Talk | contribs)

Replacement filing cabinet.png
This page has been archived - Please Do Not Edit or Create Pages placed in this namespace. The pages in the Archived namespace exist only as a historical reference, it will not be improved and its content may be incomplete.
Gsoc 2009 logo.png


Welcome to the Joomla! Google Summer of Code (GSoC) 2009 project ideas page. As we move forward with the 2009 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Thanks!


Advanced Poll/Survey Suite

The core polls extension has been removed from Joomla! 1.6. Develop a fully featured poll/survey suite that will allow relatively simple user polls and the collection of complex anonymized survey data authenticated against either the Joomla users database or an external database.

Mentor: Wilco Jansen (subject to change)

Skills: Joomla CMS framework, MVC, PHP 5.2, MySQL

Difficulty: medium

Full Frontend Editing

Right now we only have frontend editing for articles, there are a few improvements I can propose

  • Article editing is done in a modal popup
  • Edit module content and params from frontend (Editing done via a modal popup?)
  • Article Title - edit in place
  • Create some kind of a library function which allows easy frontend editing for any value (This will need some thought)
Template Manager Improvements/Advanced Template Manager

Extend the template manager so that it providers an better environment for template creation and modification. Improvements might include:

  • expanded tool bar, including copy for a complete template
  • access to the media manager
  • access to all template files (not just css and index.php)
  • override manager
  • integration of an editor with code highlighting (such as codepress)
  • support for template parameter groups
  • remove hard-wired references to template name from the core templates (so the new copy function will work as expected)
  • "export" button on the toolbar which will create a zip package file containing the template (also fixes any errors in the templateDetails.xml file as it goes).
Work Flow Extension

Create a 1.6 Extension to flexibly manage workflow for com_content. Ideally it should be extensible to other components, but com_content should be used as the proof of concept. Work flow should manage the publication process, including assignment of editors or publishers to specific content items, notifications of relevant actions to specific individuals or groups, change of status to block author editing of published work.

As much as possible administrators should be able to construct their own work flows.

Page Versioning Extension

Create a 1.6 content versioning extension with the goal that this work could be integrated into the core Joomla CMS for future releases. The Page Versioning Extension will allow the ability for frontend and backend content users to be able to save and re-publish/revert previously saved versions of content items that they have access to.

Further user permissions could be introduced in order to restrict access to this overall feature.

Features could include a visual and html code difference between the current and previously saved versions, as well as general searching data such as dates and time of previous saved entries of that content.

Taxonomy Extension

Create a 1.6 Taxonomy extension with the goal that this work could be integrated into the core Joomla CMS for future releases. The Taxonomy Extension will allow the ability to organise content for classification, improving on the current Section and Categories classification.

Taxonomy is a vital feature of modern CMS solutions, evolving from the previous "pigeonholeing" of a content item. Full organisational structures and multi tagging of content could be included, including powerful search functions of content under those classifications.

Taxonomy is a missing feature in Joomla!, which another open-source competitor product currently offers. We have seen a number of opportunities when Joomla! misses out on being the chosen option for a CMS due to the lacking of this feature.

Keywords Management Extension

Keywords in articles are an important part of many Joomla! sites. They are used for page rankings but also can be used with Related Articles modules and component extensions. In this capacity, they provide a way to relate articles that is much more flexible and free-form than the built-in Section / Category / Article hierarchy.

Currently in Joomla!, keywords are entered when editing each individual article. This has several disadvantages, including:

  • You cannot see already existing keywords when entering in keywords for an article.
  • You cannot see existing articles that are already associated with a keyword.
  • It is difficult to be consistent when using keywords. For example, should it be capitalized, singular or plural ("Dog" or "Dogs"), and so on.

To deal with these issues, a back-end Keyword Management extension is proposed. This extension would allow the following capabilities:

  • A management screen showing a list of all keywords currently in use. This would provide the ability to drill into any keyword and see all articles that use this keyword.
  • A keyword picker screen. This would allow an author to pick keywords for an article from a list of existing keywords. This would make it easier to ensure consistency in spelling, capitalization, and usage between keywords. This screen would also allow the author to add a new keyword to the list.
  • The ability to do global search and replace on keywords.
  • The ability to see keywords ranked by frequency of use.
  • The ability to list articles to which no keywords have been assigned.
User-Defined List and Blog Layout Extension

Currently in Joomla!, there are built-in Menu Items for list and blog layouts for Sections and Categories. However, the way a list of articles is selected is tightly bound with the way the list is displayed on the page. In theory, you should be able to have a list or blog layout that shows any selection of articles.

To provide this capability, an extension is proposed that would provide layouts similar to the current list and blog layouts. However, the extension would be designed so that the list of articles is provided by a plugin instead of being integrated into the layout. Example plugins could be provided to mimic the current Section, Article, and Front Page layouts. However, the power of this extension is that the user could add their own plugin that would provide a list of articles using any type of query. This list of articles would then feed into the built-in layouts provided by the extension to turn the raw article list into the desired layout.

Improve Unit Test Coverage

Work has been started on this but the number of unit tests currently in use is small. We need to add many more unit tests. Also, currently unit tests are only able to be used for class methods. We have no way, for example, to test page layouts or module insertion into templates. Part of this project could be to research automated testing solutions to test the complete HTML code sent to the browser. This would allow end-to-end automated testing.

Web Based Unit Test Runner

Write a test runner that makes it easy to run unit tests from a web browser. The existing unit test framework is based on running PHP from the command line. While this is essential for integrating testing into the build and release process, it's a barrier to using tests during development.

This project involves adapting web-based test runners provided by PHPUnit to support the "Joomla!" testing environment.

Develop and implement a method to allow organizations to update their own CiviCRM records from the Joomla! front end.

CiviCRM Integration: Allow Organizational Updating From Joomla! Front End

Civicrm [1] is a powerful constituent relationship management system designed for the not for profit/nongovernmental organizations. It currently integrates with Joomla! and the 2.1 version is native to Joomla! 1.5.

Constituent records in CiviCRM may be for individuals, households and organizations. Currently individuals can up date their records from the Joomla! front end if administrators allow it. However, many organizations have other organizations as contituents and currently there is no way for organizational (or household) records to be updated in the front end.

For this project, the student will design and implement a method allowing organizations to update their records by exposing the organizational api to the Joomla! front end and developing appropriate access control and activity tracking.

For this project the student should plan on interacting closely with both the Joomla! and CiviCRM teams.

Civicrm Integration: Develop Front End Extensions for CiviCRM Data

Develop a suite of front end Joomla! 1.5 extensions (modules, plugins and a Joomla! style MVC frontend component for CiviCRM.

[Civicrm :] is a powerful constituent relationship management system designed for the not for profit/nongovernmental organizations. It currently integrates with Joomla! 1.0.x and 1.5 in legacy mode, and and the 2.1 version will be native to Joomla! 1.5.

Thus far most functionality for civicrm in Joomla! has focused on the administrator. This project will focus on fuller development of the CiviCRM Joomla! Front end.

This development might include modules, plugins, and a MVC front end component which will allow exposure of various CiviCRM APIs.

Some of these will focus on the display of and interaction with general information, for example:

  • a module showing a list of upcoming events
  • a module showing progress on a fund raising thermometer
  • a module displaying the most recent donations, donations at certain levels, total donations or other information
  • a module containing a contribution button linked to a specific contribution page
  • a plugin showing total giving in a specified time period (day, week, month, year)
  • a donation reporting view with a layout that displays lists of donors in a given time period, sorted by giving level.

Some will focus on the display of user level information such as:

  • a module displaying an individual's information from a given profile with the option to update.
  • a module displaying an individual's summary giving information.
  • a module displaying events an individual is registered for
  • a plugin showing a user's information for a give field
  • a plugin showing a user's total giving or giving in a given fiscal year
Improved Error Handling

Create a component that will handle standard errors (ex. 404) so that headers are sent for the error code, but the error is trapped and redirected from the error.php file back to Joomla! where it can be handled on a normal webpage.

Media Manager Improvements

The following improvements could be made to the current Joomla! Media Manager:

  • Support content expiration (image/video) that allow user to set start – end date of each content which to be lived on site
    • e.g. food image can be lived on site only 3 months, due to the license issue, so we need to take out the image and replace it with other default image or leave it blank
  • Support user friendly input interface which allow user to complete content input in 1 screen (Text input, Multiple images/videos upload, Tagging, Mapping related content and so on)
Whiteboard/Wiki Component

Joomla comes with a few core components, and a Whiteboard/Wiki component would be a great addition to those. It would be a basic implementation of the feature with the following possible features:

  • Provide a simple interface for editing (perhaps allowing multiple users to edit at once or locking down while under edit)
  • Ability to restrict user access on posting
  • Organize whiteboards
  • Keep revisions in archive
Core Extensions Semantic and SEO Updates

The core extensions can be modified to produce semantic markup. The tables should be replaced withmore appropriate containers for the contents. This would not replace the need for template overrides, but rather make the default output stronger to build upon. The output should also be arranged to best suit the content in the majority of situations. Perhaps also a basic system reset CSS file would need to be developed to set some of the basic layout items, also to be easily disabled.

The core output cannot be replaced completely without causing many 1.5 templates to break. Therefore it would be necessary to either have a legacy mode for templates or to automatically detect the template type (1.5 or 1.6) in order to provide the right output.

Modules can be defined in a template to have pretty much any name they wish. While this is great for template makers, it would be good to have at least some guidelines about naming modules. Module names like user1 and user2 are essentially useless semantically, and to administrators of a site. Some templates are designed for any module to fit in any position, but in general there are at least a handful that are designed with the menu, footer, and other aspects in mind. Perhaps Joomla can create some guidelines (not requirements) related to this.

Templates for Joomla 1.6

Each version of Joomla comes with a set of templates, and they are updated with each major release. 1.6 is currently in development, and will need a new set of templates. These templates should:

  • Employ semantic markup
  • Provide a fresh look
  • Be flexible to accommodate all kinds of content
  • Come with example core overrides, perhaps for major extensions as well
  • Should have a light memory print
  • Comply with accessibility standards
  • Validate
  • Be easily modified and built upon
Administrator and Usability Improvements

There are many little improvements that would help with general usability and administration for Joomla users.

  • Assigning modules in the Menu Manager
  • Assigning links from Article Manager
  • Copying templates
  • Easily change Control Panel icons
  • Improved Front Page article handling
  • Improve internal mailing system and its notifications
  • Make Control Panel in the menu a one click step, not hover then select
  • Have the main tabs linked in case they are clicked, such as Content goes to Articles
Content Item Templates

Easy page layout template system so that editors can choose from a pre-defined range of layouts. This could be useful when certain pages all require the Name, Date, Author name, photo in a certain area, tagline etc. Content item templates could be defined, then saved and authors could then choose from this list, helping sites with larger article content to retain continuity throughout their areas of pages.

XML DTDs and XML Schemas for all XML files used in Joomla

XML files are used in various places throughout Joomla. Historically, the installer XML files have had DTDs against which they can be validated. However, there are a number of known issues with these DTDs and there are other XML files used in Joomla that have never had DTDs written at all. Furthermore, DTDs can only catch certain classes of errors within XML files and we need to look beyond DTDs to look at XML Schemas to catch other classes of errors.

  • Review all XML files used in Joomla and list them on the documentation wiki.
  • Create a collection of test cases of XML files that will fail in Joomla and which should, therefore, fail to validate in some way.
  • Where DTDs already exist, review, revise and update them as necessary.
  • Create DTDs for those XML files that don't currently have one.
  • Create patches for the core code (target 1.6?) to ensure that valid DTDs can be written for all XML files.
  • All current DTDs force some XML elements to appear in a particular order which is neither enforced nor required by Joomla. If possible, solve this problem so that designers and developers can place those elements in arbitrary order in the XML and still have the XML files validate against the DTDs.
  • Create XML Schemas for all XML files used in Joomla.
  • Ensure that DTDs and XML Schemas are well commented and/or thoroughly documented.
  • Write comprehensive documentation covering the process of validating an XML file against both DTDs and XML Schemas. Some documentation already exists that can be used as the basis for this.
  • Expand the collection of test cases to include XML files that will not fail in Joomla but which may or may not fail to validate against the DTDs or XML Schemas.
  • Ensure that the test case collection is properly documented so that changes to Joomla and/or the DTDs and XML Schemas can be properly tested.
Alternate Component for Editing Articles

The idea is to have an component on admin side that allows articles to be edited based on the frontend navigation, Something similar to Typo3 adminimplementation (just 2 and 3 in the image).