X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=publishing%2Forg.argeo.publishing.ui%2Fsrc%2Forg%2Fargeo%2Fpublishing%2Fui%2FPublishingApp.java;h=705eb96facadc4a415211beffa0e83135dc79695;hb=752a7b2614895002a3d184be166ef4162caf0d05;hp=00deae94af9ddc38ce3e044c5d48a5af987ad3a3;hpb=147ada7da5bf6292569f17a53a77fca04c97f707;p=gpl%2Fargeo-suite.git diff --git a/publishing/org.argeo.publishing.ui/src/org/argeo/publishing/ui/PublishingApp.java b/publishing/org.argeo.publishing.ui/src/org/argeo/publishing/ui/PublishingApp.java index 00deae9..705eb96 100644 --- a/publishing/org.argeo.publishing.ui/src/org/argeo/publishing/ui/PublishingApp.java +++ b/publishing/org.argeo.publishing.ui/src/org/argeo/publishing/ui/PublishingApp.java @@ -1,40 +1,55 @@ package org.argeo.publishing.ui; +import static org.argeo.suite.ui.SuiteApp.DEFAULT_THEME_ID_PROPERTY; +import static org.argeo.suite.ui.SuiteApp.DEFAULT_UI_NAME_PROPERTY; + import java.util.HashSet; import java.util.Map; import java.util.Set; import javax.jcr.Node; -import javax.jcr.RepositoryException; import javax.jcr.Session; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.argeo.api.NodeUtils; import org.argeo.cms.ui.AbstractCmsApp; import org.argeo.cms.ui.CmsApp; -import org.argeo.docbook.ui.DocBookTypes; +import org.argeo.cms.ui.CmsUiProvider; import org.argeo.docbook.ui.DocumentPage; import org.argeo.jcr.Jcr; -import org.argeo.jcr.JcrUtils; +import org.argeo.suite.ui.SuiteApp; +import org.argeo.util.LangUtils; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.osgi.framework.Constants; +import org.osgi.service.event.Event; +import org.osgi.service.event.EventHandler; /** * A {@link CmsApp} dedicated to publishing, typically a public or internal web * site. */ -public class PublishingApp extends AbstractCmsApp { +public class PublishingApp extends AbstractCmsApp implements EventHandler { private final static Log log = LogFactory.getLog(PublishingApp.class); private String pid; private String defaultThemeId; + private String defaultUiName = ""; + + private String publicBasePath = null; + + private CmsUiProvider landingPage; + private CmsUiProvider defaultProvider = new DocumentUiProvider(); public void init(Map properties) { - defaultThemeId = properties.get("defaultThemeId"); + if (properties.containsKey(DEFAULT_UI_NAME_PROPERTY)) + defaultUiName = LangUtils.get(properties, DEFAULT_UI_NAME_PROPERTY); + if (properties.containsKey(DEFAULT_THEME_ID_PROPERTY)) + defaultThemeId = LangUtils.get(properties, DEFAULT_THEME_ID_PROPERTY); + publicBasePath = LangUtils.get(properties, SuiteApp.PUBLIC_BASE_PATH_PROPERTY); pid = properties.get(Constants.SERVICE_PID); + if (log.isDebugEnabled()) log.info("Publishing App " + pid + " started"); } @@ -48,29 +63,39 @@ public class PublishingApp extends AbstractCmsApp { @Override public Set getUiNames() { Set uiNames = new HashSet<>(); - uiNames.add(""); + uiNames.add(defaultUiName); return uiNames; } @Override public Composite initUi(Composite parent) { - Session adminSession = NodeUtils.openDataAdminSession(getRepository(), null); +// Session adminSession = NodeUtils.openDataAdminSession(getRepository(), null); + Session session = Jcr.login(getRepository(), null); parent.setLayout(new GridLayout()); - Node indexNode; - try { - indexNode = JcrUtils.getOrAdd(Jcr.getRootNode(adminSession), DocumentPage.WWW, DocBookTypes.ARTICLE); - adminSession.save(); - } catch (RepositoryException e) { - throw new IllegalStateException(e); + Node indexNode = Jcr.getNode(session, publicBasePath + "/index"); +// try { +// indexNode = JcrUtils.getOrAdd(Jcr.getRootNode(adminSession), DocumentPage.WWW, DbkType.article.get()); +// adminSession.save(); +// } catch (RepositoryException e) { +// throw new IllegalStateException(e); +// } + + Control page; + if (landingPage != null) { + page = landingPage.createUiPart(parent, indexNode); + } else { + page = defaultProvider.createUiPart(parent, indexNode); } - Control page = new DocumentPage().createUiPart(parent, indexNode); return (Composite) page; } @Override public void refreshUi(Composite parent, String state) { parent.setLayout(new GridLayout()); - new DocumentPage().createUiPart(parent, null); + if (landingPage != null) + landingPage.createUiPart(parent, null); + else + defaultProvider.createUiPart(parent, null); } @Override @@ -82,4 +107,15 @@ public class PublishingApp extends AbstractCmsApp { protected String getThemeId(String uiName) { return defaultThemeId; } + + public void setLandingPage(CmsUiProvider landingPage) { + this.landingPage = landingPage; + } + + @Override + public void handleEvent(Event event) { + // TODO listen to some events + + } + }