Summer of Code Proposal
Motivation
In building a content-oriented website, people need a way to specify
structure (how the pages and content items of the site inter-relate)
and provide navigation based on the structure.
Most existing tools for site-structuring and navigation in Drupal are problematic for two main reasons:
Drupal as Open Architecture
Wish I had seen this in August after OSCON, but it really strikes a chord. I’ve been a Drupal dev for a long time, and have recently been focusing on the newer “agile frameworks” in Python and Ruby, and I’ve found the same shortcoming: there is no component architecture, at least not on the level of Drupal with its myriad callback hooks and “monkey patching” facilities. I’ve been ruminating on the idea of following the Drupal architecture to build a similar framework on top of WSGI.
Useful Drupal Links
- API Documentation for Drupal core
- Contrib module project pages. Issue tracking, CVS browser, releases, documentation.
- Drupal Lists
- #drupal-support on freenode
Large organization authoring environment
cck, groups, categories hybrid
Categories represent areas of influence. They don’t correspond directly to location, rather locations are constructed by intersecting vocabularies and providing a means of display for the resulting nodes.
Groups can be associated with categories, as a single node. This node is also a cck node.
Some categories are also groups.
- Workflow / Actions
- na_arbitrator
This last is a work by Earl providing an API for node access modules to interoperate.
Currently, access modules directly insert records into the node_access table. If any module has inserted a “yes” record, access is granted.
na_arbitrator provides. Currently, there exists in the package a module workflow_access which ties node access to workflow state by role.
Relationships
- Node {has a} Workflow State
- Node {aggregates to} multiple categories
- Groups {have many}
- Managers
- Members
For each category/group, there are 3 local “roles”:
- Not a member
- Member
- Manager
A content item lives in the intersection of the union of each set of categories which share a container
For example:
?? (FAQs) AND (History OR Math) AND (“History: Early 20th” OR “Math: Trigonomery”) ??
Here, the first category is the content type. Each content type has fields, workflow, and behavior. Type determines workflow. This makes workflow and behavior global in the sense that it is the same in all departments. This is true at least in our first prototype.
It would be possible to add more “roles” to a group type using CCK user ref fields. Behaviors could then be associated with these local roles using a na_arbitrator node access module.
View Arguments in Menu
My immediate use-case is taxonomy browsing, but it would be very useful for all kinds of views.
4.8 on the Move: CCK Merge
It is very useful for a CMS to allow site creators to define new content types. This functionality is nicely implemented in Drupal with CCK, also known as content.module. CCK actually allows new types to be defined TTW (Through The Web).
For the 4.7 series, CCK has been developed parallel to core as a set of contrib modules. As the CCK feature set stabilizes, changes are made in core to ease the merge.
