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
@ -46,10 +48,9 @@ import com.arsdigita.cms.contenttypes.util.NewsItemGlobalizationUtil;
* This form can be extended to create forms for NewsItem subclasses. * This form can be extended to create forms for NewsItem subclasses.
**/ **/
public class NewsItemPropertyForm extends BasicPageForm 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,14 +59,17 @@ 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.
* @param itemModel The ItemSelectionModel to use to obtain the * @param itemModel The ItemSelectionModel to use to obtain the
* NewsItem to work on * NewsItem to work on
*/ */
public NewsItemPropertyForm( ItemSelectionModel itemModel ) { public NewsItemPropertyForm(ItemSelectionModel itemModel) {
this( itemModel, null ); this(itemModel, null);
} }
/** /**
@ -75,13 +79,12 @@ public class NewsItemPropertyForm extends BasicPageForm
* NewsItem to work on * NewsItem to work on
* @param step The NewsItemPropertiesStep which controls this form. * @param step The NewsItemPropertiesStep which controls this form.
*/ */
public NewsItemPropertyForm( ItemSelectionModel itemModel, NewsItemPropertiesStep step ) { public NewsItemPropertyForm(ItemSelectionModel itemModel, NewsItemPropertiesStep step) {
super( ID, itemModel ); super(ID, itemModel);
m_step = step; m_step = step;
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. */
@ -132,23 +130,23 @@ public class NewsItemPropertyForm extends BasicPageForm
// set a default item date, if none set // set a default item date, if none set
java.util.Date newsDate = item.getNewsDate(); java.util.Date newsDate = item.getNewsDate();
if(newsDate == null) { if (newsDate == null) {
// new Date is initialised to current time // new Date is initialised to current time
newsDate = new java.util.Date(); newsDate = new java.util.Date();
} }
data.put(NEWS_DATE, newsDate); m_newsDate.addYear(newsDate);
data.put(LEAD, item.getLead()); data.put(NEWS_DATE, newsDate);
data.put(LEAD, item.getLead());
if (!NewsItem.getConfig().getHideHomepageField()) { if (!NewsItem.getConfig().getHideHomepageField()) {
data.put(IS_HOMEPAGE, item.isHomepage()); data.put(IS_HOMEPAGE, item.isHomepage());
} }
} }
/** 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());
} }
} }
@ -160,9 +158,8 @@ public class NewsItemPropertyForm extends BasicPageForm
NewsItem item = (NewsItem) super.processBasicWidgets(fse); NewsItem item = (NewsItem) super.processBasicWidgets(fse);
// 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));