A web-based system, method and program product are provided for adding
content to a content object stored (e.g., a custom compilation or
prepublished work) in a data repository as a group of hierarchically
related content entities. Each noncontainer content object is preferably
stored as a separate entity in the data repository. Each content entity
is also stored as a row in a digital library index class as a collection
of attributes and references to related content entities and containers.
As the user selects desired objects for inclusion in a content object,
the system arranges the objects hierarchically, e.g., into volumes,
chapters and sections according to the order specified by the user. The
system then creates a file object (e.g., a CBO) defining the content
object that contains a list or outline of the container and noncontainer
entities selected, their identifiers, order and structure. This file
object is stored separately in the data repository. An aspect of the
invention is to provide permission checking. Occasionally, it may be
desired to prevent certain content entities from appearing a same
compilation as other content entities. For example, an author may specify
that his work can not be published in the same compilation as the work of
another author. Permission checking first requires associating each
container and noncontainer with any mutually exclusive containers or
noncontainers. For example, such association may be achieved by defining
a set of rules specifying containers and/or content entities that are
mutually exclusive. Upon selection of a container or noncontainer to add
to the compilation, the permission checking procedure determines if the
container or noncontainer is mutually exclusive of any other containers
or content objects, e.g., by consulting the rules. If so, the permission
checking procedure then analyzes the compilation outline to determine
whether any of the other mutually exclusive containers or noncontainers
already exists in the compilation. If so, then the selected container or
noncontainer is not added to the compilation and the user is notified
that the content selected may not be included in the compilation.
Otherwise, the content is added.