Short Project Description:
A new module should provide a powerful interface for Drupal’s core taxonomy module for managing terms.
The taxonomy module allows the categorization of content by assigning terms to a node. These terms are grouped in one vocabulary, where they can be structured optional in hierarchical order or related to each other. It depends on the type of vocabulary, whether it’s possible for users to add new terms or whether only administrators have this permission.
At the moment the taxonomy module provides a simple interface, where an administrator can add new terms at the one hand and edit existing terms on the other hand. For editing existing terms, the administrator has to go through the list of all terms, which is generated for each vocabulary. This list shows 25 terms at one page, the terms are ordered depending on their weight and the terms are grouped by their parents (if hierarchical). Nevertheless, when having a bigger vocabulary with e.g. 500 or more terms, this would mean, that the admin has to browse through maybe 20 pages to find the right term, which he/she wants to edit. This procedure is not very user-friendly.
In conclusion, with an increasing number of terms within one vocabulary the original admin interface gets overloaded and it’s nearly impossible to manage all the terms in an adequate way.
Concrete Implementation plan:
The new module is based on the taxonomy module; it should use the basic taxonomy API as far as possible, so that it’s possible to focus on the major usability aspects.
My plan is to design the admin interface within one page, so that it is possible to see all important information at once and to do all important operations within one page, without the need of a permanent re-load of the page.
One major aspect is the compact representation of the term list. One possible solution is the tree-based representation with collapsible parents, if it’s ordered hierarchically (which is mostly the case with huge vocabularies). This means at the first moment only top level parents are shown, by clicking on a special parent, a subtree with all children expands (like we have in Taxonomy DHTML).
A second important point is the placement of an autocomplete form at the top of the page, which allows you a fast selection of a specific term, without the need of going through the whole tree.
Additional a third group of the page shows all term-specific information, like all parents, children, related-to terms and synonyms, when a term is selected in the list above. The information should be loaded dynamically through AJAX so that a re-loading is not necessary. Furthermore it would be good if this group allows the editing of all term-specific data.
Another important point is the fast deleting and weight-editing of terms. This can be done by offering a weight-form and a checkbox for deletion for each term or by adding AJAX that allows drag & drop for changing the weight order and an instant deletion of terms. Furthermore it should be possible to easily add a parent to more terms at once and to merge terms, which have the same meaning to one term with synonyms.
When I think about the taxonomy system and knowledge management and categorization of content, there are several cases which come into my mind, where huge vocabularies exists (and a powerful admin interface is necessary).
Three very common examples:
- A vocabulary with all (or a part of) countries of the world and their regions/states (in hierarchical order) for a geographic categorization of content.
- A vocabulary for product classification for web shops and auctions, like we can see at eBay. They are having quite a lot of categories in a hierarchical order. The categories are used at the one hand for the site navigation and on the other hand for the categorization.
- Free tagging vocabularies often contain a lot of terms, where a re-structure by an administrator would be helpful, e.g. by adding a hierarchy or by merging terms with the same meaning.