CCM NG/ccm-cms: Creating MPA, editing basic properties of an MPA now works.
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4841 8810af33-2d31-482b-a856-94f89814c4df
Former-commit-id: cd30a4992c
pull/2/head
parent
8d612ed5b3
commit
4c1a8146d5
|
|
@ -585,11 +585,9 @@ public class EventPropertyForm
|
|||
if (!eventConfig.isHideLinkToMap()) {
|
||||
item.setMapLink((String) data.get(MAP_LINK));
|
||||
}
|
||||
item
|
||||
.getLocation().addValue(selectedLocale,
|
||||
item.getLocation().addValue(selectedLocale,
|
||||
(String) data.get(LOCATION));
|
||||
item
|
||||
.getDescription().addValue(selectedLocale,
|
||||
item.getDescription().addValue(selectedLocale,
|
||||
(String) data.get(LEAD));
|
||||
if (!eventConfig.isHideCost()) {
|
||||
item.getCost().addValue(selectedLocale,
|
||||
|
|
|
|||
|
|
@ -28,19 +28,20 @@ import com.arsdigita.bebop.event.FormProcessListener;
|
|||
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||
import com.arsdigita.bebop.event.FormSubmissionListener;
|
||||
import com.arsdigita.bebop.event.FormValidationListener;
|
||||
import com.arsdigita.bebop.parameters.StringParameter;
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
import com.arsdigita.cms.ui.authoring.ApplyWorkflowFormSection;
|
||||
import com.arsdigita.cms.ui.authoring.BasicItemForm;
|
||||
import com.arsdigita.cms.ui.authoring.CreationComponent;
|
||||
import com.arsdigita.cms.ui.authoring.CreationSelector;
|
||||
import com.arsdigita.cms.ui.authoring.LanguageWidget;
|
||||
import com.arsdigita.globalization.GlobalizedMessage;
|
||||
import com.arsdigita.kernel.KernelConfig;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.arsdigita.cms.CMSConfig;
|
||||
import org.libreccm.cdi.utils.CdiUtil;
|
||||
import org.librecms.CmsConstants;
|
||||
import org.librecms.contentsection.ContentItemRepository;
|
||||
import org.librecms.contentsection.ContentSection;
|
||||
import org.librecms.contentsection.Folder;
|
||||
import org.librecms.contenttypes.MultiPartArticle;
|
||||
|
|
@ -64,9 +65,15 @@ public class MultiPartArticleCreateForm
|
|||
private final CreationSelector creationSelector;
|
||||
private ApplyWorkflowFormSection workflowSection;
|
||||
|
||||
public MultiPartArticleCreateForm(final ItemSelectionModel itemSelectionModel,
|
||||
final CreationSelector creationSelector) {
|
||||
super("MultiPartArticleCreate", itemSelectionModel);
|
||||
public MultiPartArticleCreateForm(
|
||||
final ItemSelectionModel itemSelectionModel,
|
||||
final CreationSelector creationSelector,
|
||||
final StringParameter selectedLanguageParam) {
|
||||
|
||||
super("MultiPartArticleCreate",
|
||||
itemSelectionModel,
|
||||
selectedLanguageParam);
|
||||
|
||||
this.creationSelector = creationSelector;
|
||||
workflowSection.setCreationSelector(creationSelector);
|
||||
workflowSection.setContentType(itemSelectionModel.getContentType());
|
||||
|
|
@ -138,32 +145,37 @@ public class MultiPartArticleCreateForm
|
|||
}
|
||||
|
||||
@Override
|
||||
public void process(final FormSectionEvent event) throws FormProcessException {
|
||||
public void process(final FormSectionEvent event)
|
||||
throws FormProcessException {
|
||||
|
||||
final FormData data = event.getFormData();
|
||||
final PageState state = event.getPageState();
|
||||
final ContentSection section = creationSelector.getContentSection(state);
|
||||
final Folder folder = creationSelector.getFolder(state);
|
||||
|
||||
final Locale locale = new Locale((String) data
|
||||
.get(BasicItemForm.LANGUAGE));
|
||||
final Locale locale = new Locale((String) data.get(LANGUAGE));
|
||||
|
||||
final MultiPartArticle article = createArticle(state,
|
||||
(String) data.get(NAME),
|
||||
section,
|
||||
folder,
|
||||
locale);
|
||||
article.getTitle().addValue(KernelConfig.getConfig().getDefaultLocale(),
|
||||
(String) data.get(TITLE));
|
||||
article.getTitle().addValue(locale, (String) data.get(TITLE));
|
||||
if (!CMSConfig.getConfig().isHideLaunchDate()) {
|
||||
article.setLaunchDate((Date) data.get(LAUNCH_DATE));
|
||||
}
|
||||
article
|
||||
.getSummary()
|
||||
.addValue(KernelConfig.getConfig().getDefaultLocale(),
|
||||
(String) data.get(SUMMARY));
|
||||
.addValue(locale, (String) data.get(SUMMARY));
|
||||
|
||||
workflowSection.applyWorkflow(state, article);
|
||||
|
||||
final CdiUtil cdiUtil =CdiUtil.createCdiUtil();
|
||||
final ContentItemRepository itemRepo = cdiUtil
|
||||
.findBean(ContentItemRepository.class);
|
||||
itemRepo.save(article);
|
||||
|
||||
creationSelector.editItem(state, article);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,14 +19,11 @@
|
|||
package com.arsdigita.cms.contenttypes.ui.mparticle;
|
||||
|
||||
import com.arsdigita.bebop.Component;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.parameters.StringParameter;
|
||||
|
||||
import org.librecms.contentsection.ContentSection;
|
||||
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
|
||||
import org.librecms.contenttypes.MultiPartArticle;
|
||||
|
||||
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
|
||||
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
||||
|
|
@ -39,7 +36,6 @@ import org.libreccm.cdi.utils.CdiUtil;
|
|||
import org.libreccm.configuration.ConfigurationManager;
|
||||
import org.librecms.CmsConstants;
|
||||
|
||||
import java.text.DateFormat;
|
||||
|
||||
/**
|
||||
* A MultiPartArticle editing component.
|
||||
|
|
@ -49,6 +45,7 @@ import java.text.DateFormat;
|
|||
*/
|
||||
public class MultiPartArticleEdit extends SimpleEditStep {
|
||||
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
|
|
@ -64,7 +61,10 @@ public class MultiPartArticleEdit extends SimpleEditStep {
|
|||
super(itemSelectionModel, authoringKitWizard, selectedLanguageParam);
|
||||
|
||||
setDefaultEditKey("edit");
|
||||
MultiPartArticleForm form = getForm(itemSelectionModel);
|
||||
final MultiPartArticleForm form = new MultiPartArticleEditForm(
|
||||
itemSelectionModel,
|
||||
this,
|
||||
selectedLanguageParam);
|
||||
add("edit",
|
||||
new GlobalizedMessage("cms.ui.edit",
|
||||
CmsConstants.CMS_BUNDLE),
|
||||
|
|
@ -77,12 +77,6 @@ public class MultiPartArticleEdit extends SimpleEditStep {
|
|||
selectedLanguageParam));
|
||||
}
|
||||
|
||||
protected MultiPartArticleForm getForm(
|
||||
final ItemSelectionModel itemSelectionModel) {
|
||||
|
||||
return new MultiPartArticleEditForm(itemSelectionModel, this);
|
||||
}
|
||||
|
||||
public Component getMultiPartArticlePropertiesSheet(
|
||||
final ItemSelectionModel itemSelectionModel,
|
||||
final StringParameter selectedLanguageParam) {
|
||||
|
|
|
|||
|
|
@ -23,25 +23,27 @@ import com.arsdigita.bebop.FormProcessException;
|
|||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||
import com.arsdigita.bebop.event.FormSubmissionListener;
|
||||
import com.arsdigita.bebop.parameters.StringParameter;
|
||||
|
||||
import org.librecms.contentsection.ContentItem;
|
||||
import org.librecms.contentsection.Folder;
|
||||
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
import com.arsdigita.cms.ui.authoring.BasicPageForm;
|
||||
|
||||
import org.librecms.contenttypes.MultiPartArticle;
|
||||
|
||||
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
|
||||
import com.arsdigita.globalization.GlobalizedMessage;
|
||||
import com.arsdigita.kernel.KernelConfig;
|
||||
import com.arsdigita.util.Assert;
|
||||
|
||||
import org.libreccm.cdi.utils.CdiUtil;
|
||||
import org.librecms.CmsConstants;
|
||||
import org.librecms.contentsection.ContentItemManager;
|
||||
import org.librecms.contentsection.ContentItemRepository;
|
||||
import org.librecms.contentsection.FolderManager;
|
||||
import org.librecms.contentsection.FolderRepository;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
|
|
@ -53,20 +55,27 @@ public class MultiPartArticleEditForm extends MultiPartArticleForm
|
|||
|
||||
private final ItemSelectionModel itemSelectionModel;
|
||||
private final SimpleEditStep editStep;
|
||||
private final StringParameter selectedLanguageParam;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param itemSelectionModel
|
||||
* @param editStep
|
||||
* @param selectedLanguageParam
|
||||
*/
|
||||
public MultiPartArticleEditForm(final ItemSelectionModel itemSelectionModel,
|
||||
final SimpleEditStep editStep) {
|
||||
final SimpleEditStep editStep,
|
||||
final StringParameter selectedLanguageParam) {
|
||||
|
||||
super("MultiPartArticleEditForm",
|
||||
itemSelectionModel,
|
||||
selectedLanguageParam);
|
||||
|
||||
super("MultiPartArticleEditForm", itemSelectionModel);
|
||||
addSubmissionListener(this);
|
||||
this.itemSelectionModel = itemSelectionModel;
|
||||
this.editStep = editStep;
|
||||
this.selectedLanguageParam = selectedLanguageParam;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -90,14 +99,27 @@ public class MultiPartArticleEditForm extends MultiPartArticleForm
|
|||
}
|
||||
|
||||
@Override
|
||||
public void process(final FormSectionEvent event) throws
|
||||
FormProcessException {
|
||||
public void process(final FormSectionEvent event)
|
||||
throws FormProcessException {
|
||||
|
||||
final MultiPartArticle article = super.processBasicWidgets(event);
|
||||
|
||||
final PageState state = event.getPageState();
|
||||
|
||||
// final MultiPartArticle article = (MultiPartArticle) itemSelectionModel
|
||||
// .getSelectedObject(state);
|
||||
|
||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||
final ContentItemRepository itemRepo = cdiUtil
|
||||
.findBean(ContentItemRepository.class);
|
||||
itemRepo.save(article);
|
||||
|
||||
editStep.maybeForwardToNextStep(event.getPageState());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void validate(final FormSectionEvent event) throws
|
||||
FormProcessException {
|
||||
public void validate(final FormSectionEvent event)
|
||||
throws FormProcessException {
|
||||
|
||||
final PageState state = event.getPageState();
|
||||
final FormData data = event.getFormData();
|
||||
|
|
@ -105,17 +127,31 @@ public class MultiPartArticleEditForm extends MultiPartArticleForm
|
|||
final MultiPartArticle article = (MultiPartArticle) itemSelectionModel
|
||||
.getSelectedObject(state);
|
||||
|
||||
final Locale selectedLocale;
|
||||
final String selectedLanguage = (String) state
|
||||
.getValue(selectedLanguageParam);
|
||||
if (selectedLanguage == null) {
|
||||
selectedLocale = KernelConfig.getConfig().getDefaultLocale();
|
||||
} else {
|
||||
selectedLocale = new Locale(selectedLanguage);
|
||||
}
|
||||
|
||||
final String newName = (String) data.get(MultiPartArticleForm.NAME);
|
||||
final String oldName = article
|
||||
.getName()
|
||||
.getValue(KernelConfig.getConfig().getDefaultLocale());
|
||||
final String oldName = article.getName().getValue(selectedLocale);
|
||||
|
||||
final boolean valid;
|
||||
if (newName.equalsIgnoreCase(oldName)) {
|
||||
valid = true;
|
||||
} else {
|
||||
final Folder parent = getParentFolder(article);
|
||||
valid = validateNameUniqueness(parent, event);
|
||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||
final MultiPartArticleFormController controller = cdiUtil
|
||||
.findBean(MultiPartArticleFormController.class);
|
||||
final Optional<Folder> folder = controller.getArticleFolder(article);
|
||||
if (folder.isPresent()) {
|
||||
valid = validateNameUniqueness(folder.get(), event);
|
||||
} else {
|
||||
valid = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!valid) {
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ import com.arsdigita.bebop.parameters.DateParameter;
|
|||
import com.arsdigita.bebop.parameters.NotEmptyValidationListener;
|
||||
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
||||
import com.arsdigita.bebop.parameters.ParameterModel;
|
||||
import com.arsdigita.bebop.parameters.StringParameter;
|
||||
import com.arsdigita.bebop.parameters.TrimmedStringParameter;
|
||||
import com.arsdigita.bebop.parameters.URLTokenValidationListener;
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
|
|
@ -42,9 +43,12 @@ import com.arsdigita.globalization.GlobalizedMessage;
|
|||
import com.arsdigita.kernel.KernelConfig;
|
||||
import com.arsdigita.web.Web;
|
||||
import com.arsdigita.xml.Element;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.arsdigita.cms.CMSConfig;
|
||||
|
|
@ -68,7 +72,8 @@ public abstract class MultiPartArticleForm
|
|||
FormProcessListener,
|
||||
FormValidationListener {
|
||||
|
||||
private ItemSelectionModel itemSelectionModel;
|
||||
private final ItemSelectionModel itemSelectionModel;
|
||||
private final StringParameter selectedLanguageParam;
|
||||
private SaveCancelSection saveCancelSection;
|
||||
/**
|
||||
* Constant property, placeholder for a JavaScript element.
|
||||
|
|
@ -91,11 +96,13 @@ public abstract class MultiPartArticleForm
|
|||
MultiPartArticleForm.class);
|
||||
|
||||
public MultiPartArticleForm(final String formName,
|
||||
final ItemSelectionModel itemSelectionModel) {
|
||||
final ItemSelectionModel itemSelectionModel,
|
||||
final StringParameter selectedLanguageParam) {
|
||||
|
||||
super(new ColumnPanel(2));
|
||||
|
||||
this.itemSelectionModel = itemSelectionModel;
|
||||
this.selectedLanguageParam = selectedLanguageParam;
|
||||
|
||||
ColumnPanel panel = (ColumnPanel) getPanel();
|
||||
panel.setBorder(false);
|
||||
|
|
@ -126,7 +133,8 @@ public abstract class MultiPartArticleForm
|
|||
|
||||
// add(new Label(GlobalizationUtil
|
||||
// .globalize("cms.contenttypes.ui.title")));
|
||||
TextField titleWidget = new TextField(new TrimmedStringParameter(TITLE));
|
||||
final TextField titleWidget = new TextField(new TrimmedStringParameter(
|
||||
TITLE));
|
||||
titleWidget.setLabel(new GlobalizedMessage("cms.contenttypes.ui.title",
|
||||
CmsConstants.CMS_BUNDLE));
|
||||
titleWidget.addValidationListener(new NotNullValidationListener());
|
||||
|
|
@ -141,7 +149,8 @@ public abstract class MultiPartArticleForm
|
|||
|
||||
//add(new Label(GlobalizationUtil
|
||||
// .globalize("cms.contenttypes.ui.name")));
|
||||
TextField nameWidget = new TextField(new TrimmedStringParameter(NAME));
|
||||
final TextField nameWidget = new TextField(new TrimmedStringParameter(
|
||||
NAME));
|
||||
nameWidget.setLabel(new GlobalizedMessage("cms.contenttypes.ui.name",
|
||||
CmsConstants.CMS_BUNDLE));
|
||||
nameWidget.addValidationListener(new NotNullValidationListener());
|
||||
|
|
@ -157,7 +166,8 @@ public abstract class MultiPartArticleForm
|
|||
if (!CMSConfig.getConfig().isHideLaunchDate()) {
|
||||
//add(new Label(GlobalizationUtil
|
||||
// .globalize("cms.ui.authoring.page_launch_date")));
|
||||
final ParameterModel launchDateParam = new DateParameter(LAUNCH_DATE);
|
||||
final ParameterModel launchDateParam
|
||||
= new DateParameter(LAUNCH_DATE);
|
||||
com.arsdigita.bebop.form.Date launchDate
|
||||
= new com.arsdigita.bebop.form.Date(
|
||||
launchDateParam);
|
||||
|
|
@ -213,6 +223,7 @@ public abstract class MultiPartArticleForm
|
|||
* Utility method to initialise the name/title/summary widgets.
|
||||
*
|
||||
* @param event
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public MultiPartArticle initBasicWidgets(final FormSectionEvent event) {
|
||||
|
|
@ -222,13 +233,22 @@ public abstract class MultiPartArticleForm
|
|||
final MultiPartArticle article = (MultiPartArticle) itemSelectionModel
|
||||
.getSelectedObject(state);
|
||||
|
||||
final String selectedLanguage = (String) state
|
||||
.getValue(selectedLanguageParam);
|
||||
final Locale selectedLocale;
|
||||
if (selectedLanguage == null) {
|
||||
selectedLocale = KernelConfig.getConfig().getDefaultLocale();
|
||||
} else {
|
||||
selectedLocale = new Locale(selectedLanguage);
|
||||
}
|
||||
|
||||
if (article != null) {
|
||||
data.put(NAME, article.getName());
|
||||
data.put(TITLE, article.getTitle());
|
||||
data.put(NAME, article.getName().getValue(selectedLocale));
|
||||
data.put(TITLE, article.getTitle().getValue(selectedLocale));
|
||||
if (!CMSConfig.getConfig().isHideLaunchDate()) {
|
||||
data.put(LAUNCH_DATE, article.getLaunchDate());
|
||||
}
|
||||
data.put(SUMMARY, article.getSummary());
|
||||
data.put(SUMMARY, article.getSummary().getValue(selectedLocale));
|
||||
}
|
||||
|
||||
return article;
|
||||
|
|
@ -238,6 +258,7 @@ public abstract class MultiPartArticleForm
|
|||
* Utility method to process the name/title/summary widgets.
|
||||
*
|
||||
* @param event
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public MultiPartArticle processBasicWidgets(final FormSectionEvent event) {
|
||||
|
|
@ -248,16 +269,23 @@ public abstract class MultiPartArticleForm
|
|||
.getSelectedObject(state);
|
||||
|
||||
if (article != null) {
|
||||
final Locale defaultLocale = KernelConfig.getConfig().
|
||||
getDefaultLocale();
|
||||
article.getName().addValue(defaultLocale,
|
||||
final String selectedLanguage = (String) state
|
||||
.getValue(selectedLanguageParam);
|
||||
final Locale selectedLocale;
|
||||
if (selectedLanguage == null) {
|
||||
selectedLocale = KernelConfig.getConfig().getDefaultLocale();
|
||||
} else {
|
||||
selectedLocale = new Locale(selectedLanguage);
|
||||
}
|
||||
|
||||
article.getName().addValue(selectedLocale,
|
||||
(String) data.get(NAME));
|
||||
article.getTitle().addValue(defaultLocale,
|
||||
article.getTitle().addValue(selectedLocale,
|
||||
(String) data.get(TITLE));
|
||||
if (!CMSConfig.getConfig().isHideLaunchDate()) {
|
||||
article.setLaunchDate((Date) data.get(LAUNCH_DATE));
|
||||
}
|
||||
article.getSummary().addValue(defaultLocale,
|
||||
article.getSummary().addValue(selectedLocale,
|
||||
(String) data.get(SUMMARY));
|
||||
}
|
||||
|
||||
|
|
@ -304,6 +332,7 @@ public abstract class MultiPartArticleForm
|
|||
* @param locale Initial locale of the article.
|
||||
*
|
||||
* @return the new content item (or a proper subclass)
|
||||
*
|
||||
* @throws com.arsdigita.bebop.FormProcessException
|
||||
*/
|
||||
public MultiPartArticle createArticle(final PageState state,
|
||||
|
|
|
|||
Loading…
Reference in New Issue