From 0ed4ddc8603fc37c6df8067fcc239586d861a514 Mon Sep 17 00:00:00 2001 From: jensp Date: Fri, 27 Jan 2012 07:06:37 +0000 Subject: [PATCH] =?UTF-8?q?Erster=20Teil=20f=C3=BCr=20notwendigen=20=C3=84?= =?UTF-8?q?nderungen=20f=C3=BCr=20die=20zus=C3=A4tzlichen=20Felder=20f?= =?UTF-8?q?=C3=BCr=20PublicPersonalProfile=20(s.=20Ticket=20805).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@1470 8810af33-2d31-482b-a856-94f89814c4df --- .../content-types/PublicPersonalProfile.pdl | 8 +- .../contenttypes/PublicPersonalProfile.java | 73 ++++++++++++------ ...PublicPersonalProfilePositionEditForm.java | 74 +++++++++++++++++++ .../ui/PublicPersonalProfilePositionStep.java | 54 ++++++++++++++ 4 files changed, 183 insertions(+), 26 deletions(-) create mode 100644 ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/ui/PublicPersonalProfilePositionEditForm.java create mode 100644 ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/ui/PublicPersonalProfilePositionStep.java diff --git a/ccm-cms-publicpersonalprofile/pdl/com/arsdigita/content-types/PublicPersonalProfile.pdl b/ccm-cms-publicpersonalprofile/pdl/com/arsdigita/content-types/PublicPersonalProfile.pdl index 043f79fa5..03173c541 100644 --- a/ccm-cms-publicpersonalprofile/pdl/com/arsdigita/content-types/PublicPersonalProfile.pdl +++ b/ccm-cms-publicpersonalprofile/pdl/com/arsdigita/content-types/PublicPersonalProfile.pdl @@ -5,10 +5,12 @@ import com.arsdigita.cms.*; object type PublicPersonalProfile extends ContentPage { - String[0..1] profileUrl = ct_public_personal_profiles.profile_url VARCHAR(256); - Boolean[0..1] showPublicationList = ct_public_personal_profiles.show_publication_list BIT; - Boolean[0..1] showProjectList = ct_public_personal_profiles.show_project_list BIT; + String[0..1] profileUrl = ct_public_personal_profiles.profile_url VARCHAR(256); + String[0..1] position = ct_public_personal_profile.position VARCHAR(2048); + String[0..1] researchInterests = ct_public_personal_profiles.research_interests CLOB; + String[0..1] misc = ct_public_personal_profiles.misc CLOB; + reference key (ct_public_personal_profiles.profile_id); } diff --git a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfile.java b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfile.java index 44a02ecd0..5f78d1407 100644 --- a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfile.java +++ b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfile.java @@ -34,17 +34,17 @@ import com.arsdigita.util.Assert; import java.util.List; /** - * A content type representing a profile (a personal homepage) of a person. - * On the start page of the the profile the contact data and a photo (if any) + * A content type representing a profile (a personal homepage) of a person. On + * the start page of the the profile the contact data and a photo (if any) * associated with the owner of the profile are shown. Other content items can * be associated with the profile. They are shown in special navigation. Also, - * there special items for the profile which not backed by a content item. - * Instead, they are backed by a Java class which implements the - * {@link ContentGenerator} interface. A profile can either be shown as - * a standalone page (similar the separate category system) or embedded into - * the normal site. - * - * @author Jens Pelzetter + * there special items for the profile which not backed by a content item. + * Instead, they are backed by a Java class which implements the + * {@link ContentGenerator} interface. A profile can either be shown as a + * standalone page (similar the separate category system) or embedded into the + * normal site. + * + * @author Jens Pelzetter * @version $Id$ */ public class PublicPersonalProfile @@ -55,8 +55,11 @@ public class PublicPersonalProfile public static final String OWNER = "owner"; public static final String PROFILE_URL = "profileUrl"; public static final String LINK_LIST_NAME = "publicPersonalProfileNavItems"; + public static final String POSITION = "position"; + public static final String RESEARCH_INTERESTS = "researchInterests"; + public static final String MISC = "misc"; public static final String BASE_DATA_OBJECT_TYPE = - "com.arsdigita.cms.contenttypes.PublicPersonalProfile"; + "com.arsdigita.cms.contenttypes.PublicPersonalProfile"; public PublicPersonalProfile() { this(BASE_DATA_OBJECT_TYPE); @@ -80,8 +83,8 @@ public class PublicPersonalProfile super(type); } - /** - * + /** + * * @return The owner of the profile. */ public GenericPerson getOwner() { @@ -102,8 +105,8 @@ public class PublicPersonalProfile /** * Sets the owner of the profile. - * - * @param owner + * + * @param owner */ public void setOwner(final GenericPerson owner) { GenericPerson oldOwner; @@ -120,10 +123,10 @@ public class PublicPersonalProfile } /** - * - * @return The URL fragment of the profile used to build the URL of the + * + * @return The URL fragment of the profile used to build the URL of the * profile. - + * */ public String getProfileUrl() { return (String) get(PROFILE_URL); @@ -133,11 +136,35 @@ public class PublicPersonalProfile set(PROFILE_URL, profileUrl); } + public String getPosition() { + return (String) get(POSITION); + } + + public void setPosition(final String position) { + set(POSITION, position); + } + + public String getResearchInterests() { + return (String) get(RESEARCH_INTERESTS); + } + + public void setResearchInterests(final String researchInterests) { + set(RESEARCH_INTERESTS, researchInterests); + } + + public String getMisc() { + return (String) get(MISC); + } + + public void setMisc(final String misc) { + set(MISC, misc); + } + /** - * The profile has an extra XML Generator, which is primarily to render - * the items and the navigation of the profile for the embedded view. - * - * @return + * The profile has an extra XML Generator, which is primarily to render the + * items and the navigation of the profile for the embedded view. + * + * @return */ @Override public List getExtraXMLGenerators() { @@ -149,10 +176,10 @@ public class PublicPersonalProfile } public String getPreviewUrl(final PageState state) { - if(config.getEmbedded()) { + if (config.getEmbedded()) { return null; } else { - return String.format("/profiles/preview/%s/", getProfileUrl()); + return String.format("/profiles/preview/%s/", getProfileUrl()); } } } diff --git a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/ui/PublicPersonalProfilePositionEditForm.java b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/ui/PublicPersonalProfilePositionEditForm.java new file mode 100644 index 000000000..b35db563d --- /dev/null +++ b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/ui/PublicPersonalProfilePositionEditForm.java @@ -0,0 +1,74 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.FormProcessException; +import com.arsdigita.bebop.FormSection; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.event.FormInitListener; +import com.arsdigita.bebop.event.FormProcessListener; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.bebop.form.TextArea; +import com.arsdigita.bebop.parameters.ParameterModel; +import com.arsdigita.bebop.parameters.StringParameter; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.PublicPersonalProfile; +import com.arsdigita.cms.ui.authoring.BasicItemForm; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class PublicPersonalProfilePositionEditForm + extends BasicItemForm + implements FormProcessListener, + FormInitListener { + + public PublicPersonalProfilePositionEditForm( + final ItemSelectionModel itemModel) { + super("PublicPersonalProfileEditPosition", itemModel); + } + + @Override + protected void addWidgets() { + add(new Label(PublicPersonalProfileGlobalizationUtil.globalize( + "publicpersonalprofile.ui.position"))); + final ParameterModel positionParam = new StringParameter( + PublicPersonalProfile.POSITION); + final TextArea position = new TextArea(positionParam); + position.setCols(75); + position.setRows(8); + add(position); + } + + @Override + public void init(final FormSectionEvent fse) throws FormProcessException { + final PageState state = fse.getPageState(); + final FormData data = fse.getFormData(); + final PublicPersonalProfile profile = (PublicPersonalProfile) getItemSelectionModel(). + getSelectedItem(state); + + data.put(PublicPersonalProfile.POSITION, profile.getPosition()); + + setVisible(state, true); + } + + @Override + public void process(final FormSectionEvent fse) + throws FormProcessException { + final PageState state = fse.getPageState(); + final FormData data = fse.getFormData(); + final PublicPersonalProfile profile = (PublicPersonalProfile) getItemSelectionModel(). + getSelectedItem(state); + + if ((profile != null) + && getSaveCancelSection().getSaveButton().isSelected(state)) { + profile.setPosition((String) data.get(PublicPersonalProfile.POSITION)); + + profile.save(); + } + + init(fse); + } +} diff --git a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/ui/PublicPersonalProfilePositionStep.java b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/ui/PublicPersonalProfilePositionStep.java new file mode 100644 index 000000000..0ae3290d6 --- /dev/null +++ b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/ui/PublicPersonalProfilePositionStep.java @@ -0,0 +1,54 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Component; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.PublicPersonalProfile; +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; +import com.arsdigita.domain.DomainObject; +import com.arsdigita.toolbox.ui.DomainObjectPropertySheet; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class PublicPersonalProfilePositionStep extends SimpleEditStep { + + private String EDIT_POSITION_SHEET_NAME = "editPosition"; + + public PublicPersonalProfilePositionStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public PublicPersonalProfilePositionStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent, + final String prefix) { + super(itemModel, parent, prefix); + + final BasicItemForm editPositionForm = new PublicPersonalProfilePositionEditForm( + itemModel); + add(EDIT_POSITION_SHEET_NAME, + (String) PublicPersonalProfileGlobalizationUtil.globalize( + "publicpersonalprofile.ui.position.edit").localize(), + new WorkflowLockedComponentAccess(editPositionForm, itemModel), + editPositionForm.getSaveCancelSection().getCancelButton()); + + setDisplayComponent(getPublicPersonalProfilePositionSheet(itemModel)); + } + + public static Component getPublicPersonalProfilePositionSheet( + final ItemSelectionModel itemModel) { + final DomainObjectPropertySheet sheet = new DomainObjectPropertySheet( + itemModel); + + sheet.add(PublicPersonalProfileGlobalizationUtil.globalize( + "publicpersonalprofile.ui.position"), + PublicPersonalProfile.POSITION); + + return sheet; + } +}