GenericArticle

AuthoringKit von ccm-cms-types-article teilweise zum GenericArticle verschoben

NewsItem

Überflüssiger AuthoringStep zum hinzufügen von Bildern aus XML-Datei entfernt

git-svn-id: https://svn.libreccm.org/ccm/trunk@744 8810af33-2d31-482b-a856-94f89814c4df
master
quasi 2011-02-13 10:11:56 +00:00
parent 0bf93f9fbe
commit 4a4af01a90
5 changed files with 261 additions and 96 deletions

View File

@ -19,20 +19,13 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ContentPage;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.Article;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
import com.arsdigita.cms.util.GlobalizationUtil;
import java.text.DateFormat;
/**
* Authoring step to edit the simple attributes of the Article content
@ -41,25 +34,25 @@ import java.text.DateFormat;
* This authoring step replaces
* the <code>com.arsdigita.ui.authoring.PageEdit</code> step for this type.
*/
public class ArticlePropertiesStep
extends SimpleEditStep {
public class ArticlePropertiesStep extends GenericArticlePropertiesStep {
/** The name of the editing sheet added to this step */
public static String EDIT_SHEET_NAME = "edit";
public ArticlePropertiesStep( ItemSelectionModel itemModel,
AuthoringKitWizard parent ) {
super( itemModel, parent );
setDefaultEditKey(EDIT_SHEET_NAME);
public ArticlePropertiesStep(ItemSelectionModel itemModel, AuthoringKitWizard parent) {
super(itemModel, parent);
}
@Override
protected void createEditSheet(ItemSelectionModel itemModel) {
BasicPageForm editSheet;
editSheet = new ArticlePropertyForm(itemModel, this);
add(EDIT_SHEET_NAME, "Edit", new WorkflowLockedComponentAccess(editSheet, itemModel), editSheet.getSaveCancelSection().getCancelButton());
}
editSheet = new ArticlePropertyForm( itemModel, this );
add( EDIT_SHEET_NAME, "Edit", new WorkflowLockedComponentAccess(editSheet, itemModel),
editSheet.getSaveCancelSection().getCancelButton() );
setDisplayComponent( getArticlePropertySheet( itemModel ) );
@Override
protected void setDisplayComponent(ItemSelectionModel itemModel) {
setDisplayComponent(getArticlePropertySheet(itemModel));
}
/**
@ -70,32 +63,11 @@ public class ArticlePropertiesStep
* @return A component to display the state of the basic properties
* of the release
*/
public static Component getArticlePropertySheet( ItemSelectionModel
itemModel ) {
DomainObjectPropertySheet sheet = new DomainObjectPropertySheet( itemModel );
sheet.add( GlobalizationUtil.globalize("cms.contenttypes.ui.name"), Article.NAME );
sheet.add( GlobalizationUtil.globalize("cms.contenttypes.ui.title"), Article.TITLE );
if (!ContentSection.getConfig().getHideLaunchDate()) {
sheet.add(GlobalizationUtil.globalize("cms.contenttypes.ui.launch_date"),
ContentPage.LAUNCH_DATE,
new DomainObjectPropertySheet.AttributeFormatter() {
public String format(DomainObject item,
String attribute,
PageState state) {
ContentPage page = (ContentPage) item;
if(page.getLaunchDate() != null) {
return DateFormat.getDateInstance(DateFormat.LONG)
.format(page.getLaunchDate());
} else {
return (String)GlobalizationUtil.globalize("cms.ui.unknown").localize();
}
}
});
}
sheet.add( GlobalizationUtil.globalize("cms.contenttypes.ui.lead"), Article.LEAD );
public static Component getArticlePropertySheet(ItemSelectionModel itemModel) {
DomainObjectPropertySheet sheet = (DomainObjectPropertySheet) getGenericArticlePropertySheet(itemModel);
sheet.add(GlobalizationUtil.globalize("cms.contenttypes.ui.lead"), Article.LEAD);
return sheet;
}
}

View File

@ -18,7 +18,6 @@
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
@ -34,22 +33,18 @@ import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.Article;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
import com.arsdigita.cms.util.GlobalizationUtil;
/**
* Form to edit the basic properties of an article. This form can be
* extended to create forms for Article subclasses.
*/
public class ArticlePropertyForm
extends BasicPageForm
implements FormProcessListener, FormInitListener, FormSubmissionListener {
public class ArticlePropertyForm extends GenericArticlePropertyForm
implements FormProcessListener, FormInitListener, FormSubmissionListener {
private final static org.apache.log4j.Logger s_log =
org.apache.log4j.Logger.getLogger(ArticlePropertyForm.class);
org.apache.log4j.Logger.getLogger(ArticlePropertyForm.class);
private ArticlePropertiesStep m_step;
public static final String LEAD = "lead";
/**
@ -58,8 +53,8 @@ public class ArticlePropertyForm
* @param itemModel The ItemSelectionModel to use to obtain the
* Article to work on
*/
public ArticlePropertyForm( ItemSelectionModel itemModel ) {
this( itemModel, null );
public ArticlePropertyForm(ItemSelectionModel itemModel) {
this(itemModel, null);
}
/**
@ -69,76 +64,72 @@ public class ArticlePropertyForm
* Article to work on
* @param step The ArticlePropertiesStep which controls this form.
*/
public ArticlePropertyForm( ItemSelectionModel itemModel, ArticlePropertiesStep step ) {
super( ID, itemModel );
m_step = step;
public ArticlePropertyForm(ItemSelectionModel itemModel, ArticlePropertiesStep step) {
super(itemModel, step);
addSubmissionListener(this);
}
/**
* Adds widgets to the form.
*/
@Override
protected void addWidgets() {
super.addWidgets();
add( new Label(GlobalizationUtil.globalize("cms.contenttypes.ui.lead") ) );
ParameterModel leadParam
= new StringParameter( LEAD );
add(new Label(GlobalizationUtil.globalize("cms.contenttypes.ui.lead")));
ParameterModel leadParam = new StringParameter(LEAD);
if (ContentSection.getConfig().mandatoryDescriptions()) {
leadParam.addParameterListener(
leadParam.addParameterListener(
new NotEmptyValidationListener(
GlobalizationUtil.globalize(
"cms.contenttypes.ui.description_missing")));
}
GlobalizationUtil.globalize(
"cms.contenttypes.ui.description_missing")));
}
//leadParam
// .addParameterListener( new NotNullValidationListener() );
leadParam.addParameterListener(new StringInRangeValidationListener(0, 1000));
TextArea lead = new TextArea( leadParam );
lead.setCols( 40 );
lead.setRows( 5 );
add( lead );
leadParam.addParameterListener(new StringInRangeValidationListener(0, 1000));
TextArea lead = new TextArea(leadParam);
lead.setCols(40);
lead.setRows(5);
add(lead);
}
@Override
public void validate(FormSectionEvent e) throws FormProcessException {
FormData d = e.getFormData();
}
/** Form initialisation hook. Fills widgets with data. */
public void init( FormSectionEvent fse ) {
@Override
public void init(FormSectionEvent fse) {
// Do some initialization hook stuff
FormData data = fse.getFormData();
Article article
= (Article) super.initBasicWidgets( fse );
Article article = (Article) super.initBasicWidgets(fse);
data.put( LEAD, article.getLead() );
data.put(LEAD, article.getLead());
}
/** Cancels streamlined editing. */
public void submitted( FormSectionEvent fse ) {
if (m_step != null &&
getSaveCancelSection().getCancelButton()
.isSelected( fse.getPageState())) {
@Override
public void submitted(FormSectionEvent fse) {
if (m_step != null
&& getSaveCancelSection().getCancelButton().isSelected(fse.getPageState())) {
m_step.cancelStreamlinedCreation(fse.getPageState());
}
}
/** Form processing hook. Saves Event object. */
public void process( FormSectionEvent fse ) {
@Override
public void process(FormSectionEvent fse) {
FormData data = fse.getFormData();
Article article
= (Article) super.processBasicWidgets( fse );
Article article = (Article) super.processBasicWidgets(fse);
// save only if save button was pressed
if( article != null
&& getSaveCancelSection().getSaveButton()
.isSelected( fse.getPageState() ) ) {
if (article != null
&& getSaveCancelSection().getSaveButton().isSelected(fse.getPageState())) {
article.setLead( (String) data.get( LEAD ) );
article.setLead((String) data.get(LEAD));
article.save();
}
if (m_step != null) {

View File

@ -23,13 +23,6 @@
<ctd:include href="/WEB-INF/content-types/edit-body-text-step.xml"/>
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
<ctd:authoring-step
labelKey="newsitem.authoring.image.title"
labelBundle="com.arsdigita.cms.contenttypes.NewsItemResources"
descriptionKey="newsitem.authoring.image.description"
descriptionBundle="com.arsdigita.cms.contenttypes.NewsItemResources"
component="com.arsdigita.cms.ui.authoring.ArticleImage"/>
</ctd:authoring-kit>
</ctd:content-type>

View File

@ -0,0 +1,100 @@
/*
* Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ContentPage;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.GenericArticle;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
import com.arsdigita.cms.util.GlobalizationUtil;
import java.text.DateFormat;
/**
* Authoring step to edit the simple attributes of the GenericArticle content
* type (and its subclasses). The attributes edited are 'name', 'title',
* 'article date', 'location', and 'article type'.
* This authoring step replaces
* the <code>com.arsdigita.ui.authoring.PageEdit</code> step for this type.
*/
public class GenericArticlePropertiesStep extends SimpleEditStep {
/** The name of the editing sheet added to this step */
public static String EDIT_SHEET_NAME = "edit";
DomainObjectPropertySheet get;
public GenericArticlePropertiesStep(ItemSelectionModel itemModel, AuthoringKitWizard parent) {
super(itemModel, parent);
setDefaultEditKey(EDIT_SHEET_NAME);
createEditSheet(itemModel);
setDisplayComponent(itemModel);
}
protected void createEditSheet(ItemSelectionModel itemModel) {
BasicPageForm editSheet;
editSheet = new GenericArticlePropertyForm(itemModel, this);
add(EDIT_SHEET_NAME, "Edit", new WorkflowLockedComponentAccess(editSheet, itemModel), editSheet.getSaveCancelSection().getCancelButton());
}
protected void setDisplayComponent(ItemSelectionModel itemModel) {
setDisplayComponent(getGenericArticlePropertySheet(itemModel));
}
/**
* Returns a component that displays the properties of the
* Article specified by the ItemSelectionModel passed in.
* @param itemModel The ItemSelectionModel to use
* @pre itemModel != null
* @return A component to display the state of the basic properties
* of the release
*/
public static Component getGenericArticlePropertySheet(ItemSelectionModel itemModel) {
DomainObjectPropertySheet sheet = new DomainObjectPropertySheet(itemModel);
sheet.add(GlobalizationUtil.globalize("cms.contenttypes.ui.name"), GenericArticle.NAME);
sheet.add(GlobalizationUtil.globalize("cms.contenttypes.ui.title"), GenericArticle.TITLE);
if (!ContentSection.getConfig().getHideLaunchDate()) {
sheet.add(GlobalizationUtil.globalize("cms.contenttypes.ui.launch_date"),
ContentPage.LAUNCH_DATE,
new DomainObjectPropertySheet.AttributeFormatter() {
public String format(DomainObject item,
String attribute,
PageState state) {
ContentPage page = (ContentPage) item;
if (page.getLaunchDate() != null) {
return DateFormat.getDateInstance(DateFormat.LONG).format(page.getLaunchDate());
} else {
return (String) GlobalizationUtil.globalize("cms.ui.unknown").localize();
}
}
});
}
return sheet;
}
}

View File

@ -0,0 +1,109 @@
/*
* Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSubmissionListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.GenericArticle;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
/**
* Form to edit the basic properties of an article. This form can be
* extended to create forms for Article subclasses.
*/
public class GenericArticlePropertyForm extends BasicPageForm
implements FormProcessListener, FormInitListener, FormSubmissionListener {
private final static org.apache.log4j.Logger s_log =
org.apache.log4j.Logger.getLogger(GenericArticlePropertyForm.class);
private GenericArticlePropertiesStep m_step;
/**
* Creates a new form to edit the Article object specified
* by the item selection model passed in.
* @param itemModel The ItemSelectionModel to use to obtain the
* Article to work on
*/
public GenericArticlePropertyForm(ItemSelectionModel itemModel) {
this(itemModel, null);
}
/**
* Creates a new form to edit the GenericArticle object specified
* by the item selection model passed in.
* @param itemModel The ItemSelectionModel to use to obtain the
* GenericArticle to work on
* @param step The GenericArticlePropertiesStep which controls this form.
*/
public GenericArticlePropertyForm(ItemSelectionModel itemModel, GenericArticlePropertiesStep step) {
super(ID, itemModel);
m_step = step;
addSubmissionListener(this);
}
/**
* Adds widgets to the form.
*/
@Override
protected void addWidgets() {
super.addWidgets();
}
@Override
public void validate(FormSectionEvent e) throws FormProcessException {
FormData d = e.getFormData();
}
/** Form initialisation hook. Fills widgets with data. */
public void init(FormSectionEvent fse) {
// Do some initialization hook stuff
FormData data = fse.getFormData();
GenericArticle article = (GenericArticle) super.initBasicWidgets(fse);
}
/** Cancels streamlined editing. */
public void submitted(FormSectionEvent fse) {
if (m_step != null
&& getSaveCancelSection().getCancelButton().isSelected(fse.getPageState())) {
m_step.cancelStreamlinedCreation(fse.getPageState());
}
}
/** Form processing hook. Saves Event object. */
public void process(FormSectionEvent fse) {
FormData data = fse.getFormData();
GenericArticle article = (GenericArticle) super.processBasicWidgets(fse);
// save only if save button was pressed
if (article != null
&& getSaveCancelSection().getSaveButton().isSelected(fse.getPageState())) {
article.save();
}
if (m_step != null) {
m_step.maybeForwardToNextStep(fse.getPageState());
}
}
}