Archived

Difference between revisions of "Summer of Code 2009 Project Ideas"

From Joomla! Documentation

 
(14 intermediate revisions by 7 users not shown)
Line 66: Line 66:
 
:'''Skills Needed:''' PHP, MySql, Joomla! Framework
 
:'''Skills Needed:''' PHP, MySql, Joomla! Framework
 
:'''Difficulty:''' Medium
 
:'''Difficulty:''' Medium
 +
 +
See [http://developer.joomla.org/gsoc2008/version-control.html Last Year's Summer of Code Project] which might be used as a starting point.
  
 
=====Taxonomy Extension=====
 
=====Taxonomy Extension=====
Line 338: Line 340:
  
 
=====Working copy of Joomla! live site=====
 
=====Working copy of Joomla! live site=====
Usually administrators are working on their live site directly and sometimes they do mistakes as all people do. Usually the live site get's messed after extension installation/uninstallation process and re-configuration. The idea is to have a working copy of the live site and make changes to it, then if everything is okay after some testing, you can approve changes and the tool will synchronize changes to your live site.
+
Administrators usually work on their live site directly and sometimes they do mistakes as all people do. As a result, the live site gets messed after extension installation/uninstallation process and re-configuration. The idea is to have a working copy of the live site and make changes on it, then, if everything is okay after some testing, you can approve changes and the tool will apply them to your live site.
  
 
Some of the steps, which will need to be done to complete this project:
 
Some of the steps, which will need to be done to complete this project:
 
* Develop a tool, which will create a working copy of the site
 
* Develop a tool, which will create a working copy of the site
 +
* Develop a diff tool, which will show not approved changes
 
* Develop a tool, which will synchronize working copy with the live website
 
* Develop a tool, which will synchronize working copy with the live website
* Develop a diff tool, which will show not approved changes
 
 
* Interface in working copy to view not approved changes with possibility to reject or approve specified changes
 
* Interface in working copy to view not approved changes with possibility to reject or approve specified changes
  
Line 515: Line 517:
 
:'''Skills:''' PHP, OOP, Joomla! CMS Framework, experience with lexical analyzers coding would greatly help
 
:'''Skills:''' PHP, OOP, Joomla! CMS Framework, experience with lexical analyzers coding would greatly help
 
:'''Difficulty:''' Hard
 
:'''Difficulty:''' Hard
 +
  
 
=====Page Title Tags Enhancement=====
 
=====Page Title Tags Enhancement=====
Line 531: Line 534:
 
:'''Skills:''' PHP, OOP, MySQL, Joomla! CMS Framework
 
:'''Skills:''' PHP, OOP, MySQL, Joomla! CMS Framework
 
:'''Difficulty:''' Relatively easy
 
:'''Difficulty:''' Relatively easy
 +
 +
=====Joomla Multisites=====
 +
 +
Recently, i needed develop one Joomla portal where users could create own sites easy and fastly.
 +
For it, i build one small Multisite Master Component that do database reply, create link to Joomla slave directory and more.
 +
I have table as:
 +
* Title -> site 1
 +
* Description -> Description of my site...
 +
* User_id -> 67
 +
* Url -> http://tom.yoursite.com
 +
* Db_name -> slavesite_tom
 +
* Db_user -> tom_userdb
 +
* Db_pass -> mypass
 +
* Pack_id ->12 (This indicates what slave directory and SQL for copy, i have other table with information for it).
 +
* etc
 +
 +
In Joomla slave configuration.php I have implemented contructor function, where I load Master DB information, and I do comparation URL with it. After, i initialize JConfig fields with it (title = title of site, description = metadata, etc...)
 +
 +
So, i had good multisites system.
 +
 +
But i think that could to be better:
 +
* Write new code for Master Component and configuration.php slave sites. (in my old version, i have one include to external php file in constructor, this php file rewrite JConfig variables)
 +
* Creation slave site using only PHP (in my old system, using sh file, dont window server soport).
 +
* Posible Front-Site component for user creator, that let you change template and other minors admin features.
 +
* Soport multiple slaves type sites. Now only: reply DB and same files. We can more options: share users DB, dont share files (real copy of joomla slave directory), etc.
 +
* And more?
 +
 +
:'''Mentor:''' none?
 +
:'''Skills Needed:''' PHP, mySQL, Apache (lighttpd, etc) servers, Joomla! Framework
 +
:'''Difficulty:''' Medium-Hard
 +
 +
 +
=====SEF URLs with Sub-domains=====
 +
 +
SEF URLs in Joomla can be made more sophisticated by allowing using sub-domains for different components, content sections or categories. For example, forum.mysite.com for a forum component or about.mysite.com for About section of the content component.
 +
 +
Of course it would require the sub-domains to be created on the server and pointed to the same directory as the main domain but it wouldn’t be an issue for most users since it easily can be done through many popular hosting control panels like CPanel.
 +
 +
:'''Mentor:''' Andrey Mishenin
 +
:'''Skills Needed:''' PHP, OOP, MySQL, Joomla! CMS Framework
 +
:'''Difficulty:''' Medium
 +
 +
 +
====Joomla! API Reference====
 +
 +
Currently the Joomla! API reference at [http://api.joomla.org] is not as useful as it could be. Develop a way to present the information in a useful (and search able) format and with the ability to have user contributed notes in a way similar to [http://www.php.net/manual/en/].
 +
 +
Currently api.joomla.org is static html produced by phpdocumenter. The project could achieve these goals by developing an extension or framework application to integrate the output from phpdocumenter with Joomla and incorporating a commenting style system.
 +
 +
Note: There are also materials here in  docuwiki format [http://joomlacode.org/gf/project/joomla/scmsvn/?action=browse&path=%2Fdocumentation%2Ftrunk%2Fwiki%2Freferences%2Fjoomla.framework%2F] that could be incorporated. Other material is here [http://docs.joomla.org/Framework].
 +
 +
:'''Mentor:'''
 +
:'''Skills Needed:''' PHP, MVC, MySQL, Joomla! CMS Framework
 +
:'''Difficulty:''' Hard
 +
 +
====Desktop Content Manager - Adobe AIR====
 +
 +
The Adobe AIR platform has a lot of promise with regards to creating applications that connect with sites.  This project would focus on creating an article manager in Flex/AIR that would connect to a Joomla installation through xmlrpc.
 +
 +
:'''Mentor:'''
 +
:'''Skills:''' Joomla CMS framework, Flex/AIR, xmlrpc
 +
:'''Difficulty:''' Hard
 +
 +
 +
====Thumbnails Generating Plug-in====
 +
 +
It would be great to have a content plug-in that would be able to generate image thumbnails. A lot of users don't know how to do that and sometimes try to upload their 10Mpx photos as is. Such plug-in could be an extension of a library that would be used by many components and modules.
 +
 +
The plug-in must be able to:
 +
 +
* scale images to required width, height, or both preserving proportions;
 +
* cut images to required width and height;
 +
* add watermarks;
 +
* display thumbnails with links to large images.
 +
 +
:'''Mentor:''' Andrey Mishenin
 +
:'''Skills Needed:''' PHP, OOP, MySQL, Joomla! CMS Framework
 +
:'''Difficulty:''' Medium
 +
[[Category:Google Summer of Code 2009]]

Latest revision as of 11:27, 20 June 2013

This page has been archived. This page contains information for an unsupported Joomla! version or is no longer relevant. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.

Gsoc 2009 logo.png

Welcome![edit]

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!

Ideas[edit]

Advanced Poll/Survey Suite[edit]

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. Possibly look to [1] as a model or integration.

Mentor: Wilco Jansen (subject to change)
Skills: Joomla CMS framework, MVC, PHP 5.2, MySQL
Difficulty: medium
Full Frontend Editing[edit]

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)
Mentor: Akarawuth Tamrareang (subject to change)
Skills Needed: Javascript, Joomla! Framework
Difficulty: Hard
Template Manager Improvements/Advanced Template Manager[edit]

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).
Mentor: Mark Dexter (subject to change)
Skills Needed: PHP, MySql, Joomla! Framework
Difficulty: Medium
Work Flow Extension[edit]

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.

Mentor: Mark Dexter (subject to change)
Skills Needed: PHP, MySql, Joomla! Framework
Difficulty: Medium
Page Versioning Extension[edit]

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.

Mentor: Mark Dexter (subject to change)
Skills Needed: PHP, MySql, Joomla! Framework
Difficulty: Medium

See Last Year's Summer of Code Project which might be used as a starting point.

Taxonomy Extension[edit]

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.

Mentor: Allan Walker (subject to change)
Skills Needed: PHP, MySql, Joomla! Framework
Difficulty: Medium
Keywords Management Extension[edit]

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.
Mentor: Mark Dexter (subject to change)
Skills Needed: PHP, MySql, Joomla! Framework
Difficulty: Medium
User-Defined List and Blog Layout Extension[edit]

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.

Mentor: Ian MacLennan(subject to change)
Skills Needed: PHP, MySql, Joomla! Framework
Difficulty: Hard
Improve Unit Test Coverage[edit]

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.

Mentor: Alan Langford (subject to change)
Skills Needed: PHP, PHPUnit, Joomla! Framework
Difficulty: Medium
Web Based Unit Test Runner[edit]

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.


Mentor: Alan Langford (subject to change)
Skills Needed: PHP, PHPUnit, Joomla! Framework
Difficulty: Hard
CiviCRM Integration: Plugins to Expose the CiviCRM API to the Joomla! Front End[edit]

CiviCRM is a powerful constituent relationship management system designed for the not-for-profit/nongovernmental organizations. It currently integrates with Joomla! and the 2.2 version is native to Joomla! 1.5.

CiviCRM has a rich API only small parts of which are currently easily accessible from the Joomla! front end. Create a series of plugins that allows the flexible and highly integrated use of the CiviCRM API in Joomla Content, modules, and other core and non-core extensions (such as com_user, com_contact_diretory or calendaring components).

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

Mentor: Elin Waring (subject to change)
Skills Needed: PHP, CiviCRM Framework, MySQL, Joomla! Framework
Difficulty: Hard
CiviCRM Integration: Develop Front End Extensions for CiviCRM Data[edit]

Develop a suite of front end Joomla! 1.5 extensions (modules, plugins and a Joomla! style MVC front end 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.2 version is 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 as well as allowing Joomla! users the ability to use template overrides and other ways of controlling design and functionality in ways they are familiar with.

The core of this project will be the completion of a Joomla! MVC front end component for existing front end functionality, the basic skeleton for which has been incorporated in CiviCRM 2.2.

Additional items might focus on modules and views to display information.

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 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.
Mentor: Elin Waring (subject to change)
Skills Needed: PHP, CiviCRM Framework, MySQL, Joomla! Framework
Difficulty: Hard
CiviCRM Integration: Development of Multilingual Functionality[edit]

CiviCRM is an open source constituent relationship management system used by NGOs and advocacy groups (like Amnesty International, Wikimedia Foundation or the Joomla! and Drupal projects) all over the world. Judging by the number of community-contributed and -maintained translations and civicrm.org statistics, CiviCRM installations exist in over twenty languages using various alphabets (Latin, Cyrillic, Arabic, Devanagari, Chinese). Multi-language support is essential in multilingual countries (like Canada or India), as well as in cross-border (e.g., Central and East European) and worldwide organizations.

For this project the student will extend the multilingual features of CiviCRM (initially created during Google Summer of Code 2008), including (but not limited to) some/all of the following:

  • internationalization of further CiviCRM fields,
  • new, database-based framework for handling translations (partially replacing the existing gettext solution),
  • a solution for proper localization of the initial database seed, according to initial language selection (enumerable values, etc.),
  • changes to CiviCRM upgrade process which will make it work transparently on multilingual sites (as opposed to the current explicit handling of multilingual sites),
  • changes to CiviCRM’s translations portal easing translators’ work,
  • multilingual demo installation for translators, picking up new translations “on the fly”,
  • an automatic engine porting translation strings between CiviCRM releases.
Mentor: Wes Morgan (subject to change)
Skills Needed: PHP, CiviCRM Framework, MySQL, Joomla! Framework
Difficulty: Hard
CiviCRM Integration: Multi-Organizational Access Control Lists[edit]

CiviCRM is an open source constituent relationship management system used by small and large NGOs and advocacy groups, some of them spanning across many smaller (and not-so-small) organizations and/or divided into subgroups, chapters, etc.

The goal of this project is to extend the current CiviCRM ACL capabilities to cover the needs of such multi-part organizations, as well as CiviCRM installations that span across many organizations (with various strengths of ties between them).

The new ACL features should include (but not be limited to):

  • optional inheritance of access right between related organizations and related sub-organizations,
  • creation and sane management of functional groups on various levels of the (sub-)organization graph (“volunteer coordinator for East US chapters of Org X”, “coordinator of campaign Y across all orgs”, etc.),
  • scalability of the designed ACL system – performance-wise,
  • scalability of the designed ACL system – manageability-wise.
Mentor: Wes Morgan (subject to change)
Skills Needed: PHP, CiviCRM Framework, MySQL, Joomla! Framework
Difficulty: Hard
Improved Error Handling[edit]

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.

Mentor: Wilco Jansen (subject to change)
Skills Needed: PHP, Joomla! Framework
Difficulty: Medium
Media Manager Improvements[edit]

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)
Mentor: Akarawuth Tamrareang (subject to change)
Skills Needed: PHP, Javascript, Joomla! Framework
Difficulty: Hard
Whiteboard/Wiki Component[edit]

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
Mentor: Ashwin Date (subject to change)
Skills Needed: PHP, Javascript, MySql, Joomla! Framework
Difficulty: Medium
Core Extensions Semantic and SEO Updates[edit]

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.

Mentor: Allan Walker (subject to change)
Skills Needed: PHP, MySql, Joomla! Framework
Difficulty: Medium
Templates for Joomla 1.6[edit]

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
Mentor: Allan Walker (subject to change)
Skills Needed: PHP, HTML, CSS, Joomla! Framework
Difficulty: Medium
Administrator and Usability Improvements[edit]

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
Mentor: Mark Dexter (subject to change)
Skills Needed: PHP, Javascript, MySql, Joomla! Framework
Difficulty: Medium
Content Item Templates[edit]

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.

Mentor: Allan Walker (subject to change)
Skills: Joomla CMS framework, MVC, PHP 5.2, MySQL
Difficulty: medium
XML DTDs and XML Schemas for all XML files used in Joomla[edit]

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.
Mentor: Chris Davenport (subject to change)
Skills: Joomla CMS framework, XML / DTD validation
Difficulty: Medium
Alternate Component for Editing Articles[edit]

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).

Mentor: Amit Kumar Singh (subject to change)
Skills: Joomla CMS framework, MVC, PHP 5.2, MySQL
Difficulty: medium
Magento eCommerce Platform integration into Joomla![edit]

Magento is an actively developing award winning open source eCommerce platform. The idea is to develop a bridge between Magento and Joomla. More info about Magento can be found from the following websites: Magento official website Magento online demo Store tour video Admin tour video Best of Open Source Enterprise Applications

Mentor: Not assigned yet
Skills Needed: PHP, MySQL, JavaScript, Joomla! Framework
Difficulty: Hard
Xinha WYSIWYG editor for Joomla! frontend and backend editing[edit]

Xinha is a powerful WYSIWYG editor, which supports plugins. So administrator can customize their working environment and even write their own plugins. The idea is to integrate Xinha into Joomla! with ability of editing content from frontend and backend. The editor environment must be configurable, output HTML code must be W3C compliant, for that we will need also to implement HTMLPurifier plugin into Xinha.

You can try Xinha editor plugin demo for Joomla! 1.5. More info about Xinha can be found from the following websites: Xinha official website Xinha demo Currently available Xinha plugins

Mentor: Not assigned yet
Skills Needed: PHP, JavaScript, Joomla! Framework
Difficulty: Medium
Working copy of Joomla! live site[edit]

Administrators usually work on their live site directly and sometimes they do mistakes as all people do. As a result, the live site gets messed after extension installation/uninstallation process and re-configuration. The idea is to have a working copy of the live site and make changes on it, then, if everything is okay after some testing, you can approve changes and the tool will apply them to your live site.

Some of the steps, which will need to be done to complete this project:

  • Develop a tool, which will create a working copy of the site
  • Develop a diff tool, which will show not approved changes
  • Develop a tool, which will synchronize working copy with the live website
  • Interface in working copy to view not approved changes with possibility to reject or approve specified changes
Mentor: Sam Moffatt (subject to change)
Skills Needed: PHP, MySQL, JavaScript, Joomla! Framework
Difficulty: Medium to Hard
Elgg Platform integration into Joomla![edit]

Elgg was providing an elegant and powerful solution for anyone who wants to create their own online community. Elgg is free and open source and powers all kinds of social networks - from education and business to martial arts and rugby. If you are looking for a professional social intranet or just want to run a site for your fishing club, Elgg is a great choice. The idea is to develop a bridge between elgg and Joomla. More info about elgg can be found from the following websites: elgg official website elgg community online elgg Documentation

Some of the steps, which will need to be done to complete this project:

  • synchronize user between elgg and Joomla!
  • develop module for Joomla! to show Users Activity
  • develop module for Joomla! to show Members photo from Elgg
Mentor: Pisan Chueachatchai, Akarawuth Tamrareang (subject to change)
Skills Needed: PHP, MySQL, JavaScript, Joomla! Framework
Difficulty: Medium


New Extension Install Manager[edit]

Update Systems presently doesn't have an easy to navigate structure for handling the large amount of information that is potentially available when a user wishes to install new extensions into their system backed from the update system. Updates are presented already and temporarily uninstalled items are also displayed as a technology demonstration of what can be achieved using the new system.

A completely new look extension install manager is required to help make meaning of the information that the update system exposes. In part this system should also expose information about existing installed extensions in the system (including any pending updates they might have) as well as new extensions that are available. Its purpose should be similar to the way that "Synaptic" works on Debian or Ubuntu operating systems.

The majority of the data loading framework is build already permitting the enterprising developer to focus primarily on interfacing with the installer system and building a useful user interface to make containing these extensions very easy.

Areas of further development involve research involving the development of a Firefox plugin (or similar) that stream lines installing Joomla! extensions from a web site perhaps similar to the way that Firefox is handled. This would involve developing a service that facilitates authenticated remote installation procedures.

Mentor: Sam Moffatt (subject to change)
Skills Needed: PHP, MySQL, JavaScript, Joomla! Framework
Difficulty: Medium
Update Server[edit]

With the development of the new infrastructure there is a need to create an independent update server to make a developer's life easier when installing creating extensions. The update server should in part offer a download facility where users can download directly from it via a front end Joomla! component as well as something that will generate XML files statically on the file system and dynamically dependent on the administrator's choice. The XML files should be generated in the defined format that already exists and should handle updating automatically.

Expanding on the system it should be able to push notifications out through an extensible plugin system as well as handle automatic mirroring of the files (again via plugins). An example of a notification plugin could be something that automatically updates the JED or posts a new article in a specific category with changelog information. An example of a mirror plugin could be something that automatically uploads files to a release on JoomlaCode, perhaps even creating the release automatically as well. The location of generated XML files should be configurable as well and may also be requested to be uploaded to external resources as well (e.g. a mirror server for the XML update files).

The application should make the most of new features introduced into Joomla! 1.6 such as the Forms API to provide plugin customisable interfaces to various systems.

An extension of this would be the provisioning of content plugins that handle the integration of download URL's and version numbers for packages that are handled through the system to allow Joomla! content items to interact with the system in a flexible manner.

Proxy functionality would also be desirable to have the update server function as a slave to other sites and permit updates through a proxy. This would also involve a method for mirroring the binary files onto the proxy server as well but has some interesting different functionality to the main project.

Mentor: Sam Moffatt (subject to change)
Skills Needed: PHP, MySQL, JavaScript, Joomla! Framework
Difficulty: Medium
Authentication Systems[edit]

This is a major project consistent of various subparts. It should be undertaken by someone with at least a basic understanding of how Joomla! operates and developing for Joomla!. This is not a good starter project. Students should show an interest in this area and be happy to work in an agile method with tighter deadline for individual projects to come together as a final assessable package. A combination of options might be selected but at least three should be considered.

This is still in moderate draft phase.

  • Group Mapping
    Group Mappings is a feature that permits external groups to be mapped onto Joomla! groups when the user logs into the system. Implementation of the data retrieval aspect of this project isn't required however implementation of a user interface to control group mappings is required. The system should permit the administrator to designate that a specified group name string should map to a given user group. Optionally settings may be given priorities to enable mapping of "primary" groups to the user. This project is Joomla! 1.6 only and includes work on the new ACL system that permits multiple groups.
  • LDAP Authentication Groups Discovery
    Tied in with group mapping the LDAP authentication plugin should then become capable of determining the groups that a user is a member of and reporting this back to the parent system. This will probably be in DN form which is why the group mapping application is useful.
  • LDAP User Plugin
    Presently I have an LDAP user plugin that permits Joomla! to push users details into LDAP. Ideally this could be expanded to handle groups as a general improvement to the entire user subsystem. Extra user fields should also be populated some how as well. Ideally it should be made into a configurable so that mappings could be made arbitrarily however 'templates' for individual directory systems (MSAD, eDirectory, SunOne, OpenDirectory, plain OpenLDAP inetOrgPerson).
  • LDAP ACL Backend
    This would permit ACL changes to be pushed into LDAP which can then be copied into different Joomla! sites periodically permitting centralised control as well as more generalised ACL systems to hook into Joomla!.
  • Pluggable Authentication Requests
    Developers should be able to request authentication to occur and then be redirected back to where they are. This authentication system should be pluggable to permit different handlers to be implemented. For example a default plugin would be Joomla!'s Login Form however another authentication fall back might push you through SSO instead and then fall back to the login form.
  • External SSO Authentication Hook
    Build an external authentication system that permits login hooks into the system outside of the primary site similar to how Moodle handles its authentication. This would aide non-obtrusive SSO authentication requests integrated with the above Pluggable Authentication Requests system without having to go through an entire potential request to Joomla!. This should be a lot more cut down than a full application load and would involve the development of a smaller application to handle this with a slightly different style to what is normally used and could be considered a 'harder' project than the rest.
Mentor: Sam Moffatt (subject to change)
Skills Needed: PHP, MySQL, JavaScript, Joomla! Framework, LDAP (for some).
Difficulty: Medium
Adminlist library for Joomla! Developers[edit]

Many developers create new components every day all over the world. The idea is to develop a library for rendering lists of items in the administration panel (like standard lists of users/articles/categories/etc). It must handle all routine work of creating such lists for components.

It should work like a common form creator class. You set list of fields with their types (columns) and list of values (rows) or an SQL-query to fetch them.

The main features of the library should be:

  • Different column types (at least text, link, edit link, publish, order, logical and date types).
  • Inputs for data filtering.
  • Ability to set columns from either the php array or the xml file (this to be discussed).
  • Ajax support for the following tasks: publish/unpublish, order up/order down, save ordering, filtering, sorting by columns.
  • Quick edit mode to change some data on fly without entering item’s edit page.
Mentor: Oleg Nesterov
Skills Needed: PHP5, OOP, MySQL, JavaScript, Ajax, and some base knowledge of Joomla! Framework
Difficulty: Medium


Web Links Component Upgrades[edit]

Add a new feature that could expand on the basic web links feature to allow users to submit links and then rate them. It could emulate some of the main features of digg.

  • Expand the submit links feature
  • Provide a ranking functionality
  • Produce modules
  • Plugin to connect with each article written to be included in the ranking
  • Ability to accept submissions from external sites or widgets
Mentor: Mark Dexter (subject to change)
Skills Needed: PHP, MySql, Joomla! Framework
Difficulty: Medium
Make it easier to Extend Editors[edit]

Currently it is very difficult to extend TinyMCE and other editors by using JavaScript plugins that are available for them. Idea is to make this process easier by allowing Joomla plugins to extend editors. We already have something similar on WordPress backend, which allows us to easily extend the TinyMCE editor using WordPress plugins.


Mentor: Amit Kumar Singh (subject to change)
Skills: JavaScript, Joomla CMS framework, MVC, PHP 5.2
Difficulty: Hard


Site Cloner[edit]

This project involves building a tool that will take an existing site (probably HTML but could be partially dynamically generated) and feature the ability to suck it into Joomla!, stripping the template as it goes and attempting to rebuild the navigation structure whilst also maintaining as much metadata as possible. This project requires exceptional programming skill, a deep knowledge of the Joomla! CMS, and someone with a knack for solving weird problems. An analogous module exists for Drupal in its "Import HTML" and might serve as a good location for study of ideas and concepts.

Mentor: Sam Moffatt (subject to change)
Skills: Joomla CMS framework, MVC, PHP 5.2
Difficulty: Very Hard


Typography Plug-in[edit]

Introduction

Typography (Etymology: typos ⎯ type, graphos ⎯ written) is the art and techniques of arranging type, type design, and modifying type glyphs (en.wikipedia.org/wiki/Typography).

Typography is an important part of any text design. It makes texts look better, more sophisticated, and professional. It was a must for all books, newspapers, and other printed text sources at the times when computers did not exist or were not widely spread and the texts were set up by professionals only. Nowadays 99% of texts are created not by professionals and the quality of typography leaves much to be desired.

I agree with those who say that it’s just a small detail but details is something that makes things perfect. As a musician must play from music, a HTML coder must take into account typography rules of text formatting although in both cases most people may not notice any benefits.

At the age of content management systems most texts are set up by common users and the typography issue has become even more visible. This problem can be at least partially solved by involving automated typography scripts while preparing texts for displaying on a web page.

Goal

The goal is to create Joomla! CMS plug-in that would format texts correctly according to typography rules of different languages without any loss of page display speed.

The plug-in would be used to fix primes, opening and closing quotes, apostrophes; to fix dashes, and other punctuation; to insert spaces and correct special symbols such as Copyright, Registered, Trademark, and others; to fix parentheses, brackets, angle brackets, and guillemets; to format numbers; to add no-break symbols when necessary, and more. In addition it would be used to handle such issues as quotes within quotes, and others.

Here are two examples from everything2.com to illustrate the way the correctly formatted text would look:

  • En français: Einstein a (peut-être) dit : « J’adore 3,14, 298 000 — et 42 ! ».
  • In English: Einstein said: “3.14, 298,000—and 42—are my all-time favourite numbers!”

As you can see, it’s not only a matter of replacing certain symbols with their ‘correct’ versions. Everything is much more complicated, I’d say it’s a challenge :)

Previous Attempts

There are quite a few typography plug-ins for Joomla! CMS but none of them is actually intended to format texts correctly. Each of those does certain tricks like inserting special symbols but none is even close to making the whole thing.

Functional Requirements

The functional requirements in brief can be as follows:

  • The plug-in must adjust text formatting according to typography rules of supported languages.
  • The plug-in must work really fast. Probably, regular expressions would work too slowly since there are pretty many typography rules and it would be necessary to create some lexical analyzer working without regular expressions.
  • The plug-in must be scalable so that it must be relatively easy to add new rules for all or only for certain languages. Of course it’s not supposed to be done by end users but still it must be clear and not too complicated for programmers.

Open Issues:

  • The plug-in might need cache functionality to speed up front-end pages displaying.

Related Links

Mentor: Andrey Mishenin
Skills: PHP, OOP, Joomla! CMS Framework, experience with lexical analyzers coding would greatly help
Difficulty: Hard


Page Title Tags Enhancement[edit]

Enhance title tags management in Joomla! for SEO purposes. This is first of all related to the content component that doesn’t handle titles perfectly at this time.

The idea is to allow forming titles basing on the following:

  • Website name (optional)
  • Current section and/or current category name (optional)
  • Keywords for current section and/or current category (optional)
  • Current article title

There should be ability to choose a separating symbol: “/”, “⎯”, etc. and the above mentioned items order in the title tag.

Mentor: Andrey Mishenin
Skills: PHP, OOP, MySQL, Joomla! CMS Framework
Difficulty: Relatively easy
Joomla Multisites[edit]

Recently, i needed develop one Joomla portal where users could create own sites easy and fastly. For it, i build one small Multisite Master Component that do database reply, create link to Joomla slave directory and more. I have table as:

  • Title -> site 1
  • Description -> Description of my site...
  • User_id -> 67
  • Url -> http://tom.yoursite.com
  • Db_name -> slavesite_tom
  • Db_user -> tom_userdb
  • Db_pass -> mypass
  • Pack_id ->12 (This indicates what slave directory and SQL for copy, i have other table with information for it).
  • etc

In Joomla slave configuration.php I have implemented contructor function, where I load Master DB information, and I do comparation URL with it. After, i initialize JConfig fields with it (title = title of site, description = metadata, etc...)

So, i had good multisites system.

But i think that could to be better:

  • Write new code for Master Component and configuration.php slave sites. (in my old version, i have one include to external php file in constructor, this php file rewrite JConfig variables)
  • Creation slave site using only PHP (in my old system, using sh file, dont window server soport).
  • Posible Front-Site component for user creator, that let you change template and other minors admin features.
  • Soport multiple slaves type sites. Now only: reply DB and same files. We can more options: share users DB, dont share files (real copy of joomla slave directory), etc.
  • And more?
Mentor: none?
Skills Needed: PHP, mySQL, Apache (lighttpd, etc) servers, Joomla! Framework
Difficulty: Medium-Hard


SEF URLs with Sub-domains[edit]

SEF URLs in Joomla can be made more sophisticated by allowing using sub-domains for different components, content sections or categories. For example, forum.mysite.com for a forum component or about.mysite.com for About section of the content component.

Of course it would require the sub-domains to be created on the server and pointed to the same directory as the main domain but it wouldn’t be an issue for most users since it easily can be done through many popular hosting control panels like CPanel.

Mentor: Andrey Mishenin
Skills Needed: PHP, OOP, MySQL, Joomla! CMS Framework
Difficulty: Medium


Joomla! API Reference[edit]

Currently the Joomla! API reference at [2] is not as useful as it could be. Develop a way to present the information in a useful (and search able) format and with the ability to have user contributed notes in a way similar to [3].

Currently api.joomla.org is static html produced by phpdocumenter. The project could achieve these goals by developing an extension or framework application to integrate the output from phpdocumenter with Joomla and incorporating a commenting style system.

Note: There are also materials here in docuwiki format [4] that could be incorporated. Other material is here [5].

Mentor:
Skills Needed: PHP, MVC, MySQL, Joomla! CMS Framework
Difficulty: Hard

Desktop Content Manager - Adobe AIR[edit]

The Adobe AIR platform has a lot of promise with regards to creating applications that connect with sites. This project would focus on creating an article manager in Flex/AIR that would connect to a Joomla installation through xmlrpc.

Mentor:
Skills: Joomla CMS framework, Flex/AIR, xmlrpc
Difficulty: Hard


Thumbnails Generating Plug-in[edit]

It would be great to have a content plug-in that would be able to generate image thumbnails. A lot of users don't know how to do that and sometimes try to upload their 10Mpx photos as is. Such plug-in could be an extension of a library that would be used by many components and modules.

The plug-in must be able to:

  • scale images to required width, height, or both preserving proportions;
  • cut images to required width and height;
  • add watermarks;
  • display thumbnails with links to large images.
Mentor: Andrey Mishenin
Skills Needed: PHP, OOP, MySQL, Joomla! CMS Framework
Difficulty: Medium