Hi folks, seems we’re a bit overdue for an update!
Work has been progressing well, after we made some important design decisions – I’ve mainly been focusing on 2 areas at the moment. The first of these areas is the moderation queue.
I have this looking fairly complete – it just needs polishing. At the moment you can view a list of all open moderations, view specific moderations, add edit notes and vote on these edits. I’m using a similar system to the existing code base, whereby each moderation has a template to show how the details of the change should be displayed. So one major area I still need to do is write all these change-templates.
Along with these templates, I still need to devise a system to filter edits (much like our current advanced edit search) – but I’d like to try and get something a little bit cleaner than the code we currently use. At the moment, once the user submits the search form, we hand craft a SQL query – which results in quite a lot of complex code. I’m considering using a chained system to formulate the query; something along the lines of
$c->model('Moderation')->filtered->
edit_type('MOD_EDIT_RELEASE')->
status('any')->
automod(0);
I’m hoping this will make for cleaner code in the controllers, but also the option to make use of specific moderation-filters in other places (maybe a per user dashboard, where users can decide what edits they want to see?)
Moving away from moderation, I’m working on the add release form, and I’m currently finding this one of the hardest challenges of the project. It’s also probably one of the most (if not the most) important forms we have on the site – so getting this working correctly is highly important. However, interactions with this form are very tricky to model.
The largest problem, is that the path is very much non-linear, for non-trivial edits. Let’s consider a 5 track, various artists release, with 2 release events. This would require the following steps:
- Specify that we need 5 tracks
- Enter the details of the release
- For each track, display a search form for the user to select the artist (my branch will not have AJAX until everything can be done without it).
- Search for the label for the 2 release events, allowing the user to select them.
- Enter a moderation note, and insert the moderation into the queue.
However, this can be become even more complex – consider the case where the artists/labels do not exist, so the user needs to be redirected to an add artist form. Or maybe the user wants to change an artist they have already confirmed… see how this is starting to become a little bit more complicated, with a very non-predictable path?
While each of these stages can be done on their own, the problem I am having is to work out a solution to keep track of the user progress, and make all of these stages transparently tie together.
If anyone has any experience working with muilt-page forms, I’m certainly curious to hear how you’re doing it. I’ve had feedback from some people pointing me towards a staleless RESTful solution, and others saying I should save the results in the session.