From 6eaabaf7fae6d9465e35c5e52b2c945420837445 Mon Sep 17 00:00:00 2001 From: quasi Date: Sat, 22 Jan 2011 12:03:31 +0000 Subject: [PATCH] CT NewsItem MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Konfiguration für den Bereich der Jahresangaben hinzugefügt. NewsItem kann nun bearbeitet werden, ohne daß die Jahresangaben des Start- und Enddatum sich ändern, weil sie nicht (mehr) im definierten Bereich der Jahreszahlen liegen. git-svn-id: https://svn.libreccm.org/ccm/trunk@704 8810af33-2d31-482b-a856-94f89814c4df --- .../cms/contenttypes/NewsItemConfig.java | 23 ++++++ .../NewsItemConfig_parameter.properties | 10 +++ .../contenttypes/ui/NewsItemPropertyForm.java | 71 +++++++++---------- 3 files changed, 67 insertions(+), 37 deletions(-) diff --git a/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/NewsItemConfig.java b/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/NewsItemConfig.java index 17b4d5c36..b3bd7ffd4 100755 --- a/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/NewsItemConfig.java +++ b/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/NewsItemConfig.java @@ -21,18 +21,35 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.util.parameter.Parameter; import com.arsdigita.util.parameter.BooleanParameter; +import com.arsdigita.util.parameter.IntegerParameter; +import java.util.Calendar; +import java.util.GregorianCalendar; public class NewsItemConfig extends AbstractConfig { private final Parameter m_hideHomepageField; + private final Parameter m_startYear; + private final Parameter m_endYearDelta; public NewsItemConfig() { m_hideHomepageField = new BooleanParameter( "com.arsdigita.cms.contenttypes.newsitem.hide_homepage", Parameter.REQUIRED, new Boolean(false)); + m_startYear = new IntegerParameter( + "com.arsdigita.cms.contenttypes.newsitem.start_year", + Parameter.REQUIRED, + new Integer(GregorianCalendar.getInstance().get(Calendar.YEAR) - 1)); + + m_endYearDelta = new IntegerParameter( + "com.arsdigita.cms.contenttypes.newsitem.end_year_delta", + Parameter.REQUIRED, + new Integer(3)); + register(m_hideHomepageField); + register(m_startYear); + register(m_endYearDelta); loadInfo(); } @@ -40,5 +57,11 @@ public class NewsItemConfig extends AbstractConfig { public final boolean getHideHomepageField() { return ((Boolean) get(m_hideHomepageField)).booleanValue(); } + public final int getStartYear() { + return ((Integer) get(m_startYear)).intValue(); + } + public final int getEndYearDelta() { + return ((Integer) get(m_endYearDelta)).intValue(); + } } diff --git a/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/NewsItemConfig_parameter.properties b/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/NewsItemConfig_parameter.properties index 5cb136ab8..6eabab9c3 100755 --- a/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/NewsItemConfig_parameter.properties +++ b/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/NewsItemConfig_parameter.properties @@ -2,3 +2,13 @@ com.arsdigita.cms.contenttypes.newsitem.hide_homepage.title=Hide Homepage Field com.arsdigita.cms.contenttypes.newsitem.hide_homepage.purpose=The Homepage Field can be hidden in the admin GUI com.arsdigita.cms.contenttypes.newsitem.hide_homepage.example=false com.arsdigita.cms.contenttypes.newsitem.hide_homepage.format=[boolean] + +com.arsdigita.cms.contenttypes.newsitem.start_year.title=Start Year +com.arsdigita.cms.contenttypes.newsitem.start_year.purpose=Start year for the year select box +com.arsdigita.cms.contenttypes.newsitem.start_year.example=2008 +com.arsdigita.cms.contenttypes.newsitem.start_year.format=[integer] + +com.arsdigita.cms.contenttypes.newsitem.end_year_delta.title=End Year +com.arsdigita.cms.contenttypes.newsitem.end_year_delta.purpose=End year delta for the year select box +com.arsdigita.cms.contenttypes.newsitem.end_year_delta.example=3 +com.arsdigita.cms.contenttypes.newsitem.end_year_delta.format=[integer] diff --git a/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/ui/NewsItemPropertyForm.java b/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/ui/NewsItemPropertyForm.java index f69b03b91..6b015b2b0 100755 --- a/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/ui/NewsItemPropertyForm.java +++ b/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/ui/NewsItemPropertyForm.java @@ -18,7 +18,6 @@ */ package com.arsdigita.cms.contenttypes.ui; - import com.arsdigita.bebop.FormData; import com.arsdigita.bebop.Label; import com.arsdigita.bebop.event.FormInitListener; @@ -36,6 +35,9 @@ import com.arsdigita.cms.ItemSelectionModel; import com.arsdigita.cms.contenttypes.NewsItem; import com.arsdigita.cms.ui.authoring.BasicPageForm; import com.arsdigita.cms.contenttypes.util.NewsItemGlobalizationUtil; +import java.util.Calendar; +import java.util.Calendar; +import java.util.GregorianCalendar; /** * Form to edit the basic properties of a news item. These are @@ -46,10 +48,9 @@ import com.arsdigita.cms.contenttypes.util.NewsItemGlobalizationUtil; * This form can be extended to create forms for NewsItem subclasses. **/ public class NewsItemPropertyForm extends BasicPageForm - implements FormProcessListener, FormInitListener, FormSubmissionListener { + implements FormProcessListener, FormInitListener, FormSubmissionListener { private NewsItemPropertiesStep m_step; - /** lead parameter name */ public static final String LEAD = "lead"; /** Item date parameter name */ @@ -58,14 +59,17 @@ public class NewsItemPropertyForm extends BasicPageForm /** Name of this form */ public static final String ID = "news_item_edit"; + + private com.arsdigita.bebop.form.Date m_newsDate; + /** * Creates a new form to edit the NewsItem object specified * by the item selection model passed in. * @param itemModel The ItemSelectionModel to use to obtain the * NewsItem to work on */ - public NewsItemPropertyForm( ItemSelectionModel itemModel ) { - this( itemModel, null ); + public NewsItemPropertyForm(ItemSelectionModel itemModel) { + this(itemModel, null); } /** @@ -75,13 +79,12 @@ public class NewsItemPropertyForm extends BasicPageForm * NewsItem to work on * @param step The NewsItemPropertiesStep which controls this form. */ - public NewsItemPropertyForm( ItemSelectionModel itemModel, NewsItemPropertiesStep step ) { - super( ID, itemModel ); + public NewsItemPropertyForm(ItemSelectionModel itemModel, NewsItemPropertiesStep step) { + super(ID, itemModel); m_step = step; addSubmissionListener(this); } - /** * Adds widgets to the form. */ @@ -89,8 +92,7 @@ public class NewsItemPropertyForm extends BasicPageForm super.addWidgets(); // summary (lead) - add(new Label((String)NewsItemGlobalizationUtil.globalize - ("cms.contenttypes.ui.newsitem.lead").localize())); + add(new Label((String) NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.newsitem.lead").localize())); ParameterModel leadParam = new StringParameter(LEAD); //leadParam // .addParameterListener(new NotNullValidationListener()); @@ -102,27 +104,23 @@ public class NewsItemPropertyForm extends BasicPageForm // newsitem on homepage? if (!NewsItem.getConfig().getHideHomepageField()) { RadioGroup homepageWidget = new RadioGroup(IS_HOMEPAGE); - homepageWidget.addOption(new Option("true", - new Label( (String)NewsItemGlobalizationUtil.globalize - ("cms.ui.yes").localize()))); - homepageWidget.addOption(new Option("false", - new Label( (String)NewsItemGlobalizationUtil.globalize - ("cms.ui.no").localize()))); - - add(new Label( (String)NewsItemGlobalizationUtil.globalize - ("cms.contenttypes.ui.newsitem.homepage").localize())); + homepageWidget.addOption(new Option("true", + new Label((String) NewsItemGlobalizationUtil.globalize("cms.ui.yes").localize()))); + homepageWidget.addOption(new Option("false", + new Label((String) NewsItemGlobalizationUtil.globalize("cms.ui.no").localize()))); + + add(new Label((String) NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.newsitem.homepage").localize())); add(homepageWidget); } - + // publication date - add(new Label((String)NewsItemGlobalizationUtil.globalize - ("cms.contenttypes.ui.newsitem.date").localize())); + add(new Label((String) NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.newsitem.date").localize())); ParameterModel newsDateParam = new DateParameter(NEWS_DATE); - newsDateParam - .addParameterListener(new NotNullValidationListener()); - com.arsdigita.bebop.form.Date newsDate - = new com.arsdigita.bebop.form.Date(newsDateParam ); - add(newsDate); + newsDateParam.addParameterListener(new NotNullValidationListener()); + m_newsDate = new com.arsdigita.bebop.form.Date(newsDateParam); + m_newsDate.setYearRange(NewsItem.getConfig().getStartYear(), + GregorianCalendar.getInstance().get(Calendar.YEAR) + NewsItem.getConfig().getEndYearDelta()); + add(m_newsDate); } /** Form initialisation hook. Fills widgets with data. */ @@ -132,23 +130,23 @@ public class NewsItemPropertyForm extends BasicPageForm // set a default item date, if none set java.util.Date newsDate = item.getNewsDate(); - if(newsDate == null) { + if (newsDate == null) { // new Date is initialised to current time newsDate = new java.util.Date(); } - data.put(NEWS_DATE, newsDate); - data.put(LEAD, item.getLead()); + m_newsDate.addYear(newsDate); + data.put(NEWS_DATE, newsDate); + data.put(LEAD, item.getLead()); if (!NewsItem.getConfig().getHideHomepageField()) { data.put(IS_HOMEPAGE, item.isHomepage()); } } /** Cancels streamlined editing. */ - public void submitted( FormSectionEvent fse ) { - if (m_step != null && - getSaveCancelSection().getCancelButton() - .isSelected( fse.getPageState())) { + public void submitted(FormSectionEvent fse) { + if (m_step != null + && getSaveCancelSection().getCancelButton().isSelected(fse.getPageState())) { m_step.cancelStreamlinedCreation(fse.getPageState()); } } @@ -160,9 +158,8 @@ public class NewsItemPropertyForm extends BasicPageForm NewsItem item = (NewsItem) super.processBasicWidgets(fse); // save only if save button was newsed - if(item != null - && getSaveCancelSection().getSaveButton() - .isSelected(fse.getPageState())) { + if (item != null + && getSaveCancelSection().getSaveButton().isSelected(fse.getPageState())) { item.setNewsDate((java.util.Date) data.get(NEWS_DATE)); item.setLead((String) data.get(LEAD));