public final static String PUBLIC_BASE_PATH_PROPERTY = "publicBasePath";
public final static String DEFAULT_UI_NAME_PROPERTY = "defaultUiName";
public final static String DEFAULT_THEME_ID_PROPERTY = "defaultThemeId";
+ public final static String DEFAULT_LAYER_PROPERTY = "defaultLayer";
private final static String LOGIN = "login";
private String publicBasePath = null;
defaultUiName = LangUtils.get(properties, DEFAULT_UI_NAME_PROPERTY);
if (properties.containsKey(DEFAULT_THEME_ID_PROPERTY))
defaultThemeId = LangUtils.get(properties, DEFAULT_THEME_ID_PROPERTY);
+ if (properties.containsKey(DEFAULT_LAYER_PROPERTY))
+ defaultLayerPid = LangUtils.get(properties, DEFAULT_LAYER_PROPERTY);
publicBasePath = LangUtils.get(properties, PUBLIC_BASE_PATH_PROPERTY);
if (properties.containsKey(Constants.SERVICE_PID)) {
CmsView cmsView = CmsView.getCmsView(parent);
CmsUiProvider headerUiProvider = findUiProvider(headerPid);
CmsUiProvider footerUiProvider = findUiProvider(footerPid);
+ CmsUiProvider leadPaneUiProvider = findUiProvider(leadPanePid);
+
Localized appTitle = null;
if (headerUiProvider instanceof DefaultHeader) {
appTitle = ((DefaultHeader) headerUiProvider).getTitle();
SuiteLayer layer = layersByPid.get(key).get();
ui.addLayer(key, layer);
}
- refreshPart(findUiProvider(leadPanePid), ui.getLeadPane(), context);
+
+ if (leadPaneUiProvider != null)
+ refreshPart(leadPaneUiProvider, ui.getLeadPane(), context);
if (footerUiProvider != null)
refreshPart(footerUiProvider, ui.getFooter(), context);
ui.layout(true, true);
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="init" deactivate="destroy">
+ <implementation class="org.argeo.suite.ui.DefaultEditionLayer"/>
+ <properties entry="config/wwwLayer.properties"/>
+ <service>
+ <provide interface="org.argeo.suite.ui.SuiteLayer"/>
+ </service>
+ <reference bind="setWorkArea" cardinality="1..1" interface="org.argeo.cms.ui.CmsUiProvider" name="CmsUiProvider" policy="dynamic" target="(service.pid=argeo.publishing.ui.documentUiProvider)"/>
+</scr:component>
OSGI-INF/htmlServletContext.xml,\
OSGI-INF/dbkServlet.xml,\
OSGI-INF/documentUiProvider.xml,\
+OSGI-INF/wwwLayer.xml,\
OSGI-INF/dbk4Converter.xml
--- /dev/null
+service.pid=argeo.publishing.ui.wwwLayer
+
+title=Web
+icon=map
\ No newline at end of file
import org.apache.xalan.processor.TransformerFactoryImpl;
import org.argeo.cms.servlet.ServletAuthUtils;
import org.argeo.cms.ui.CmsTheme;
+import org.argeo.docbook.DbkType;
import org.argeo.docbook.DbkUtils;
import org.argeo.jcr.Jcr;
import org.argeo.jcr.JcrException;
Session session = null;
try {
session = ServletAuthUtils.doAs(() -> Jcr.login(repository, null), req);
- Node node = session.getNode(path);
+ Node documentNode = session.getNode(path);
+ Node node;
+ if (documentNode.hasNode(DbkType.article.get()))
+ node = documentNode.getNode(DbkType.article.get());
+ else {
+ throw new IllegalArgumentException("Unsupported node " + documentNode);
+ }
if (DbkUtils.isDbk(node)) {
CmsTheme cmsTheme = null;
String themeId = req.getParameter("themeId");
// TODO optimise with pipes, SAX, etc. ?
byte[] arr;
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
- session.exportDocumentView(path, out, true, false);
+ session.exportDocumentView(node.getPath(), out, true, false);
arr = out.toByteArray();
// System.out.println(new String(arr, StandardCharsets.UTF_8));
} catch (RepositoryException e) {
sb.append(req.getContextPath()).append(req.getServletPath()).append('/');
sb.append(themeId).append('/').append(cssPath).append(' ');
}
- sb.append("https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap").append(' ');
- sb.append("https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,600;1,400&display=swap").append(' ');
+ sb.append("https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap")
+ .append(' ');
+ sb.append(
+ "https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,600;1,400&display=swap")
+ .append(' ');
if (sb.length() > 0)
transformer.setParameter("html.stylesheet", sb.toString());
}
// Title
parent.setLayout(CmsUiUtils.noSpaceGridLayout());
- CmsLink toHtml = new CmsLink("To HTML", "/html/dbk" + textNode.getPath());
+ CmsLink toHtml = new CmsLink("To HTML", "/html/dbk" + context.getPath());
toHtml.createUiPart(parent, context);
ScrolledPage page = new ScrolledPage(parent, SWT.NONE);
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.cms.ui.CmsUiProvider;
-import org.argeo.docbook.DbkType;
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<String, String> properties) {
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())
@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, DbkType.article.get());
- 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 = new DocumentPage().createUiPart(parent, indexNode);
+ page = defaultProvider.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
this.landingPage = landingPage;
}
+ @Override
+ public void handleEvent(Event event) {
+ // TODO listen to some events
+
+ }
+
}