import org.argeo.api.cms.CmsEventSubscriber;
import org.argeo.api.cms.CmsLog;
import org.argeo.api.cms.CmsSession;
+import org.argeo.api.cms.directory.CmsUserManager;
import org.argeo.api.cms.ux.CmsTheme;
import org.argeo.api.cms.ux.CmsUi;
import org.argeo.api.cms.ux.CmsView;
import org.argeo.app.api.EntityNames;
import org.argeo.app.api.EntityType;
import org.argeo.app.api.RankedObject;
+import org.argeo.app.core.SuiteUtils;
import org.argeo.cms.AbstractCmsApp;
-import org.argeo.cms.CmsUserManager;
import org.argeo.cms.LocaleUtils;
import org.argeo.cms.Localized;
import org.argeo.cms.acr.ContentUtils;
import org.argeo.cms.jcr.CmsJcrUtils;
import org.argeo.cms.jcr.acr.JcrContent;
+import org.argeo.cms.jcr.acr.JcrContentProvider;
import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.swt.acr.SwtUiProvider;
import org.argeo.cms.swt.dialogs.CmsFeedback;
+import org.argeo.cms.util.LangUtils;
import org.argeo.cms.ux.CmsUxUtils;
import org.argeo.eclipse.ui.specific.UiContext;
import org.argeo.jcr.JcrException;
-import org.argeo.util.LangUtils;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.osgi.framework.Constants;
// ACR
private ContentRepository contentRepository;
-// private JcrContentProvider jcrContentProvider;
+ private JcrContentProvider jcrContentProvider;
// JCR
// private Repository repository;
.get(ContentUtils.SLASH + CmsConstants.SYS_WORKSPACE + publicBasePath);
ui.setUserDir(userDir);
} else {
- Content userDir = contentSession.getSessionRunDir();
+ Node userDirNode = jcrContentProvider.doInAdminSession((adminSession) -> {
+ Node node = SuiteUtils.getOrCreateCmsSessionNode(adminSession, cmsSession);
+ return node;
+ });
+ Content userDir = contentSession
+ .get(ContentUtils.SLASH + CmsConstants.SYS_WORKSPACE + userDirNode.getPath());
ui.setUserDir(userDir);
+// Content userDir = contentSession.getSessionRunDir();
+// ui.setUserDir(userDir);
}
}
initLocale(cmsSession);
appTitle = ui.getTitle().lead() + " - ";
if (SuiteUiUtils.isTopic(topic, SuiteUxEvent.refreshPart)) {
- Content node = getNode(ui, event);
+ Content node = getContentFromEvent(ui, event);
if (node == null)
return;
SwtUiProvider uiProvider = findByType(uiProvidersByType, node);
layer.view(uiProvider, ui.getCurrentWorkArea(), node);
ui.getCmsView().stateChanged(nodeToState(node), appTitle + CmsUxUtils.getTitle(node));
} else if (SuiteUiUtils.isTopic(topic, SuiteUxEvent.openNewPart)) {
- Content node = getNode(ui, event);
+ Content node = getContentFromEvent(ui, event);
if (node == null)
return;
SwtUiProvider uiProvider = findByType(uiProvidersByType, node);
String title = null;
if (layerTitle != null)
title = layerTitle.lead();
- Content nodeFromState = getNode(ui, event);
+ Content nodeFromState = getContentFromEvent(ui, event);
if (nodeFromState != null && nodeFromState.getPath().equals(ui.getUserDir().getPath())) {
// default layer view is forced
String state = defaultLayerPid.equals(layerId) ? "~" : layerId;
}
}
} else {
- Content node = getNode(ui, event);
+ Content node = getContentFromEvent(ui, event);
if (node != null) {
SuiteLayer layer = findByType(layersByType, node);
ui.switchToLayer(layer, node);
});
}
- private Content getNode(SuiteUi ui, Map<String, Object> event) {
+ protected Content getContentFromEvent(SuiteUi ui, Map<String, Object> event) {
ProvidedSession contentSession = (ProvidedSession) CmsUxUtils.getContentSession(contentRepository,
ui.getCmsView());
String path = get(event, SuiteUxEvent.CONTENT_PATH);
- if (path != null && path.equals(HOME_STATE))
+ if (path != null && (path.equals(HOME_STATE) || path.equals("")))
return ui.getUserDir();
Content node;
if (path == null) {
public void setContentRepository(ContentRepository contentRepository) {
this.contentRepository = contentRepository;
}
+
+ public void setJcrContentProvider(JcrContentProvider jcrContentProvider) {
+ this.jcrContentProvider = jcrContentProvider;
+ }
+
}