diff --git a/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl b/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl new file mode 100644 index 000000000..0d3fa1903 --- /dev/null +++ b/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl @@ -0,0 +1,68 @@ +// +// Copyright (C) 2010 Jens Pelzetter, for the Center of Social Politics (ZeS) of +// the University of Bremen +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation; either version 2.1 of +// the License, or (at your option) any later version. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +model com.arsdigita.cms.contenttypes; + +import com.arsdigita.cms.ContentPage; + +//PDL definition for a commons base type for orgnizations, departments, projects etc. +object type GenericOrganizationalUnit extends ContentPage { + String[0..1] orgaunit_name = cms_organizationalunit.name VARCHAR(256); + + String[0..1] addendum = cms_organizationalunit.nameaddendum VARCHAR(512); + + reference key (cms_organizationalunits.organizationalunit_id); +} + +//Parent <-> child relation organizationalunits to build department structures etc. +association { + + GenericOrganizationalUnit[0..n] children = join cms_organizationalunits.organizationalunit_id + to cms_organizationalunit_organizationalunit_map.children_id, + join cms_organizationalunit_organizationalunit_map.parent_id + to cms_organizationalunits.organizationalunit_id; + + GenericOrganizationalUnit[0..1] parent = join cms_organizationalunits.organizationalunit_id + to cms_organizationalunit_organizationalunit_map.parent_id, + join cms_organizationalunit_organizationalunit_map.children_id + to cms_organizationalunits.organizationalunit_id; + + //Link attribute, allows it to customize the order which the childs will be shown. + BigDecimal[0..1] order = cms_organizationalunit_organizationalunit_map.order INTEGER; +} + +//Link for contact points. +association { + + GenericOrganizationalUnit[0..1] organizationalunit = join cms_contacts.contact_id + to cms_organizationalunit_contact_map.contact_id, + join cms_organizationalunit_contact_map.organizationalunit_id + to cms_organizationalunits.organizationalunit_id; + + GenericContact[0..n] contacts = join cms_organizationalunits.organizationalunit_id + to cms_organizationalunit_contact_map.organizationalunit_id, + join cms_organizationalunit_contact_map.contact_id + to cms_contacts.contact_id; + + //Some link attributes. + String contact_type = cms_organizationalunit_contact_map.contact_type VARCHAR(100); + BigDecimal contact_order = cms_organizationalunit_contact_map.contact_order INTEGER; + +} \ No newline at end of file diff --git a/ccm-cms/src/WEB-INF/content-types/GenericOrganizationalUnit.xml b/ccm-cms/src/WEB-INF/content-types/GenericOrganizationalUnit.xml new file mode 100644 index 000000000..a71fff68e --- /dev/null +++ b/ccm-cms/src/WEB-INF/content-types/GenericOrganizationalUnit.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ContenttypesResources.properties b/ccm-cms/src/com/arsdigita/cms/contenttypes/ContenttypesResources.properties index fd029cad7..2f569e12b 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ContenttypesResources.properties +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ContenttypesResources.properties @@ -72,3 +72,21 @@ cms.contenttypes.ui.contact.contactEntry.key.fax=Fax cms.contenttypes.ui.contact.contactEntry.key.im=Instant Messenger cms.contenttypes.ui.contact.contactEntry.key.www=Homepage +cms.contenttypes.ui.genericorganunit.addendum=Addendum +cms.contenttypes.ui.genericorgaunit.add_child=Add child +cms.contenttypes.ui.genericorgaunit.add_contact=Add contact +#cms.contenttypes.ui.genericorganunit.basic_properties= +cms.contenttypes.ui.genericorgaunit.child.action=Action +cms.contenttypes.ui.genericorgaunit.child.name=Name +cms.contenttypes.ui.genericorgaunit.childs.none=No childs +#cms.contenttypes.ui.genericorgaunit.child.order= +cms.contenttypes.ui.genericorgaunit.confirm_delete=Confirm delete +cms.contenttypes.ui.genericorgaunit.contact.action=Action +cms.contenttypes.ui.genericorgaunit.contacts.none=No contacts +cms.contenttypes.ui.genericorgaunit.contact.title=Contacts +cms.contenttypes.ui.genericorgaunit.contact.type=Type +#cms.contenttypes.ui.genericorgaunit.contact.order= +cms.contenttypes.ui.genericorgaunit.edit_basic_properties=Base properties +cms.contenttypes.ui.genericorganunit.name=Name +cms.contenttypes.ui.genericorgaunit.select_child=Select child +cms.contenttypes.ui.genericorgaunit.select_contact=Select contact diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnit.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnit.java new file mode 100644 index 000000000..c811bb910 --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnit.java @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes; + +import com.arsdigita.cms.ContentType; +import com.arsdigita.cms.ContentPage; +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.persistence.DataCollection; +import com.arsdigita.persistence.DataObject; +import com.arsdigita.persistence.OID; +import com.arsdigita.util.Assert; +import java.math.BigDecimal; + +/** + * + * @author Jens Pelzetter + */ +public class GenericOrganizationalUnit extends ContentPage { + + public final static String ORGAUNIT_NAME = "ORGAUNIT_NAME"; + public final static String ADDENDUM = "ORGAUNIT_ADDENDUM"; + public final static String CONTACTS = "CONTACTS"; + public final static String CONTACT_TYPE = "CONTACT_TYPE"; + public final static String CONTACT_ORDER = "CONTACT_ORDER"; + public final static String ORGAUNIT_CHILDREN = "CHILDREN"; + public final static String CHILDREN_ORDER = "CHILDREN_ORDER"; + public final static String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.contenttypes.GenericOrganizationalUnit"; + + public GenericOrganizationalUnit() { + this(BASE_DATA_OBJECT_TYPE); + } + + public GenericOrganizationalUnit(BigDecimal id) throws DataObjectNotFoundException { + this(new OID(BASE_DATA_OBJECT_TYPE, id)); + } + + public GenericOrganizationalUnit(OID oid) throws DataObjectNotFoundException { + super(oid); + } + + public GenericOrganizationalUnit(DataObject obj) { + super(obj); + } + + public GenericOrganizationalUnit(String type) { + super(type); + } + + @Override + public void beforeSave() { + super.beforeSave(); + + Assert.exists(getContentType(), ContentType.class); + } + + public String getOrgaUnitName() { + return (String) get(ORGAUNIT_NAME); + } + + public void setOrgaUnitName(String orgaUnitName) { + set(ORGAUNIT_NAME, orgaUnitName); + } + + public String getAddendum() { + return (String) get(ADDENDUM); + } + + public void setAddendum(String addendum) { + set(ADDENDUM, addendum); + } + + public GenericOrganizationalUnitContactCollection getContacts() { + return new GenericOrganizationalUnitContactCollection((DataCollection) get(CONTACTS)); + } + + public void addContact(GenericContact contact, String contactType) { + Assert.exists(contact, GenericContact.class); + + DataObject link = add(CONTACTS, contact); + + link.set(CONTACT_TYPE, contactType); + link.set(CONTACT_ORDER, BigDecimal.valueOf(getContacts().size())); + } + + public void removeContact(GenericContact contact) { + Assert.exists(contact, GenericContact.class); + remove(CONTACTS, contact); + } + + public boolean hasContacts() { + return !this.getContacts().isEmpty(); + } + + public GenericOrganizationalUnitChildrenCollection getOrgaUnitChildren() { + return new GenericOrganizationalUnitChildrenCollection((DataCollection) get(ORGAUNIT_CHILDREN)); + } + + public void addOrgaUnitChildren(GenericOrganizationalUnit child) { + Assert.exists(child, GenericOrganizationalUnit.class); + + DataObject link = add(ORGAUNIT_CHILDREN, child); + + link.set(CHILDREN_ORDER, BigDecimal.valueOf(getContacts().size())); + } + + public void removeOrgaUnitChildren(GenericOrganizationalUnit child) { + Assert.exists(child, GenericOrganizationalUnit.class); + remove(ORGAUNIT_CHILDREN, child); + } + + public boolean hasOrgaUnitChildren() { + return !this.getOrgaUnitChildren().isEmpty(); + } +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitChildrenCollection.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitChildrenCollection.java new file mode 100644 index 000000000..1742000a6 --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitChildrenCollection.java @@ -0,0 +1,39 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.contenttypes; + +import com.arsdigita.domain.DomainCollection; +import com.arsdigita.persistence.DataCollection; +import java.math.BigDecimal; + +/** + * + * @author jensp + */ +public class GenericOrganizationalUnitChildrenCollection extends DomainCollection { + + public static final String ORDER = "link.contact_order asc"; + public static final String CHILDREN_ORDER = "link.children_order"; + + public GenericOrganizationalUnitChildrenCollection(DataCollection dataCollection) { + super(dataCollection); + + m_dataCollection.addOrder(ORDER); + } + + public String getChildrenOrder() { + String retVal = ((BigDecimal) m_dataCollection.get(CHILDREN_ORDER)).toString(); + + if (retVal == null || retVal.isEmpty()) { + retVal = String.valueOf(this.getPosition()); + } + + return retVal; + } + + public GenericOrganizationalUnit getOrgaUnitChild() { + return new GenericOrganizationalUnit(m_dataCollection.getDataObject()); + } +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitContactCollection.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitContactCollection.java new file mode 100644 index 000000000..fafce6b94 --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericOrganizationalUnitContactCollection.java @@ -0,0 +1,48 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.contenttypes; + +import com.arsdigita.domain.DomainCollection; +import com.arsdigita.persistence.DataCollection; +import java.math.BigDecimal; + +/** + * + * @author jensp + */ +public class GenericOrganizationalUnitContactCollection extends DomainCollection { + + public static final String ORDER = "link.contact_order asc"; + public static final String CONTACT_TYPE = "link.contact_type"; + public static final String CONTACT_ORDER = "link.contact_order"; + + + public GenericOrganizationalUnitContactCollection(DataCollection dataCollection) { + super(dataCollection); + + m_dataCollection.addOrder(ORDER); + } + + // Get the contact type of the link + public String getContactType() { + return (String) m_dataCollection.get(CONTACT_TYPE); + } + + // Get the contact order of the link + public String getContactOrder() { + String retVal = ((BigDecimal) m_dataCollection.get(CONTACT_ORDER)).toString(); + + if(retVal == null || retVal.isEmpty()) { + retVal = String.valueOf(this.getPosition()); + } + + return retVal; + } + + public GenericContact getContact() { + return new GenericContact(m_dataCollection.getDataObject()); + } + +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitAddChildForm.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitAddChildForm.java new file mode 100644 index 000000000..b091a8a20 --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitAddChildForm.java @@ -0,0 +1,68 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.FormProcessException; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.SaveCancelSection; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.cms.ContentType; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil; +import com.arsdigita.cms.ui.ItemSearchWidget; +import com.arsdigita.cms.ui.authoring.BasicItemForm; +import org.apache.log4j.Logger; + +/** + * + * @author Jens Pelzetter + */ +public class GenericOrganizationalUnitAddChildForm extends BasicItemForm { + + private static final Logger s_log = Logger.getLogger( + GenericOrganizationalUnitAddChildForm.class); + private GenericOrganizationalUnitPropertiesStep m_step; + private ItemSearchWidget m_itemSearch; + private SaveCancelSection m_saveCancelSection; + private final String ITEM_SEARCH = "orgaunitChild"; + private ItemSelectionModel m_itemModel; + + public GenericOrganizationalUnitAddChildForm(ItemSelectionModel itemModel) { + super("ChildAddForm", itemModel); + m_itemModel = itemModel; + } + + @Override + protected void addWidgets() { + add(new Label((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.genericorgaunit.select_child").localize())); + this.m_itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType.findByAssociatedObjectType(GenericOrganizationalUnit.class.getName())); + add(this.m_itemSearch); + } + + + @Override + public void init(FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + PageState state = fse.getPageState(); + + setVisible(state, true); + } + + @Override + public void process(FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + PageState state = fse.getPageState(); + GenericOrganizationalUnit parent = (GenericOrganizationalUnit) getItemSelectionModel().getSelectedObject(state); + + if (!(this.getSaveCancelSection().getCancelButton().isSelected(state))) { + parent.addOrgaUnitChildren((GenericOrganizationalUnit) data.get(ITEM_SEARCH)); + } + + init(fse); + } +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitChildTable.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitChildTable.java new file mode 100644 index 000000000..90901bba2 --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitChildTable.java @@ -0,0 +1,224 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Component; +import com.arsdigita.bebop.ControlLink; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.Table; +import com.arsdigita.bebop.event.TableActionEvent; +import com.arsdigita.bebop.event.TableActionListener; +import com.arsdigita.bebop.table.TableCellRenderer; +import com.arsdigita.bebop.table.TableColumn; +import com.arsdigita.bebop.table.TableColumnModel; +import com.arsdigita.bebop.table.TableModel; +import com.arsdigita.bebop.table.TableModelBuilder; +import com.arsdigita.bebop.util.GlobalizationUtil; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitChildrenCollection; +import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil; +import com.arsdigita.cms.dispatcher.Utilities; +import com.arsdigita.util.LockableImpl; +import java.math.BigDecimal; + +/** + * + * @author jensp + */ +public class GenericOrganizationalUnitChildTable extends Table implements + TableActionListener { + + private final String TABLE_COL_EDIT = "table_col_edit"; + private final String TABLE_COL_DEL = "table_col_del"; + private ItemSelectionModel m_itemModel; + + public GenericOrganizationalUnitChildTable( + final ItemSelectionModel itemModel) { + super(); + this.m_itemModel = itemModel; + + setEmptyView(new Label(ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.genericorgaunit.childs.none"))); + TableColumnModel tabModel = getColumnModel(); + + tabModel.add(new TableColumn( + 0, + ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.genericorgaunit.child.order").localize(), + TABLE_COL_EDIT)); + tabModel.add(new TableColumn( + 1, + ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.genericorgaunit.child.name").localize())); + tabModel.add(new TableColumn( + 2, + ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.genericorgaunit.child.action").localize(), + TABLE_COL_DEL)); + + setModelBuilder(new GenericOrganizationalUnitChildTableModelBuilder( + itemModel)); + + tabModel.get(0).setCellRenderer(new EditCellRenderer()); + tabModel.get(2).setCellRenderer(new DeleteCellRenderer()); + + addTableActionListener(this); + } + + private class GenericOrganizationalUnitChildTableModelBuilder extends LockableImpl + implements TableModelBuilder { + + private ItemSelectionModel m_itemModel; + + public GenericOrganizationalUnitChildTableModelBuilder( + ItemSelectionModel itemModel) { + m_itemModel = itemModel; + } + + public TableModel makeModel(Table table, PageState state) { + table.getRowSelectionModel().clearSelection(state); + GenericOrganizationalUnit orgaunit = (GenericOrganizationalUnit) m_itemModel. + getSelectedObject(state); + return new GenericOrganizationalUnitChildTableModel(table, state, + orgaunit); + } + } + + private class GenericOrganizationalUnitChildTableModel implements TableModel { + + final private int MAX_DESC_LENGTH = 25; + private Table m_table; + private GenericOrganizationalUnitChildrenCollection m_childCollection; + private GenericOrganizationalUnit m_child; + + private GenericOrganizationalUnitChildTableModel(Table table, + PageState state, + GenericOrganizationalUnit orgaunit) { + m_table = table; + m_childCollection = orgaunit.getOrgaUnitChildren(); + } + + public int getColumnCount() { + return m_table.getColumnModel().size(); + } + + public boolean nextRow() { + boolean ret; + + if ((m_childCollection != null) && m_childCollection.next()) { + m_child = m_childCollection.getOrgaUnitChild(); + ret = true; + } else { + ret = false; + } + + return ret; + } + + public Object getElementAt(int colIndex) { + switch (colIndex) { + case 0: + return m_childCollection.getChildrenOrder(); + case 1: + return m_child.getOrgaUnitName(); + case 2: + return GlobalizationUtil.globalize("cms.ui.delete").localize(); + default: + return null; + } + } + + public Object getKeyAt(int colIndex) { + return m_child.getID(); + } + } + + private class EditCellRenderer extends LockableImpl implements + TableCellRenderer { + + public Component getComponent( + Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int col) { + com.arsdigita.cms.SecurityManager securityManager = Utilities. + getSecurityManager(state); + GenericOrganizationalUnit orgaunit = (GenericOrganizationalUnit) m_itemModel. + getSelectedObject(state); + + boolean canEdit = securityManager.canAccess( + state.getRequest(), + com.arsdigita.cms.SecurityManager.EDIT_ITEM, + orgaunit); + if (canEdit) { + ControlLink link = new ControlLink(value.toString()); + return link; + } else { + return new Label(value.toString()); + } + } + } + + private class DeleteCellRenderer extends LockableImpl implements + TableCellRenderer { + + public Component getComponent( + Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int col) { + com.arsdigita.cms.SecurityManager securityManager = Utilities. + getSecurityManager(state); + GenericOrganizationalUnit orgaunit = (GenericOrganizationalUnit) m_itemModel. + getSelectedObject(state); + + boolean canEdit = securityManager.canAccess( + state.getRequest(), + com.arsdigita.cms.SecurityManager.DELETE_ITEM, + orgaunit); + if (canEdit) { + ControlLink link = new ControlLink(value.toString()); + link.setConfirmation((String) ContenttypesGlobalizationUtil. + globalize( + "cms.contenttypes.ui.genericorgaunit.confirm_delete"). + localize()); + return link; + } else { + return new Label(value.toString()); + } + } + } + + public void cellSelected(TableActionEvent event) { + PageState state = event.getPageState(); + + GenericOrganizationalUnit child = new GenericOrganizationalUnit(new BigDecimal(event. + getRowKey().toString())); + + GenericOrganizationalUnit parent = (GenericOrganizationalUnit) m_itemModel. + getSelectedObject(state); + + TableColumn col = getColumnModel().get(event.getColumn().intValue()); + + if (col.getHeaderKey().toString().equals(TABLE_COL_EDIT)) { + } + + if (col.getHeaderKey().toString().equals(TABLE_COL_DEL)) { + parent.removeOrgaUnitChildren(child); + } + } + + public void headSelected(TableActionEvent event) { + throw new UnsupportedOperationException("Not supported yet."); + } +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitChildrenPropertiesStep.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitChildrenPropertiesStep.java new file mode 100644 index 000000000..187f45414 --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitChildrenPropertiesStep.java @@ -0,0 +1,46 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil; +import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; +import com.arsdigita.cms.ui.authoring.BasicItemForm; +import com.arsdigita.cms.ui.authoring.SimpleEditStep; +import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; + +/** + * + * @author jensp + */ +public class GenericOrganizationalUnitChildrenPropertiesStep extends SimpleEditStep { + + private static String ADD_CHILD_SHEET_NAME = "addChild"; + + public GenericOrganizationalUnitChildrenPropertiesStep( + ItemSelectionModel itemModel, + AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public GenericOrganizationalUnitChildrenPropertiesStep( + ItemSelectionModel itemModel, + AuthoringKitWizard parent, + String prefix) { + super(itemModel, parent, prefix); + + BasicItemForm addChildSheet = new GenericOrganizationalUnitAddChildForm( + itemModel); + add(ADD_CHILD_SHEET_NAME, + (String) ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.genericorgaunit.add_child").localize(), + new WorkflowLockedComponentAccess(addChildSheet, itemModel), + addChildSheet.getSaveCancelSection().getCancelButton()); + + GenericOrganizationalUnitChildTable childrenTable = new GenericOrganizationalUnitChildTable( + (itemModel)); + setDisplayComponent(childrenTable); + } +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactAddForm.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactAddForm.java new file mode 100644 index 000000000..b9fe44aad --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactAddForm.java @@ -0,0 +1,102 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.FormProcessException; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.SaveCancelSection; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.bebop.form.Option; +import com.arsdigita.bebop.form.SingleSelect; +import com.arsdigita.bebop.parameters.NotNullValidationListener; +import com.arsdigita.bebop.parameters.ParameterModel; +import com.arsdigita.bebop.parameters.StringParameter; +import com.arsdigita.cms.ContentType; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.GenericContact; +import com.arsdigita.cms.contenttypes.GenericContactType; +import com.arsdigita.cms.contenttypes.GenericContactTypeCollection; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection; +import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil; +import com.arsdigita.cms.ui.ItemSearchWidget; +import com.arsdigita.cms.ui.authoring.BasicItemForm; +import com.arsdigita.dispatcher.DispatcherHelper; +import org.apache.log4j.Logger; + +/** + * + * @author Jens Pelzetter + */ +public class GenericOrganizationalUnitContactAddForm extends BasicItemForm { + + private final static Logger s_log = Logger.getLogger( + GenericOrganizationalUnitContactAddForm.class); + private GenericOrganizationalUnitPropertiesStep m_step; + private ItemSearchWidget m_itemSearch; + private SaveCancelSection m_saveCancelSection; + private final String ITEM_SEARCH = "personAddress"; + private ItemSelectionModel m_itemModel; + + public GenericOrganizationalUnitContactAddForm(ItemSelectionModel itemModel) { + super("ContactEntryAddForm", itemModel); + m_itemModel = itemModel; + } + + @Override + protected void addWidgets() { + add(new Label((String) ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.genericorgaunit.select_contact").localize())); + m_itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType. + findByAssociatedObjectType(GenericContact.class.getName())); + add(m_itemSearch); + + add(new Label(ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.genericorgaunit.contact.type"))); + ParameterModel contactTypeParam = new StringParameter( + GenericOrganizationalUnitContactCollection.CONTACT_TYPE); + SingleSelect contactType = new SingleSelect(contactTypeParam); + contactType.addValidationListener(new NotNullValidationListener()); + contactType.addOption(new Option("", new Label((String) ContenttypesGlobalizationUtil. + globalize("cms.ui.select_one").localize()))); + + GenericContactTypeCollection contacttypes = + new GenericContactTypeCollection(); + contacttypes.filterLanguage(DispatcherHelper.getNegotiatedLocale(). + getLanguage()); + + while (contacttypes.next()) { + GenericContactType ct = contacttypes.getContactType(); + contactType.addOption(new Option(ct.getKey(), ct.getName())); + } + + add(contactType); + } + + @Override + public void init(FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + PageState state = fse.getPageState(); + + setVisible(state, true); + } + + @Override + public void process(FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + PageState state = fse.getPageState(); + GenericOrganizationalUnit orgaunit = (GenericOrganizationalUnit) getItemSelectionModel(). + getSelectedObject(state); + + if (!(this.getSaveCancelSection().getCancelButton().isSelected(state))) { + orgaunit.addContact((GenericContact) data.get(ITEM_SEARCH), (String) data. + get(GenericOrganizationalUnitContactCollection.CONTACT_TYPE)); + } + + init(fse); + } +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactPropertiesStep.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactPropertiesStep.java new file mode 100644 index 000000000..34e005521 --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactPropertiesStep.java @@ -0,0 +1,46 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil; +import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; +import com.arsdigita.cms.ui.authoring.BasicItemForm; +import com.arsdigita.cms.ui.authoring.SimpleEditStep; +import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; + +/** + * + * @author Jens Pelzetter + */ +public class GenericOrganizationalUnitContactPropertiesStep + extends SimpleEditStep { + + private static String ADD_CONTACT_SHEET_NAME = "addContact"; + + public GenericOrganizationalUnitContactPropertiesStep( + ItemSelectionModel itemModel, AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public GenericOrganizationalUnitContactPropertiesStep( + ItemSelectionModel itemModel, AuthoringKitWizard parent, + String prefix) { + super(itemModel, parent, prefix); + + BasicItemForm addContactSheet = + new GenericOrganizationalUnitContactAddForm( + itemModel); + add(ADD_CONTACT_SHEET_NAME, + (String) ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.genericorgaunit.add_contact").localize(), + new WorkflowLockedComponentAccess(addContactSheet, itemModel), + addContactSheet.getSaveCancelSection().getCancelButton()); + + GenericOrganizationalUnitContactTable contactsTable = new GenericOrganizationalUnitContactTable( + itemModel); + setDisplayComponent(contactsTable); + } +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactTable.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactTable.java new file mode 100644 index 000000000..9470b01ca --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactTable.java @@ -0,0 +1,228 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Component; +import com.arsdigita.bebop.ControlLink; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.Table; +import com.arsdigita.bebop.event.TableActionEvent; +import com.arsdigita.bebop.event.TableActionListener; +import com.arsdigita.bebop.table.TableCellRenderer; +import com.arsdigita.bebop.table.TableColumn; +import com.arsdigita.bebop.table.TableColumnModel; +import com.arsdigita.bebop.table.TableModel; +import com.arsdigita.bebop.table.TableModelBuilder; +import com.arsdigita.bebop.util.GlobalizationUtil; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.SecurityManager; +import com.arsdigita.cms.contenttypes.GenericContact; +import com.arsdigita.cms.contenttypes.GenericContactTypeCollection; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection; +import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil; +import com.arsdigita.cms.dispatcher.Utilities; +import com.arsdigita.dispatcher.DispatcherHelper; +import com.arsdigita.util.LockableImpl; +import java.math.BigDecimal; +import java.math.BigInteger; + +/** + * + * @author Jens Pelzetter + */ +public class GenericOrganizationalUnitContactTable extends Table implements TableActionListener { + + private final static String TABLE_COL_EDIT = "table_col_edit"; + private final static String TABLE_COL_DEL = "table_col_del"; + private ItemSelectionModel m_itemModel; + + public GenericOrganizationalUnitContactTable(final ItemSelectionModel itemModel) { + super(); + this.m_itemModel = itemModel; + + setEmptyView(new Label(ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.genericorgaunit.contacts.none"))); + TableColumnModel tabModel = getColumnModel(); + + tabModel.add(new TableColumn( + 0, + ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.genericorgaunit.contact.order").localize(), + TABLE_COL_EDIT)); + tabModel.add(new TableColumn( + 1, + ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.genericorgaunit.contact.type").localize())); + tabModel.add(new TableColumn( + 2, + ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.genericorgaunit.contact.title").localize())); + tabModel.add(new TableColumn( + 3, + ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.genericorgaunit.contact.action").localize(), + TABLE_COL_DEL)); + + setModelBuilder(new GenericOrganizationalUnitTableModelBuilder(itemModel)); + + tabModel.get(0).setCellRenderer(new EditCellRenderer()); + tabModel.get(3).setCellRenderer(new DeleteCellRenderer()); + } + + private class GenericOrganizationalUnitTableModelBuilder + extends LockableImpl + implements TableModelBuilder { + + private ItemSelectionModel m_itemModel; + + public GenericOrganizationalUnitTableModelBuilder( + ItemSelectionModel itemModel) { + m_itemModel = itemModel; + } + + public TableModel makeModel(Table table, PageState state) { + table.getRowSelectionModel().clearSelection(state); + GenericOrganizationalUnit orgaunit = + (GenericOrganizationalUnit) m_itemModel.getSelectedObject(state); + return new GenericOrganizationalUnitTableModel(table, state, orgaunit); + } + } + + private class GenericOrganizationalUnitTableModel implements TableModel { + private final int MAX_DESC_LENGTH = 25; + private Table m_table; + private GenericOrganizationalUnitContactCollection m_contactCollection; + private GenericContact m_contact; + private GenericContactTypeCollection contacttypes = + new GenericContactTypeCollection(); + + private GenericOrganizationalUnitTableModel( + Table table, + PageState state, + GenericOrganizationalUnit orgaunit + ) { + m_table = table; + m_contactCollection = orgaunit.getContacts(); + } + + public int getColumnCount() { + return m_table.getColumnModel().size(); + } + + public boolean nextRow() { + boolean ret; + + if ((m_contactCollection != null) + && m_contactCollection.next()) { + m_contact = m_contactCollection.getContact(); + ret = true; + } else { + ret = false; + } + + return ret; + } + + public Object getElementAt(int columnIndex) { + switch(columnIndex) { + case 0: + return m_contactCollection.getContactOrder(); + case 1: + return contacttypes.getContactType(m_contactCollection.getContactType(), + DispatcherHelper.getNegotiatedLocale().getLanguage()); + case 2: + return m_contact.getTitle(); + case 3: + return GlobalizationUtil.globalize("cms.ui.delete").localize(); + default: + return null; + } + } + + public Object getKeyAt(int columnIndex) { + return m_contact.getID(); + } + } + + private class EditCellRenderer + extends LockableImpl + implements TableCellRenderer { + public Component getComponent( + Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int col) { + SecurityManager securityManager = Utilities.getSecurityManager(state); + GenericOrganizationalUnit orgaunit = + (GenericOrganizationalUnit) m_itemModel.getSelectedObject(state); + + boolean canEdit = securityManager.canAccess(state.getRequest(), + SecurityManager.EDIT_ITEM, + orgaunit); + if (canEdit) { + ControlLink link = new ControlLink(value.toString()); + return link; + } else { + return new Label(value.toString()); + } + } + } + + private class DeleteCellRenderer + extends LockableImpl + implements TableCellRenderer { + public Component getComponent( + Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int col) { + SecurityManager securityManager = Utilities.getSecurityManager(state); + GenericOrganizationalUnit orgaunit = + (GenericOrganizationalUnit) m_itemModel.getSelectedObject(state); + + boolean canDelete = securityManager.canAccess( + state.getRequest(), + SecurityManager.DELETE_ITEM, + orgaunit); + if(canDelete) { + ControlLink link = new ControlLink(value.toString()); + link.setConfirmation((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.genericorgaunit.confirm_delete").localize()); + return link; + } else { + return new Label(value.toString()); + } + } + } + + @Override + public void cellSelected(TableActionEvent event) { + PageState state = event.getPageState(); + + GenericContact contact = + new GenericContact(new BigDecimal(event.getRowKey().toString())); + + GenericOrganizationalUnit orgaunit = + (GenericOrganizationalUnit) m_itemModel.getSelectedObject(state); + + TableColumn column = getColumnModel().get(event.getColumn().intValue()); + + if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) { + + } + + if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) { + orgaunit.removeContact(contact); + } + + } + + @Override + public void headSelected(TableActionEvent e) { + throw new UnsupportedOperationException("Not supported yet."); + } +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPropertiesStep.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPropertiesStep.java new file mode 100644 index 000000000..a6f495302 --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPropertiesStep.java @@ -0,0 +1,94 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Component; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.SegmentedPanel; +import com.arsdigita.cms.ContentPage; +import com.arsdigita.cms.ContentSection; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.domain.DomainObject; +import com.arsdigita.toolbox.ui.DomainObjectPropertySheet; +import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; +import com.arsdigita.cms.ui.authoring.BasicPageForm; +import com.arsdigita.cms.ui.authoring.SimpleEditStep; +import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; + +import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil; +import java.text.DateFormat; + +/** + * + * @author Jens Pelzetter + */ +public class GenericOrganizationalUnitPropertiesStep extends SimpleEditStep { + + public static final String EDIT_SHEET_NAME = "edit"; + + public GenericOrganizationalUnitPropertiesStep(ItemSelectionModel itemModel, + AuthoringKitWizard parent) { + super(itemModel, parent); + + SegmentedPanel segmentedPanel = new SegmentedPanel(); + + setDefaultEditKey(EDIT_SHEET_NAME); + + SimpleEditStep basicProperties = new SimpleEditStep(itemModel, + parent, + EDIT_SHEET_NAME); + + BasicPageForm editBasicSheet = + new GenericOrganizationalUnitPropertyForm(itemModel, this); + basicProperties.add(EDIT_SHEET_NAME, + (String) ContenttypesGlobalizationUtil + .globalize("cms.contenttypes.ui.genericorgaunit.edit_basic_properties").localize(), + new WorkflowLockedComponentAccess(editBasicSheet, itemModel), + editBasicSheet.getSaveCancelSection().getCancelButton()); + + basicProperties.setDisplayComponent(getGenericOrganizationalUnitPropertySheet(itemModel)); + + segmentedPanel.addSegment( + new Label((String) ContenttypesGlobalizationUtil + .globalize("cms.contenttypes.ui.genericorganunit.basic_properties").localize()), + basicProperties); + + setDisplayComponent(segmentedPanel); + } + + public static Component + getGenericOrganizationalUnitPropertySheet( + ItemSelectionModel itemModel) { + DomainObjectPropertySheet sheet = new DomainObjectPropertySheet(itemModel); + + sheet.add(ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.genericorganunit.name"), + GenericOrganizationalUnit.NAME); + sheet.add(ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.genericorganunit.addendum"), + GenericOrganizationalUnit.ADDENDUM); + + if (!ContentSection.getConfig().getHideLaunchDate()) { + sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.ui.authoring.page_launch_date").localize(), + ContentPage.LAUNCH_DATE, + new DomainObjectPropertySheet.AttributeFormatter() { + + public String format(DomainObject item, + String attribute, + PageState state) { + ContentPage page = (ContentPage) item; + if (page.getLaunchDate() != null) { + return DateFormat.getDateInstance(DateFormat.LONG).format(page.getLaunchDate()); + } else { + return (String) ContenttypesGlobalizationUtil.globalize("cms.ui.unknown").localize(); + } + } + }); + } + + return sheet; + } +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPropertyForm.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPropertyForm.java new file mode 100644 index 000000000..09ebf8199 --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPropertyForm.java @@ -0,0 +1,102 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.FormProcessException; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.event.FormInitListener; +import com.arsdigita.bebop.event.FormProcessListener; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.bebop.event.FormSubmissionListener; +import com.arsdigita.bebop.form.TextField; +import com.arsdigita.bebop.parameters.DateParameter; +import com.arsdigita.bebop.parameters.ParameterModel; +import com.arsdigita.bebop.parameters.StringParameter; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil; +import com.arsdigita.cms.ui.authoring.BasicPageForm; +import org.apache.log4j.Logger; + +/** + * + * @author jensp + */ +public class GenericOrganizationalUnitPropertyForm extends BasicPageForm + implements FormProcessListener, FormInitListener, FormSubmissionListener { + + private final static Logger s_log = Logger.getLogger(GenericOrganizationalUnitPropertyForm.class); + private GenericOrganizationalUnitPropertiesStep m_step; + public static final String ORGAUNIT_NAME = GenericOrganizationalUnit.ORGAUNIT_NAME; + public static final String ADDENDUM = GenericOrganizationalUnit.ADDENDUM; + public static final String ID = "GenericOrgaUnit_edit"; + + public GenericOrganizationalUnitPropertyForm(ItemSelectionModel itemModel) { + this(itemModel, null); + } + + public GenericOrganizationalUnitPropertyForm(ItemSelectionModel itemModel, + GenericOrganizationalUnitPropertiesStep step) { + super(ID, itemModel); + m_step = step; + addSubmissionListener(this); + } + + @Override + protected void addWidgets() { + super.addWidgets(); + + add(new Label( + (String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.genericorganunit.name").localize())); + ParameterModel nameParam = new StringParameter(ORGAUNIT_NAME); + TextField name = new TextField(nameParam); + add(name); + + add(new Label( + (String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.genericorgaunit.addendum").localize())); + ParameterModel addendumParam = new StringParameter(ADDENDUM); + TextField addendum = new TextField(addendumParam); + add(addendum); + } + + @Override + public void submitted(FormSectionEvent fse) throws FormProcessException { + if ((m_step != null) + && getSaveCancelSection().getCancelButton().isSelected(fse.getPageState())) { + m_step.cancelStreamlinedCreation(fse.getPageState()); + } + } + + @Override + public void init(FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + GenericOrganizationalUnit orgaunit = + (GenericOrganizationalUnit) super.initBasicWidgets(fse); + + data.put(ORGAUNIT_NAME, orgaunit.getOrgaUnitName()); + data.put(ORGAUNIT_NAME, orgaunit.getAddendum()); + } + + @Override + public void process(FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + + GenericOrganizationalUnit orgaunit = + (GenericOrganizationalUnit) super.processBasicWidgets(fse); + + if ((orgaunit != null) + && getSaveCancelSection().getSaveButton().isSelected(fse.getPageState())) { + orgaunit.setOrgaUnitName((String) data.get(ORGAUNIT_NAME)); + orgaunit.setAddendum((String) data.get(ADDENDUM)); + + orgaunit.save(); + } + + if (m_step != null) { + m_step.maybeForwardToNextStep(fse.getPageState()); + } + } +} diff --git a/ccm-zes-aplaws/bundles/devel/cfg/applications.cfg b/ccm-zes-aplaws/bundles/devel/cfg/applications.cfg index 32cdfcd8b..f0d73ff07 100644 --- a/ccm-zes-aplaws/bundles/devel/cfg/applications.cfg +++ b/ccm-zes-aplaws/bundles/devel/cfg/applications.cfg @@ -4,6 +4,7 @@ ccm-cms # Content assets ccm-cms-assets-fileattachment +ccm-cms-assets-imagestep ccm-cms-assets-notes ccm-cms-assets-relatedlink @@ -61,7 +62,7 @@ ccm-user-preferences # -- ccm-ldn-dublin # -- ccm-ldn-exporter # -- ccm-ldn-freeform -ccm-ldn-image-step +#ccm-ldn-image-step # -- ccm-ldn-importer ccm-ldn-navigation ccm-ldn-portal