Event 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@703 8810af33-2d31-482b-a856-94f89814c4df
master
quasi 2011-01-22 12:02:21 +00:00
parent ebbc22fbd5
commit d63957b617
1 changed files with 145 additions and 160 deletions

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.FormProcessException; import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Label;
@ -51,23 +50,19 @@ import java.util.GregorianCalendar;
* This form can be extended to create forms for Event subclasses. * This form can be extended to create forms for Event subclasses.
**/ **/
public class EventPropertyForm extends BasicPageForm public class EventPropertyForm extends BasicPageForm
implements FormProcessListener, FormInitListener, FormSubmissionListener { implements FormProcessListener, FormInitListener, FormSubmissionListener {
/** Name of this form */ /** Name of this form */
public static final String ID = "event_edit"; public static final String ID = "event_edit";
private final static org.apache.log4j.Logger s_log = private final static org.apache.log4j.Logger s_log =
org.apache.log4j.Logger.getLogger(EventPropertyForm.class); org.apache.log4j.Logger.getLogger(EventPropertyForm.class);
private EventPropertiesStep m_step; private EventPropertiesStep m_step;
/** event date parameter name */ /** event date parameter name */
public static final String START_DATE = "startDate"; public static final String START_DATE = "startDate";
public static final String END_DATE = "endDate"; public static final String END_DATE = "endDate";
public static final String START_TIME = "startTime"; public static final String START_TIME = "startTime";
public static final String END_TIME = "endTime"; public static final String END_TIME = "endTime";
public static final String EVENT_DATE = "eventDate"; public static final String EVENT_DATE = "eventDate";
/** location parameter name */ /** location parameter name */
public static final String LOCATION = "location"; public static final String LOCATION = "location";
/** lead parameter name */ /** lead parameter name */
@ -81,6 +76,10 @@ public class EventPropertyForm extends BasicPageForm
/** cost parameter name */ /** cost parameter name */
public static final String COST = "cost"; public static final String COST = "cost";
/* DateWidgets have to be accessible later on */
private com.arsdigita.bebop.form.Date m_startDate;
private com.arsdigita.bebop.form.Date m_endDate;
/** /**
* Creates a new form to edit the Event object specified by the item * Creates a new form to edit the Event object specified by the item
* selection model passed in. * selection model passed in.
@ -88,9 +87,10 @@ public class EventPropertyForm extends BasicPageForm
* @param itemModel The ItemSelectionModel to use to obtain the Event to * @param itemModel The ItemSelectionModel to use to obtain the Event to
* work on * work on
**/ **/
public EventPropertyForm( ItemSelectionModel itemModel ) { public EventPropertyForm(ItemSelectionModel itemModel) {
this(itemModel,null); this(itemModel, null);
} }
/** /**
* Creates a new form to edit the Event object specified by the item * Creates a new form to edit the Event object specified by the item
* selection model passed in. * selection model passed in.
@ -99,8 +99,8 @@ public class EventPropertyForm extends BasicPageForm
* work on * work on
* @param step The EventPropertiesStep which controls this form. * @param step The EventPropertiesStep which controls this form.
**/ **/
public EventPropertyForm( ItemSelectionModel itemModel, EventPropertiesStep step ) { public EventPropertyForm(ItemSelectionModel itemModel, EventPropertiesStep step) {
super( ID, itemModel ); super(ID, itemModel);
m_step = step; m_step = step;
addSubmissionListener(this); addSubmissionListener(this);
} }
@ -112,79 +112,69 @@ public class EventPropertyForm extends BasicPageForm
super.addWidgets(); super.addWidgets();
/* Summary (lead) */ /* Summary (lead) */
add(new Label((String)EventGlobalizationUtil.globalize add(new Label((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.lead").localize()));
("cms.contenttypes.ui.event.lead").localize())); ParameterModel leadParam = new StringParameter(LEAD);
ParameterModel leadParam = new StringParameter(LEAD);
//leadParam //leadParam
// .addParameterListener(new NotNullValidationListener()); // .addParameterListener(new NotNullValidationListener());
TextArea lead = new TextArea(leadParam); TextArea lead = new TextArea(leadParam);
lead.setCols(50); lead.setCols(50);
lead.setRows(5); lead.setRows(5);
add(lead); add(lead);
/* Start date and time */ /* Start date and time */
ParameterModel eventStartDateParam = new DateParameter(START_DATE); ParameterModel eventStartDateParam = new DateParameter(START_DATE);
add(new Label((String)EventGlobalizationUtil.globalize add(new Label((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.start_date").localize()));
("cms.contenttypes.ui.event.start_date").localize()));
eventStartDateParam.addParameterListener(new NotNullValidationListener()); eventStartDateParam.addParameterListener(new NotNullValidationListener());
// Use bebop date instead of java.util.date // Use bebop date instead of java.util.date
com.arsdigita.bebop.form.Date startDate m_startDate = new com.arsdigita.bebop.form.Date(eventStartDateParam);
= new com.arsdigita.bebop.form.Date(eventStartDateParam);
// Set the upper und lower boundary of the year select box // Set the upper und lower boundary of the year select box
startDate.setYearRange(Event.getConfig().getStartYear(), m_startDate.setYearRange(Event.getConfig().getStartYear(),
GregorianCalendar.getInstance().get(Calendar.YEAR) + Event.getConfig().getEndYearDelta()); GregorianCalendar.getInstance().get(Calendar.YEAR) + Event.getConfig().getEndYearDelta());
add(startDate); add(m_startDate);
ParameterModel eventStartTimeParam = new TimeParameter(START_TIME); ParameterModel eventStartTimeParam = new TimeParameter(START_TIME);
add(new Label((String)EventGlobalizationUtil.globalize add(new Label((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.start_time").localize()));
("cms.contenttypes.ui.event.start_time").localize()));
eventStartTimeParam.addParameterListener(new NotNullValidationListener()); eventStartTimeParam.addParameterListener(new NotNullValidationListener());
Time startTime = new Time(eventStartTimeParam); Time startTime = new Time(eventStartTimeParam);
add(startTime); add(startTime);
/* End date and time */ /* End date and time */
ParameterModel eventEndDateParam = new DateParameter(END_DATE); ParameterModel eventEndDateParam = new DateParameter(END_DATE);
add(new Label((String)EventGlobalizationUtil.globalize add(new Label((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.end_date").localize()));
("cms.contenttypes.ui.event.end_date").localize()));
// Use bebop date instead of java.util.date // Use bebop date instead of java.util.date
com.arsdigita.bebop.form.Date endDate m_endDate = new com.arsdigita.bebop.form.Date(eventEndDateParam);
= new com.arsdigita.bebop.form.Date(eventEndDateParam); m_endDate.setYearRange(Event.getConfig().getStartYear(),
endDate.setYearRange(Event.getConfig().getStartYear(), GregorianCalendar.getInstance().get(Calendar.YEAR) + Event.getConfig().getEndYearDelta());
GregorianCalendar.getInstance().get(Calendar.YEAR) + Event.getConfig().getEndYearDelta()); add(m_endDate);
add(endDate);
ParameterModel eventEndTimeParam = new TimeParameter(END_TIME); ParameterModel eventEndTimeParam = new TimeParameter(END_TIME);
add(new Label((String)EventGlobalizationUtil.globalize add(new Label((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.end_time").localize()));
("cms.contenttypes.ui.event.end_time").localize()));
Time endTime = new Time(eventEndTimeParam); Time endTime = new Time(eventEndTimeParam);
add(endTime); add(endTime);
/* optional additional / literal date description */ /* optional additional / literal date description */
if(!Event.getConfig().getHideDateDescription()) { if (!Event.getConfig().getHideDateDescription()) {
add(new Label((String)EventGlobalizationUtil.globalize add(new Label((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.date_description").localize()));
("cms.contenttypes.ui.event.date_description").localize())); ParameterModel eventDateParam = new StringParameter(EVENT_DATE);
ParameterModel eventDateParam = new StringParameter(EVENT_DATE); //eventDateParam
//eventDateParam // .addParameterListener(new NotNullValidationListener());
// .addParameterListener(new NotNullValidationListener()); if (Event.getConfig().getUseHtmlDateDescription()) {
if(Event.getConfig().getUseHtmlDateDescription()) { CMSDHTMLEditor eventDate = new CMSDHTMLEditor(eventDateParam);
CMSDHTMLEditor eventDate = new CMSDHTMLEditor(eventDateParam); eventDate.setCols(40);
eventDate.setCols(40); eventDate.setRows(8);
eventDate.setRows(8); add(eventDate);
add(eventDate); } else {
} eventDateParam.addParameterListener(new StringInRangeValidationListener(0, 100));
else { TextArea eventDate = new TextArea(eventDateParam);
eventDateParam.addParameterListener( new StringInRangeValidationListener(0, 100) ); eventDate.setCols(50);
TextArea eventDate = new TextArea(eventDateParam); eventDate.setRows(2);
eventDate.setCols(50); add(eventDate);
eventDate.setRows(2); }
add(eventDate); }
}
}
/* extensive description of location */ /* extensive description of location */
add(new Label((String)EventGlobalizationUtil.globalize add(new Label((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.location").localize()));
("cms.contenttypes.ui.event.location").localize()));
ParameterModel locationParam = new StringParameter(LOCATION); ParameterModel locationParam = new StringParameter(LOCATION);
//locationParam //locationParam
// .addParameterListener(new NotNullValidationListener()); // .addParameterListener(new NotNullValidationListener());
@ -193,60 +183,56 @@ public class EventPropertyForm extends BasicPageForm
location.setRows(8); location.setRows(8);
add(location); add(location);
/* optional: main contributor */ /* optional: main contributor */
if(!Event.getConfig().getHideMainContributor()) { if (!Event.getConfig().getHideMainContributor()) {
add(new Label((String)EventGlobalizationUtil.globalize add(new Label((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.main_contributor").localize()));
("cms.contenttypes.ui.event.main_contributor").localize())); ParameterModel mainContributorParam =
ParameterModel mainContributorParam = new StringParameter(MAIN_CONTRIBUTOR);
new StringParameter(MAIN_CONTRIBUTOR); //mainContributorParam
//mainContributorParam // .addParameterListener(new NotNullValidationListener());
// .addParameterListener(new NotNullValidationListener()); CMSDHTMLEditor mainContributor = new CMSDHTMLEditor(mainContributorParam);
CMSDHTMLEditor mainContributor = new CMSDHTMLEditor(mainContributorParam); mainContributor.setCols(40);
mainContributor.setCols(40); mainContributor.setRows(10);
mainContributor.setRows(10); add(mainContributor);
add(mainContributor); }
}
/* optional: event type */ /* optional: event type */
if(!Event.getConfig().getHideEventType()) { if (!Event.getConfig().getHideEventType()) {
add(new Label((String)EventGlobalizationUtil.globalize add(new Label((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.event_type").localize()));
("cms.contenttypes.ui.event.event_type").localize())); ParameterModel eventTypeParam = new StringParameter(EVENT_TYPE);
ParameterModel eventTypeParam = new StringParameter(EVENT_TYPE); //eventTypeParam
//eventTypeParam // .addParameterListener(new NotNullValidationListener());
// .addParameterListener(new NotNullValidationListener()); TextField eventType = new TextField(eventTypeParam);
TextField eventType = new TextField(eventTypeParam); eventType.setSize(30);
eventType.setSize(30); eventType.setMaxLength(30);
eventType.setMaxLength(30); add(eventType);
add(eventType); }
}
/* optional: link to map */ /* optional: link to map */
if(!Event.getConfig().getHideLinkToMap()) { if (!Event.getConfig().getHideLinkToMap()) {
add(new Label((String)EventGlobalizationUtil.globalize add(new Label((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.link_to_map").localize()));
("cms.contenttypes.ui.event.link_to_map").localize())); ParameterModel mapLinkParam = new StringParameter(MAP_LINK);
ParameterModel mapLinkParam = new StringParameter(MAP_LINK); //mapLinkParam
//mapLinkParam // .addParameterListener(new NotNullValidationListener());
// .addParameterListener(new NotNullValidationListener()); TextArea mapLink = new TextArea(mapLinkParam);
TextArea mapLink = new TextArea(mapLinkParam); mapLink.setCols(40);
mapLink.setCols(40); mapLink.setRows(2);
mapLink.setRows(2); add(mapLink);
add(mapLink); }
}
/* optional: costs */ /* optional: costs */
if(!Event.getConfig().getHideCost()) { if (!Event.getConfig().getHideCost()) {
add(new Label((String)EventGlobalizationUtil.globalize add(new Label((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.cost").localize()));
("cms.contenttypes.ui.event.cost").localize())); ParameterModel costParam = new TrimmedStringParameter(COST);
ParameterModel costParam = new TrimmedStringParameter(COST); TextField cost = new TextField(costParam);
TextField cost = new TextField(costParam); cost.setSize(30);
cost.setSize(30); cost.setMaxLength(30);
cost.setMaxLength(30); add(cost);
add(cost); }
}
} }
@ -258,96 +244,95 @@ public class EventPropertyForm extends BasicPageForm
if (endDate != null) { if (endDate != null) {
if (startDate == null || startDate.compareTo(endDate) > 0) { if (startDate == null || startDate.compareTo(endDate) > 0) {
throw new FormProcessException((String)EventGlobalizationUtil.globalize throw new FormProcessException((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.end_date_after_start_date").localize());
("cms.contenttypes.ui.event.end_date_after_start_date").localize());
} }
} }
} }
/** Form initialisation hook. Fills widgets with data. */ /** Form initialisation hook. Fills widgets with data. */
public void init(FormSectionEvent fse) { public void init(FormSectionEvent fse) {
// Do some initialization hook stuff // Do some initialization hook stuff
FormData data = fse.getFormData(); FormData data = fse.getFormData();
Event event Event event = (Event) super.initBasicWidgets(fse);
= (Event) super.initBasicWidgets(fse);
// Start date should always be set
java.util.Date startDate = event.getStartDate(); java.util.Date startDate = event.getStartDate();
if (startDate == null) { if (startDate == null) {
// new Date is initialised to current time // new Date is initialised to current time
startDate = new java.util.Date(); startDate = new java.util.Date();
} }
m_startDate.addYear(startDate);
data.put(LEAD, event.getLead());
data.put(START_DATE, startDate);
data.put(START_TIME, event.getStartTime());
// End date can be null // End date can be null
data.put(END_DATE, event.getEndDate()); java.util.Date endDate = event.getEndDate();
data.put(END_TIME, event.getEndTime()); if (endDate != null) {
if(!Event.getConfig().getHideDateDescription()) { m_endDate.addYear(endDate);
data.put(EVENT_DATE, event.getEventDate()); }
}
data.put(LOCATION, event.getLocation()); data.put(LEAD, event.getLead());
if(!Event.getConfig().getHideMainContributor()) { data.put(START_DATE, startDate);
data.put(MAIN_CONTRIBUTOR, event.getMainContributor()); data.put(START_TIME, event.getStartTime());
} data.put(END_DATE, event.getEndDate());
if(!Event.getConfig().getHideEventType()) { data.put(END_TIME, event.getEndTime());
data.put(EVENT_TYPE, event.getEventType()); if (!Event.getConfig().getHideDateDescription()) {
} data.put(EVENT_DATE, event.getEventDate());
if(!Event.getConfig().getHideLinkToMap()) { }
data.put(MAP_LINK, event.getMapLink()); data.put(LOCATION, event.getLocation());
} if (!Event.getConfig().getHideMainContributor()) {
if(!Event.getConfig().getHideCost()) { data.put(MAIN_CONTRIBUTOR, event.getMainContributor());
data.put(COST, event.getCost()); }
} if (!Event.getConfig().getHideEventType()) {
data.put(EVENT_TYPE, event.getEventType());
}
if (!Event.getConfig().getHideLinkToMap()) {
data.put(MAP_LINK, event.getMapLink());
}
if (!Event.getConfig().getHideCost()) {
data.put(COST, event.getCost());
}
} }
/** 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());
} }
} }
/** Form processing hook. Saves Event object. */ /** Form processing hook. Saves Event object. */
public void process(FormSectionEvent fse) { public void process(FormSectionEvent fse) {
FormData data = fse.getFormData(); FormData data = fse.getFormData();
Event event Event event = (Event) super.processBasicWidgets(fse);
= (Event) super.processBasicWidgets(fse);
// save only if save button was pressed // save only if save button was pressed
if (event != null if (event != null
&& getSaveCancelSection().getSaveButton() && getSaveCancelSection().getSaveButton().isSelected(fse.getPageState())) {
.isSelected(fse.getPageState())) {
event.setStartDate((java.util.Date) data.get(START_DATE)); event.setStartDate((java.util.Date) data.get(START_DATE));
event.setStartTime((java.util.Date) data.get(START_TIME)); event.setStartTime((java.util.Date) data.get(START_TIME));
event.setEndDate((java.util.Date) data.get(END_DATE)); event.setEndDate((java.util.Date) data.get(END_DATE));
event.setEndTime((java.util.Date) data.get(END_TIME)); event.setEndTime((java.util.Date) data.get(END_TIME));
//date_description //date_description
if(!Event.getConfig().getHideDateDescription()) { if (!Event.getConfig().getHideDateDescription()) {
event.setEventDate((String) data.get(EVENT_DATE)); event.setEventDate((String) data.get(EVENT_DATE));
} }
if(!Event.getConfig().getHideMainContributor()) { if (!Event.getConfig().getHideMainContributor()) {
event.setMainContributor((String) data.get(MAIN_CONTRIBUTOR)); event.setMainContributor((String) data.get(MAIN_CONTRIBUTOR));
} }
if(!Event.getConfig().getHideEventType()) { if (!Event.getConfig().getHideEventType()) {
event.setEventType((String) data.get(EVENT_TYPE)); event.setEventType((String) data.get(EVENT_TYPE));
} }
if(!Event.getConfig().getHideLinkToMap()) { if (!Event.getConfig().getHideLinkToMap()) {
event.setMapLink((String) data.get(MAP_LINK)); event.setMapLink((String) data.get(MAP_LINK));
} }
event.setLocation((String) data.get(LOCATION)); event.setLocation((String) data.get(LOCATION));
event.setLead((String) data.get(LEAD)); event.setLead((String) data.get(LEAD));
if(!Event.getConfig().getHideCost()) { if (!Event.getConfig().getHideCost()) {
event.setCost((String) data.get(COST)); event.setCost((String) data.get(COST));
} }
event.save(); event.save();
} }
if (m_step != null) { if (m_step != null) {