Version 4 > Developer Guides > Content Model > Workflow

Workflow

Workflow

v3v4
active published
disabled canceled
archived archived
  approved, queued, submitted, draft, expired, rejected

Workflow status determines how the content is handled and displayed to visitors. The states are numbered numerically, with lower values being "more live" and higher numbers being "more dead":

0. published - the content is live and fully interactive

1. archived - the content is publicly viewable, but will be ignored in menus and indexes and is not interactive

2. queued - the content is approved to be taken live automatically by the publishing queue

3. approved - the content is approved to be published manually

4. submitted - the content has been submitted for the approval of a moderator

5. draft - the content is not ready to go live

6. expired - the content is no longer approved for viewing, but reinstatement is likely

7. canceled - the content is longer longer approved for viewing, and reinstatement is unlikely

8. rejected - the content is junk, and can be deleted by garbage collectors

Note that archived content is still publicly viewable; if you mean to remove content entirely from your public website, but keep it on file, use "canceled" instead.

Save as draft

New content can be set to "draft" to indicate that work is in progress, and the content should not be published. If the content already exists and is published, but a new revision should not be published, then the revision status can also be set to draft. The content will publish, but the draft revisions will be ignored. The other workflow states have no meaning in revision management.

Managing Publication Times

Content is normally publishing manually, by using the publish tool in your CMS modules. To publish in a more automated fashion, use one of the following features:

Interval Publishing

Interval publishing (re-)publishes your content on regular intervals, either hourly, daily, or weekly. This is useful for content that updates regularly, but otherwise does not need to be dynamic for up-to-the-second or personalized views.

For example, "Upcoming Events" listings can change from day to day, as old events pass by. A page with an embedded listing of upcoming events can be set to publish daily, so that it can remain in a fast, static view, but still update every day with the newest event listings.

Note that daily publishing generally happens just after midnight, while weekly publishing generally happens on a Sunday. You can control the specifics in your cron configuration settings.

Queue

V4 has a content queuing system that will take content live at a gradual pace. This is useful if you "prime" your website with new announcements all at once (for example, entering all of your news articles on Monday morning), but you would prefer that those posts go live one at a time so that the website appears to update all week long instead of burying your readers in too much information at once.

To place new content in the publication queue, simply set its status to "queued".

Every hour, the cron system will decide whether anything should be pulled off the queue and published. To control the rate at which queued content is published, use the follow config settings:

# time to start publishing queued items
queue.start = 8
# time to stop publishing queued items
queue.end = 14
# how many queued items should be published each day
queue.perday = 2

With the example settings shown above, the queue will operate between 8:00 and 14:00 each day, and 2 items per day will be published during that interval. The queue operates on a first-in-first-out basis.

Scheduled Publishing

If you need to control exactly when a certain piece of content goes live, you can schedule it using the tasks feature.

To setup a task, add a content_date record with type “task”, and the start date/time set to when you want the task to execute. The description should be "publish" to take the content live. ("unpublish" and "archive" tasks are also supported by most types of content.)

The cron.pl script handles the scheduling; it runs hourly, so task execution times only have a granularity of 1 hour by default.

“Active” tasks will execute once; after execution completes, the system sets the end date of the task to the execution time, and changes the task status to “completed”. Tasks can also be set to “hourly”, “daily”, or “weekly”, in which case they will run periodically after the start date and before the end date, but interval publishing accomplishes the same thing in this case.