Press

part of the ArsDigita Community System by Ron Henderson

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 system 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 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:

<dl><b><%=$publication_name%></b> - <%=$article_name%> (<%=$article_pages>)
<dd>(<%=$publication_date%>) - "<%=$abstract>"</dd></dl>

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 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.

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

Future Improvements


ron@arsdigita.com