-- -- Copyright (C) 2001, 2002 MIT -- -- This file is part of dotLRN. -- -- dotLRN is free software; you can redistribute it and/or modify it under the -- terms of the GNU General Public License as published by the Free Software -- Foundation; either version 2 of the License, or (at your option) any later -- version. -- -- dotLRN is distributed in the hope that it will be useful, but WITHOUT ANY -- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -- FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -- details. -- -- -- create portals model -- -- @author arjun@openforce.net -- @author yon@openforce.net -- @creation-date 2001-10-01 -- @version $Id: portal-core-create.sql,v 1.1 2002/10/25 21:29:17 yon Exp $ -- create sequence portal_seq; create table portal_datasources ( datasource_id integer constraint portal_datasources_pk primary key, name varchar(200) constraint p_datasources_name_nn not null, shadeable_p char(1) default 't' constraint p_datasources_shadeable_p_nn not null constraint p_datasources_shadeable_p_ck check (shadeable_p in ('t', 'f')), hideable_p char(1) default 't' constraint p_datasources_hideable_p_nn not null constraint p_datasources_hideable_p_ck check (hideable_p in ('t', 'f')), description varchar(200) ); comment on table portal_datasources ' a portal datasource is the package of code that generates the content of a portal element. the foo-portlet packages create datasources. '; create table portal_datasource_parameters ( datasource_id constraint p_ds_params_datasource_id_fk references portal_datasources (datasource_id) on delete cascade constraint p_ds_params_datasource_id_nn not null, key varchar(200) constraint p_ds_params_key_nn not null, value varchar(200), config_required_p char(1) default 'f' constraint p_ds_params_cfg_req_p_nn not null constraint p_ds_params_cfg_req_p_ck check (config_required_p in ('t', 'f')), configured_p char(1) default 'f' constraint p_ds_params_cfg_p_nn not null constraint p_ds_params_cfg_p_ck check (configured_p in ('t', 'f')), constraint portal_datasource_params_pk primary key (datasource_id, key) ); comment on table portal_datasource_parameters ' maintains a set of default parameters for portal datsources. these are copied to a portal element when it is created. configuration semantics: config_required_p | configured_p | ----------------- | ----------------- | ---------------------------------- t | t | static configuration is provided | | for the portal elements. it can be | | changed later. ----------------- | ----------------- | ---------------------------------- t | f | the portal element must be | | configured when created. ----------------- | ----------------- | ---------------------------------- f | t | an optional default configuration | | is provided. ----------------- | ----------------- | ---------------------------------- f | f | configuration is optional and no | | default is provided. '; comment on column portal_datasource_parameters.config_required_p ' this parameter requires configuration. if configured_p is true then no action is needed at portal element creation since the portal element can simply use the default value provided. if configured_p is false then the portal element must provide a value for this parameter at creation time. '; comment on column portal_datasource_parameters.configured_p ' if true then a default value is provided for this parameter. '; create table portal_layouts ( layout_id constraint p_layouts_layout_id_fk references acs_objects (object_id) constraint portal_layouts_pk primary key, name varchar(200) constraint p_layouts_name_un unique constraint p_layouts_name_nn not null, description varchar(200), filename varchar(200), resource_dir varchar(200) ); comment on table portal_layouts ' a portal layout is a template that defines regions for portal elements to "fill in". Examples of layouts are two column and three column '; comment on column portal_layouts.filename ' the relative path to the layout template from the "portal/www/" directory without the ending ".adp" extension. Example: "layouts/simple2" '; comment on column portal_layouts.resource_dir ' XXX remove me '; create table portal_layout_regions ( layout_id constraint p_layout_regions_layout_id_fk references portal_layouts (layout_id) on delete cascade constraint p_layout_regions_layout_id_nn not null, region varchar(20) constraint p_layout_regions_region_nn not null, constraint portal_layout_regions_pk primary key (layout_id, region) ); comment on table portal_layout_regions ' this table describes each of the regions in each of the layouts. for example a two column layout would have two entries in this table: region = 1 and region = 2. '; comment on column portal_layout_regions.region ' an ordering of regions in a layout starting from 1 '; create table portal_themes ( theme_id constraint p_themes_theme_id_fk references acs_objects (object_id) constraint portal_themes_pk primary key, name varchar(200) constraint p_themes_name_un unique constraint p_themes_name_nn not null, description varchar(200), filename varchar(200), resource_dir varchar(200) ); comment on table portal_themes ' decoration templates for portal elements '; comment on column portal_themes.filename ' the relative path to the theme template from the "portal/www/" directory without the ending ".adp" extension. Example: "themes/deco-theme" '; comment on column portal_themes.resource_dir ' the relative path to the theme's resource directory from the "portal/www/" directory. The resource directory typically contains graphics files. Example: "themes/deco-theme" '; create table portals ( portal_id constraint portal_portal_id_fk references acs_objects (object_id) constraint portals_pk primary key, name varchar(200) default 'Untitled' constraint portal_name_nn not null, template_id constraint template_id_fk references portals (portal_id), theme_id constraint portal_theme_id_fk references portal_themes (theme_id) constraint portal_theme_id_nn not null ); comment on table portals ' portals are containers of one or more portal pages. '; comment on column portals.template_id ' a portal may have a template (another portal) '; comment on column portals.theme_id ' portals one theme for all it's contained pages '; create table portal_pages ( page_id constraint p_pages_page_id_fk references acs_objects (object_id) constraint portal_pages_pk primary key, name varchar(200) default 'Untitled Page' constraint p_pages_name_nn not null, portal_id constraint p_pages_portal_id_fk references portals (portal_id) constraint p_pages_portal_id_nn not null, layout_id constraint p_pages_layout_id_fk references portal_layouts (layout_id) constraint p_pages_layout_id_nn not null, sort_key integer constraint p_pages_sort_key_nn not null, constraint p_pages_portal_id_sort_key_un unique (portal_id, sort_key) ); create index p_pages_prtl_page_idx on portal_pages (portal_id, page_id); comment on table portal_pages ' portal pages are containers for portal elements. can be thought of as the "tabs" on a portal '; comment on column portal_pages.sort_key ' an ordering of the pages contained in the same portal starting from 0 for the first page and increasing in an gapless integer sequence '; create table portal_elements ( element_id integer constraint portal_elements_pk primary key, datasource_id constraint p_elements_datasource_id_fk references portal_datasources (datasource_id) on delete cascade constraint p_elements_datasource_id_nn not null, name varchar(200) constraint p_elements_name_nn not null, page_id constraint p_elements_page_id_fk references portal_pages (page_id) on delete cascade not null, region varchar(20) constraint p_elements_region_nn not null, sort_key integer constraint p_elements_sort_key_nn not null constraint p_elements_sort_key_ck check (sort_key > 0), state varchar(6) default 'full' constraint p_elements_state_ck check (state in ('full', 'shaded', 'hidden', 'pinned')), shadeable_p char(1) default 't' constraint p_elements_shadeable_p_nn not null constraint p_elements_shadeable_p_ck check (shadeable_p in ('t', 'f')), hideable_p char(1) default 't' constraint p_elements_hideable_p_nn not null constraint p_elements_hideable_p_ck check (hideable_p in ('t', 'f')), constraint p_elements_page_id_name_un unique (page_id, name) ); comment on table portal_elements ' the user-visible "box" on a portal page that displays the content of a datasource '; comment on column portal_elements.sort_key ' an ordering of elements contained in the same region on a page starting from 0 for the first element and increasing in an gapless integer sequence '; comment on column portal_elements.state ' one of the set "full" (normal), "shaded" (title bar only), "hidden" (not shown), or "pinned" (like full, but without state change links). portal themes impliment these different behaviors based on a given elements state '; create table portal_element_parameters ( parameter_id integer constraint portal_element_parameters_pk primary key, element_id constraint p_element_params_element_id_fk references portal_elements (element_id) on delete cascade constraint p_element_params_element_id_nn not null, key varchar(50) constraint p_element_params_key_nn not null, value varchar(200), config_required_p char(1) default 'f' constraint p_element_params_cfg_req_p_nn not null constraint p_element_params_cfg_req_p_ck check (config_required_p in ('t', 'f')), configured_p char(1) default 'f' constraint p_element_params_cfg_p_nn not null constraint p_element_params_cfg_p_ck check(configured_p in ('t', 'f')) ); create index p_element_params_elem_key_idx on portal_element_parameters (element_id, key); comment on table portal_element_parameters ' parameters on a per-element basis. the data structure is that of a multiset (aka bag) where multiple entries with the same key (for the same element) are allowed ?? XXXX. '; comment on column portal_element_parameters.config_required_p ' '; comment on column portal_element_parameters.configured_p ' ';