Press

part of the ArsDigita Community System by

The Big Picture

Most Web services and all corporate sites have a "foobar.com in the news" page. This page lists, chronologically, articles in newspapers, magazines, etc. where the site or company is featured. This is a little bit different from the news module in that the publisher is mostly linking off to other publications and not trying to disseminate news him or herself.

Examples:

The press module supports site-wide press coverage (appropriate when one ACS installation is being used for a company) and subcommunity press coverage, e.g. for a service like arfdigita.org where many organizations are using the same ACS. Anyone who has the administrator role in a user group can edit the press coverage for that group.

Press items are displayed using a paging system. The module can be configured to display a set number of items on the main page, and will offer links to "previous" and "next" pages if available.

Press Coverage Templates

The module provides a flexible template system to support the wide range of formats needed for different sites and types of press coverage. A press item contains the followings bits of information:

A site administrator can define named templates to control how these pieces of information are displayed. The templates are written as ADP fragments using the variables listed above. For example, the system default template might format a press item as follows:

- <%=$article_name%> (<%=$article_pages>)
(<%=$publication_date%>) - "<%=$abstract>"

This template would be expanded into:

Dog's Life - Planet of the Dogs (pp 50-52)
January 1, 2100 - "They used to say that every dog has his day. Little did humans know that the collapse of their society at the beginning of this millenium would give rise to a new golden age of canine rule."

Hyperlinks to external publications and articles are inserted automatically and optionally tracked using the clickthrough module.

Under the Hood

The data model for press coverage is quite simple:


create sequence press_id_sequence start with 1;

create table press (
        press_id                integer primary key,
        -- if scope=public, this is press coverage for the whole system
        -- if scope=group, this is press coverage for a subcommunity
        scope                   varchar(20) not null,
        -- will be NULL if scope=public 
        group_id                references user_groups,
        -- determine how the item is formatted
        template_id             references press_templates,
        -- if true, keep the item active after it would normally expire. 
        important_p             char(1) default 'f' check (important_p in ('t','f')),
        -- the name of the publication, e.g. New York Times
        publication_name        varchar(100) not null,
        -- the home page of the publication, e.g., http://www.nytimes.com
        publication_link        varchar(200),
        -- we use this for sorting
        publication_date        date not null,
        -- this will override publication_date where we need to say "Oct-Nov 1998 issue"
        -- but will typically be NULL
        publication_date_desc   varchar(100),
        -- might be null if the entire publication is about the site or company
        article_title           varchar(100),
        -- if the article is Web-available
        article_link            varchar(200),
        -- optional page reference, e.g. page 100
        article_pages           varchar(100),
        -- quote from or summary of article
        abstract                varchar(4000),
        -- is the abstract in HTML or plain text (the default)
        html_p                  char(1) default 'f' check (html_p in ('t','f')),
        creation_date           date not null,
        creation_user           not null references users(user_id),
        creation_ip_address     varchar(50) not null
);

The data model for press coverage templates is equally straightforward:


create sequence press_template_id_sequence start with 2;

create table press_templates (
        template_id             integer primary key,
        -- we use this to select the template
        template_name           varchar(100) not null,
        -- the adp code fraqment
        template_adp            varchar(4000) not null
);

Note that template_id=1 is reserved for the site-wide default template.

Legal Transactions

From the Site Administration pages at /admin/press/ the site-wide administrator can do the following:

From the Maintainers admin pages at /press/admin/ the press coverage maintainers can:

You can change the site-wide behavior by setting the following parameters:


[ns/server/service/acs/press]
; maximum number of simultaneous press items to display on the press coverage page
DisplayMax=10
; number of days a press item remains active
ActiveDays=60
; do we use clickthrough tracking from the press coverage page?
ClickthroughP = 1

Limitations

The expiration behavior of press coverage is strange. Once an item surpasses the site-wide maximum number of active days and expires, the only way to turn it back on is to set the important_p flag and have it displayed permanently. It would make more sense to define a per-press-item expiration date.

Expired press items are available from the archives pages.

Any administrator can create public press coverage (the limitation is that this cannot be restricted).

Future Improvements