import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Hashtable;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import org.argeo.cms.ui.CmsUiProvider;
import org.argeo.cms.ui.LifeCycleUiProvider;
import org.argeo.jcr.JcrUtils;
+import org.argeo.node.NodeConstants;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.rap.rwt.application.Application;
import org.eclipse.rap.rwt.application.Application.OperationMode;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
+import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
private Repository repository;
private String workspace = null;
private String jcrBasePath = "/";
- private List<String> roPrincipals = Arrays.asList("anonymous", "everyone");
- private List<String> rwPrincipals = Arrays.asList("everyone");
+ private List<String> roPrincipals = Arrays.asList(NodeConstants.ROLE_ANONYMOUS, NodeConstants.ROLE_USER);
+ private List<String> rwPrincipals = Arrays.asList(NodeConstants.ROLE_USER);
private CmsUiProvider header;
private Map<String, CmsUiProvider> pages = new LinkedHashMap<String, CmsUiProvider>();
public void configure(Application application) {
try {
- StyleSheetResourceLoader styleSheetRL = new StyleSheetResourceLoader(bundleContext);
- BundleResourceLoader bundleRL = new BundleResourceLoader(bundleContext);
+ BundleResourceLoader bundleRL = new BundleResourceLoader(bundleContext.getBundle());
application.setOperationMode(OperationMode.SWT_COMPATIBILITY);
// application.setOperationMode(OperationMode.JEE_COMPATIBILITY);
Map<String, String> defaultBranding = null;
if (branding.containsKey("*"))
defaultBranding = branding.get("*");
+ String defaultTheme = defaultBranding.get(WebClient.THEME_ID);
// entry points
for (String page : pages.keySet()) {
}
// favicon
if (properties.containsKey(WebClient.FAVICON)) {
+ String themeId = defaultBranding.get(WebClient.THEME_ID);
+ Bundle themeBundle = ThemeUtils.findThemeBundle(bundleContext, themeId);
String faviconRelPath = properties.get(WebClient.FAVICON);
- application.addResource(faviconRelPath, new BundleResourceLoader(bundleContext));
+ application.addResource(faviconRelPath,
+ new BundleResourceLoader(themeBundle != null ? themeBundle : bundleContext.getBundle()));
if (log.isTraceEnabled())
log.trace("Favicon " + faviconRelPath);
log.info("Page /" + page);
}
- // stylesheets
+ // stylesheets and themes
+ Set<Bundle> themeBundles = new HashSet<>();
for (String themeId : styleSheets.keySet()) {
+ Bundle themeBundle = ThemeUtils.findThemeBundle(bundleContext, themeId);
+ StyleSheetResourceLoader styleSheetRL = new StyleSheetResourceLoader(
+ themeBundle != null ? themeBundle : bundleContext.getBundle());
+ if (themeBundle != null)
+ themeBundles.add(themeBundle);
List<String> cssLst = styleSheets.get(themeId);
if (log.isDebugEnabled())
log.debug("Theme " + themeId);
}
}
+ for (Bundle themeBundle : themeBundles) {
+ BundleResourceLoader themeBRL = new BundleResourceLoader(themeBundle);
+ ThemeUtils.addThemeResources(application, themeBundle, themeBRL, "*.png");
+ ThemeUtils.addThemeResources(application, themeBundle, themeBRL, "*.gif");
+ ThemeUtils.addThemeResources(application, themeBundle, themeBRL, "*.jpg");
+ }
} catch (RuntimeException e) {
// Easier access to initialisation errors
log.error("Unexpected exception when configuring RWT application.", e);
try {
session = JcrUtils.loginOrCreateWorkspace(repository, workspace);
VersionManager vm = session.getWorkspace().getVersionManager();
- if (!vm.isCheckedOut("/"))
- vm.checkout("/");
JcrUtils.mkdirs(session, jcrBasePath);
+ session.save();
+ if (!vm.isCheckedOut(jcrBasePath))
+ vm.checkout(jcrBasePath);
for (String principal : rwPrincipals)
JcrUtils.addPrivilege(session, jcrBasePath, principal, Privilege.JCR_WRITE);
for (String principal : roPrincipals)