I’m planning on applying as a GSoC 2010 volunteer for WordPress. This is a working draft of my proposal.
Introduction
One of the key features missing from the list-type administration screens is the ability to view items sorted by a certain column. For example, on the posts screen, you should be able to view posts sorted by number of comments, in descending or ascending order.
Besides this, when you view the next page of items, the entire page is reloaded, when the list of items could be updated via AJAX.
So, my proposal has two parts:
Sorting by column
All list-type screens in WordPress are paginated. In other words, only a small subset of all the items are loaded at a time. This throws JavaScript sorting scripts like DataTable out the window. The sorting has to be done on the server-side.
This is not a big problem, since WordPress already has support for sorting most types of items.
In terms of UI, I won’t go with the regular clickable column headers approach because it has a 3-click cycle:
- sorted-ascending
- sorted descending
- unsorted
Unlike with JavaScript sorting, each click would be expensive, since it would require a new request to the server.
Instead, I plan on adding a dropdown to the Screen Options section, where the user could select the column to sort by. There would also be two radio buttons for the order: ASC / DESC. This way, the user can choose the sorting and the order in one request.
Either that, or add two buttons on each column, one for ASC and one for DESC sorting (hidden until the user hovers over that column).
AJAX Loading
After sorting is done, I can concentrate on speeding things up with AJAX. Whenever a user wants to see a different page of items, they will be fetched via an AJAX request and be inserted in place of the old items.
This should also work when: changing the sorting, changing the number of items per page.
Feedback
What do you think? Thoughts, ideas, suggestions etc. are very welcome. Use the comment form bellow.