Index: workflow/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- workflow/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java (revision 45283) +++ workflow/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java (revision ) @@ -69,15 +69,14 @@ import org.hippoecm.frontend.service.IBrowseService; import org.hippoecm.frontend.service.IEditor; import org.hippoecm.frontend.service.IEditorManager; -import org.hippoecm.frontend.service.ISettingsService; import org.hippoecm.frontend.service.render.RenderPlugin; import org.hippoecm.frontend.session.UserSession; +import org.hippoecm.frontend.util.CodecUtils; import org.hippoecm.repository.HippoStdNodeType; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNode; import org.hippoecm.repository.api.Localized; import org.hippoecm.repository.api.StringCodec; -import org.hippoecm.repository.api.StringCodecFactory; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; @@ -569,17 +568,17 @@ } protected StringCodec getLocalizeCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, - ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.display"); + return CodecUtils.getDisplayNameCodec(getPluginContext()); } protected StringCodec getNodeNameCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, - ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.node"); + Node node = null; + try { + node = getModel().getNode(); + } catch (RepositoryException e) { + //ignore + } + return CodecUtils.getNodeNameCodec(getPluginContext(), node); } private void hideInvalidActions() { Index: translation/frontend/src/main/java/org/hippoecm/frontend/translation/workflow/DocumentTranslationDialog.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- translation/frontend/src/main/java/org/hippoecm/frontend/translation/workflow/DocumentTranslationDialog.java (revision 45283) +++ translation/frontend/src/main/java/org/hippoecm/frontend/translation/workflow/DocumentTranslationDialog.java (revision ) @@ -41,7 +41,7 @@ public DocumentTranslationDialog(ISettingsService settings, IWorkflowInvoker action, IModel title, List folders, IModel autoTranslateContent, - String sourceLanguage, String targetLanguage, + String sourceLanguage, final String targetLanguage, ILocaleProvider provider) { super(null, action); this.settingsService = settings; @@ -55,7 +55,7 @@ @Override protected StringCodec load() { StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.node"); + return stringCodecFactory.getStringCodec("encoding.node", targetLanguage); } }, provider); dtv.setFrame(false); Index: engine/src/main/java/org/hippoecm/frontend/service/settings/SettingsStorePlugin.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- engine/src/main/java/org/hippoecm/frontend/service/settings/SettingsStorePlugin.java (revision 45283) +++ engine/src/main/java/org/hippoecm/frontend/service/settings/SettingsStorePlugin.java (revision ) @@ -16,13 +16,12 @@ package org.hippoecm.frontend.service.settings; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import org.hippoecm.frontend.service.ISettingsService; -import org.hippoecm.frontend.service.preferences.*; + import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.Plugin; import org.hippoecm.frontend.plugin.config.IPluginConfig; +import org.hippoecm.frontend.service.ISettingsService; import org.hippoecm.repository.api.StringCodec; import org.hippoecm.repository.api.StringCodecFactory; import org.slf4j.Logger; @@ -57,7 +56,7 @@ } catch (IllegalAccessException ex) { log.error("unable to create " + codecName, ex); } catch (ClassCastException ex) { - log.error("1`unable to create " + codecName, ex); + log.error("unable to create " + codecName, ex); } catch (ClassNotFoundException ex) { log.error("unable to create " + codecName, ex); } Index: pom.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- pom.xml (revision 45283) +++ pom.xml (revision ) @@ -89,7 +89,7 @@ 1.02.02 1.02.02 - 2.24.12 + 2.24.15-SNAPSHOT 2.4 Index: api/src/main/java/org/hippoecm/frontend/util/CodecUtils.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- api/src/main/java/org/hippoecm/frontend/util/CodecUtils.java (revision ) +++ api/src/main/java/org/hippoecm/frontend/util/CodecUtils.java (revision ) @@ -0,0 +1,76 @@ +package org.hippoecm.frontend.util; + +import javax.jcr.Node; +import javax.jcr.RepositoryException; + +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.LoadableDetachableModel; +import org.hippoecm.frontend.plugin.IPluginContext; +import org.hippoecm.frontend.service.ISettingsService; +import org.hippoecm.repository.api.StringCodec; +import org.hippoecm.repository.api.StringCodecFactory; +import org.hippoecm.repository.translation.HippoTranslationNodeType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CodecUtils { + public static final Logger log = LoggerFactory.getLogger(CodecUtils.class); + + public static final String ENCODING_DISPLAY = "encoding.display"; + public static final String ENCODING_NODE = "encoding.node"; + + public static StringCodecFactory getStringCodecFactory(final IPluginContext context) { + ISettingsService settingsService = context.getService(ISettingsService.SERVICE_ID, + ISettingsService.class); + + if (settingsService == null) { + throw new IllegalStateException("ISettingsService not found."); + } + + StringCodecFactory factory = settingsService.getStringCodecFactory(); + if (factory == null) { + throw new IllegalStateException("StringCodecFactory not found."); + } + + return factory; + } + + public static StringCodec getDisplayNameCodec(IPluginContext context) { + return getStringCodecFactory(context).getStringCodec(ENCODING_DISPLAY); + } + + public static StringCodec getNodeNameCodec(IPluginContext context, String locale) { + return getStringCodecFactory(context).getStringCodec(ENCODING_NODE, locale); + } + + public static IModel getNodeNameCodecModel(final IPluginContext context, final String locale) { + return new LoadableDetachableModel() { + @Override + protected StringCodec load() { + return getNodeNameCodec(context, locale); + } + }; + } + + public static StringCodec getNodeNameCodec(Node node, final StringCodecFactory stringCodecFactory) { + String locale = null; + if (node != null) { + try { + while (node.getDepth() > 0) { + if (node.isNodeType(HippoTranslationNodeType.NT_TRANSLATED)) { + locale = node.getProperty(HippoTranslationNodeType.LOCALE).getString(); + break; + } + node = node.getParent(); + } + } catch (RepositoryException e) { + log.error("Could not determine visibility of language field"); + } + } + return stringCodecFactory.getStringCodec(ENCODING_NODE, locale); + } + + public static StringCodec getNodeNameCodec(final IPluginContext context, final Node node) { + return getNodeNameCodec(node, getStringCodecFactory(context)); + } +} Index: richtext/frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/dialog/images/ImageBrowserDialog.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- richtext/frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/dialog/images/ImageBrowserDialog.java (revision 45283) +++ richtext/frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/dialog/images/ImageBrowserDialog.java (revision ) @@ -70,6 +70,7 @@ import org.hippoecm.frontend.plugins.xinha.services.images.XinhaImage; import org.hippoecm.frontend.service.ISettingsService; import org.hippoecm.frontend.session.UserSession; +import org.hippoecm.frontend.util.CodecUtils; import org.hippoecm.frontend.widgets.ThrottledTextFieldWidget; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNode; @@ -87,7 +88,6 @@ public class ImageBrowserDialog extends AbstractBrowserDialog implements IHeaderContributor { private static final long serialVersionUID = 1L; - static final Logger log = LoggerFactory.getLogger(ImageBrowserDialog.class); public final static List ALIGN_OPTIONS = Arrays.asList("top", "middle", "bottom", "left", "right"); @@ -319,7 +319,7 @@ try { //Get the selected folder from the folderReference Service Node folderNode = getFolderModel().getObject(); - + //TODO replace shortcuts with custom workflow category(?) GalleryWorkflow workflow = (GalleryWorkflow) manager.getWorkflow("gallery", folderNode); String nodeName = getNodeNameCodec().encode(filename); @@ -454,15 +454,11 @@ } private StringCodec getNodeNameCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.node"); + return CodecUtils.getNodeNameCodec(getPluginContext(), getFolderModel().getObject()); } private StringCodec getLocalizeCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.display"); + return CodecUtils.getDisplayNameCodec(getPluginContext()); } private String getGalleryType() { Index: gallery/frontend/src/main/java/org/hippoecm/frontend/plugins/gallery/upload/UploadDialog.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- gallery/frontend/src/main/java/org/hippoecm/frontend/plugins/gallery/upload/UploadDialog.java (revision 45283) +++ gallery/frontend/src/main/java/org/hippoecm/frontend/plugins/gallery/upload/UploadDialog.java (revision ) @@ -19,7 +19,6 @@ import javax.jcr.PathNotFoundException; import javax.jcr.RepositoryException; -import org.apache.wicket.Session; import org.apache.wicket.extensions.wizard.IWizardModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.StringResourceModel; @@ -28,10 +27,9 @@ import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.service.ISettingsService; import org.hippoecm.frontend.session.UserSession; +import org.hippoecm.frontend.util.CodecUtils; import org.hippoecm.repository.api.StringCodec; -import org.hippoecm.repository.api.StringCodecFactory; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.gallery.GalleryWorkflow; @@ -41,7 +39,6 @@ public class UploadDialog extends AbstractDialog { private static final long serialVersionUID = 1L; - static final Logger log = LoggerFactory.getLogger(UploadDialog.class); UploadWizard wizard; @@ -73,17 +70,11 @@ } protected StringCodec getLocalizeCodec() { - ISettingsService settingsService = pluginContext - .getService(ISettingsService.SERVICE_ID, ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.display"); + return CodecUtils.getDisplayNameCodec(pluginContext); } protected StringCodec getNodeNameCodec() { - ISettingsService settingsService = pluginContext - .getService(ISettingsService.SERVICE_ID, ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.node"); + return CodecUtils.getNodeNameCodec(pluginContext, getGalleryNode()); } IWizardModel getWizardModel() { Index: translation/frontend/src/main/java/org/hippoecm/frontend/translation/workflow/TranslationWorkflowPlugin.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- translation/frontend/src/main/java/org/hippoecm/frontend/translation/workflow/TranslationWorkflowPlugin.java (revision 45283) +++ translation/frontend/src/main/java/org/hippoecm/frontend/translation/workflow/TranslationWorkflowPlugin.java (revision ) @@ -68,12 +68,12 @@ import org.hippoecm.frontend.translation.components.document.FolderTranslation; import org.hippoecm.frontend.types.IFieldDescriptor; import org.hippoecm.frontend.types.ITypeDescriptor; +import org.hippoecm.frontend.util.CodecUtils; import org.hippoecm.repository.HippoStdNodeType; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNode; import org.hippoecm.repository.api.HippoWorkspace; import org.hippoecm.repository.api.StringCodec; -import org.hippoecm.repository.api.StringCodecFactory; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; @@ -700,10 +700,7 @@ } protected StringCodec getLocalizeCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, - ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.display"); + return CodecUtils.getDisplayNameCodec(getPluginContext()); } @Override Index: builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderShortcutPlugin.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderShortcutPlugin.java (revision 45283) +++ builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderShortcutPlugin.java (revision ) @@ -46,7 +46,6 @@ import org.hippoecm.frontend.dialog.DialogConstants; import org.hippoecm.frontend.dialog.IDialogService; import org.hippoecm.frontend.i18n.types.TypeChoiceRenderer; -import org.hippoecm.frontend.model.JcrItemModel; import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.IServiceReference; @@ -56,17 +55,16 @@ import org.hippoecm.frontend.service.IBrowseService; import org.hippoecm.frontend.service.IEditor; import org.hippoecm.frontend.service.IEditorManager; -import org.hippoecm.frontend.service.ISettingsService; import org.hippoecm.frontend.service.ServiceException; import org.hippoecm.frontend.service.render.RenderPlugin; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.frontend.translation.ILocaleProvider; +import org.hippoecm.frontend.util.CodecUtils; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.HippoWorkspace; import org.hippoecm.repository.api.MappingException; import org.hippoecm.repository.api.StringCodec; -import org.hippoecm.repository.api.StringCodecFactory; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; @@ -203,17 +201,11 @@ } protected StringCodec getLocalizeCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, - ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.display"); + return CodecUtils.getDisplayNameCodec(getPluginContext()); } - protected StringCodec getNodeNameCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, - ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.node"); + protected StringCodec getNodeNameCodec(Node node) { + return CodecUtils.getNodeNameCodec(getPluginContext(), node); } protected ILocaleProvider getLocaleProvider() { @@ -316,12 +308,13 @@ add(new Label("message", new Model(""))); + final Node finalFolder = folder; add(nameUriContainer = new NameUriField("name-url", new LoadableDetachableModel() { private static final long serialVersionUID = 1L; @Override protected StringCodec load() { - return getNodeNameCodec(); + return getNodeNameCodec(finalFolder); } })); @@ -484,7 +477,7 @@ } String localName = getLocalizeCodec().encode(name); - String nodeName = getNodeNameCodec().encode(url); + String nodeName = getNodeNameCodec(((WorkflowDescriptorModel)model).getNode()).encode(url); TreeMap arguments = new TreeMap(); arguments.put("name", nodeName); Index: editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/DefaultWorkflowPlugin.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/DefaultWorkflowPlugin.java (revision 45283) +++ editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/DefaultWorkflowPlugin.java (revision ) @@ -58,14 +58,13 @@ import org.hippoecm.frontend.service.IEditor; import org.hippoecm.frontend.service.IEditor.Mode; import org.hippoecm.frontend.service.IEditorManager; -import org.hippoecm.frontend.service.ISettingsService; import org.hippoecm.frontend.service.render.RenderPlugin; import org.hippoecm.frontend.session.UserSession; +import org.hippoecm.frontend.util.CodecUtils; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNode; import org.hippoecm.repository.api.Localized; import org.hippoecm.repository.api.StringCodec; -import org.hippoecm.repository.api.StringCodecFactory; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; @@ -169,7 +168,7 @@ throw new WorkflowException("No name for destination given"); } HippoNode node = (HippoNode) getModel().getNode(); - String nodeName = getNodeNameCodec().encode(uriName); + String nodeName = getNodeNameCodec(node).encode(uriName); String localName = getLocalizeCodec().encode(targetName); if ("".equals(nodeName)) { throw new IllegalArgumentException("You need to enter a name"); @@ -207,7 +206,7 @@ createNewNodeNameForImage(nodeName); } else { String copyof = new StringResourceModel("copyof", DefaultWorkflowPlugin.this, null).getString(); - CopyNameHelper copyNameHelper = new CopyNameHelper(getNodeNameCodec(), copyof); + CopyNameHelper copyNameHelper = new CopyNameHelper(getNodeNameCodec(node), copyof); name = copyNameHelper.getCopyName(nodeName, destination.getNodeModel().getNode()); } } catch (RepositoryException ex) { @@ -281,7 +280,7 @@ if (destination != null) { folderModel = destination.getNodeModel(); } - StringCodec codec = getNodeNameCodec(); + StringCodec codec = getNodeNameCodec(folderModel.getNode()); String nodeName = codec.encode(name); DefaultWorkflow workflow = (DefaultWorkflow) wf; @@ -412,17 +411,11 @@ } protected StringCodec getLocalizeCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, - ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.display"); + return CodecUtils.getDisplayNameCodec(getPluginContext()); } - protected StringCodec getNodeNameCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, - ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.node"); + protected StringCodec getNodeNameCodec(final Node node) { + return CodecUtils.getNodeNameCodec(getPluginContext(), node); } private void browseTo(JcrNodeModel nodeModel) throws RepositoryException { @@ -495,11 +488,19 @@ private TextField nameComponent; private TextField uriComponent; private boolean uriModified; - + + private StringCodec nodeNameCodec; + public RenameDocumentDialog(StdWorkflow action, IModel title) { super(DefaultWorkflowPlugin.this.getModel(), action); this.title = title; + try { + nodeNameCodec = getNodeNameCodec(DefaultWorkflowPlugin.this.getModel().getNode()); + } catch (RepositoryException e) { + nodeNameCodec = getNodeNameCodec(null); + } + final PropertyModel nameModel = new PropertyModel(action, "targetName"); final PropertyModel uriModel = new PropertyModel(action, "uriName"); @@ -514,7 +515,7 @@ @Override protected void onUpdate(AjaxRequestTarget target) { if (!uriModified) { - uriModel.setObject(getNodeNameCodec().encode(nameModel.getObject())); + uriModel.setObject(nodeNameCodec.encode(nameModel.getObject())); target.addComponent(uriComponent); } } @@ -543,7 +544,7 @@ public void onClick(AjaxRequestTarget target) { uriModified = !uriModified; if (!uriModified) { - uriModel.setObject(Strings.isEmpty(nameModel.getObject()) ? "" : getNodeNameCodec().encode( + uriModel.setObject(Strings.isEmpty(nameModel.getObject()) ? "" : nodeNameCodec.encode( nameModel.getObject())); } else { target.focusComponent(uriComponent); Index: builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java (revision 45283) +++ builtin/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java (revision ) @@ -48,18 +48,17 @@ import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.IDialogService.Dialog; import org.hippoecm.frontend.i18n.model.NodeTranslator; -import org.hippoecm.frontend.model.JcrItemModel; import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.service.IBrowseService; import org.hippoecm.frontend.service.IEditor; import org.hippoecm.frontend.service.IEditorManager; -import org.hippoecm.frontend.service.ISettingsService; import org.hippoecm.frontend.service.ServiceException; import org.hippoecm.frontend.service.render.RenderPlugin; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.frontend.translation.ILocaleProvider; +import org.hippoecm.frontend.util.CodecUtils; import org.hippoecm.frontend.widgets.AbstractView; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNode; @@ -67,7 +66,6 @@ import org.hippoecm.repository.api.HippoWorkspace; import org.hippoecm.repository.api.Localized; import org.hippoecm.repository.api.StringCodec; -import org.hippoecm.repository.api.StringCodecFactory; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; @@ -93,6 +91,7 @@ add(new Label("new")); + // Add rename dialog add(new StdWorkflow("rename", new StringResourceModel("rename-title", this, null), context, getModel()) { private static final long serialVersionUID = 1L; RenameDocumentArguments renameDocumentModel = new RenameDocumentArguments(); @@ -134,7 +133,7 @@ // 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().encode(renameDocumentModel.getUriName()); + String nodeName = getNodeNameCodec(node).encode(renameDocumentModel.getUriName()); String localName = getLocalizeCodec().encode(renameDocumentModel.getTargetName()); WorkflowManager manager = UserSession.get().getWorkflowManager(); DefaultWorkflow defaultWorkflow = (DefaultWorkflow) manager.getWorkflow("core", node); @@ -148,6 +147,7 @@ } }); + // Add reorder dialog final StdWorkflow reorderAction; add(reorderAction = new StdWorkflow("reorder", new StringResourceModel("reorder-folder", this, null), context, getModel()) { private static final long serialVersionUID = 1L; @@ -171,6 +171,7 @@ } }); + // Add delete dialog add(new StdWorkflow("delete", new StringResourceModel("delete-title", this, null), context, getModel()) { private static final long serialVersionUID = 1L; @@ -260,8 +261,9 @@ } }); + // Add new document dialog try { - WorkflowDescriptorModel model = getModel(); + final WorkflowDescriptorModel model = getModel(); List list = new LinkedList(); WorkflowDescriptor descriptor = model.getObject(); WorkflowManager manager = UserSession.get().getWorkflowManager(); @@ -271,7 +273,7 @@ Map hints = folderWorkflow.hints(); if (hints.containsKey("reorder") && hints.get("reorder") instanceof Boolean) { - reorderAction.setVisible(((Boolean) hints.get("reorder")).booleanValue()); + reorderAction.setVisible((Boolean) hints.get("reorder")); } final Set translated = new TreeSet(); @@ -322,7 +324,7 @@ log.error("unknown folder type " + addDocumentModel.getPrototype()); return "Unknown folder type " + addDocumentModel.getPrototype(); } - String nodeName = getNodeNameCodec().encode(addDocumentModel.getUriName()); + String nodeName = getNodeNameCodec(model.getNode()).encode(addDocumentModel.getUriName()); String localName = getLocalizeCodec().encode(addDocumentModel.getTargetName()); if ("".equals(nodeName)) { throw new IllegalArgumentException("You need to enter a name"); @@ -381,7 +383,7 @@ return (WorkflowDescriptorModel) super.getModel(); } - protected Dialog newRenameDocumentDialog(RenameDocumentArguments renameDocumentModel, IWorkflowInvoker invoker) { + protected Dialog newRenameDocumentDialog(final RenameDocumentArguments renameDocumentModel, IWorkflowInvoker invoker) { return new RenameDocumentDialog( renameDocumentModel, new StringResourceModel("rename-title", this, null), @@ -391,37 +393,27 @@ @Override protected StringCodec load() { - return getNodeNameCodec(); + Node node = null; + try { + node = FolderWorkflowPlugin.this.getModel().getNode(); + } catch (RepositoryException e) { - } + } + return getNodeNameCodec(node); - } + } + } ); } protected Dialog newAddDocumentDialog(AddDocumentArguments addDocumentModel, String category, Set prototypes, boolean translated, IWorkflowInvoker invoker) { - AddDocumentDialog dialog = new AddDocumentDialog( - addDocumentModel, - new StringResourceModel(category, this, null), - category, - prototypes, - translated, - invoker, - new LoadableDetachableModel() { - @Override - protected StringCodec load() { - return getNodeNameCodec(); - } - }, - getLocaleProvider() - ); - WorkflowDescriptorModel descriptorModel = (WorkflowDescriptorModel) getDefaultModel(); + String language = null; try { Node node = descriptorModel.getNode(); if (node != null) { while (node.getDepth() > 0) { if (node.isNodeType(HippoTranslationNodeType.NT_TRANSLATED)) { - dialog.getLanguageField().setVisible(false); + language = node.getProperty(HippoTranslationNodeType.LOCALE).getString(); break; } node = node.getParent(); @@ -431,6 +423,23 @@ log.error("Could not determine visibility of language field"); } + IModel codecModel = CodecUtils.getNodeNameCodecModel(getPluginContext(), language); + + AddDocumentDialog dialog = new AddDocumentDialog( + addDocumentModel, + new StringResourceModel(category, this, null), + category, + prototypes, + translated, + invoker, + codecModel, + getLocaleProvider() + ); + + if (language != null) { + dialog.getLanguageField().setVisible(false); + } + return dialog; } @@ -499,15 +508,11 @@ } protected StringCodec getLocalizeCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.display"); + return CodecUtils.getDisplayNameCodec(getPluginContext()); } - protected StringCodec getNodeNameCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.node"); + protected StringCodec getNodeNameCodec(Node node) { + return CodecUtils.getNodeNameCodec(getPluginContext(), node); } protected ILocaleProvider getLocaleProvider() { Index: gallery/frontend/src/main/java/org/hippoecm/frontend/plugins/gallery/GalleryWorkflowPlugin.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- gallery/frontend/src/main/java/org/hippoecm/frontend/plugins/gallery/GalleryWorkflowPlugin.java (revision 45283) +++ gallery/frontend/src/main/java/org/hippoecm/frontend/plugins/gallery/GalleryWorkflowPlugin.java (revision ) @@ -21,6 +21,7 @@ import java.util.LinkedList; import java.util.List; +import javax.jcr.Node; import javax.jcr.RepositoryException; import org.apache.wicket.Component; @@ -48,16 +49,15 @@ import org.hippoecm.frontend.plugins.yui.upload.FileUploadException; import org.hippoecm.frontend.plugins.yui.upload.MultiFileUploadDialog; import org.hippoecm.frontend.service.IBrowseService; -import org.hippoecm.frontend.service.ISettingsService; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.frontend.translation.ILocaleProvider; +import org.hippoecm.frontend.util.CodecUtils; import org.hippoecm.frontend.widgets.AbstractView; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNode; import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.MappingException; import org.hippoecm.repository.api.StringCodec; -import org.hippoecm.repository.api.StringCodecFactory; import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.api.WorkflowManager; @@ -263,17 +263,19 @@ } protected StringCodec getLocalizeCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, - ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.display"); + return CodecUtils.getDisplayNameCodec(getPluginContext()); } protected StringCodec getNodeNameCodec() { - ISettingsService settingsService = getPluginContext().getService(ISettingsService.SERVICE_ID, - ISettingsService.class); - StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory(); - return stringCodecFactory.getStringCodec("encoding.node"); + Node node = null; + WorkflowDescriptorModel workflowDescriptorModel = (WorkflowDescriptorModel) GalleryWorkflowPlugin.this + .getDefaultModel(); + try { + node = workflowDescriptorModel.getNode(); + } catch (RepositoryException e) { + //ignore + } + return CodecUtils.getNodeNameCodec(getPluginContext(), node); } protected ILocaleProvider getLocaleProvider() {