Category Archives: Web 2.0

sfAdminThemejRollerPlugin: Symfony admin generator on steroid

It’s been a while since I wanted to work on my own admin generator theme. In symfony 1.0 the default admin generator was not really nice, it became a little bit better in 1.2 but still not to my taste (purely subjective I must admit ;-) . For example, one thing get me mad is the css for the table list and the filter, I believe that the table list should be maximized and filters available only when we need them.
I spent quite some time to modify some admin generator in some projects but you always end up doing the same thing over and over (see this screenshot of what I have done with the list view based on a standard admin generator)…it was time to make things more to my taste. I now have a pretty clear idea of things that I would like out of the box from my new admin generator. Let me be more specific with the complete list of things I would like:

  1. Change css style to a more modern style (again purely subjective ;-) that can be changed easily. For this I am using jQuery UI with their new theme roller system. The plugin is packaged with only one theme but it is extremely (too?) easy to change to your favorite theme (long term will be to use the upcoming html5 grid).
  2. The filter box is hidden by default with a button to show/hide a modal window with the list of available filters. This allows to have a larger space for the table list.
  3. In the new/edit views fieldsets are replaced by tabs (again jQuery UI).
  4. Add a show only view, it makes sense for some application to allow read-only access.
  5. filters ala iTunes smart playlist, meaning you select fields you want to filter and add them (nice to have but not so important, although useful if you have a lot of filter options)
  6. Print preview (configuration in generator.yml): simply a non paginated table easy to print with sortable column (javascript grid style)
  7. live search (configuration in generator.yml): be able to quickly filter the table list while typing a few characters, ajax style. I did that before for one specific module, I now have to make it part of the admin generator.
  8. export to CSV format: we could have a modal window to select the fields we would like to get and export them or simply a list defined in the generator.yml (which can include getters that are not database fields).
  9. export to PDF: does it make sense at all, I am not yet sure!
  10. Import CSV to database: to be able to simply upload a csv file of data to import through the admin generator.

The first 3 items are easy to do just by modifying existing admin generator templates and are indeed already packaged in the plugin. The rest need more work (still learning how admin generator are working deeply).
I am also trying as much as possible to keep all actions accessible without javascript and make sure that I do not break any default admin generator css classes and ids in case you need them.

Stop talking and show us the code“…here you go! It is published as a symfony plugin at http://www.symfony-project.com/plugins/sfAdminThemejRollerPlugin, meanwhile here are some screenshots:

jroller-list-themes.png
jroller-list-filters.png
jroller-form.png

How to install?

./symfony plugin:install sfAdminThemejRollerPlugin --stability=beta

When I say beta, it is beta ;-) I am not fully satisfied with the code and still thinking about the best approach for some features (not mentioning it’s my first play with admin generator). Feel free to give me feedback.
I will publish the code on github later to ease collaboration if any of you are interested. Anyway, it’s php right? so you can play with the code right now!

How to use it?

./symfony --theme=jroller doctrine:generate-admin

or if you have an existing admin generator, simply modify your generator.yml file with

theme: jroller

instead of theme: admin.

Configuration

I currently package jQuery 1.3.2 and jQuery UI 1.7.2 to make sure it can work out-of-the-box, but it is also easy to specify in your app.yml file that you do not want to use those versions (or because you already include those libraries in your project) and include your own jquery and UI.
jQuery UI is using at the minimum: Tabs, Dialog (Drag and drop and resizable recommended).

# inside your app.yml file
  sf_admin_theme_jroller_plugin:
    web_dir:      /sfAdminThemejRollerPlugin # specify specific folder where to pick your jquery stuff, ui and themes.
    use_jquery:   true # default. use the packaged jquery/UI
    theme:        redmond # default. 
    css_reset:    true # default. reset default css (from Blueprint CSS)

What’s next?

I will try to implement the rest in the coming months (I just found out that sfDoctrineAdminGeneratorWithShowPlugin start to implement some of my ideas), again feel free to contribute to speed up the process.

Bugs? no way!

  • I still have a pixel problem with the caption and tfoot of my table, if anyone knows how to solve it?

You will probably find bugs, please report them.

gWidgets goes SVN

I finally took some time to setup an svn account to share gwidgets code and allow collaboration on its development. Welcome to gWidgets on Google Code! It is still a beginning but you can already checkout the code, submit bugs and so on. I also setup a Google Group for gwidgets to allow discussion and support.

Feel free to join the new community, hopefully support and development will improve…

gWidgets plugin for Symfony in the Top 10!

Unbelievable! My very humble Symfony plugin sfgWidgetsPlugin to add some javascript helpers for gWidgets is 9th on the symfony top list of plugins (by usage)! see the list. Hey guys, there must be a mistake :-) I simply hope it is useful and convenient for those who tried it…hopefully they use it in production ;-)

I know some people wrote to me about some bugs and I did not take the time yet to first fix those bugs and then reply to them…but I promise, by mid-Sept I should be back on track to work again and improve things. A few things on my todo list:

  • fix bugs
  • test on IE
  • remove some dependencies (such as Base.js)
  • improve some part to make the html more compliant
  • add a one or two new widgets maybe (at least one accordeon I hope)

webapp in Timor

I am currently in East-Timor, again….that’s about the 10th times I come on 2 years!
I have been re-writing from scratch the customer and billing system for the electricity and water companies (actually government bodies).

This time I decided to go with Symfony PHP5-MVC framework. It was my first experience with this framework but I can tell you it is pretty amazing! It took me 1 month to learn and rewrite my app. Not only it is very fast to code due to a lot of automatisation, keep you using best practices and help you to do re-usable code but on top of this the application is less buggy than before (and by far!) and with features that were not yet in the previous version (plain PHP4 with very basic MVC) that took me about 4 to 6 months!
This should motivate any of you for Symfony…unless you are not a programmer!

I post here 2 very basic screenshots. I will put a live demo as soon as I am back from Timor, this is not really possible from here due to the terrible internet connection.

Customer Information for UtilitiesCS4U list view

 

I know there are people waiting on the forum for some answers about ical4WP or gWidgets. Sorry guys, as long as I am here in Timor I will not have time to do much on these apps but I promise I will try to catch up as soon as I am back.