Revision: 56486 Author: cngo Date: 2015-10-30 16:52:28 +0100 (Fri, 30 Oct 2015) Log Message: ----------- CMS-9659: Backport
refactored and unified rename dialogs, which will be much easier for future code maintenance - Used the same rename dialog class in renaming document/folder/[image|asset] - Deprecated others rename dialogs [from revision 56281, 56307, 56333, 56334] Modified Paths: -------------- hippo-cms7/cms/branches/hippo-cms-3.0.x/api/src/main/java/org/hippoecm/addon/workflow/WorkflowDialog.java hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentArguments.java hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentDialog.java hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/test/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentDialogTest.java hippo-cms7/cms/branches/hippo-cms-3.0.x/editor/frontend/pom.xml hippo-cms7/cms/branches/hippo-cms-3.0.x/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/DefaultWorkflowPlugin.java hippo-cms7/cms/branches/hippo-cms-3.0.x/workflow/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DocumentWorkflowPlugin.java hippo-cms7/cms/branches/hippo-cms-3.0.x/workflow/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/RenameDocumentDialog.java Modified: hippo-cms7/cms/branches/hippo-cms-3.0.x/api/src/main/java/org/hippoecm/addon/workflow/WorkflowDialog.java =================================================================== --- hippo-cms7/cms/branches/hippo-cms-3.0.x/api/src/main/java/org/hippoecm/addon/workflow/WorkflowDialog.java 2015-10-30 15:47:08 UTC (rev 56485) +++ hippo-cms7/cms/branches/hippo-cms-3.0.x/api/src/main/java/org/hippoecm/addon/workflow/WorkflowDialog.java 2015-10-30 15:52:28 UTC (rev 56486) @@ -16,6 +16,7 @@ package org.hippoecm.addon.workflow; import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.model.IModel; import org.hippoecm.frontend.dialog.Dialog; import org.hippoecm.frontend.plugins.standards.list.resolvers.CssClass; @@ -88,4 +89,9 @@ } super.onDetach(); } + + @Override + protected FeedbackPanel newFeedbackPanel(String id) { + return new FeedbackPanel(id); } +} Modified: hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java =================================================================== --- hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java 2015-10-30 15:47:08 UTC (rev 56485) +++ hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java 2015-10-30 15:52:28 UTC (rev 56486) @@ -105,9 +105,8 @@ if (isActionAvailable("rename", hints)) { add(new StdWorkflow("rename", new StringResourceModel("rename-title", this, null), context, getModel()) { + private RenameDocumentArguments renameDocumentArguments = new RenameDocumentArguments(); - RenameDocumentArguments renameDocumentModel = new RenameDocumentArguments(); - @Override protected Component getIcon(final String id) { return HippoIcon.fromSprite(id, Icon.TYPE); @@ -118,19 +117,16 @@ try { HippoNode node = (HippoNode) ((WorkflowDescriptorModel) getDefaultModel()).getNode(); - renameDocumentModel.setUriName(node.getName()); - renameDocumentModel.setTargetName(getLocalizedNameForSession(node)); - renameDocumentModel.setNodeType(node.getPrimaryNodeType().getName()); - renameDocumentModel.setLocalizedNames(node.getLocalizedNames()); + renameDocumentArguments.setUriName(node.getName()); + renameDocumentArguments.setTargetName(getLocalizedNameForSession(node)); + renameDocumentArguments.setNodeType(node.getPrimaryNodeType().getName()); + renameDocumentArguments.setLocalizedNames(node.getLocalizedNames()); } catch (RepositoryException ex) { log.error("Could not retrieve workflow document", ex); - renameDocumentModel.setUriName(""); - renameDocumentModel.setTargetName(""); - renameDocumentModel.setNodeType(null); - renameDocumentModel.setLocalizedNames(null); + renameDocumentArguments = new RenameDocumentArguments(StringUtils.EMPTY, StringUtils.EMPTY, null, null); } - return newRenameDocumentDialog(renameDocumentModel, this); + return newRenameDocumentDialog(renameDocumentArguments, this); } private String getLocalizedNameForSession(final HippoNode node) throws RepositoryException { @@ -145,8 +141,8 @@ // and there is some logic here to look up the parent. The real solution is // in the visual component to merge two workflows. HippoNode node = (HippoNode) model.getNode(); - String nodeName = getNodeNameCodec(node).encode(renameDocumentModel.getUriName()); - String localName = getLocalizeCodec().encode(renameDocumentModel.getTargetName()); + String nodeName = getNodeNameCodec(node).encode(renameDocumentArguments.getUriName()); + String localName = getLocalizeCodec().encode(renameDocumentArguments.getTargetName()); WorkflowManager manager = UserSession.get().getWorkflowManager(); DefaultWorkflow defaultWorkflow = (DefaultWorkflow) manager.getWorkflow("core", node); FolderWorkflow folderWorkflow = (FolderWorkflow) manager.getWorkflow("embedded", node.getParent()); @@ -394,13 +390,13 @@ return (WorkflowDescriptorModel) super.getModel(); } - protected Dialog newRenameDocumentDialog(RenameDocumentArguments renameDocumentModel, IWorkflowInvoker invoker) { + protected Dialog newRenameDocumentDialog(RenameDocumentArguments renameDocumentArguments, IWorkflowInvoker invoker) { String locale = getCodecLocale(); IModel<StringCodec> codecModel = CodecUtils.getNodeNameCodecModel(getPluginContext(), locale); return new RenameDocumentDialog( - renameDocumentModel, + renameDocumentArguments, new StringResourceModel("rename-title", this, null), invoker, codecModel, Modified: hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentArguments.java =================================================================== --- hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentArguments.java 2015-10-30 15:47:08 UTC (rev 56485) +++ hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentArguments.java 2015-10-30 15:52:28 UTC (rev 56486) @@ -1,5 +1,5 @@ /* - * Copyright 2012-2014 Hippo B.V. (http://www.onehippo.com) + * Copyright 2012-2015 Hippo B.V. (http://www.onehippo.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ import java.util.Collections; import java.util.Map; +import org.apache.commons.lang.StringUtils; import org.apache.wicket.util.io.IClusterable; import org.hippoecm.repository.api.Localized; @@ -28,8 +29,20 @@ private Map<Localized, String> localizedNames; public RenameDocumentArguments() { + localizedNames = Collections.EMPTY_MAP; } + public RenameDocumentArguments(final String targetName, final String uriName, final Map<Localized, String> localizedNames) { + this(targetName, uriName, StringUtils.EMPTY, localizedNames); + } + + public RenameDocumentArguments(final String targetName, final String uriName, final String nodeType, final Map<Localized, String> localizedNames) { + this.targetName = targetName; + this.uriName = uriName; + this.nodeType = nodeType; + this.localizedNames = localizedNames; + } + public String getTargetName() { return targetName; } Modified: hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentDialog.java =================================================================== --- hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentDialog.java 2015-10-30 15:47:08 UTC (rev 56485) +++ hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentDialog.java 2015-10-30 15:52:28 UTC (rev 56486) @@ -17,12 +17,11 @@ import java.util.Locale; -import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; -import org.hippoecm.addon.workflow.WorkflowDialog; import org.hippoecm.addon.workflow.IWorkflowInvoker; import org.hippoecm.addon.workflow.WorkflowDescriptorModel; +import org.hippoecm.addon.workflow.WorkflowDialog; import org.hippoecm.frontend.dialog.DialogConstants; import org.hippoecm.frontend.plugins.standardworkflow.validators.RenameDocumentValidator; import org.hippoecm.frontend.session.UserSession; @@ -34,21 +33,24 @@ private final NameUriField nameUriContainer; private final IModel<StringCodec> nodeNameCodecModel; - public RenameDocumentDialog(RenameDocumentArguments renameDocumentModel, IModel<String> title, - IWorkflowInvoker invoker, IModel<StringCodec> nodeNameCodec, final WorkflowDescriptorModel workflowDescriptorModel) { - super(invoker, Model.of(renameDocumentModel), title); + public RenameDocumentDialog(final RenameDocumentArguments renameDocumentArguments, + final IModel<String> title, + final IWorkflowInvoker invoker, + final IModel<StringCodec> nodeNameCodec, + final WorkflowDescriptorModel workflowDescriptorModel) { + super(invoker, Model.of(renameDocumentArguments), title); this.nodeNameCodecModel = nodeNameCodec; setSize(DialogConstants.MEDIUM_AUTO); - final String originalUriName = renameDocumentModel.getUriName(); - final String originalTargetName = renameDocumentModel.getTargetName(); + final String originalUriName = renameDocumentArguments.getUriName(); + final String originalTargetName = renameDocumentArguments.getTargetName(); add(nameUriContainer = new NameUriField("name-url", nodeNameCodecModel, originalUriName, originalTargetName, true)); final Locale cmsLocale = UserSession.get().getLocale(); - final RenameMessage message = new RenameMessage(cmsLocale, renameDocumentModel.getLocalizedNames()); + final RenameMessage message = new RenameMessage(cmsLocale, renameDocumentArguments.getLocalizedNames()); if (message.shouldShow()) { warn(message.forFolder()); } @@ -69,10 +71,4 @@ nodeNameCodecModel.detach(); super.onDetach(); } - - //TODO: This override method should be moved to the ancestor class in CMS7-9429 - @Override - protected FeedbackPanel newFeedbackPanel(String id) { - return new FeedbackPanel(id); } -} Modified: hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/test/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentDialogTest.java =================================================================== --- hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/test/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentDialogTest.java 2015-10-30 15:47:08 UTC (rev 56485) +++ hippo-cms7/cms/branches/hippo-cms-3.0.x/builtin/src/test/java/org/hippoecm/frontend/plugins/standardworkflow/RenameDocumentDialogTest.java 2015-10-30 15:52:28 UTC (rev 56486) @@ -17,6 +17,7 @@ package org.hippoecm.frontend.plugins.standardworkflow; import java.io.IOException; +import java.util.Collections; import java.util.Locale; import javax.jcr.Node; @@ -84,10 +85,7 @@ } // rename the 'news' folder - RenameDocumentArguments docModel = new RenameDocumentArguments(); - docModel.setUriName("news"); - docModel.setTargetName("News"); - docModel.setNodeType(HippoStdNodeType.NT_FOLDER); + RenameDocumentArguments renameDocumentArguments = new RenameDocumentArguments("News", "news", HippoStdNodeType.NT_FOLDER, Collections.EMPTY_MAP); final IWorkflowInvoker invoker = Mockito.mock(IWorkflowInvoker.class); @@ -106,19 +104,15 @@ }; RenameDocumentDialog dialog = new RenameDocumentDialog( - docModel, + renameDocumentArguments, Model.of("Add document dialog title"), invoker, stringCodecModel, workflowDescriptorModel ); - tester.runInAjax(home, new Runnable() { - @Override - public void run() { + tester.runInAjax(home, () -> { IDialogService dialogService = context.getService(IDialogService.class.getName(), IDialogService.class); dialogService.show(dialog); - } - }); return tester.newFormTester("dialog:content:form"); } Modified: hippo-cms7/cms/branches/hippo-cms-3.0.x/editor/frontend/pom.xml =================================================================== --- hippo-cms7/cms/branches/hippo-cms-3.0.x/editor/frontend/pom.xml 2015-10-30 15:47:08 UTC (rev 56485) +++ hippo-cms7/cms/branches/hippo-cms-3.0.x/editor/frontend/pom.xml 2015-10-30 15:52:28 UTC (rev 56486) @@ -52,6 +52,12 @@ </dependency> <dependency> <groupId>org.onehippo.cms7</groupId> + <artifactId>hippo-cms-builtin</artifactId> + <version>${project.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.onehippo.cms7</groupId> <artifactId>hippo-cms-workflowmenu</artifactId> <version>${project.version}</version> <scope>provided</scope> Modified: hippo-cms7/cms/branches/hippo-cms-3.0.x/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/DefaultWorkflowPlugin.java =================================================================== --- hippo-cms7/cms/branches/hippo-cms-3.0.x/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/DefaultWorkflowPlugin.java 2015-10-30 15:47:08 UTC (rev 56485) +++ hippo-cms7/cms/branches/hippo-cms-3.0.x/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/DefaultWorkflowPlugin.java 2015-10-30 15:52:28 UTC (rev 56486) @@ -47,6 +47,7 @@ import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugins.standards.icon.HippoIcon; +import org.hippoecm.frontend.plugins.standardworkflow.RenameDocumentArguments; import org.hippoecm.frontend.service.IBrowseService; import org.hippoecm.frontend.service.IEditor; import org.hippoecm.frontend.service.IEditor.Mode; @@ -128,8 +129,7 @@ }); add(renameAction = new StdWorkflow("rename", Model.of(getString("rename-label")), context, getModel()) { - public String targetName; - public String uriName; + private RenameDocumentArguments renameDocumentArguments; @Override public String getSubMenu() { @@ -145,16 +145,27 @@ protected Dialog createRequestDialog() { try { final HippoNode node = (HippoNode) getModel().getNode(); - uriName = node.getName(); - targetName = getLocalizedNameForSession(node); + renameDocumentArguments = new RenameDocumentArguments( + getLocalizedNameForSession(node), + node.getName(), + node.getLocalizedNames()); } catch (RepositoryException ex) { - uriName = targetName = ""; + renameDocumentArguments = new RenameDocumentArguments(); } - return new RenameDocumentDialog(this, Model.of(getString("rename-title"))); + + return new org.hippoecm.frontend.plugins.standardworkflow.RenameDocumentDialog(renameDocumentArguments, + new StringResourceModel("rename-title", DefaultWorkflowPlugin.this, null), + this, + getStringCodecModel(), + this.getModel() + ); } @Override protected String execute(Workflow wf) throws Exception { + final String targetName = renameDocumentArguments.getTargetName(); + final String uriName = renameDocumentArguments.getUriName(); + if (Strings.isEmpty(targetName)) { throw new WorkflowException("No name for destination given"); } @@ -436,6 +447,16 @@ } } + private IModel<StringCodec> getStringCodecModel() { + String locale = null; + try { + locale = CodecUtils.getLocaleFromNodeAndAncestors(DefaultWorkflowPlugin.this.getModel().getNode()); + } catch (RepositoryException e) { + //ignore + } + return CodecUtils.getNodeNameCodecModel(getPluginContext(), locale); + } + public WorkflowDescriptorModel getModel() { return (WorkflowDescriptorModel) getDefaultModel(); } @@ -528,6 +549,10 @@ whereUsedAction.setVisible(!Boolean.FALSE.equals(workflowHints.get("status"))); } + + /** + * @deprecated was replaced by {@link org.hippoecm.frontend.plugins.standardworkflow.RenameDocumentDialog} since version 3.0.3. + */ public class RenameDocumentDialog extends WorkflowDialog<Void> { private final IModel<String> nameModel; @@ -542,13 +567,7 @@ nameModel = PropertyModel.of(action, "targetName"); uriModel = PropertyModel.of(action, "uriName"); - String locale = null; - try { - locale = CodecUtils.getLocaleFromNodeAndAncestors(DefaultWorkflowPlugin.this.getModel().getNode()); - } catch (RepositoryException e) { - //ignore - } - final IModel<StringCodec> codecModel = CodecUtils.getNodeNameCodecModel(getPluginContext(), locale); + final IModel<StringCodec> codecModel = getStringCodecModel(); final String originalTargetName = nameModel.getObject(); final String originalUriName = uriModel.getObject(); Modified: hippo-cms7/cms/branches/hippo-cms-3.0.x/workflow/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DocumentWorkflowPlugin.java =================================================================== --- hippo-cms7/cms/branches/hippo-cms-3.0.x/workflow/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DocumentWorkflowPlugin.java 2015-10-30 15:47:08 UTC (rev 56485) +++ hippo-cms7/cms/branches/hippo-cms-3.0.x/workflow/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DocumentWorkflowPlugin.java 2015-10-30 15:52:28 UTC (rev 56486) @@ -16,7 +16,6 @@ package org.hippoecm.frontend.plugins.reviewedactions; import java.io.Serializable; -import java.util.Collections; import java.util.Locale; import java.util.Map; @@ -43,6 +42,8 @@ import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugins.reviewedactions.dialogs.HistoryDialog; import org.hippoecm.frontend.plugins.standards.icon.HippoIcon; +import org.hippoecm.frontend.plugins.standardworkflow.RenameDocumentArguments; +import org.hippoecm.frontend.plugins.standardworkflow.RenameDocumentDialog; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.frontend.skin.Icon; import org.hippoecm.frontend.util.CodecUtils; @@ -71,9 +72,7 @@ super(context, config); add(renameAction = new StdWorkflow("rename", new StringResourceModel("rename-label", this, null), context, getModel()) { - public String targetName; - public String uriName; - public Map<Localized, String> localizedNames; + private RenameDocumentArguments renameDocumentArguments; @Override public String getSubMenu() { @@ -100,18 +99,20 @@ try { final HippoNode node = getModelNode(); locale = CodecUtils.getLocaleFromNodeAndAncestors(node); - uriName = node.getName(); - targetName = getLocalizedNameForSession(node); - localizedNames = node.getLocalizedNames(); + renameDocumentArguments = new RenameDocumentArguments( + getLocalizedNameForSession(node), + node.getName(), + node.getLocalizedNames() + ); } catch (RepositoryException ex) { - uriName = targetName = ""; - localizedNames = Collections.emptyMap(); + renameDocumentArguments = new RenameDocumentArguments(); } - IModel<StringCodec> codecModel = CodecUtils.getNodeNameCodecModel(context, locale); - return new RenameDocumentDialog(this, + return new RenameDocumentDialog(renameDocumentArguments, new StringResourceModel("rename-title", DocumentWorkflowPlugin.this, null), - codecModel); + this, + CodecUtils.getNodeNameCodecModel(context, locale), + this.getModel()); } private HippoNode getModelNode() throws RepositoryException { @@ -126,6 +127,9 @@ @Override protected String execute(Workflow wf) throws Exception { + final String targetName = renameDocumentArguments.getTargetName(); + final String uriName = renameDocumentArguments.getUriName(); + if (Strings.isEmpty(targetName)) { throw new WorkflowException("No name given for document node"); } Modified: hippo-cms7/cms/branches/hippo-cms-3.0.x/workflow/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/RenameDocumentDialog.java =================================================================== --- hippo-cms7/cms/branches/hippo-cms-3.0.x/workflow/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/RenameDocumentDialog.java 2015-10-30 15:47:08 UTC (rev 56485) +++ hippo-cms7/cms/branches/hippo-cms-3.0.x/workflow/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/RenameDocumentDialog.java 2015-10-30 15:52:28 UTC (rev 56486) @@ -30,6 +30,10 @@ import org.hippoecm.repository.api.Localized; import org.hippoecm.repository.api.StringCodec; +/** + * @deprecated was replaced by {@link org.hippoecm.frontend.plugins.standardworkflow.RenameDocumentDialog} since version 3.0.3. + */ +@Deprecated public class RenameDocumentDialog extends WorkflowDialog<Void> { private final NameUriField nameUriField; _______________________________________________ Hippocms-svn mailing list Hippocms-svn@lists.onehippo.org https://lists.onehippo.org/mailman/listinfo/hippocms-svn