CT NewsItem

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
master
quasi 2011-01-22 12:03:31 +00:00
parent d63957b617
commit 6eaabaf7fa
3 changed files with 67 additions and 37 deletions

View File

@ -21,18 +21,35 @@ package com.arsdigita.cms.contenttypes;
import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.runtime.AbstractConfig;
import com.arsdigita.util.parameter.Parameter; import com.arsdigita.util.parameter.Parameter;
import com.arsdigita.util.parameter.BooleanParameter; 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 { public class NewsItemConfig extends AbstractConfig {
private final Parameter m_hideHomepageField; private final Parameter m_hideHomepageField;
private final Parameter m_startYear;
private final Parameter m_endYearDelta;
public NewsItemConfig() { public NewsItemConfig() {
m_hideHomepageField = new BooleanParameter( m_hideHomepageField = new BooleanParameter(
"com.arsdigita.cms.contenttypes.newsitem.hide_homepage", "com.arsdigita.cms.contenttypes.newsitem.hide_homepage",
Parameter.REQUIRED, Parameter.REQUIRED,
new Boolean(false)); 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_hideHomepageField);
register(m_startYear);
register(m_endYearDelta);
loadInfo(); loadInfo();
} }
@ -40,5 +57,11 @@ public class NewsItemConfig extends AbstractConfig {
public final boolean getHideHomepageField() { public final boolean getHideHomepageField() {
return ((Boolean) get(m_hideHomepageField)).booleanValue(); 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();
}
} }

View File

@ -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.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.example=false
com.arsdigita.cms.contenttypes.newsitem.hide_homepage.format=[boolean] 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]

View File

@ -18,7 +18,6 @@
*/ */
package com.arsdigita.cms.contenttypes.ui; package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData; import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.event.FormInitListener; 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.contenttypes.NewsItem;
import com.arsdigita.cms.ui.authoring.BasicPageForm; import com.arsdigita.cms.ui.authoring.BasicPageForm;
import com.arsdigita.cms.contenttypes.util.NewsItemGlobalizationUtil; 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 <code>news item</code>. These are * Form to edit the basic properties of a <code>news item</code>. These are
@ -49,7 +51,6 @@ public class NewsItemPropertyForm extends BasicPageForm
implements FormProcessListener, FormInitListener, FormSubmissionListener { implements FormProcessListener, FormInitListener, FormSubmissionListener {
private NewsItemPropertiesStep m_step; private NewsItemPropertiesStep m_step;
/** lead parameter name */ /** lead parameter name */
public static final String LEAD = "lead"; public static final String LEAD = "lead";
/** Item date parameter name */ /** Item date parameter name */
@ -58,6 +59,9 @@ public class NewsItemPropertyForm extends BasicPageForm
/** Name of this form */ /** Name of this form */
public static final String ID = "news_item_edit"; 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 * Creates a new form to edit the NewsItem object specified
* by the item selection model passed in. * by the item selection model passed in.
@ -81,7 +85,6 @@ public class NewsItemPropertyForm extends BasicPageForm
addSubmissionListener(this); addSubmissionListener(this);
} }
/** /**
* Adds widgets to the form. * Adds widgets to the form.
*/ */
@ -89,8 +92,7 @@ public class NewsItemPropertyForm extends BasicPageForm
super.addWidgets(); super.addWidgets();
// summary (lead) // summary (lead)
add(new Label((String)NewsItemGlobalizationUtil.globalize add(new Label((String) NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.newsitem.lead").localize()));
("cms.contenttypes.ui.newsitem.lead").localize()));
ParameterModel leadParam = new StringParameter(LEAD); ParameterModel leadParam = new StringParameter(LEAD);
//leadParam //leadParam
// .addParameterListener(new NotNullValidationListener()); // .addParameterListener(new NotNullValidationListener());
@ -103,26 +105,22 @@ public class NewsItemPropertyForm extends BasicPageForm
if (!NewsItem.getConfig().getHideHomepageField()) { if (!NewsItem.getConfig().getHideHomepageField()) {
RadioGroup homepageWidget = new RadioGroup(IS_HOMEPAGE); RadioGroup homepageWidget = new RadioGroup(IS_HOMEPAGE);
homepageWidget.addOption(new Option("true", homepageWidget.addOption(new Option("true",
new Label( (String)NewsItemGlobalizationUtil.globalize new Label((String) NewsItemGlobalizationUtil.globalize("cms.ui.yes").localize())));
("cms.ui.yes").localize())));
homepageWidget.addOption(new Option("false", homepageWidget.addOption(new Option("false",
new Label( (String)NewsItemGlobalizationUtil.globalize new Label((String) NewsItemGlobalizationUtil.globalize("cms.ui.no").localize())));
("cms.ui.no").localize())));
add(new Label( (String)NewsItemGlobalizationUtil.globalize add(new Label((String) NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.newsitem.homepage").localize()));
("cms.contenttypes.ui.newsitem.homepage").localize()));
add(homepageWidget); add(homepageWidget);
} }
// publication date // publication date
add(new Label((String)NewsItemGlobalizationUtil.globalize add(new Label((String) NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.newsitem.date").localize()));
("cms.contenttypes.ui.newsitem.date").localize()));
ParameterModel newsDateParam = new DateParameter(NEWS_DATE); ParameterModel newsDateParam = new DateParameter(NEWS_DATE);
newsDateParam newsDateParam.addParameterListener(new NotNullValidationListener());
.addParameterListener(new NotNullValidationListener()); m_newsDate = new com.arsdigita.bebop.form.Date(newsDateParam);
com.arsdigita.bebop.form.Date newsDate m_newsDate.setYearRange(NewsItem.getConfig().getStartYear(),
= new com.arsdigita.bebop.form.Date(newsDateParam ); GregorianCalendar.getInstance().get(Calendar.YEAR) + NewsItem.getConfig().getEndYearDelta());
add(newsDate); add(m_newsDate);
} }
/** Form initialisation hook. Fills widgets with data. */ /** Form initialisation hook. Fills widgets with data. */
@ -137,6 +135,7 @@ public class NewsItemPropertyForm extends BasicPageForm
newsDate = new java.util.Date(); newsDate = new java.util.Date();
} }
m_newsDate.addYear(newsDate);
data.put(NEWS_DATE, newsDate); data.put(NEWS_DATE, newsDate);
data.put(LEAD, item.getLead()); data.put(LEAD, item.getLead());
if (!NewsItem.getConfig().getHideHomepageField()) { if (!NewsItem.getConfig().getHideHomepageField()) {
@ -146,9 +145,8 @@ public class NewsItemPropertyForm extends BasicPageForm
/** Cancels streamlined editing. */ /** Cancels streamlined editing. */
public void submitted(FormSectionEvent fse) { public void submitted(FormSectionEvent fse) {
if (m_step != null && if (m_step != null
getSaveCancelSection().getCancelButton() && getSaveCancelSection().getCancelButton().isSelected(fse.getPageState())) {
.isSelected( fse.getPageState())) {
m_step.cancelStreamlinedCreation(fse.getPageState()); m_step.cancelStreamlinedCreation(fse.getPageState());
} }
} }
@ -161,8 +159,7 @@ public class NewsItemPropertyForm extends BasicPageForm
// save only if save button was newsed // save only if save button was newsed
if (item != null if (item != null
&& getSaveCancelSection().getSaveButton() && getSaveCancelSection().getSaveButton().isSelected(fse.getPageState())) {
.isSelected(fse.getPageState())) {
item.setNewsDate((java.util.Date) data.get(NEWS_DATE)); item.setNewsDate((java.util.Date) data.get(NEWS_DATE));
item.setLead((String) data.get(LEAD)); item.setLead((String) data.get(LEAD));