The goal of project JDevlTools is to make Joomla easier to develop for. Currently developers creating components, modules or plugins go through a lot of tedious task setting up files and writing boilerplate that can easily be automated. My aim is to provide tools for developers to automate these task, so they can focus on what's important: Creating quality web sites with Joomla.
JdevTools is a project that spans two areas. First of all I intent to create utilities that automate component creation, module creation and plugin create by creating files and boilerplate code. Secondly it's my aim to create an adminList library to make it easier to for developers to create the administration.
Most developers doing a lot of joomla developing have a bunch of scripts or files they copy around each time they want to make a new component, module or plugin. Instead of letting developers waste their time creating these tools, I intent to let Joomla save their time by providing this functionality from within joomla. I will do this by creating a common interface for a group of scripts taking care of different parts of the coding process. My aim is not to automate the process completely, or to create a kind of 'component creation in 3 easy steps'. The aim is strictly to provide simple tools for developers who already know how to code.
I imagine that these tools will consist either of different wizards of different forms where some basic information can be entered. The user can then click 'create' and all relevant actions will be taken leaving the developer ready to start coding. If a user for example wanted to create a new component, we would ask for the name of the component and the author name, and create all standard files needed for the component. Each file will be ready to work on, already containing the neccesary code pieces. Alternatively we could make the scripts more atomic and provide functionality for creating e.g. a new view for a specific component. I will take care to consider how these scripts best can be suited to help developers out there.
The library part of the project is quite a different creature. During normal component development, the standard admin table contains a lot of repeated elements that could be benificial to abstract away in a library. To construct an admin table should be a question of specifying the content of each collumn, and then letting joomla take care of the rest. Practically speaking a possible way of doing it could look like this:
Code: Select all
$table = new Table($items,$pagination) $table->col("name")->edit() $table->col("area_id")->db("#__areas","name")->label("Area"); $table->col("description")->truncate(50);
Code: Select all
* One column displaying the name (that is, accessing $item[n]->name) for all n's) and being a link to the edit page (that's what the edit() method does)
* One column showing the area name and sending an sql request to the #__areas table to get the name with that specific area_id, and finally having the heading as "Area" instead of "Area_id"
* One column showing the description truncated down to around 50 characters
Then a __toString method would render the table, filling in the
This way the developer wouldn't have to worry about html, table cells and other nitty gritty details that doesn't change in the administration section anyway. An important part of the design of the library is of course that it fits well with the rest of the joomla code base and is intuitive to use for a developer who is already familiar with the rest of joomla's functionality.
With these two additions to Joomla, I think we can increase developer productivity substantially while making the components they create easier to maintain and less error prone from copying code around. Increased productivity will lead to more components, modules and plugins, which leads to more reason for webmasters to choose joomla as their cms, and more reason for developers to choose joomla as their platform.
Seeing that this project aims to help out component creators, it's important that I know how to best do so. I've developed Joomla components for some time myself, so I'm starting out with a decent comprehension of the problems to be solved, but I'm still very interested in inputs from other people who have been developing with Joomla. If you have ideas or input, feel free to write a comment.