From 607fad6a81f1d4fd4661180270a79a2da5e19b7e Mon Sep 17 00:00:00 2001 From: quasi Date: Sun, 5 Sep 2010 17:11:07 +0000 Subject: [PATCH] =?UTF-8?q?Beschreibungsfeld=20f=C3=BCr=20GenericPerson=20?= =?UTF-8?q?hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@526 8810af33-2d31-482b-a856-94f89814c4df --- .../src/com/arsdigita/cms/ContentItem.java | 2 +- .../com/arsdigita/cms/RelationAttribute.java | 96 ++++++++++++++++++- .../cms/RelationAttributeInterface.java | 20 ++++ .../cms/contenttypes/GenericContact.java | 4 +- .../cms/contenttypes/GenericPerson.java | 4 +- .../ui/GenericPersonPropertiesStep.java | 1 + .../ui/GenericPersonPropertyForm.java | 12 ++- .../cms/ui/authoring/BasicPageForm.java | 14 +++ .../cms/ui/type/ContentTypeItemPane.java | 5 +- .../cms/ui/type/RelationAttributeList.java | 25 ++--- 10 files changed, 155 insertions(+), 28 deletions(-) create mode 100644 ccm-cms/src/com/arsdigita/cms/RelationAttributeInterface.java diff --git a/ccm-cms/src/com/arsdigita/cms/ContentItem.java b/ccm-cms/src/com/arsdigita/cms/ContentItem.java index 0dddc4d19..3561f8a28 100755 --- a/ccm-cms/src/com/arsdigita/cms/ContentItem.java +++ b/ccm-cms/src/com/arsdigita/cms/ContentItem.java @@ -202,7 +202,7 @@ import java.util.StringTokenizer; * * @version $Id: ContentItem.java 1621 2007-09-13 12:43:12Z chrisg23 $ */ -public class ContentItem extends VersionedACSObject implements CustomCopy, RelationAttribute { +public class ContentItem extends VersionedACSObject implements CustomCopy, RelationAttributeInterface { private static final Logger s_log = Logger.getLogger(ContentItem.class); private static final Logger s_logDenorm = Logger.getLogger(ContentItem.class.getName() + ".Denorm"); diff --git a/ccm-cms/src/com/arsdigita/cms/RelationAttribute.java b/ccm-cms/src/com/arsdigita/cms/RelationAttribute.java index 129f3e424..f1d280037 100644 --- a/ccm-cms/src/com/arsdigita/cms/RelationAttribute.java +++ b/ccm-cms/src/com/arsdigita/cms/RelationAttribute.java @@ -5,16 +5,104 @@ package com.arsdigita.cms; -import java.util.StringTokenizer; +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.persistence.DataObject; +import com.arsdigita.persistence.OID; +import java.math.BigDecimal; /** * * @author quasi */ -public interface RelationAttribute { +public class RelationAttribute extends ContentItem { + + public static final String ATTRIBUTE = "attribute"; + public static final String KEY = "KEY"; + public static final String LANGUAGE = "lang"; + //public static final String NAME = "name"; + public static final String DESCRIPTION = "DESCRIPTION"; + /** Data object type for this domain object */ + public static final String BASE_DATA_OBJECT_TYPE = + "com.arsdigita.cms.RelationAttribute"; + + /** + * Default constructor. This creates a new (empty) RelationAttribute. + **/ + public RelationAttribute() { + super(BASE_DATA_OBJECT_TYPE); + } + + public RelationAttribute(OID id) throws DataObjectNotFoundException { + super(id); + } + + public RelationAttribute(BigDecimal id) throws DataObjectNotFoundException { + this(new OID(BASE_DATA_OBJECT_TYPE, id)); + } + + + public RelationAttribute(DataObject obj) { + super(obj); + } + + public RelationAttribute(String type) { + super(type); + } + + /** + * @return the base PDL object type for this item. Child classes + * should override this method to return the correct value + */ + public String getBaseDataObjectType() { + return BASE_DATA_OBJECT_TYPE; + } + + /* accessors *****************************************************/ + public String getAttribute() { + return (String) get(ATTRIBUTE); + } + + public void setAttribute(String attribute) { + set(ATTRIBUTE, attribute); + } + + public String getKey() { + return (String) get(KEY); + } + + public void setKey(String key) { + set(KEY, key); + } + + @Override + public String getLanguage() { + return (String) get(LANGUAGE); + } + + @Override + public void setLanguage(String language) { + set(LANGUAGE, language); + } + +// @Override +// public String getName() { +// return (String) get(NAME); +// } +// +// @Override +// public void setName(String name) { +// set(NAME, name); +// } + + public String getDescription() { + return (String) get(DESCRIPTION); + } + + public void setDescription(String description) { + set(DESCRIPTION, description); + } + - public abstract boolean hasRelationAttributes(); - public abstract StringTokenizer getRelationAttributes(); } diff --git a/ccm-cms/src/com/arsdigita/cms/RelationAttributeInterface.java b/ccm-cms/src/com/arsdigita/cms/RelationAttributeInterface.java new file mode 100644 index 000000000..c774d57d3 --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/RelationAttributeInterface.java @@ -0,0 +1,20 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package com.arsdigita.cms; + +import java.util.StringTokenizer; + +/** + * + * @author quasi + */ +public interface RelationAttributeInterface { + + public abstract boolean hasRelationAttributes(); + + public abstract StringTokenizer getRelationAttributes(); + +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContact.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContact.java index 735641b15..95f97803b 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContact.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContact.java @@ -23,7 +23,7 @@ import com.arsdigita.persistence.DataObject; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.cms.ContentType; import com.arsdigita.cms.ContentPage; -import com.arsdigita.cms.RelationAttribute; +import com.arsdigita.cms.RelationAttributeInterface; import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.persistence.DataCollection; import com.arsdigita.util.Assert; @@ -35,7 +35,7 @@ import java.util.StringTokenizer; * This content type represents an basic contact * */ -public class GenericContact extends ContentPage implements RelationAttribute { +public class GenericContact extends ContentPage implements RelationAttributeInterface { /** PDL property names */ public static final String PERSON = "person"; diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java index c77af230d..7bba37054 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java @@ -20,7 +20,7 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.cms.ContentType; import com.arsdigita.cms.ContentPage; -import com.arsdigita.cms.RelationAttribute; +import com.arsdigita.cms.RelationAttributeInterface; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; @@ -36,7 +36,7 @@ import java.util.Date; * @author Sören Bernstein * @author Jens Pelzetter */ -public class GenericPerson extends ContentPage implements RelationAttribute { +public class GenericPerson extends ContentPage implements RelationAttributeInterface { public static final String PERSON = "person"; public static final String SURNAME = "surname"; diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertiesStep.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertiesStep.java index c254ad1b5..ead2d6c0e 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertiesStep.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertiesStep.java @@ -112,6 +112,7 @@ public class GenericPersonPropertiesStep extends SimpleEditStep { }); } + sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.description").localize(), GenericPerson.DESCRIPTION); return sheet; } } diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertyForm.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertyForm.java index 8a810d4ea..37df906a3 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertyForm.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertyForm.java @@ -24,6 +24,7 @@ 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.TextArea; import com.arsdigita.bebop.form.TextField; import com.arsdigita.bebop.parameters.DateParameter; import com.arsdigita.bebop.parameters.ParameterModel; @@ -52,6 +53,7 @@ public class GenericPersonPropertyForm extends BasicPageForm implements FormProc public static final String TITLEPRE = GenericPerson.TITLEPRE; public static final String TITLEPOST = GenericPerson.TITLEPOST; public static final String BIRTHDATE = GenericPerson.BIRTHDATE; + public static final String DESCRIPTION = GenericPerson.DESCRIPTION; public static final String ID = "Person_edit"; public GenericPersonPropertyForm(ItemSelectionModel itemModel) { @@ -95,6 +97,13 @@ public class GenericPersonPropertyForm extends BasicPageForm implements FormProc birthdate.setYearRange(1900, today.get(Calendar.YEAR)); add(birthdate); + add(new Label((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.description").localize())); + ParameterModel descriptionParam = new StringParameter(DESCRIPTION); + TextArea description = new TextArea(descriptionParam); + description.setCols(50); + description.setRows(5); + add(description); + } public void init(FormSectionEvent fse) { @@ -106,6 +115,7 @@ public class GenericPersonPropertyForm extends BasicPageForm implements FormProc data.put(TITLEPRE, person.getTitlePre()); data.put(TITLEPOST, person.getTitlePost()); data.put(BIRTHDATE, person.getBirthdate()); + data.put(DESCRIPTION, person.getDescription()); } public void submitted(FormSectionEvent fse) { @@ -126,8 +136,8 @@ public class GenericPersonPropertyForm extends BasicPageForm implements FormProc person.setGivenName((String) data.get(GIVENNAME)); person.setTitlePre((String) data.get(TITLEPRE)); person.setTitlePost((String) data.get(TITLEPOST)); - //Date birthdate = (Date)data.get(BIRTHDATE); person.setBirthdate((Date) data.get(BIRTHDATE)); + person.setDescription((String)data.get(DESCRIPTION)); person.save(); } diff --git a/ccm-cms/src/com/arsdigita/cms/ui/authoring/BasicPageForm.java b/ccm-cms/src/com/arsdigita/cms/ui/authoring/BasicPageForm.java index 7b9af7ef7..8444c6924 100755 --- a/ccm-cms/src/com/arsdigita/cms/ui/authoring/BasicPageForm.java +++ b/ccm-cms/src/com/arsdigita/cms/ui/authoring/BasicPageForm.java @@ -28,9 +28,11 @@ import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.event.FormSectionEvent; import com.arsdigita.bebop.event.ParameterEvent; import com.arsdigita.bebop.event.ParameterListener; +//import com.arsdigita.bebop.form.TextArea; import com.arsdigita.bebop.parameters.DateParameter; import com.arsdigita.bebop.parameters.ParameterData; import com.arsdigita.bebop.parameters.ParameterModel; +//import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.cms.ContentPage; import com.arsdigita.cms.ContentSection; import com.arsdigita.cms.ItemSelectionModel; @@ -51,6 +53,7 @@ public abstract class BasicPageForm extends BasicItemForm { private FormSection m_widgetSection; +// public static final String DESCRIPTION = ContentPage.DESCRIPTION; public static final String LAUNCH_DATE = ContentPage.LAUNCH_DATE; /** @@ -83,8 +86,17 @@ public abstract class BasicPageForm extends BasicItemForm { * Add various widgets to the form. Child classes should override * this method to perform all their widget-adding needs */ + @Override protected void addWidgets() { super.addWidgets(); + +// add(new Label(GlobalizationUtil.globalize("cms.ui.authoring.page_description"))); +// ParameterModel descriptionParam = new StringParameter(DESCRIPTION); +// TextArea description = new TextArea(descriptionParam); +// description.setCols(50); +// description.setRows(5); +// add(description); +// if (!ContentSection.getConfig().getHideLaunchDate()) { add(new Label(GlobalizationUtil. globalize("cms.ui.authoring.page_launch_date"))); @@ -121,6 +133,7 @@ public abstract class BasicPageForm extends BasicItemForm { // Preset fields data.put(NAME, item.getName()); data.put(TITLE, item.getTitle()); +// data.put(DESCRIPTION, item.getDescription()); if (!ContentSection.getConfig().getHideLaunchDate()) { data.put(LAUNCH_DATE, item.getLaunchDate()); // if launch date is required, help user by suggesting today's date @@ -153,6 +166,7 @@ public abstract class BasicPageForm extends BasicItemForm { // Update attributes item.setName((String)data.get(NAME)); item.setTitle((String)data.get(TITLE)); +// item.setDescription((String)data.get(DESCRIPTION)); if (!ContentSection.getConfig().getHideLaunchDate()) { item.setLaunchDate((Date)data.get(LAUNCH_DATE)); } diff --git a/ccm-cms/src/com/arsdigita/cms/ui/type/ContentTypeItemPane.java b/ccm-cms/src/com/arsdigita/cms/ui/type/ContentTypeItemPane.java index e7d7c5044..d372bd79a 100755 --- a/ccm-cms/src/com/arsdigita/cms/ui/type/ContentTypeItemPane.java +++ b/ccm-cms/src/com/arsdigita/cms/ui/type/ContentTypeItemPane.java @@ -220,7 +220,7 @@ final class ContentTypeItemPane extends BaseItemPane { } private class RelationAttributeSection extends Section { - RelationAttributeSection(/*final ActionLink attributeEditLink*/) { + RelationAttributeSection() { setHeading(new Label(gz("cms.ui.type.attributes"))); setBody(new RelationAttributeList(m_type)); @@ -228,7 +228,8 @@ final class ContentTypeItemPane extends BaseItemPane { @Override public final boolean isVisible(final PageState state) { - +// ISt es möglich, den folgenden Code nur einmal zu haben?? Kann man auf die isVisible von RelationAttributeList + // zurückgreifen?? boolean retVal = false; ContentType ct = (ContentType) m_type.getContentType(state); ContentItem ci = null; diff --git a/ccm-cms/src/com/arsdigita/cms/ui/type/RelationAttributeList.java b/ccm-cms/src/com/arsdigita/cms/ui/type/RelationAttributeList.java index fbc9de1d6..b52050f3a 100644 --- a/ccm-cms/src/com/arsdigita/cms/ui/type/RelationAttributeList.java +++ b/ccm-cms/src/com/arsdigita/cms/ui/type/RelationAttributeList.java @@ -13,6 +13,7 @@ import com.arsdigita.bebop.list.ListCellRenderer; import com.arsdigita.bebop.list.ListModel; import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentType; +import com.arsdigita.cms.RelationAttributeCollection; import java.util.StringTokenizer; /** @@ -37,6 +38,8 @@ public class RelationAttributeList extends List { @Override public final boolean isVisible(final PageState state) { +// Mit getModelBuilder(); den ModelBuilder holen und abfragen,, ob es etwas anzuzeigen gibt? + boolean retVal = false; ContentType ct = (ContentType) m_type.getContentType(state); ContentItem ci = null; @@ -82,26 +85,15 @@ public class RelationAttributeList extends List { //retVal = false; } -// final DataCollection folders = -// SessionManager.getSession().retrieve(Folder.BASE_DATA_OBJECT_TYPE); -// -// folders.addEqualsFilter(ContentItem.PARENT, parent.getID()); -// folders.addOrder("lower(" + ACSObject.DISPLAY_NAME + ")"); -// -// return new Model(new ItemCollection(folders)); - return new Model(relationAttributeList); } private class Model implements ListModel { -// private final ItemCollection m_items; private final StringTokenizer m_items; - private String m_item; +// private String m_item; + private RelationAttributeCollection m_item; -// Model(final ItemCollection items) { -// m_items = items; -// } Model(final StringTokenizer items) { m_items = items; m_item = null; @@ -109,7 +101,8 @@ public class RelationAttributeList extends List { public final boolean next() { if (m_items.hasMoreTokens()) { - m_item = m_items.nextToken(); +// m_item = m_items.nextToken(); + m_item = new RelationAttributeCollection(m_items.nextToken()); return true; } else { m_item = null; @@ -119,12 +112,12 @@ public class RelationAttributeList extends List { // Label public final Object getElement() { - return m_item; + return m_item.getDisplayName(); } // URL public final String getKey() { - return m_item + "/"; + return m_item+"/";//.getName() + "/"; } } }