From 13921534a4500ca0eaa255a72d7fe5849599002c Mon Sep 17 00:00:00 2001 From: jensp Date: Mon, 21 Jan 2019 16:42:12 +0000 Subject: [PATCH] First part of backporting new themeing system from 7.0 git-svn-id: https://svn.libreccm.org/ccm/trunk@5800 8810af33-2d31-482b-a856-94f89814c4df --- ccm-pages/application.xml | 29 ++++ .../pdl/org/libreccm/pagemodel/PageModel.pdl | 116 ++++++++++++++ ccm-pages/pdl/org/librecms/pages/Pages.pdl | 32 ++++ ccm-pages/sql/ccm-pages/oracle-se-create.sql | 3 + ccm-pages/sql/ccm-pages/postgres-create.sql | 4 + ccm-pages/src/ccm-pages.config | 3 + ccm-pages/src/ccm-pages.load | 14 ++ .../libreccm/pagemodel/ContainerModel.java | 36 +++++ .../pagemodel/ContainerModelCollection.java | 22 +++ .../src/org/libreccm/pagemodel/PageModel.java | 151 ++++++++++++++++++ ccm-pages/src/org/librecms/pages/Pages.java | 80 ++++++++++ 11 files changed, 490 insertions(+) create mode 100644 ccm-pages/application.xml create mode 100644 ccm-pages/pdl/org/libreccm/pagemodel/PageModel.pdl create mode 100644 ccm-pages/pdl/org/librecms/pages/Pages.pdl create mode 100644 ccm-pages/sql/ccm-pages/oracle-se-create.sql create mode 100644 ccm-pages/sql/ccm-pages/postgres-create.sql create mode 100644 ccm-pages/src/ccm-pages.config create mode 100644 ccm-pages/src/ccm-pages.load create mode 100644 ccm-pages/src/org/libreccm/pagemodel/ContainerModel.java create mode 100644 ccm-pages/src/org/libreccm/pagemodel/ContainerModelCollection.java create mode 100644 ccm-pages/src/org/libreccm/pagemodel/PageModel.java create mode 100644 ccm-pages/src/org/librecms/pages/Pages.java diff --git a/ccm-pages/application.xml b/ccm-pages/application.xml new file mode 100644 index 000000000..aa1105f0a --- /dev/null +++ b/ccm-pages/application.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + A backport of the new Pages application from 7.0.0. The Pages + application replaces ccm-navigation and the current JSP templates 7.0.0. + Pages has been backported to ease the migration to 7.0.0. This + application only if the ccm-theming application (another backport + from 7.0.0) is also installed. + + + \ No newline at end of file diff --git a/ccm-pages/pdl/org/libreccm/pagemodel/PageModel.pdl b/ccm-pages/pdl/org/libreccm/pagemodel/PageModel.pdl new file mode 100644 index 000000000..88e2b217c --- /dev/null +++ b/ccm-pages/pdl/org/libreccm/pagemodel/PageModel.pdl @@ -0,0 +1,116 @@ +model org.libreccm.pagemodel; + +import com.arsdigita.web.Application; +import com.arsdigita.kernel.ACSObject; + +import com.arsdigita.cms.ContentItem; + +object type PageModel { + + BigDecimal[1..1] pageModelId = ccm_page_models.page_model_id INTEGER; + + String[1..1] uuid = ccm_page_models.uuid VARCHAR(38); + + String[1..1] modelUuid = ccm_page_models.model_uuid VARCHAR(38); + + String[1..1] name = ccm_page_models.name VARCHAR(512); + + String[1..1] pageModelVersion = ccm_page_models.page_model_version VARCHAR(256); + + Date[0..1] lastModified = ccm_page_models.last_modified TIMESTAMP; + + String[0..1] title = ccm_page_models.title VARCHAR(1024); + + String[0..1] description = ccm_page_models.description VARCHAR(4096); + + String[0..1] type = ccm_page_models.type VARCHAR(256); + + Application[1..1] application = join ccm_page_models.application_id + to applications.application_id; + + ContainerModel[0..n] containerModels = join ccm_page_models.page_model_id + to ccm_page_model_container_models.page_model_id; + + object key(pageModelId); +} + +object type ContainerModel { + + BigDecimal[1..1] containerModelId = ccm_page_model_container_models.container_model_id INTEGER; + + String[1..1] uuid = ccm_page_model_container_models.uuid VARCHAR(38); + + String[1..1] containerUuid = ccm_page_model_container_models.container_uuid VARCHAR(38); + + String[1..1] key = ccm_page_model_container_models.key VARCHAR(256); + + ComponentModel[0..n] componentModel = join ccm_page_model_container_models.container_model_id + to ccm_page_model_component_models.container_model_id; + + object key(containerModelId); +} + +object type ComponentModel { + + BigDecimal[1..1] componentModelId = ccm_page_model_component_models.component_model_id; + + String[1..1] uuid = ccm_page_model_component_models.uuid VARCHAR(38); + + String[1..1] componentModelUuid = ccm_page_model_component_models.component_model_uuid VARCHAR(38); + + String[0..1] idAttribute = ccm_page_model_component_models.id_attribute VARCHAR(255); + + String[0..1] classAttribute = ccm_page_model_component_models.class_attribute VARCHAR(512); + + String[0..1] styleAttribute = ccm_page_model_component_models.style_attribute VARCHAR(1024); + + String[0..1] key = ccm_page_model_component_models.component_key VARCHAR(255); + + object key(componentModelId); +} + +object type CategoryTreeComponent extends ComponentModel { + + Boolean[0..1] showFullTree = ccm_page_model_category_tree_components.show_full_tree BIT; + + reference key(ccm_page_model_category_tree_components.component_model_id); +} + +object type ContentItemComponent extends ComponentModel { + + String[0..1] mode = ccm_page_model_content_item_components.mode VARCHAR(255); + + reference key(ccm_page_model_item_list_components.component_model_id); +} + +object type ItemListComponent extends ComponentModel { + + Boolean[0..1] descending = ccm_page_model_item_list_components.descending BIT; + + String[0..1] limitToType = ccm_page_model_item_list_components.limit_to_type VARCHAR(255); + + Integer[0..1] pageSize = ccm_page_model_item_list_components.page_size INTEGER; + + String[0..1] listOrder = ccm_page_model_item_list_components.list_order VARCHAR(255); + + reference key(ccm_page_model_item_list_components.component_model_id); +} + +object type CategorizedItemComponent extends ContentItemComponent { + + reference key(ccm_page_model_categorized_item_components.component_model_id); +} + +object type GreetingItemComponent extends ContentItemComponent { + + reference key(ccm_page_model_greeting_item_components.component_model_id); +} + +object type FixedContentItemComponent extends ContentItemComponent { + + ContentItem[0..1] contentItem = join ccm_page_model_fixed_content_item_components.content_item_id + to cms_items.item_id; + + reference key(ccm_page_model_fixed_content_item_components.component_model_id); +} + diff --git a/ccm-pages/pdl/org/librecms/pages/Pages.pdl b/ccm-pages/pdl/org/librecms/pages/Pages.pdl new file mode 100644 index 000000000..3464dc402 --- /dev/null +++ b/ccm-pages/pdl/org/librecms/pages/Pages.pdl @@ -0,0 +1,32 @@ +model org.librecms.pages.Pages; + +import com.arsdigita.web.Application; +import com.arsdigita.kernel.ACSObject; + +import com.arsdigita.subsite.Site; + +import com.arsdigita.london.terms.Domain; + +import org.libreccm.pagemodel.PageModel; + +object type Pages extends Application { + + Site[1..1] site = join ccm_pages.site_id + to subsite_sites.site_id; + + Domain[1..1] domainCategory = join ccm_pages.domain_category_id + to cat_categories.category_id; + + reference key(ccm_pages.page_id); +} + +object type Page extends ACSObject { + + reference key(ccm_pages_pages.page_id); + + PageModel[1..1] indexPageModel = join ccm_pages_pages.index_page_model_id + to ccm_page_models.page_model_id; + + PageModel[1..1] itemPageModel = join ccm_pages_pages.item_page_model_id + to ccm_page_models.page_model_id; +} diff --git a/ccm-pages/sql/ccm-pages/oracle-se-create.sql b/ccm-pages/sql/ccm-pages/oracle-se-create.sql new file mode 100644 index 000000000..b0de6e153 --- /dev/null +++ b/ccm-pages/sql/ccm-pages/oracle-se-create.sql @@ -0,0 +1,3 @@ +@ ddl/oracle-se/create.sql + +@ ddl/oracle-se/deferred.sql diff --git a/ccm-pages/sql/ccm-pages/postgres-create.sql b/ccm-pages/sql/ccm-pages/postgres-create.sql new file mode 100644 index 000000000..38209a696 --- /dev/null +++ b/ccm-pages/sql/ccm-pages/postgres-create.sql @@ -0,0 +1,4 @@ +begin; +\i ddl/postgres/create.sql +\i ddl/postgres/deferred.sql +end; diff --git a/ccm-pages/src/ccm-pages.config b/ccm-pages/src/ccm-pages.config new file mode 100644 index 000000000..0ece1ac86 --- /dev/null +++ b/ccm-pages/src/ccm-pages.config @@ -0,0 +1,3 @@ + + + diff --git a/ccm-pages/src/ccm-pages.load b/ccm-pages/src/ccm-pages.load new file mode 100644 index 000000000..90254e429 --- /dev/null +++ b/ccm-pages/src/ccm-pages.load @@ -0,0 +1,14 @@ + + + +
+ + + + + + + + + + diff --git a/ccm-pages/src/org/libreccm/pagemodel/ContainerModel.java b/ccm-pages/src/org/libreccm/pagemodel/ContainerModel.java new file mode 100644 index 000000000..3cd4bb261 --- /dev/null +++ b/ccm-pages/src/org/libreccm/pagemodel/ContainerModel.java @@ -0,0 +1,36 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.libreccm.pagemodel; + +import com.arsdigita.domain.DomainObject; +import com.arsdigita.persistence.DataObject; +import com.arsdigita.persistence.OID; + +import java.math.BigDecimal; + +/** + * + * @author Jens Pelzetter + */ +public class ContainerModel extends DomainObject { + + public static final String BASE_DATA_OBJECT_TYPE = "org.libreccm.pagemodel.ContainerModel"; + + public ContainerModel(final DataObject dataObject) { + super(dataObject); + } + + public ContainerModel(final OID oid) { + super(oid); + } + + public ContainerModel(final BigDecimal containerModelId) { + this(new OID(BASE_DATA_OBJECT_TYPE, containerModelId)); + } + + + +} diff --git a/ccm-pages/src/org/libreccm/pagemodel/ContainerModelCollection.java b/ccm-pages/src/org/libreccm/pagemodel/ContainerModelCollection.java new file mode 100644 index 000000000..d3ee49300 --- /dev/null +++ b/ccm-pages/src/org/libreccm/pagemodel/ContainerModelCollection.java @@ -0,0 +1,22 @@ +package org.libreccm.pagemodel; + +import com.arsdigita.domain.DomainCollection; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.persistence.DataCollection; + +/** + * + * @author Jens Pelzetter + */ +public class ContainerModelCollection extends DomainCollection { + + public ContainerModelCollection(final DataCollection dataCollection) { + super(dataCollection); + } + + public ContainerModel getContainerModel() { + return (ContainerModel) DomainObjectFactory + .newInstance(m_dataCollection.getDataObject()); + } + +} diff --git a/ccm-pages/src/org/libreccm/pagemodel/PageModel.java b/ccm-pages/src/org/libreccm/pagemodel/PageModel.java new file mode 100644 index 000000000..4973a757b --- /dev/null +++ b/ccm-pages/src/org/libreccm/pagemodel/PageModel.java @@ -0,0 +1,151 @@ +package org.libreccm.pagemodel; + +import com.arsdigita.domain.DomainObject; +import com.arsdigita.persistence.DataCollection; +import com.arsdigita.persistence.DataObject; +import com.arsdigita.persistence.OID; +import com.arsdigita.web.Application; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * + * @author Jens Pelzetter + */ +public class PageModel extends DomainObject { + + public static final String BASE_DATA_OBJECT_TYPE = "org.libreccm.pagemodel.PageModel"; + + public static final String PAGE_MODEL_ID = "pageModelId"; + + public static final String UUID = "uuid"; + + public static final String MODEL_UUID = "modelUuid"; + + public static final String NAME = "name"; + + public static final String PAGE_MODEL_VERSION = "pageModelVersion"; + + public static final String LAST_MODIFIED = "lastModified"; + + public static final String TITLE = "title"; + + public static final String DESCRIPTION = "description"; + + public static final String TYPE = "type"; + + public static final String APPLICATION = "application"; + + public static final String CONTAINER_MODELS = "containerModels"; + + public PageModel(final OID oid) { + super(oid); + } + + public PageModel(final BigDecimal pageModelId) { + this(new OID(BASE_DATA_OBJECT_TYPE, pageModelId)); + } + + public PageModel(final DataObject dataObject) { + super(dataObject); + } + + public BigDecimal getPageModelId() { + return (BigDecimal) get(PAGE_MODEL_ID); + } + + protected void setPageModelId(final BigDecimal pageModelId) { + set(PAGE_MODEL_ID, pageModelId); + } + + public String getUuid() { + return (String) get(UUID); + } + + protected void setUuid(final String uuid) { + set(UUID, uuid); + } + + public String getModelUuid() { + return (String) get(MODEL_UUID); + } + + protected void setModelUuid(final String modelUuid) { + set(MODEL_UUID, modelUuid); + } + + public String getName() { + return (String) get(NAME); + } + + public void setName(final String name) { + set(NAME, name); + } + + public String getVersion() { + return (String) get(PAGE_MODEL_VERSION); + } + + protected void setVersion(final String pageModelVersion) { + + set(PAGE_MODEL_VERSION, pageModelVersion); + } + + public Date getLastModified() { + return (Date) get(LAST_MODIFIED); + } + + protected void setLastModified(final Date lastModified) { + set(LAST_MODIFIED, lastModified); + } + + public String getTitle() { + return (String) get(TITLE); + } + + protected void setTitle(final String title) { + set(TITLE, title); + } + + public String getDescription() { + return (String) get(DESCRIPTION); + } + + public void setDescription(final String description) { + set(DESCRIPTION, description); + } + + public Application getApplication() { + return (Application) get(APPLICATION); + } + + public void setApplication(final Application application) { + setAssociation(APPLICATION, application); + } + + public String getType() { + return (String) get(TYPE); + } + + public void setType(final String type) { + set(TYPE, type); + } + + public ContainerModelCollection getContainerModels() { + final DataCollection dataCollection = (DataCollection) get( + CONTAINER_MODELS); + + return new ContainerModelCollection(dataCollection); + } + + protected void addContainerModel(final ContainerModel containerModel) { + + add(CONTAINER_MODELS, containerModel); + } + + protected void removeContainerModel(final ContainerModel containerModel) { + + remove(CONTAINER_MODELS, containerModel); + } +} diff --git a/ccm-pages/src/org/librecms/pages/Pages.java b/ccm-pages/src/org/librecms/pages/Pages.java new file mode 100644 index 000000000..1e7fcefd1 --- /dev/null +++ b/ccm-pages/src/org/librecms/pages/Pages.java @@ -0,0 +1,80 @@ +package org.librecms.pages; + +import com.arsdigita.categorization.Category; +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.london.terms.Domain; +import com.arsdigita.persistence.DataObject; +import com.arsdigita.persistence.OID; +import com.arsdigita.subsite.Site; +import com.arsdigita.web.Application; + +import java.math.BigDecimal; + +public class Pages extends Application { + + public static final String BASE_DATA_OBJECT_TYPE = "org.librecms.cms.Pages"; + + public static final String SITE = "site"; + public static final String DOMAIN_CATEGORY = "domainCategory"; + + public Pages(final OID oid) { + super(oid); + } + + public Pages(final DataObject dataObject) { + super(dataObject); + } + + public Pages(final BigDecimal pagesId) throws DataObjectNotFoundException { + + this(new OID(BASE_DATA_OBJECT_TYPE, pagesId)); + } + + public Site getSite() { + + final Object obj = get(SITE); + + if (obj == null) { + return null; + } else { + return (Site) obj; + } + + } + + public void setSite(final Site site) { + + setAssociation(SITE, site); + } + + public Domain getCategoryDomain() { + + final Object dataObject = get(DOMAIN_CATEGORY); + + if (dataObject == null) { + return null; + } else { + final Category domainCategory = (Category) dataObject; + + return Domain.findByModel(domainCategory); + } + } + + protected void setCategoryDomain(final Domain domain) { + + final Category domainCategory; + if (domain == null) { + domainCategory = null; + } else { + domainCategory = domain.getModel(); + } + + setAssociation(DOMAIN_CATEGORY, domainCategory); + } + + @Override + public String getServletPath() { + return "/"; + } + +}