I have been working on a refactoring in a separate branch. Right now it looks stable, so I’m putting more details in here:
(you can try new branch by using svn switch)
Half year ago we have introduced jQuery / Chain into amodules3. It allows us to clean up a lot of older code and at the same time give developers a way to do many new things in a flexible way.
In ATK each object you add is inserted as a child to some other object. They end up in $object->elements array, however there is no easy way to rearrange it.
Let’s say you want user to be able and select multiple elements in a grid. This can’t be done directly, because grid is supposed to list elements, it shouldn’t be built to intact with it. However grid can be extended and joined with the functionality of the Form to do what’s required.
You can see a working example here: http://atk4.agiletech.ie/grid/selectable.html
The way how the current Models/Controllers work it makes it quite difficult to flexibly manipulate them. When I am working with grid, I can specify controller, but only one. (through setController). I was thinking about a better way of implementing this. This is what I came up with.
With the migration to jQuery (UI) we have received lot of new fancy functionality, but some of the old things stopped worked too. However old stuff is fixable, and if there is anything – please let me know by commenting and I’ll give it a fix.
This tip explains how you can add buttons to the grid. You can see working demo here:
jQuery UI have a good support for dialogs and windows. ATK4 takes it to the next level. Most importantly it manages to create contents of the boxes on the fly. Let’s review what we have.
The other day I have added this method for skai, but it’s actually a very curious one.
ATK4 uses atk4_loader widget for AJAX requests. Syntax is very similar to jQuery:
- jQuery: $(‘#div’).load(‘url’);
- atk4: $(‘#div’).atk4_load(‘url’);
If you are getting this problem, this is because button() is a part of jQuery UI 1.8. By default 1.7 is still used. Since 1.8 stable is being released we will switch over shortly, but for now here is the fix. Put this into your config.php to manually change version of jquery / jquery ui:
I’d like to hear your opinion about some suggestions towards button implementation
Currently there are 2 versions running around:
1) $form->addButton()->redirect(‘/’) - in this one form’s addButton is returning $js(‘click’)->univ() of the button. This is backward compatible version and seriously, why would we need to do anything with button but redirect.
2) $form->addButton()->js(‘click’)->univ()->redirect(‘/’) – here addButton returns “View_Button” object. The benefit is that you can do certain things with is such as addLabel or setStyle(), which will affect how button looks. Also instead of just clicks you can use other events, such as mouse-over etc. This is more standard-compliant version IMHO
- You have missed few posts!
- ATK4 Blog moved to its own domain. Please update.
- Checking password strength with CrackLib
- Creating beautiful URLs with Agile Toolkit
- Security model
- New features of DB and dsql planned for ATK 4.0
- Lightweight CMS in ATK (video)
- Symfony 2.0 vs ATK3.8 – part 5 – Architecture and beyond
- Symfony 2.0 vs ATK3.8 – part 4 – Bundles, Users, DB
- Symfony 2.0 vs ATK3.8 – part 3 – The Controller
- Symfony 2.0 vs ATK3.8 – part 2 – The View