X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2FSuiteApp.java;h=3dc5007fc0be274380ee18dd68436a30b62e9bc5;hb=302839c70d637be5a555290bd4542b9b1c63c17d;hp=12dceb88c786bf853c9ab5eabb48cb53ec0ba0a0;hpb=2362aefd312e04eea437824f37cb6e63389cd361;p=gpl%2Fargeo-suite.git diff --git a/swt/org.argeo.app.ui/src/org/argeo/app/ui/SuiteApp.java b/swt/org.argeo.app.ui/src/org/argeo/app/ui/SuiteApp.java index 12dceb8..3dc5007 100644 --- a/swt/org.argeo.app.ui/src/org/argeo/app/ui/SuiteApp.java +++ b/swt/org.argeo.app.ui/src/org/argeo/app/ui/SuiteApp.java @@ -25,6 +25,7 @@ import org.argeo.api.cms.CmsConstants; 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; @@ -32,20 +33,21 @@ import org.argeo.app.api.EntityConstants; 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; @@ -93,7 +95,7 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber { // ACR private ContentRepository contentRepository; -// private JcrContentProvider jcrContentProvider; + private JcrContentProvider jcrContentProvider; // JCR // private Repository repository; @@ -233,8 +235,15 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber { .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); @@ -459,7 +468,7 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber { 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); @@ -468,7 +477,7 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber { 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); @@ -488,7 +497,7 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber { 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; @@ -506,7 +515,7 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber { } } } else { - Content node = getNode(ui, event); + Content node = getContentFromEvent(ui, event); if (node != null) { SuiteLayer layer = findByType(layersByType, node); ui.switchToLayer(layer, node); @@ -520,13 +529,13 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber { }); } - private Content getNode(SuiteUi ui, Map event) { + protected Content getContentFromEvent(SuiteUi ui, Map 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) { @@ -638,4 +647,9 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber { public void setContentRepository(ContentRepository contentRepository) { this.contentRepository = contentRepository; } + + public void setJcrContentProvider(JcrContentProvider jcrContentProvider) { + this.jcrContentProvider = jcrContentProvider; + } + }