Article Refactoring: ACL, Nested Categories, Versioning, etc

User avatar
tcp
Joomla! Ace
Joomla! Ace
Posts: 1548
Joined: Wed Sep 21, 2005 9:25 am
Location: Thailand
Contact:

Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby tcp » Mon Mar 17, 2008 5:37 pm

I'm glad that a lot of us are thinking on the same level. This White Paper outlines the objects and release stages to implement a rocking content management system in Joomla. Unfortunately I cannot post the entire paper here due to formatting restrictions so the HTML version is available here.

The following covers most of the important points made in the White Paper. I'll follow-up this initial posts with links to related white papers with explanations about how they fit into this one.

Background

In January of 2008 Joomla released the new 1.5 version of the Content Management System. One of the core objectives of this release was to drastically revamp and improve the framework that powers the system. Few new features were added to one of its most important components, the Article Manager. The Article Manager, sometimes referred to as com_content, retains must of the functionality from its days as Mambo such as a strict hierarchical system for organizing content, predefined user roles for editing and publishing content, and limited options to change the publishing workflow. This proposal outlines several objectives for a new Article Manager which intends to replace its predecessor.

Goal

The new Article Manager will bring Joomla up-to-date with other content management systems by introducing several features into the core Joomla distribution that have been greatly desired by the community. As a comment management system, these new features will be among the first to leverage the new Joomla framework to provide substantially new functionality within Joomla.

Objectives

The new Article Manager, or com_articles, will be implemented using the Joomla 1.5 MVC and in a similar fashion to its predecessor, com_content. In addition to the existing features, the new Article Manager will implement several new features as explained below.

Nested Categories
A Category is use to group content. Joomla 1.0 provided a rigid system of sections and categories to organize content. A typical 1.0 site would have a number of sections that encompassed any number of categories, but more granular organization was not possible. It was not possible to create a hierarchy more than two levels, and those needing this functionality resorted to a system of stratification that did not reflect the organization of the content. For example, a medium or large organization may wish to represent content as shown below.
* Computer  Software  Games  Content Item
* Computers  Software  Office Applications  Content Item
* Electronics  Gadgets  Music  Content Item
This type of organization is not possible in the current Article Manager. Instead one must divvy the structure into sections and categories.
* Computer Software  Games  Content Item
* Computers Software  Office Applications  Content Item
* Electronics  Music Gadgets  Content Item
Nested Categories dispenses with the previous usage of sections and categories in preference for a tree structure to organize content. Any category can contain an unlimited number of leaf content articles as well as any number of dependent categories. Thus the following is possible.
* Computer Software  Content Item
* Computer Software  Games  Content Item
* Computers Software  Office Applications  Content Item
* Electronics  Content Item
* Electronics  Music Gadgets  Content Item
* Electronics  Music Gadgets  IPod  Content Item
Nested categories can be accomplished using a tree structure and pre-order tree traversal. This method of organizing data is easy to query from a database and lends itself to quick reading. Work in this area has already been done during the 2007 Google Summer of Code.

Access Control Lists
Access Control Lists (ACLs) are used to define what a user can do. Control, in a Joomla sense and within the context of articles, often determines if a user can author, edit, or publish content. Although a list may imply multiple assignments, in current versions of Joomla a user is only a member of a single group, such as Registered, Author, Editor, or Published. An Author can author content, an Editor can edit any article in any section and category, and a Publisher can freely publish and unpublish. An improved system of ACLs is almost certainly a new feature of Joomla 1.6 that the Article Manager will implement in order to provide more sophisticated controls.

The new Article Manager uses ACLs to control access to articles within categories. Thus it is possible to assign permissions to certain groups of users for specific categories. For example, a member of Group X may be able to edit articles in Category 1, author articles in Category 2, and only view articles in other categories except for Category 3. Another interesting application of this feature is to allow non-privileges users to submit content in Category 4 only, something that cannot be done in the current version of Joomla.

It should be noted that specific ACLs to individual articles is outside of the this paper’s scope.

Publishing Controls
The workflow involved with publishing articles will employ several category settings that control how content is edited and published. Below is a sample of controls that could be offered by the Article Manager.
Control -> Description
Publish On Submit = Determines if an article is automatically published after it has been submitted by an author.
Edit By Author After Publish = Determines if an article can be edited by the author after it has been published.
Edit By Editor After Publish = Determines if an article can be edited by an editor after it has been published.
These controls are applied to categories themselves, not the articles, and if no setting has been applied then the settings of the parent or the default values of the component are used.

Content Versioning
A common requirement of many websites is to display different versions of content on the site. This objective addresses two of the most common versioning requirements: revisions and language variants. This objective strives to create the necessary code logic and presentation interfaces to allow site administrators and their users to create different versions of content in multiple languages.

A revision is an altered version of the content. Content is altered to update information, fix mistakes, or adjust formatting. Although content may be revised, those revisions may not be appropriate to display on the main site until approved, and likewise earlier revisions should be maintained in the event that the current version needs to be reverted to a previous one. Joomla 1.0 recorded a version number but did not retain previous versions – only a single version of the content was stored in the database. The previous version is destroyed.

Language variants are translations of the content. Frequently one wants to display a translation of an article in the user’s language rather than the default language. Although Joomla 1.5 supports translation of many static parts of the interface, content cannot be translated and users will always view content in the language in which the content was written.
The new Article Manager will implement a new system of handling content that retains different revisions and language variants of content.

Tagging
Tagging has become a popular feature to user content driven sites and is currently a feature offered by some third party applications. Tagging breaks the rules of traditional organization structures by employing tag clouds, labels that suggest the relevance to the user’s interest.
The current version of the Article Manager does not implement any form of tagging, although various third party extensions cover this niche. Providing all of the logic components to implement tagging may be outside of the scope of this proposal but the new structure of the component should provide the database and administrative fields so that third party developers can offer their own solutions.

Benefit

The proposed changes represent a substantial change to one of Joomla’s more important components. Although substantial, these changes should be incorporated into Joomla 1.6 .
1.The community has desired this functionality since Joomla’s split with Mambo.
2.The Article Manager has introduced few substantial changes in the past two years.
3.Other systems already offer these features.

Rationale

Joomla is a Content Management System, or CMS. Therefore the most advanced features should be regarding managing content and deserve special features. Supplementary components such as Weblinks and Contacts, although important, do not need the advanced features of the new Article Manager. For example, other tools can be used to translate the description of a weblink or the address of a contact. Content also tends to change more frequently, comes from multiple sources, and requires a more specific workflow.

As technology and its use changes, software systems must evolve as well. Users need more sophisticated tools to management content, and this proposal intends to deliver those tools.

Implementation

The large scope of the changes required to implement the objects may span multiple releases of Joomla. The following milestones outline how and when specific objects will be implemented.
Milestone 1: Access Control Lists, Joomla 1.6, Summer 2008
Milestone 2: Nested Categories and Publishing Controls, Joomla 1.7, Fall 2008
Milestone 3: Versioning and Tagging, Joomla 2.0, Winter 2008
Your solution for a single-page checkout on any website.
http://moolah-ecommerce.com

User avatar
tcp
Joomla! Ace
Joomla! Ace
Posts: 1548
Joined: Wed Sep 21, 2005 9:25 am
Location: Thailand
Contact:

Re: Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby tcp » Mon Mar 17, 2008 5:45 pm

White Paper: Content versioning for Joomla!

No surprise here - people want this feature. This proposal differs in two ways.
1) Language Varients - A language varient is basically a different version of content except that it is in a different language. Of course we may want different versions of the translation, so again we come back to versioning. The important question is to ask "What version of the content do we show to the user"?
2) Separation of Entity vs Data - An article has data that does not change and data that does. For example we want a standard reference, an Article ID, and we have information such as the Category ID and perhaps the publishing time. This stuff doesn't change. What does change is the data, ie, the actual content and who modifies the content. On a technical level we may need two different tables to represent the entity information that doesn't change and the actual content data that does change. Using standard SQL relationships we can easily create an article which is in fact an aggregate of the static data and the current state of the dynamic data.
Your solution for a single-page checkout on any website.
http://moolah-ecommerce.com

User avatar
tcp
Joomla! Ace
Joomla! Ace
Posts: 1548
Joined: Wed Sep 21, 2005 9:25 am
Location: Thailand
Contact:

Re: Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby tcp » Mon Mar 17, 2008 5:54 pm

White Paper: Replace Section/Category with Tagging

Again, great idea. My idea is to define tags with the static article data as well as with the dynamic data, then merge the two during rendering. For example the actual article may define the tags "Joomla 1.5 Content Management System". With a translation you will want to add tags that are either translations or perhaps something completely different. The exact implementation doesn't matter - tags are important these days. But, people still want structured content and categories should be the primary means of organizing the content.
Your solution for a single-page checkout on any website.
http://moolah-ecommerce.com

User avatar
tcp
Joomla! Ace
Joomla! Ace
Posts: 1548
Joined: Wed Sep 21, 2005 9:25 am
Location: Thailand
Contact:

Re: Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby tcp » Mon Mar 17, 2008 5:59 pm

White Paper: Section/Category Manager

I'm in complete agreement with Hackwar on this. Implementing this right isn't an easy task. I propose we revamp the content management in stages, categories coming in 1.7 . Actually the version doesn't matter - it will take time to implement and either we release in stages or release in a giant *WOMP*. I'd prefer to release in stages so that the benefit of our work is more immediately available, and the community has time to provide feedback and find/fix bugs.
Your solution for a single-page checkout on any website.
http://moolah-ecommerce.com

User avatar
tcp
Joomla! Ace
Joomla! Ace
Posts: 1548
Joined: Wed Sep 21, 2005 9:25 am
Location: Thailand
Contact:

Re: Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby tcp » Mon Mar 17, 2008 6:05 pm

White Paper: Save Triggers for Core Components

No shortage of good ideas. Only useful implementation of this proposal is to create a history of content and I think every component could benefit from this. I'm proposing something closer to actual content versioning where one can switch back-and-forth different versions.
Your solution for a single-page checkout on any website.
http://moolah-ecommerce.com

User avatar
tcp
Joomla! Ace
Joomla! Ace
Posts: 1548
Joined: Wed Sep 21, 2005 9:25 am
Location: Thailand
Contact:

Re: Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby tcp » Mon Mar 17, 2008 6:16 pm

White Paper: I want better ACL

My only immediate comment is that everyone wants ACLs. In may organizations ACLs on content can be applied to categories, ie, group A can do XYZ on all articles in categories 14. Working on categories would allow us to apply ACL enhancements to different components which I think is OK - how often does one want to give perms on a specific article. I'm sure this is debatable and my idea is just one idea.
Your solution for a single-page checkout on any website.
http://moolah-ecommerce.com

User avatar
newart
Joomla! Virtuoso
Joomla! Virtuoso
Posts: 3177
Joined: Fri Sep 02, 2005 10:06 am
Location: Solar system - Earth - European Union

Re: Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby newart » Mon Mar 17, 2008 8:14 pm

u've done a great work as the need of list is very full of objectives for the next joomla releases... on my own I have some problems to follow your thread too as there are "too many" threads with the same "problems" inside the white paper forum...
former Q&T WorkGroup Joomla member - Italian Translation Team Member

ianemv
Joomla! Apprentice
Joomla! Apprentice
Posts: 8
Joined: Tue Feb 26, 2008 8:53 am
Location: Philippines
Contact:

Re: Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby ianemv » Wed Mar 26, 2008 7:49 am

This is great objective. I've also tried other cms particularly exponentcms, creating sub-categories is no problem at all.

All you have to do is to create a section/page then a sub-page and sub-page of sub-page. Next thing is to put a module on its page. ACL is also easy, there's an icon wherein you can assign a group or user to its page or module. I believe this can be a good model for Joomla future version.
Literal URLs only.

vezvon
Joomla! Apprentice
Joomla! Apprentice
Posts: 42
Joined: Tue Feb 26, 2008 2:58 pm

Re: Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby vezvon » Sun Jan 18, 2009 7:38 pm

I agree with nested categories suggestion. It's really a must have for many sites. Other CMS solutions have this feature and Joomla should definitely add it if it wants to be the best among them.

piegus
Joomla! Apprentice
Joomla! Apprentice
Posts: 10
Joined: Wed Aug 13, 2008 1:06 pm

Re: Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby piegus » Mon Jan 19, 2009 10:19 am

+1

User avatar
newart
Joomla! Virtuoso
Joomla! Virtuoso
Posts: 3177
Joined: Fri Sep 02, 2005 10:06 am
Location: Solar system - Earth - European Union

Re: Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby newart » Fri Jan 30, 2009 1:08 pm

with Great surprise we have http://community.joomla.org/blogs/commu ... la-16.html - a very very good nested categories system new and ready for the 1.6 version !! ;) that's incredible !
former Q&T WorkGroup Joomla member - Italian Translation Team Member

daniel1
Joomla! Fledgling
Joomla! Fledgling
Posts: 1
Joined: Wed Feb 18, 2009 2:24 pm

Re: Article Refactoring: ACL, Nested Categories, Versioning, etc

Postby daniel1 » Wed Feb 18, 2009 2:37 pm

tcp wrote:Nested categories can be accomplished using a tree structure and pre-order tree traversal. This method of organizing data is easy to query from a database and lends itself to quick reading. Work in this area has already been done during the 2007 Google Summer of Code.


How do you do a tree structure and a pre-order tree traversal? I cannot find any information about this anywhere. I'd like to create nested categories:

Level 1
-Level 2
--Level 3

Do I have to create this arrangement manually by creating a special menu for every Level-2 page to show Level-3 articles?

I did find one plugin/extension that promises to help, but it's made in Flash and I don't want to use Flash for menus.

Thanks -- Dan


Return to “Under Review - Archived”

Who is online

Users browsing this forum: No registered users and 2 guests