ExSite documentation and code makes regular use of the terms that are
- A user's access level determines the general level of access they
have to the ExSite system. It is normally a number from 0 to 3:
A page's access setting determines whether special access is needed to
view the page. Possible settings are:
- unknown, a member of the general public
- a normal member
- a manager or editor, who has limited ability to perform updates
to certain sections and plug-ins.
- a system administrator, who has unlimited access to the system
- public (anyone may view the page)
- members-only (must be a member of the section to view the page)
- administrators (must be an administrator
of the section to view the page)
- An administrator is a user who has permission to update/manage a
section. There are two types of administrator:
Administrators can have three different types of privileges:
- manager (site administrator) - a person with limited (level 2)
access to only certain sections
- system administrator - a person with unlimited (level 3) access to
- editor - can update editorial content, and add new pages
- designer - can update design content, and add new templates
- administrator - can publish and delete pages
- Administrator Key
- An administrator key is a token that gives a particular administrator access to a particular section.
- Alternate (page)
- A alternate page is a different version of a normal
web page. Reasons why you might want to maintain
different versions of the same page are:
- display the same content in different languages
- display the same content for different viewing devices/contexts
(eg. low-bandwidth versions, mobile versions, vision-impaired
- The "body" is the main element of a page, into which the primary
content is inserted. The body is typically the element that editors have control over. The page may include
other editorial elements (eg. sidebars, footers), and some pages may
not include a body element at all. However, body elements are
so common that some special functions are provided for body management.
- CMS (content management system)
- The CMS is the ExSite framework for handling display of web pages
in a browser. It encompasses the management of sections, pages, content, and revisions, as
well as interfacing arbitrary customized plug-ins to these.
- Compound Content Object
- A compound content object is a special type of content object that combines several other content
objects in a composite that is assembled using a miniature template.
- Configuration (file)
- Configuration files define system-wide settings that are used
throughout ExSite. The main configuration file is called
exsite.conf, and each plug-in can
provide its own configuration file to add to this. All configuration
data is read into the global %config hash where it is available
to all modules and plug-ins in the system.
- Configuration (object)
- Most objects can be configured in different
ways. For instance, pages can be configured to be public or
members-only, or to be static or dynamic. Each object may make its
configuration screens available in certain circumstances, allowing the
administrator to change the basic object behaviours and
- A container object is one that hold other
objects. For instance, a section is a
container that holds pages. A page is a container that holds content. A content object
is a container that holds revisions.
- Content (object)
- A "content object" is a named piece of content that can be handled
as a single unit. The content object can reference a file (eg. an
image, stylesheet, etc.) or a block of text (HTML, plain text, CSS).
When a page is being constructed, ExSite begins with a content object
named 'page'; this content object will contain tags
that in turn reference other content objects that are loaded and
inserted into the page. This process continues until no more content
objects are referenced, at which point the page is dispatched to its
destination. Individual content objects can be defined as being
editorial content or design content, depending on which
type of administrator should be allowed
to change it.
- Control Panel
- A plug-in has the option of providing an
administrator control panel for managing the internals of the plug-in
(eg. adding and removing special data from the plug-in). If a control
panel is available, the plug-in will display its icon on the
administrator web-top. This may be clicked on
to launch the control panel.
- DCD (dynamic content driver)
- The API for interfacing a plug-in to the
rest of ExSite is called a Dynamic Content Driver. It is very much a
driver in the traditional OS programming sense, as it provides a few
entry points to handle input (reads), output (writes), and other
control operations (ioctls). ExSite interacts with the plug-in
entirely through these basic DCD methods; the plug-in is free to
implement its internals using any other method that these basic API
methods interface to, such as:
- other private methods in the plug-in
- external programs, using IPC or client-server methods
- other languages, using perlxs or Inline methods
- A (graphic) designer is an administrator who has permission to
update design (eg. template) content.
- A dynamic object is one that is generated
at the same time it was requested for viewing. Typically this involves
fetching content straight from the database, and formatting it for display
in a web browser. While this gives the most up-to-date presentation of
content, it is also resource-intensive, and may not be appropriate. If
not, use static presentation instead.
- The WYSIWYG HTML editor, used for user-friendly content updates
- An administrator who has permission to update the editorial content
in pages (as opposed to a designer).
- Inheritance is a technique for sharing content between sections
and templates. Templates can inherit content
from other templates; that means they will draw missing content from
the inherited template, allowing the new template to define only those
features that are unique to itself. Sections
can also inherit library content from parent sections, so that
any content that is not found by searching the local section can be
found in the parent section(s).
- A library is a special type of page that
simply groups a bunch of related content
objects together, with no rules for displaying the content.
Libraries are used as an administrative convenience, as it makes it
easier to find miscellaneous content objects (eg. logos or documents)
if they are grouped by type or purpose. Although libraries have no
built-in display mechanism, there are numerous plug-ins that can display libraries in a variety of
formats, including as document downloads, slide shows, galleries,
- Some plug-ins are restricted, meaning that sections are not automatically granted permission
to use them. The section must have a license in order to start up the
plug-in. Licenses are handled similarly to services.
- A member is a person who has permission to log in to members-only
pages in a section. They typically have access level 1, and have no administrator
- Meta Data
- HTML meta data (titles, descriptions, keywords) can be defined in
the page configuration screens. Meta-data can
be inserted into a template using tags like this:
where meta can be replaced with title, description,
- A plug-in, so called because it takes the
form of a perl module.
- A menu is a set of links for convenient navigation of a web site. They are typically either hard-coded into
the template, or generated automatically using
a special menu plug-in.
- Native Section
- A native section publishes within (ie. in a
subfolder of) its parent section. If the native section has no parent,
then it publishes in the default document root of the web site.
Because the URL of the native section is determined by the parent section,
a native section only specifies its folder name as a publication location.
- An 'object' is just an abstract word meaning any discrete 'thing'
that the CMS works with. Objects include sections, pages, content, revisions, and plug-ins
- Overloading is a concept related to inheritance, in which content that is provided by an inherited template or library is
overloaded (over-ridden) by a local content object of the same name.
From the point of view of the current page or
template, the overloaded content is defined multiple times. Exsite
chooses the one that is "most local" to the current page.
- In the most general sense, a page is a container that holds content.
- Typically it is a viewable destination
in a section, which may be published to a
normal static HTML document, or viewed dynamically. A static page is typically
referenced using a traditional HTML document URL, eg.:
- In a more general sense, pages may also be libraries or templates,
which are special cases of the generic page object, in that they
also contain content.
- The 'page' content object is a standard
content object that is required to compose a page for viewing. When a
page must be constructed (for either publishing to a static file or for dynamic
viewing), the starting point is always a 'page' content object, which
is typically located in the page's template.
- A plug-in is a special module that can be added to ExSite to
provide customized functionality. A plug-in is technically a source
of content for a web site. ExSite will invoke the plug-in, ask for
its content, and then display this content in an appropriate manner.
A plug-in can provide two views:
A plug-in can provide either or both of these. Plug-ins make use of a
common security and I/O framework that ensures they can all play
together safely, even if they are unaware of each other.
- a public view, used for inserting special content into web pages
- an administrator view, or control
panel, used for generating control screens for the administrator
to control the plug-in.
- Pre-compiled (template)
- A pre-compiled template has gone through
partial construction as a page. The various templated content objects are identified and converted to
appropriate HTML, and the final result is published to an intermediate
"page". When real pages must be generated dynamically, ExSite starts from the precompiled
template, if possible, because it is faster than rebuilding the whole
template from scratch.
- A preview shows what an object (typically a
page, content object, or revision) looks like. Previews are shown dynamically. Because content objects and
revisions are shown in isolation (without a stylesheet), only a page
preview will provide an accurate preview of what the public will see.
An editable preview will include some extra markup to allow you
see what content you can edit, and will include some links to make
- A promotion occurs when you decide that an older revision is preferred over the newest revision.
The older revision is copied, and becomes the newest revision.
- Many objects can be published (written to
regular disk files) for better web serving performance. This
effectively makes the content static, but also
much faster. Publishing is also synonymous with approving content for
public view, and the act of publishing is what takes a working revision 'live'. For this reason, publishing is
also meaningful even for content that does not actually get written
out to disk files. The opposite of publishing is un-publishing.
- A revision is a particular instance of a content object. A given content object can
contain numerous revisions. New revisions are added every time the
content object is updated/edited. Old revisions are not deleted,
except by explicit action. There is no limit to the number of
revisions that can be kept on file. Two of the revisions are of
special importance. The current (or 'active') revision is the
most recently published revision of the
content, and the one that is currently approved for public view. The
newest revision is the most recently added revision, and the
one that will be approved for public view the next time the content is
published. (These two revisions will often be the same.) The
administrator can recover old revisions using rollbacks and promotions.
- A rollback occurs when you decide that the newest revision is inappropriate, and you want to revert
to the previous revision on file. The newest revision is discarded, and
the previous revision becomes the newest revision.
- A section is a group of pages that have a
common administrative policy (ie. the same group of editors and
administrators). Sections are published to a common set of folders,
and are represented in the static URL as a folder name, eg.
Sections can be siblings, eg.:
Or, they can be children of each other, eg.:
The base section of a website has a blank name, and is referenced
using the website's base name. Large web sites
may be comprised of multiple sections, which correspond to
departments, languages, functions, etc. Small sites will tend to
consist of a single section, and in this case 'web site' and 'section'
are often used synonymously.
- A service is just a plug-in with some special
- all self-referential links to the plug-in are handled by a particular
page (the 'service page'). This allows for more
sophisticated content handling.
- the plug-in can provide content to ExSite's search subsystem, for
customized indexing of plug-in content
- A session is a set of data values that are preserved across
requests for a given web site visitor. It is used to provide some
type of state for the visit. By default session data persists for 24
hours under continuous use, or 1 hour of idle time. At this point, the
session data is cleared and the "visit" is terminated. The session
data is available to developers in the global variable %session.
- The global variable %share is used for sharing data across
all components of ExSite. Among other things, it is used for sharing:
- global objects such as the current page and database handle
- POST data and other input
- messages between plug-ins, or between the CMS and plug-ins
- A site is a group of one or more sections
with a common subject. However, ExSite doesn't know or care about the
subject matter of a given section, so this distinction is not
important in a technical sense. For this reason, and because simple
sites tend to consist of a single section, the terms 'site' and
'section' are often used synonymously.
- Stand-alone Section
- A stand-alone section publishes to its own
private folders, and not within its parent section (if any). Because
there is no context to determine the section's location, the stand-alone
section must define the complete path to its publication folder, and
also provide the URL to its home page.
- A static object is simply one that has been
published to a normal file. Static objects are
easy and fast to serve to the web, and are compatible with all web
serving environments. However, they do not change until re-published,
so they may not be appropriate in some cases. If not, dynamic objects should be used instead.
- The store is a persistent data storage utility that is used to
store reuseable data in an efficient manner. It is used for saving session data, database caches, configuration
settings, and other data that is costly or even impossible to re-fetch.
The store can be accessed in raw form using the global variable
%store. By default it is disabled, and must be explicitly
activated to gain the benefits of using it.
- A tag is a special piece of text placed into some HTML that makes
reference to some other object in the CMS. The
CMS processes the tag to convert it into a form that the user's
browser will understand and display. For example, a reference to a content object will typically be converted to
either some HTML to display the content, or a URL to fetch the
content, depending on the type of tag. Tags resemble normal HTML, but
have a special format that the CMS can recognize and substitute with
some replacement HTML. Examples:
- Template (page)
- A template is a special kind of page that
provides a formatted framework for content to
be inserted into for viewing. Templates are a convenient way to group
all of the reuseable content objects
(eg. images, stylesheets, menus, etc.) that must be shared by
different pages. A section may define any
number of templates for its pages to use. Templates can also be
shared with other sections.
- Template (section)
- A section template is a special type of section that predefines a set of pages and their
contents. When a new section is created, you can use a section
template to automatically populate the section with a whole set of
pages and content.
- Un-publishing removes published files from disk, which will force
display of an object back to dynamic. Note
that this is different from deleting an object, which also removes it
from the database.
- A version is an alternative presentation of the same information.
A version is labeled with a version name, so that all objects of a particular version can be selected
together. Typically this feature is used to provide for managed
foreign-language translations, so that the CMS can know that object X
is a translation of object Y, and not an entirely different piece of
- Web Application
- A web application is a program that can be run through a web site.
From ExSite's perspective, it is synonymous with a plug-in.
- The "web-top" is analogous to the computer desktop, and consists
of a bunch of web application icons,
which may be clicked to launch their control