--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>argeo-suite</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="bin" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
--- /dev/null
+/target
+/*.target
+/bin/
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.argeo.suite.web</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments />
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments />
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments />
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+/MANIFEST.MF
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:p="http://www.springframework.org/schema/p"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
+
+ <bean id="peopleService" class="org.argeo.suite.people.PeopleSuiteServiceImpl"
+ init-method="init" destroy-method="destroy">
+ <property name="repository" ref="repository" />
+ <property name="workspaceName" value="main" />
+ <property name="userAdminService" ref="userAdminService" />
+ </bean>
+
+ <bean id="userAdminService" class="org.argeo.connect.people.core.UserAdminServiceImpl"
+ scope="singleton" lazy-init="false">
+ <property name="userTransaction" ref="userTransaction" />
+ <property name="userAdmin" ref="userAdmin" />
+ <property name="userAdminServiceReference" ref="userAdmin" />
+ </bean>
+
+ <!-- The UI Service - Enables among other definition of specific commands
+ and editors. -->
+ <bean id="peopleWbService" class="org.argeo.connect.people.rap.PeopleWbServiceImpl"
+ scope="prototype">
+ </bean>
+
+ <!-- Execute initialization with a system authentication -->
+ <bean
+ class="org.argeo.cms.spring.AuthenticatedApplicationContextInitialization" />
+
+</beans>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
+
+ <!-- COMMON UI PARTS -->
+ <util:list id="headerEnd">
+ <bean class="org.argeo.cms.util.UserMenuLink" p:vAlign="bottom" />
+ </util:list>
+
+ <!-- TEMPLATES -->
+ <bean id="menuLink" abstract="true" class="org.argeo.cms.util.MenuLink"
+ init-method="init">
+ <property name="bundleContext" ref="bundleContext" />
+ </bean>
+
+ <bean name="app" class="org.argeo.cms.util.SimpleApp" abstract="true">
+ <property name="headerHeight" value="40" />
+ <property name="repository" ref="repository" />
+ <property name="bundleContext" ref="bundleContext" />
+ <property name="jcrBasePath" value="/public" />
+ </bean>
+
+ <bean id="header" class="org.argeo.cms.util.SimpleCmsHeader"
+ abstract="true">
+ <property name="end" ref="headerEnd" />
+ </bean>
+
+ <!-- Switch header depending on client type and logged in status -->
+ <bean id="headerManager" class="org.argeo.suite.web.DynamicHeader">
+ <property name="privateHeaderProvider" ref="privateHeader" />
+ <property name="publicHeaderProvider" ref="publicHeader" />
+ <!-- <property name="smallHeaderProvider" ref="smallHeader" /> -->
+ </bean>
+
+ <bean id="privateHeader" class="org.argeo.cms.util.SimpleCmsHeader">
+ <property name="center">
+ <list>
+ <bean p:label="Dashboard" p:target="/#" parent="menuLink" />
+ <bean p:label="Contacts" p:target="/#/people" parent="menuLink" />
+ <bean p:label="Files" p:target="/#/sharedFiles" parent="menuLink" />
+ <!-- <bean p:label="Wiki" p:target="/wiki" parent="menuLink" /> -->
+ </list>
+ </property>
+ <property name="end" ref="headerEnd" />
+ </bean>
+
+ <bean id="publicHeader" class="org.argeo.cms.util.SimpleCmsHeader">
+ <!-- TODO: add static pages for anonymous view -->
+ <!-- <property name="lead"> -->
+ <!-- <list> -->
+ <!-- </list> -->
+ <!-- </property> -->
+ <property name="end" ref="headerEnd" />
+ </bean>
+</beans>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
+ xsi:schemaLocation="http://www.springframework.org/schema/osgi \r
+ http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
+ http://www.springframework.org/schema/beans \r
+ http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+ <!-- REFERENCES -->\r
+ <!-- Insure a home is present for each user that logs in -->\r
+ <reference id="repository" interface="javax.jcr.Repository" filter="(cn=home)" />\r
+ <reference id="userAdmin" interface="org.osgi.service.useradmin.UserAdmin" />\r
+ <reference id="userTransaction" interface="javax.transaction.UserTransaction" />\r
+ <reference id="nodeFileSystemProvider" interface="java.nio.file.spi.FileSystemProvider"\r
+ filter="(service.pid=org.argeo.node.fsProvider)" />\r
+ \r
+ <!-- SERVICES -->\r
+ <!-- Exposes Argeo Suite specific implementation of the People Service -->\r
+ <service ref="peopleService" interface="org.argeo.connect.people.PeopleService" />\r
+</beans:beans>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
+
+ <!-- People UI -->
+ <bean id="people.mainPage" class="org.argeo.connect.people.web.pages.PeopleDynamicPages">
+ <property name="dynamicPages" ref="people.dynamicPages" />
+ <property name="peopleService" ref="peopleService" />
+ <property name="iconPathes" ref="peopleEntityIcons" />
+ </bean>
+
+ <bean id="people.header" class="org.argeo.cms.util.SimpleCmsHeader">
+ <property name="lead">
+ <list>
+ <bean p:image="theme/argeo-classic/img/byArgeo.png" p:target="/people#"
+ p:custom="cms_header-logo" parent="menuLink" />
+ <bean p:label="All" p:target="people!/search/all" parent="menuLink" />
+ <bean p:label="Persons" p:target="people!/search/persons" parent="menuLink" />
+ <bean p:label="Organisations" p:target="people!/search/orgs" parent="menuLink" />
+ <bean p:label="Browse" p:target="browse#" parent="menuLink" />
+ </list>
+ </property>
+ <property name="end" ref="headerEnd" />
+ </bean>
+
+ <util:map id="peopleEntityIcons">
+ <entry key="people:person" value="theme/argeo-classic/icons/people/types/person.gif" />
+ <entry key="people:org" value="theme/argeo-classic/icons/people/types/company.png" />
+ </util:map>
+
+ <!-- UI Providers -->
+ <!-- A map for the specific page given the node type of the passed context -->
+ <util:map id="people.dynamicPages">
+ <entry>
+ <key>
+ <util:constant static-field="org.argeo.connect.people.PeopleTypes.PEOPLE_PERSON" />
+ </key>
+ <bean class="org.argeo.connect.people.web.pages.PersonPage">
+ <property name="personHeaderPart" ref="personHeaderPart" />
+ <property name="contactsWithNotePart" ref="contactsWithNotePart" />
+ <property name="activitiesPart" ref="activitiesPart" />
+ </bean>
+ </entry>
+ <entry>
+ <key>
+ <util:constant static-field="org.argeo.connect.people.PeopleTypes.PEOPLE_ORG" />
+ </key>
+ <bean class="org.argeo.connect.people.web.pages.OrgPage">
+ <property name="orgHeaderPart" ref="orgHeaderPart" />
+ <property name="contactsWithNotePart" ref="contactsWithNotePart" />
+ <property name="activitiesPart" ref="activitiesPart" />
+ </bean>
+ </entry>
+ <entry>
+ <key>
+ <util:constant
+ static-field="org.argeo.connect.people.PeopleTypes.PEOPLE_TAG_INSTANCE" />
+ </key>
+ <bean class="org.argeo.connect.people.web.pages.TagLikeInstancePage">
+ <property name="peopleService" ref="peopleService" />
+ <property name="iconPathes" ref="peopleEntityIcons" />
+ <property name="propertyName" value="people:tags" />
+ </bean>
+ </entry>
+ <entry>
+ <key>
+ <util:constant static-field="org.argeo.connect.people.PeopleTypes.PEOPLE_MAILING_LIST" />
+ </key>
+ <bean class="org.argeo.connect.people.web.pages.TagLikeInstancePage">
+ <property name="peopleService" ref="peopleService" />
+ <property name="iconPathes" ref="peopleEntityIcons" />
+ <property name="propertyName" value="people:mailingLists" />
+ </bean>
+ </entry>
+ </util:map>
+
+ <!-- Various headers -->
+ <bean id="personHeaderPart" class="org.argeo.connect.people.web.parts.PersonHeaderPart">
+ <property name="peopleService" ref="peopleService" />
+ <property name="tagsPart" ref="tagsPart" />
+ <property name="mailingListsPart" ref="mailingListsPart" />
+ </bean>
+
+ <bean id="orgHeaderPart" class="org.argeo.connect.people.web.parts.OrgHeaderPart">
+ <property name="peopleService" ref="peopleService" />
+ <property name="tagsPart" ref="tagsPart" />
+ <property name="mailingListsPart" ref="mailingListsPart" />
+ </bean>
+
+ <!-- Contacts -->
+ <bean id="contactsWithNotePart" class="org.argeo.connect.people.web.parts.ContactsWithNotePart">
+ <property name="singleContactPart" ref="singleContactPart" />
+ </bean>
+ <bean id="singleContactPart" class="org.argeo.connect.people.web.parts.SingleContactPart">
+ <property name="peopleService" ref="peopleService" />
+ <property name="contactButtonsPart" ref="contactButtonsPart" />
+ </bean>
+ <bean id="contactButtonsPart" class="org.argeo.connect.people.web.parts.ContactButtonsPart">
+ </bean>
+
+ <!-- Activities and workflows -->
+ <bean id="activitiesPart" class="org.argeo.connect.people.web.parts.ActivitiesPart">
+ </bean>
+
+ <!-- Tag like properties -->
+ <bean id="tagsPart" class="org.argeo.connect.people.web.parts.TagLikeValuesPart">
+ <property name="propertyName">
+ <util:constant static-field="org.argeo.connect.people.PeopleNames.PEOPLE_TAGS" />
+ </property>
+ </bean>
+ <bean id="mailingListsPart" class="org.argeo.connect.people.web.parts.TagLikeValuesPart">
+ <property name="propertyName">
+ <util:constant
+ static-field="org.argeo.connect.people.PeopleNames.PEOPLE_MAILING_LISTS" />
+ </property>
+ </bean>
+</beans>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
+
+ <!-- Main entry point for the CMS -->
+ <bean id="about" parent="app" init-method="init" destroy-method="destroy">
+ <property name="workspace" value="main" />
+ <property name="header" ref="headerManager" />
+ <property name="pages">
+ <map>
+ <entry key="">
+ <bean class="org.argeo.suite.web.DefaultMainPage">
+ <property name="peopleService" ref="peopleService" />
+ <property name="peopleIconPaths" ref="peopleEntityIcons" />
+ <property name="nodeFileSystemProvider" ref="nodeFileSystemProvider" />
+ </bean>
+ </entry>
+ <entry key="people" value-ref="people.mainPage" />
+ <entry key="wiki">
+ <bean class="org.argeo.cms.text.WikiPage" />
+ </entry>
+ <entry key="browse">
+ <bean class="org.argeo.cms.maintenance.Browse" />
+ </entry>
+ </map>
+ </property>
+ <property name="branding">
+ <map>
+ <entry key="*">
+ <map>
+ <entry value="org.argeo.cms.Theme" key="org.eclipse.rap.rwt.webclient.themeId" />
+ <entry key="org.eclipse.rap.rwt.webclient.additionalHeaders">
+ <value><![CDATA[
+ <style type='text/css'>
+ a:link, a:visited { color: #333333; text-decoration:none; }
+ a:hover { text-decoration:underline; }
+ </style>
+ <meta property="og:title" content="Argeo Suite" />
+ <meta property="og:description" content="Distributed Java Applications" />
+ <meta property="og:type" content="website" />
+ <meta property="og:url" content="https://www.argeo.org/" />
+]]></value>
+ </entry>
+ </map>
+ </entry>
+ <entry key="">
+ <map>
+ <entry value="Argeo Suite" key="org.eclipse.rap.rwt.webclient.pageTitle" />
+ </map>
+ </entry>
+ <entry key="people">
+ <map>
+ <entry value="Contacts" key="org.eclipse.rap.rwt.webclient.pageTitle" />
+ <entry value="org.argeo.cms.Theme" key="org.eclipse.rap.rwt.webclient.themeId" />
+ <entry value="theme/argeo-classic/icons/people/people.gif"
+ key="org.eclipse.rap.rwt.webclient.favicon" />
+ <entry key="org.eclipse.rap.rwt.webclient.additionalHeaders">
+ <value><![CDATA[
+ <style type='text/css'>
+ a:link, a:visited { color: #333333; text-decoration:none; }
+ a:hover { text-decoration:underline;}
+ </style>
+]]></value>
+ </entry>
+ </map>
+ </entry>
+ </map>
+ </property>
+ <property name="styleSheets">
+ <map>
+ <entry key="org.argeo.cms.Theme">
+ <list>
+ <value>theme/argeo-classic/argeo-classic.css</value>
+ <value>theme/argeo-classic/people-classic.css</value>
+ <value>theme/argeo-classic/fs-classic.css</value>
+ <value>theme/argeo-classic/maintenance-classic.css</value>
+ </list>
+ </entry>
+ </map>
+ </property>
+ </bean>
+</beans>
--- /dev/null
+argeo.security.systemKey=argeo
\ No newline at end of file
--- /dev/null
+Import-Package:\
+javax.jcr.nodetype,\
+org.argeo.node,\
+javax.jcr.security,\
+org.eclipse.swt,\
+*
+
+#org.argeo.cms.text,\
+#org.argeo.connect.people,\
+
+
--- /dev/null
+source.. = src/
+output.. = bin/
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.argeo.suite</groupId>
+ <artifactId>argeo-suite</artifactId>
+ <version>0.1.1-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <artifactId>org.argeo.suite.web</artifactId>
+ <name>Argeo Suite Web UI</name>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.argeo.connect</groupId>
+ <artifactId>org.argeo.connect.people.web</artifactId>
+ <version>${version.argeo-connect}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.argeo.connect</groupId>
+ <artifactId>org.argeo.connect.people.rap</artifactId>
+ <version>${version.argeo-connect}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.argeo.connect</groupId>
+ <artifactId>org.argeo.connect.ui</artifactId>
+ <version>${version.argeo-connect}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.argeo.commons</groupId>
+ <artifactId>org.argeo.cms.ui</artifactId>
+ <version>${version.argeo-commons}</version>
+ </dependency>
+ </dependencies>
+</project>
--- /dev/null
+package org.argeo.suite;
+
+/** Argeo Suite specific exception. Wraps a usual RuntimeException */
+public class SuiteException extends RuntimeException {
+ private static final long serialVersionUID = 9048360857209165816L;
+
+ public SuiteException(String message) {
+ super(message);
+ }
+
+ public SuiteException(String message, Throwable e) {
+ super(message, e);
+ }
+}
--- /dev/null
+package org.argeo.suite.people;
+
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.security.Privilege;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.connect.people.PeopleConstants;
+import org.argeo.connect.people.PeopleNames;
+import org.argeo.connect.people.PeopleService;
+import org.argeo.connect.people.PeopleTypes;
+import org.argeo.connect.people.ResourceService;
+import org.argeo.connect.people.core.PeopleServiceImpl;
+import org.argeo.jcr.JcrUtils;
+import org.argeo.node.NodeConstants;
+import org.argeo.suite.SuiteException;
+
+/** Default implementation of an Argeo Suite specific People Backend */
+public class PeopleSuiteServiceImpl extends PeopleServiceImpl implements PeopleService, PeopleConstants {
+ private final static Log log = LogFactory.getLog(PeopleSuiteServiceImpl.class);
+
+ /* DEPENDENCY INJECTION */
+ private Repository repository;
+ private String workspaceName;
+ // private UserAdminService userAdminService;
+
+ public void init() {
+ super.init();
+ Session adminSession = null;
+ try {
+ adminSession = repository.login(workspaceName);
+ initialiseModel(adminSession);
+ } catch (Exception e) {
+ throw new SuiteException("Cannot initialise model", e);
+ } finally {
+ JcrUtils.logoutQuietly(adminSession);
+ }
+ }
+
+ // HELPERS
+
+ // TODO Hard-coded creation of default public and shared file directories
+ // To be cleaned once first init and configuration mechanisms have been
+ // implemented
+ private final static String publicPath = "/public";
+ private final static String sharedFilePath = "/sharedFiles";
+
+ @Override
+ protected void initialiseModel(Session adminSession) throws RepositoryException {
+ super.initialiseModel(adminSession);
+
+ JcrUtils.mkdirs(adminSession, publicPath, NodeType.NT_UNSTRUCTURED);
+ JcrUtils.mkdirs(adminSession, sharedFilePath, NodeType.NT_FOLDER);
+ initModelResources(adminSession);
+ if (adminSession.hasPendingChanges()) {
+ adminSession.save();
+ log.info("Repository has been initialized " + "with People's model");
+ configureACL(adminSession);
+ }
+ }
+
+ // First draft of configuration of the people specific rights
+ private void configureACL(Session session) throws RepositoryException {
+ String memberGroupDn = "cn=" + PeopleConstants.ROLE_MEMBER + ",ou=roles,ou=node";
+ JcrUtils.addPrivilege(session, getBasePath(null), memberGroupDn, Privilege.JCR_ALL);
+ JcrUtils.addPrivilege(session, "/", NodeConstants.ROLE_ADMIN, Privilege.JCR_ALL);
+ JcrUtils.addPrivilege(session, publicPath, NodeConstants.ROLE_USER, Privilege.JCR_READ);
+ JcrUtils.addPrivilege(session, publicPath, "anonymous", Privilege.JCR_READ);
+ JcrUtils.addPrivilege(session, publicPath, NodeConstants.ROLE_ANONYMOUS, Privilege.JCR_READ);
+ JcrUtils.addPrivilege(session, sharedFilePath, NodeConstants.ROLE_USER, Privilege.JCR_ALL);
+ session.save();
+ log.info("Access control configured");
+ }
+
+ /**
+ * Initialises People resource model and optionally imports legacy resources
+ */
+ protected void initModelResources(Session adminSession) throws RepositoryException {
+ // initialisation
+ ResourceService resourceService = getResourceService();
+ resourceService.initialiseResources(adminSession);
+
+ // Resource resource = initResources.get("Countries");
+ // if (resourceService.getTagLikeResourceParent(adminSession,
+ // PeopleConstants.RESOURCE_COUNTRY) == null
+ // && resource != null) {
+ // resourceService.createTagLikeResourceParent(adminSession,
+ // PeopleConstants.RESOURCE_COUNTRY,
+ // PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE,
+ // getBasePath(null),
+ // JcrUiUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new
+ // ArrayList<String>());
+ // String EN_SHORT_NAME = "English short name (upper-lower case)";
+ // String ISO_CODE = "Alpha-2 code";
+ // new EncodedTagCsvFileParser(resourceService, adminSession,
+ // PeopleConstants.RESOURCE_COUNTRY, ISO_CODE,
+ // EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8");
+ // }
+ //
+ // resource = initResources.get("Languages");
+ // if (resourceService.getTagLikeResourceParent(adminSession,
+ // PeopleConstants.RESOURCE_LANG) == null
+ // && resource != null) {
+ // resourceService.createTagLikeResourceParent(adminSession,
+ // PeopleConstants.RESOURCE_LANG,
+ // PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE,
+ // getBasePath(null),
+ // JcrUiUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new
+ // ArrayList<String>());
+ // String EN_SHORT_NAME = "Language name";
+ // String ISO_CODE = "639-1";
+ // new EncodedTagCsvFileParser(resourceService, adminSession,
+ // PeopleConstants.RESOURCE_LANG, ISO_CODE,
+ // EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8");
+ // }
+
+ // Create tag & mailing list parents
+ if (resourceService.getTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_TAG) == null)
+ resourceService.createTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_TAG,
+ PeopleTypes.PEOPLE_TAG_INSTANCE, null, getBasePath(null), PeopleTypes.PEOPLE_ENTITY,
+ PeopleNames.PEOPLE_TAGS);
+ if (resourceService.getTagLikeResourceParent(adminSession, PeopleTypes.PEOPLE_MAILING_LIST) == null)
+ resourceService.createTagLikeResourceParent(adminSession, null, PeopleTypes.PEOPLE_MAILING_LIST, null,
+ getBasePath(null), PeopleTypes.PEOPLE_ENTITY, PeopleNames.PEOPLE_MAILING_LISTS);
+
+ if (adminSession.hasPendingChanges()) {
+ adminSession.save();
+ log.info("Resources have been added to People's model");
+ }
+ }
+
+ /* DEPENDENCY INJECTION */
+ public void setRepository(Repository repository) {
+ this.repository = repository;
+ }
+
+ public void setWorkspaceName(String workspaceName) {
+ this.workspaceName = workspaceName;
+ }
+}
--- /dev/null
+package org.argeo.suite.web;
+
+import java.util.Map;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+
+import org.argeo.cms.ui.CmsUiProvider;
+import org.argeo.cms.util.CmsUtils;
+import org.argeo.connect.people.PeopleException;
+import org.argeo.connect.people.PeopleService;
+import org.argeo.connect.people.web.pages.OrgPage;
+import org.argeo.connect.people.web.parts.PeopleSearchCmp;
+import org.argeo.eclipse.ui.EclipseUiUtils;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+/** Default dashboard layout for Argeo Suite */
+public class DefaultDashboard implements CmsUiProvider {
+
+ private PeopleService peopleService;
+ private Map<String, String> peopleIconPaths;
+
+ // Local UI Providers
+ private CmsUiProvider orgPage;
+
+ public DefaultDashboard(PeopleService peopleService, Map<String, String> peopleIconPaths) {
+ this.peopleService = peopleService;
+ this.peopleIconPaths = peopleIconPaths;
+
+ orgPage = new OrgPage(peopleService);
+ }
+
+ @Override
+ public Control createUi(Composite parent, Node context) throws RepositoryException {
+ parent.setLayout(EclipseUiUtils.noSpaceGridLayout());
+ SashForm form = new SashForm(parent, SWT.HORIZONTAL);
+ form.setLayoutData(EclipseUiUtils.fillAll());
+ Composite leftPannelCmp = new Composite(form, SWT.NO_FOCUS);
+ Composite rightPannelCmp = new Composite(form, SWT.NO_FOCUS);
+ form.setWeights(new int[] { 2, 5 });
+
+ // A search on the left and the display on the right
+ populateSearch(leftPannelCmp, context, rightPannelCmp);
+ populateDefaultDisplay(rightPannelCmp, context);
+
+ return form;
+ }
+
+ public Viewer populateSearch(Composite parent, Node context, final Composite targetComposite)
+ throws RepositoryException {
+ parent.setLayout(EclipseUiUtils.noSpaceGridLayout());
+ Composite titleCmp = new Composite(parent, SWT.NO_FOCUS);
+ titleCmp.setLayoutData(EclipseUiUtils.fillWidth());
+ titleCmp.setLayout(new GridLayout());
+ Label titleLbl = new Label(titleCmp, SWT.CENTER);
+ titleLbl.setLayoutData(EclipseUiUtils.fillWidth());
+ titleLbl.setText("My Tasks");
+ titleLbl.setFont(EclipseUiUtils.getBoldFont(titleCmp));
+
+ PeopleSearchCmp searchComp = new PeopleSearchCmp(parent, SWT.NO_FOCUS, peopleService, peopleIconPaths);
+ searchComp.populate(context, true);
+ searchComp.setLayoutData(EclipseUiUtils.fillAll());
+
+ TableViewer viewer = searchComp.getViewer();
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ @Override
+ public void doubleClick(DoubleClickEvent event) {
+ Object firstObj = ((IStructuredSelection) event.getSelection()).getFirstElement();
+ try {
+ Node node = (Node) firstObj;
+ String path = node.getPath();
+ CmsUtils.getCmsView().navigateTo(path);
+ } catch (RepositoryException e) {
+ throw new PeopleException("Unable to refresh display for " + context, e);
+ }
+ }
+ });
+ return null;
+ }
+
+ public Control populateDefaultDisplay(Composite parent, Node context) throws RepositoryException {
+ parent.setLayout(new GridLayout());
+ Label lbl = new Label(parent, SWT.NONE);
+ lbl.setText("Implement a default display");
+ return lbl;
+ }
+}
--- /dev/null
+package org.argeo.suite.web;
+
+import java.nio.file.spi.FileSystemProvider;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.nodetype.NodeType;
+
+import org.argeo.cms.CmsMsg;
+import org.argeo.cms.auth.CurrentUser;
+import org.argeo.cms.text.TextStyles;
+import org.argeo.cms.ui.CmsUiProvider;
+import org.argeo.cms.ui.CmsView;
+import org.argeo.cms.ui.LifeCycleUiProvider;
+import org.argeo.cms.ui.fs.MyFilesBrowserPage;
+import org.argeo.cms.util.CmsUtils;
+import org.argeo.cms.widgets.auth.CmsLogin;
+import org.argeo.connect.people.PeopleService;
+import org.argeo.connect.people.PeopleTypes;
+import org.argeo.connect.people.web.pages.PeopleDefaultPage;
+import org.argeo.eclipse.ui.EclipseUiUtils;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * Default entry point for the Argeo Suite CMS. Forwards the request to the relevant
+ * CmsUiProvider
+ */
+public class DefaultMainPage implements LifeCycleUiProvider {
+
+ private CmsUiProvider dashboardPage;
+ private CmsUiProvider peoplePage;
+ private CmsUiProvider fsBrowserPage;
+
+ /* DEPENDENCY INJECTION */
+ private PeopleService peopleService;
+ private FileSystemProvider nodeFileSystemProvider;
+ private Map<String, String> peopleIconPaths;
+
+ public DefaultMainPage() {
+ }
+
+ @Override
+ public void init(Session adminSession) throws RepositoryException {
+ dashboardPage = new DefaultDashboard(peopleService, peopleIconPaths);
+ peoplePage = new PeopleDefaultPage(peopleService, peopleIconPaths);
+ fsBrowserPage = new MyFilesBrowserPage(nodeFileSystemProvider);
+ }
+
+ @Override
+ public Control createUi(Composite parent, Node context) throws RepositoryException {
+ if (CurrentUser.isAnonymous())
+ return createAnonymousUi(parent, context);
+
+ if (context.isNodeType(PeopleTypes.PEOPLE_ENTITY))
+ return peoplePage.createUi(parent, context);
+ else if (peopleService.getBasePath(null).equals(context.getPath()))
+ return peoplePage.createUi(parent, context);
+ else if (context.isNodeType(NodeType.NT_FOLDER) || context.isNodeType(NodeType.NT_FILE))
+ return fsBrowserPage.createUi(parent, context);
+ else
+ return dashboardPage.createUi(parent, context);
+ }
+
+ public Control createAnonymousUi(Composite parent, Node context) throws RepositoryException {
+ parent.setLayout(new GridLayout());
+ Composite body = new Composite(parent, SWT.NO_FOCUS);
+ body.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
+ body.setLayout(new GridLayout());
+
+ Composite loginCmp = new Composite(body, SWT.NO_FOCUS);
+ loginCmp.setLayout(EclipseUiUtils.noSpaceGridLayout());
+ loginCmp.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
+
+ CmsLogin login = new MyCmsLogin(CmsUtils.getCmsView());
+ // Composite credBlockCmp =
+ login.createCredentialsBlock(loginCmp);
+ // Use a custom style that has no border, among other
+ // CmsUtils.style(loginCmp, ArgeoStyles.LOGIN_INLINE_CREDBLOCK);
+
+ Label anonymousLbl = new Label(body, SWT.WRAP);
+ anonymousLbl.setText("You should login or register to access your private dashboard");
+ CmsUtils.style(anonymousLbl, TextStyles.TEXT_QUOTE);
+
+ return body;
+
+ }
+
+ private class MyCmsLogin extends CmsLogin {
+
+ public MyCmsLogin(CmsView cmsView) {
+ super(cmsView);
+ }
+
+ @Override
+ protected boolean login() {
+ boolean result = super.login();
+ return result;
+ }
+
+ @Override
+ protected void extendsCredentialsBlock(Composite credentialsBlock, Locale selectedLocale,
+ SelectionListener loginSelectionListener) {
+ Button loginBtn = new Button(credentialsBlock, SWT.PUSH);
+ loginBtn.setText(CmsMsg.login.lead(selectedLocale));
+ loginBtn.setLayoutData(CmsUtils.fillWidth());
+ loginBtn.addSelectionListener(loginSelectionListener);
+ // CmsUtils.style(loginBtn, ArgeoStyles.LOGIN_SIGNIN_BTN);
+ }
+ }
+
+ @Override
+ public void destroy() {
+ }
+
+ /* DEPENDENCY INJECTION */
+ public void setPeopleService(PeopleService peopleService) {
+ this.peopleService = peopleService;
+ }
+
+ public void setNodeFileSystemProvider(FileSystemProvider nodeFileSystemProvider) {
+ this.nodeFileSystemProvider = nodeFileSystemProvider;
+ }
+
+ public void setPeopleIconPaths(Map<String, String> peopleIconPaths) {
+ this.peopleIconPaths = peopleIconPaths;
+ }
+}
--- /dev/null
+package org.argeo.suite.web;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+
+import org.argeo.cms.auth.CurrentUser;
+import org.argeo.cms.ui.CmsUiProvider;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * Choose between possible headers depending on the client logged-in status and
+ * display type.
+ */
+public class DynamicHeader implements CmsUiProvider {
+
+ private CmsUiProvider publicHeaderProvider;
+ private CmsUiProvider privateHeaderProvider;
+
+ @Override
+ public Control createUi(Composite parent, Node context) throws RepositoryException {
+ if (CurrentUser.isRegistered())
+ return privateHeaderProvider.createUi(parent, context);
+ else
+ return publicHeaderProvider.createUi(parent, context);
+ }
+
+ public void setPrivateHeaderProvider(CmsUiProvider privateHeaderProvider) {
+ this.privateHeaderProvider = privateHeaderProvider;
+ }
+
+ public void setPublicHeaderProvider(CmsUiProvider publicHeaderProvider) {
+ this.publicHeaderProvider = publicHeaderProvider;
+ }
+}
--- /dev/null
+/* For reference, Argeo colors
+Orange: #f6712e;
+Blue: #00294b; */
+
+/* TEXT STYLES */
+.text_title {
+ font: bold 26px sans-serif;
+}
+
+.text_title_box {
+ padding: 20px;
+}
+
+.text_h1 {
+ font: bold 24px sans-serif;
+}
+
+.text_h1_box {
+ padding: 10px 10px 5px;
+}
+
+.text_h2 {
+ font: bold italic 20px serif;
+}
+
+.text_h2_box {
+ padding: 0px 15px 10px;
+}
+
+.text_h3 {
+ font: bold 18px sans-serif;
+}
+
+.text_h3_box {
+ padding: 0px 20px 10px;
+}
+
+.text_default {
+ font: 18px sans-serif;
+}
+
+.text_default_box {
+ padding: 0px 10px 10px;
+}
+
+.text_pre {
+ font: 16px monospace;
+ background-color: inherit;
+}
+
+.text_pre_box {
+ padding: 10px;
+ border: 1px dashed gray;
+ background-color: #ababab
+}
+
+.text_pre_container {
+ padding: 0px 10px 10px;
+}
+
+.text_quote {
+ font: italic 22px serif;
+ text-shadow: 2px 3px 3px #ababab;
+ background-color: inherit;
+}
+
+.text_quote_box {
+ padding: 10px;
+ background-color: #d6d6d6
+}
+
+.text_quote_container {
+ padding: 20px 50px 20px 80px;
+}
+
+/* TEXT */
+.text_styled_tools_dialog {
+ border: 1px solid #00294b;
+ padding: 10px 5px;
+}
+
+.text_styled_composite {
+ /*border: 1px solid red;*/
+
+}
+
+.text_section {
+/* border: 1px solid green; */
+}
+
+.text_paragraph {
+/* border: 1px solid blue; */
+}
+
+.text_editor {
+ border: 2px outset #00294b;
+}
+
+/* CMS ICONS */
+.cms_icon_delete {
+ background-image: url(theme/argeo-classic/icons/delete.gif);
+ border: none;
+}
+
+/* CMS */
+.cms_header {
+ background-color: #00294b;
+ height: 30px;
+}
+
+.cms_link {
+ text-decoration: underline;
+}
+
+.cms_link:hover {
+ text-decoration: none;
+ color: black;
+}
+
+a {
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+.cms_header-logo {
+ padding: 5px;
+}
+
+.cms_user_menu-link,
+.cms_menu_link {
+ color: white;
+ font: 15px Helvetica, Verdana, sans-serif;
+ padding: 10px;
+ text-decoration: none;
+}
+
+.cms_user_menu-link:hover,
+.cms_menu_link:hover {
+ color: #ededed;
+ text-decoration: underline;
+}
+
+.cms_user_menu {
+ border: 1px solid #00294b;
+ padding: 10px 5px;
+}
\ No newline at end of file
--- /dev/null
+/**
+Argeo Blue: #00294b
+*/
+
+/**** BREAD CRUMB ***/
+Button.breadCrumb_btn {
+ border: 1px solid #f4f6f7;
+ border-radius: 3px;
+ padding: 5px 2px 5px 2px;
+ background-color: transparent;
+ background-repeat: no-repeat;
+ animation: hoverOut 500ms ease-out;
+ cursor: pointer;
+ font-color: #00294b;
+ text-decoration: none;
+}
+
+Button.breadCrumb_btn:hover {
+ text-decoration: underline;
+}
+
+
+/****** Context menu *********/
+.contextMenu_box {
+ border: 1px solid #fde2d5;
+ padding: 0px;
+ box-shadow: 2px 2px 5px #fde2d5;
+}
+
+Button[PUSH][FLAT].createFolder_btn {
+ background-image: url( theme/argeo-classic/icons/fs/createFolder.png);
+}
+
+Button[PUSH][FLAT].shareFolder_btn {
+ background-image: url( theme/argeo-classic/icons/fs/createFolder.png);
+}
+
+Button[PUSH][FLAT].downloadFolder_btn {
+ background-image: url( theme/argeo-classic/icons/fs/createFolder.png);
+}
+
+Button[PUSH][FLAT].delete_btn {
+ background-image: url( theme/argeo-classic/icons/fs/createFolder.png);
+}
+
+Button[PUSH][FLAT].uploadFiles_btn {
+ background-image: url( theme/argeo-classic/icons/fs/createFolder.png);
+}
+
+Button[PUSH][FLAT].open_btn {
+ background-image: url( theme/argeo-classic/icons/fs/createFolder.png);
+}
+
+Button[PUSH][FLAT].shareFolder_btn,
+Button[PUSH][FLAT].downloadFolder_btn,
+Button[PUSH][FLAT].delete_btn,
+Button[PUSH][FLAT].uploadFiles_btn,
+Button[PUSH][FLAT].open_btn,
+Button[PUSH][FLAT].createFolder_btn {
+ border: 0px solid white;
+ border-left: 10px solid transparent;
+ border-radius: 0px;
+ padding: 8px 5px 8px 24px;
+ background-color: transparent;
+ background-repeat: no-repeat;
+ background-position: left;
+ animation: hoverOut 500ms ease-out;
+ cursor: pointer;
+}
+
+Button[PUSH][FLAT].shareFolder_btn:hover,
+Button[PUSH][FLAT].downloadFolder_btn:hover,
+Button[PUSH][FLAT].delete_btn:hover,
+Button[PUSH][FLAT].uploadFiles_btn:hover,
+Button[PUSH][FLAT].open_btn:hover,
+Button[PUSH][FLAT].createFolder_btn:hover {
+ background-color: #fef0ea;
+}
+
+Button[PUSH][FLAT].shareFolder_btn:pressed,
+Button[PUSH][FLAT].downloadFolder_btn:pressed,
+Button[PUSH][FLAT].delete_btn:pressed,
+Button[PUSH][FLAT].uploadFiles_btn:pressed,
+Button[PUSH][FLAT].open_btn:pressed,
+Button[PUSH][FLAT].createFolder_btn:pressed {
+ background-color: #fde2d5;
+}
--- /dev/null
+Some of the icons have been downloaded from http://www.fatcow.com/free-icons.
+They are licenced under Creative Commons Attribution 3.0 License.
+
+These icons were as from October 3rd, 2013 the following:
+fax.png
+mail_black.png
+phone-vintage.png
+telephone.png
+
+Some of the icons have been downloaded from http://somerandomdude.com/work/iconic/.
+They are licenced under Creative Commons Attribution 3.0 License.
+
+These icons were as from October 15th, 2013 the following:
+socialmedia.png (former chat_alt_stroke_16x16.png)
+home.png (former home_16x16.png)
+mobile.png (former iphone_12x16.png)
+link.png (former link_16x16.png)
--- /dev/null
+/****************************
+*** The browser ***/
+
+/* Management of border for edition */
+.user_form_text[BORDER]:read-only,
+.user_form_text[BORDER]:read-only:focused,
+.user_form_text[BORDER][MULTI]:read-only:focused,
+.user_form_text[BORDER][MULTI]:read-only {
+ box-shadow: none;
+ border: 0px solid #ffffff;
+}
+
+/* Signal focus gained ********/
+.user_form_text[BORDER]:focused,
+.user_form_text[MULTI][BORDER]:focused {
+ box-shadow: 1px 1px 2px #00294b;;
+ border: 1px solid #00294b;;
+}
+
+.user_form_title{
+ font: bold italic 20px serif;
+ background-color: #00294b;
+ color: #eeeeee;
+}
+
+
+/* Tests and work in progress */
+.maintenance_browser_column {
+ background-color: white;
+ color: black;
+}
+
+/* PB: Css class given to a table is not herited by Table-RowOverlay */
+Table-RowOverlay:unfocused {
+ color: #00294b;
+}
+
+Table-RowOverlay:selected,
+Table-RowOverlay:linesvisible:even:selected {
+ background-color: #fcd4c0;
+ color: #00294b;
+}
+
+Table-RowOverlay:selected:unfocused,
+Table-RowOverlay:linesvisible:even:selected:unfocused {
+ color: #00294b;
+ background-color: #6e869b;
+}
--- /dev/null
+/* PEOPLE ICONS */
+
+
+/* MISCELLANEOUS */
+
+.people_icon_primary {
+ background-image: url(theme/argeo-classic/icons/people/misc/primary.gif);
+ border: none;
+}
+
+.people_icon_not_primary {
+ background-image: url(theme/argeo-classic/icons/people/misc/primaryNOT.gif);
+ border: none;
+}
+
+/* CONTACTS */
+.people_icon_email {
+ background-image: url(theme/argeo-classic/icons/people/contacts/mail_black.png);
+ border: none;
+}
+
+.people_icon_mobile {
+ background-image: url(theme/argeo-classic/icons/people/contacts/mobile.png);
+ border: none;
+}
+
+.people_icon_fax {
+ background-image: url(theme/argeo-classic/icons/people/contacts/fax.png);
+ border: none;
+}
+
+.people_icon_phone {
+ background-image: url(theme/argeo-classic/icons/people/contacts/phone_vintage.png);
+ border: none;
+}
+
+.people_icon_work {
+ background-image: url(theme/argeo-classic/icons/people/contacts/home.png);
+ border: none;
+}
+
+.people_icon_address {
+ background-image: url(theme/argeo-classic/icons/people/contacts/home.png);
+ border: none;
+}
+
+.people_icon_url {
+ background-image: url(theme/argeo-classic/icons/people/contacts/link.png);
+ border: none;
+}
+
+.people_icon_google_plus {
+ background-image: url(theme/argeo-classic/icons/people/contacts/googleplus.png);
+ border: none;
+}
+
+.people_icon_facebook {
+ background-image: url(theme/argeo-classic/icons/people/contacts/facebook.png);
+ border: none;
+}
+
+.people_icon_linkedin {
+ background-image: url(theme/argeo-classic/icons/people/contacts/linkedin.png);
+ border: none;
+}
+
+.people_icon_xing {
+ background-image: url(theme/argeo-classic/icons/people/contacts/xing.png);
+ border: none;
+}
+
+.people_icon_social_media {
+ background-image: url(theme/argeo-classic/icons/people/contacts/socialmedia.png);
+ border: none;
+}
+
+.people_icon_impp {
+ background-image: url(theme/argeo-classic/icons/people/contacts/impp.png);
+ border: none;
+}
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.argeo.commons</groupId>
+ <artifactId>argeo-commons</artifactId>
+ <version>2.1.58-SNAPSHOT</version>
+ </parent>
+ <groupId>org.argeo.suite</groupId>
+ <artifactId>argeo-suite</artifactId>
+ <packaging>pom</packaging>
+ <name>Argeo Suite</name>
+ <description></description>
+ <version>0.1.1-SNAPSHOT</version>
+ <modules>
+ <module>org.argeo.suite.web</module>
+ <module>sdk</module>
+ </modules>
+ <properties>
+ <developmentCycle.argeo-suite>0.1</developmentCycle.argeo-suite>
+ <version.argeo-connect>2.1.63-SNAPSHOT</version.argeo-connect>
+ <version.argeo-tp-extras>2.1.9</version.argeo-tp-extras>
+ <git.rw />
+ </properties>
+ <scm>
+ <connection>scm:git:http://git.argeo.org/gpl/argeo-suite.git</connection>
+ <url>http://git.argeo.org/?p=gpl/argeo-suite.git;a=summary</url>
+ <developerConnection>scm:git:https://code.argeo.org/git/gpl/argeo-suite.git</developerConnection>
+ </scm>
+ <inceptionYear>2014</inceptionYear>
+ <licenses>
+ <license>
+ <name>GPL v3 with exception</name>
+ <url>http://www.gnu.org/licenses/gpl-3.0.txt</url>
+ <distribution>repo</distribution>
+ <comments><![CDATA[
+Argeo Suite - Rugged software for a rough world
+Copyright (C) 2017 Argeo GmbH
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses />
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this Program, or any covered work, by linking or combining it
+with software covered by the terms of the Eclipse Public License, the
+licensors of this Program grant you additional permission to convey the
+resulting work. Corresponding Source for a non-source form of such a
+combination shall include the source code for the parts of such software
+which are used as well as that of the covered work.]]>
+ </comments>
+ </license>
+ </licenses>
+ <developers>
+ <developer>
+ <id>mbaudier</id>
+ <name>Mathieu Baudier</name>
+ <email><![CDATA[http://mailhide.recaptcha.net/d?k=01EM7GpnvY3k8woQ2tnnZLUA==&c=crsNpHjhOBDPswHG6HD_gXaqymhC69wmBf7wlagcSHw=]]></email>
+ <organization>Argeo</organization>
+ <organizationUrl>http://www.argeo.org</organizationUrl>
+ <roles>
+ <role>architect</role>
+ <role>developer</role>
+ <role>QA</role>
+ </roles>
+ </developer>
+ <developer>
+ <id>bsinou</id>
+ <name>Bruno Sinou</name>
+ <email><![CDATA[http://www.google.com/recaptcha/mailhide/d?k=01SZoYvDnJzcw0KOR7M7u6Qg==&c=SVgEjXA_Uu9ZrNzLES92w1ght6puLFiVpoNUddCfSU8=]]></email>
+ <organization>Argeo</organization>
+ <organizationUrl>http://www.argeo.org</organizationUrl>
+ <roles>
+ <role>architect</role>
+ <role>developer</role>
+ <role>QA</role>
+ </roles>
+ </developer>
+ </developers>
+ <repositories>
+ <repository>
+ <id>argeo</id>
+ <url>http://forge.argeo.org/data/java/argeo-2.1</url>
+ <releases>
+ <enabled>true</enabled>
+ <updatePolicy>daily</updatePolicy>
+ <checksumPolicy>warn</checksumPolicy>
+ </releases>
+ </repository>
+ <repository>
+ <id>argeo-extras</id>
+ <url>http://forge.argeo.org/data/java/argeo-extras-2.1</url>
+ <releases>
+ <enabled>true</enabled>
+ <updatePolicy>daily</updatePolicy>
+ <checksumPolicy>warn</checksumPolicy>
+ </releases>
+ </repository>
+ </repositories>
+ <distributionManagement>
+ <repository>
+ <id>staging</id>
+ <url>dav:https://repo.argeo.org/data/java/argeo-suite_0.1</url>
+ </repository>
+ </distributionManagement>
+</project>
--- /dev/null
+/exec
+/target
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>argeo-suite-sdk</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
--- /dev/null
+argeo.osgi.start.2.http=org.eclipse.equinox.http.servlet,org.eclipse.equinox.http.jetty,\
+org.eclipse.rap.rwt.osgi,org.eclipse.equinox.cm
+
+argeo.osgi.start.3.node=org.argeo.cms
+argeo.osgi.start.4.apps=org.eclipse.gemini.blueprint.extender
+argeo.osgi.start.5.workbench=org.eclipse.equinox.http.registry
+
+# WEB and RAP Workbench
+argeo.osgi.start.5.apps=org.argeo.connect.people.web,\
+org.argeo.connect.people.rap
+
+argeo.osgi.start.6.apps=org.argeo.suite.web
+
+## rel path from the exec/<app_name>/ folder (user.dir) to the FIRST INIT dir
+#argeo.node.init=../../../org.argeo.suite.web/resources/init
+
+
+## Rap Workbench configuration
+## Open the user admin page by default when opening the workbench
+org.argeo.security.ui.initialPerspective=org.argeo.cms.ui.workbench.adminSecurityPerspective
+# Default home page for the Specific People RAP workbench perspective
+org.argeo.ui.openHomeCommandId=org.argeo.connect.people.rap.openDefaultEditor
+
+## LDAP
+#argeo.node.useradmin.uris=dc=demo,dc=suite,dc=argeo,dc=org.ldif?userBase=ou=People&groupBase=ou=Groups
+
+## JCR BACKEND
+argeo.node.repo.type=h2
+
+### Jetty - test URL: http://localhost:7070
+org.osgi.service.http.port=7070
+org.eclipse.equinox.http.jetty.log.stderr.threshold=info
+
+log4j.configuration=file:../../log4j.properties
+
+# SECURITY
+org.osgi.framework.security=osgi
+java.security.policy=file:../../all.policy
+
+# DON'T CHANGE BELOW
+org.eclipse.rap.workbenchAutostart=false
+org.eclipse.equinox.http.jetty.autostart=false
\ No newline at end of file
--- /dev/null
+grant {
+ permission java.security.AllPermission;
+};
\ No newline at end of file
--- /dev/null
+#log4j.rootLogger=WARN, console
+log4j.rootLogger=WARN, development
+
+## Levels
+log4j.logger.org.argeo.suite=DEBUG
+log4j.logger.org.argeo.connect=DEBUG
+log4j.logger.org.argeo.cms=DEBUG
+log4j.logger.org.argeo=INFO
+log4j.logger.org.argeo.cms.AbstractCmsEntryPoint=TRACE
+
+#log4j.logger.org.argeo.jackrabbit.remote.ExtendedDispatcherServlet=ERROR
+#log4j.logger.org.springframework.web.servlet.PageNotFound=ERROR
+#log4j.logger.org.argeo.server.webextender.TomcatDeployer=WARN
+
+## Appenders
+# default appender
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d{yyyyMMdd HH:mm:ss} %-5p %m [%t] %c%n
+
+# development appender
+log4j.appender.development=org.apache.log4j.ConsoleAppender
+log4j.appender.development.layout=org.apache.log4j.PatternLayout
+log4j.appender.development.layout.ConversionPattern=%d{HH:mm:ss,SSS} [%16.16t] %5p %m (%F:%L) %c%n
--- /dev/null
+/target
+/org.argeo.suite.sdk-maven.target
--- /dev/null
+/MANIFEST.MF
--- /dev/null
+
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.argeo.suite</groupId>
+ <artifactId>sdk</artifactId>
+ <version>0.1.1-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <artifactId>org.argeo.suite.sdk</artifactId>
+ <name>Argeo Suite Minimal SDK</name>
+ <packaging>jar</packaging>
+ <dependencies>
+ <!-- Default Assembly for supported minimal set of Argeo Suite Features -->
+ <dependency>
+ <groupId>org.argeo.suite</groupId>
+ <artifactId>org.argeo.suite.web</artifactId>
+ <version>0.1.1-SNAPSHOT</version>
+ </dependency>
+
+ <!-- Base CMS distribution -->
+ <dependency>
+ <groupId>org.argeo.commons</groupId>
+ <artifactId>org.argeo.dep.cms.platform</artifactId>
+ <version>${version.argeo-commons}</version>
+ </dependency>
+ <!-- We put all third parties in the target platform -->
+ <dependency>
+ <groupId>org.argeo.tp</groupId>
+ <artifactId>argeo-tp</artifactId>
+ <version>${version.argeo-distribution}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.argeo.tp.misc</groupId>
+ <artifactId>org.postgresql.postgresql</artifactId>
+ </dependency>
+ </dependencies>
+</project>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.argeo.suite</groupId>
+ <artifactId>argeo-suite</artifactId>
+ <version>0.1.1-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <artifactId>sdk</artifactId>
+ <name>Argeo Suite SDKs</name>
+ <packaging>pom</packaging>
+ <modules>
+ <module>org.argeo.suite.sdk</module>
+ </modules>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.argeo.maven.plugins</groupId>
+ <artifactId>maven-argeo-osgi-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-descriptors</id>
+ <goals>
+ <goal>descriptors</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>