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!
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
Right now we only have frontend editing for articles, there are a few improvements I can propose
Extend the template manager so that it providers an better environment for template creation and modification. Improvements might include:
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.
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.
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 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:
To deal with these issues, a back-end Keyword Management extension is proposed. This extension would allow the following capabilities:
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.
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.
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  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.
Develop a suite of front end Joomla! 1.5 extensions (modules, plugins and a Joomla! style MVC frontend component for CiviCRM.
[Civicrm : http://civicrm.org] 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:
Some will focus on the display of user level information such as:
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.
The following improvements could be made to the current Joomla! Media Manager:
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:
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.
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:
There are many little improvements that would help with general usability and administration for Joomla users.
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 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.
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).