Index: api/src/main/java/org/hippoecm/frontend/editor/plugins/linkpicker/LinkPickerDialogConfig.java
===================================================================
--- api/src/main/java/org/hippoecm/frontend/editor/plugins/linkpicker/LinkPickerDialogConfig.java (revision 54123)
+++ api/src/main/java/org/hippoecm/frontend/editor/plugins/linkpicker/LinkPickerDialogConfig.java (working copy)
@@ -17,12 +17,15 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import org.apache.commons.lang.StringUtils;
import org.hippoecm.frontend.model.JcrItemModel;
import org.hippoecm.frontend.model.properties.JcrPropertyValueModel;
import org.hippoecm.frontend.plugin.config.IPluginConfig;
import org.hippoecm.frontend.plugin.config.impl.JavaPluginConfig;
import org.hippoecm.frontend.plugins.standards.picker.NodePickerControllerSettings;
+import org.hippoecm.frontend.session.UserSession;
import org.hippoecm.repository.api.HippoNodeType;
import org.hippoecm.repository.translation.HippoTranslationNodeType;
import org.slf4j.Logger;
@@ -53,8 +56,31 @@
}
private static String getPickerBaseUuid(IPluginConfig config, final JcrPropertyValueModel model) {
+ String baseUuid = null;
+
if (config.containsKey(NodePickerControllerSettings.BASE_UUID)) {
- return config.getString(NodePickerControllerSettings.BASE_UUID);
+ baseUuid = config.getString(NodePickerControllerSettings.BASE_UUID);
+ }
+
+ // if base.uuid is blank but base.path is set, try to find the base.uuid from the base.path config.
+ if (StringUtils.isBlank(baseUuid) && config.containsKey(NodePickerControllerSettings.BASE_PATH)) {
+ final String basePath = config.getString(NodePickerControllerSettings.BASE_PATH);
+
+ if (StringUtils.isNotBlank(basePath)) {
+ try {
+ final Session session = UserSession.get().getJcrSession();
+ if (session.nodeExists(basePath)) {
+ final Node baseNode = session.getNode(basePath);
+ baseUuid = baseNode.getIdentifier();
+ }
+ } catch (RepositoryException e) {
+ log.error("Failed to retrieve node identifier from the configured base.path, '{}'.", basePath, e);
+ }
+ }
+ }
+
+ if (StringUtils.isNotBlank(baseUuid)) {
+ return baseUuid;
} else if (isLanguageContextAware(config)) {
try {
return getTranslatedBaseUuid(model);
Index: api/src/main/java/org/hippoecm/frontend/plugins/standards/picker/NodePickerControllerSettings.java
===================================================================
--- api/src/main/java/org/hippoecm/frontend/plugins/standards/picker/NodePickerControllerSettings.java (revision 54123)
+++ api/src/main/java/org/hippoecm/frontend/plugins/standards/picker/NodePickerControllerSettings.java (working copy)
@@ -29,6 +29,7 @@
private static final String FOLDER_SERVICE_KEY = "model.folder";
public static final String BASE_UUID = "base.uuid";
+ public static final String BASE_PATH = "base.path";
public static final String SELECTABLE_NODETYPES = "nodetypes";
public static final String LAST_VISITED_KEY = "last.visited.key";
Index: editor/repository/src/main/resources/namespace-hippo.xml
===================================================================
--- editor/repository/src/main/resources/namespace-hippo.xml (revision 54123)
+++ editor/repository/src/main/resources/namespace-hippo.xml (working copy)
@@ -576,6 +576,7 @@
cluster.name
nodetypes
base.uuid
+ base.path
last.visited.key
last.visited.enabled
last.visited.nodetypes