From e921a383c9b8c7a42d74687fe2dc14ce9cb7b50c Mon Sep 17 00:00:00 2001 From: bsinou Date: Sat, 21 Jan 2017 14:25:30 +0100 Subject: [PATCH] First draft for Argeo Suite Assembly --- .project | 11 ++ org.argeo.suite.web/.classpath | 7 + org.argeo.suite.web/.gitignore | 3 + org.argeo.suite.web/.project | 25 +++ org.argeo.suite.web/META-INF/.gitignore | 1 + .../META-INF/spring/application.xml | 33 ++++ .../META-INF/spring/commons.xml | 58 +++++++ org.argeo.suite.web/META-INF/spring/osgi.xml | 20 +++ .../META-INF/spring/people.xml | 120 ++++++++++++++ org.argeo.suite.web/META-INF/spring/ui.xml | 85 ++++++++++ org.argeo.suite.web/apps.properties | 1 + org.argeo.suite.web/bnd.bnd | 11 ++ org.argeo.suite.web/build.properties | 3 + org.argeo.suite.web/pom.xml | 37 +++++ .../src/org/argeo/suite/SuiteException.java | 14 ++ .../suite/people/PeopleSuiteServiceImpl.java | 143 +++++++++++++++++ .../org/argeo/suite/web/DefaultDashboard.java | 97 ++++++++++++ .../org/argeo/suite/web/DefaultMainPage.java | 137 ++++++++++++++++ .../org/argeo/suite/web/DynamicHeader.java | 35 ++++ .../theme/argeo-classic/argeo-classic.css | 149 ++++++++++++++++++ .../theme/argeo-classic/fs-classic.css | 87 ++++++++++ .../theme/argeo-classic/icons/delete.gif | Bin 0 -> 73 bytes .../argeo-classic/icons/fs/createFolder.png | Bin 0 -> 496 bytes .../theme/argeo-classic/icons/maintenance.gif | Bin 0 -> 606 bytes .../icons/people/contacts/Icon-credit.txt | 17 ++ .../icons/people/contacts/facebook.png | Bin 0 -> 437 bytes .../icons/people/contacts/fax.png | Bin 0 -> 637 bytes .../icons/people/contacts/googleplus.png | Bin 0 -> 3088 bytes .../icons/people/contacts/home.png | Bin 0 -> 192 bytes .../icons/people/contacts/impp.png | Bin 0 -> 350 bytes .../icons/people/contacts/link.png | Bin 0 -> 285 bytes .../icons/people/contacts/linkedin.png | Bin 0 -> 479 bytes .../icons/people/contacts/mail_black.png | Bin 0 -> 1391 bytes .../icons/people/contacts/mobile.png | Bin 0 -> 225 bytes .../icons/people/contacts/myspace.png | Bin 0 -> 484 bytes .../icons/people/contacts/phone_vintage.png | Bin 0 -> 425 bytes .../icons/people/contacts/reddit.png | Bin 0 -> 646 bytes .../icons/people/contacts/skype.png | Bin 0 -> 632 bytes .../icons/people/contacts/socialmedia.png | Bin 0 -> 263 bytes .../icons/people/contacts/telephone.png | Bin 0 -> 642 bytes .../icons/people/contacts/twitter.png | Bin 0 -> 878 bytes .../icons/people/contacts/xing.png | Bin 0 -> 437 bytes .../icons/people/misc/primary.gif | Bin 0 -> 145 bytes .../icons/people/misc/primaryNOT.gif | Bin 0 -> 144 bytes .../argeo-classic/icons/people/people.gif | Bin 0 -> 597 bytes .../icons/people/types/company.png | Bin 0 -> 424 bytes .../icons/people/types/person.gif | Bin 0 -> 310 bytes .../theme/argeo-classic/icons/userMenu.png | Bin 0 -> 233 bytes .../theme/argeo-classic/img/byArgeo.png | Bin 0 -> 3512 bytes .../argeo-classic/maintenance-classic.css | 48 ++++++ .../theme/argeo-classic/people-classic.css | 80 ++++++++++ pom.xml | 116 ++++++++++++++ sdk/.gitignore | 2 + sdk/.project | 11 ++ sdk/ArgeoSuite_web.properties | 42 +++++ sdk/all.policy | 3 + sdk/log4j.properties | 24 +++ sdk/org.argeo.suite.sdk/.gitignore | 2 + sdk/org.argeo.suite.sdk/META-INF/.gitignore | 1 + sdk/org.argeo.suite.sdk/bnd.bnd | 1 + sdk/org.argeo.suite.sdk/pom.xml | 39 +++++ sdk/pom.xml | 34 ++++ 62 files changed, 1497 insertions(+) create mode 100644 .project create mode 100644 org.argeo.suite.web/.classpath create mode 100644 org.argeo.suite.web/.gitignore create mode 100644 org.argeo.suite.web/.project create mode 100644 org.argeo.suite.web/META-INF/.gitignore create mode 100644 org.argeo.suite.web/META-INF/spring/application.xml create mode 100644 org.argeo.suite.web/META-INF/spring/commons.xml create mode 100644 org.argeo.suite.web/META-INF/spring/osgi.xml create mode 100644 org.argeo.suite.web/META-INF/spring/people.xml create mode 100644 org.argeo.suite.web/META-INF/spring/ui.xml create mode 100644 org.argeo.suite.web/apps.properties create mode 100644 org.argeo.suite.web/bnd.bnd create mode 100644 org.argeo.suite.web/build.properties create mode 100644 org.argeo.suite.web/pom.xml create mode 100644 org.argeo.suite.web/src/org/argeo/suite/SuiteException.java create mode 100644 org.argeo.suite.web/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java create mode 100644 org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java create mode 100644 org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java create mode 100644 org.argeo.suite.web/src/org/argeo/suite/web/DynamicHeader.java create mode 100644 org.argeo.suite.web/theme/argeo-classic/argeo-classic.css create mode 100644 org.argeo.suite.web/theme/argeo-classic/fs-classic.css create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/delete.gif create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/fs/createFolder.png create mode 100755 org.argeo.suite.web/theme/argeo-classic/icons/maintenance.gif create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/Icon-credit.txt create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/facebook.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/fax.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/googleplus.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/home.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/impp.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/link.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/linkedin.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/mail_black.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/mobile.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/myspace.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/phone_vintage.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/reddit.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/skype.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/socialmedia.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/telephone.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/twitter.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/xing.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/misc/primary.gif create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/misc/primaryNOT.gif create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/people.gif create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/types/company.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/people/types/person.gif create mode 100644 org.argeo.suite.web/theme/argeo-classic/icons/userMenu.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/img/byArgeo.png create mode 100644 org.argeo.suite.web/theme/argeo-classic/maintenance-classic.css create mode 100644 org.argeo.suite.web/theme/argeo-classic/people-classic.css create mode 100644 pom.xml create mode 100644 sdk/.gitignore create mode 100644 sdk/.project create mode 100644 sdk/ArgeoSuite_web.properties create mode 100644 sdk/all.policy create mode 100644 sdk/log4j.properties create mode 100644 sdk/org.argeo.suite.sdk/.gitignore create mode 100644 sdk/org.argeo.suite.sdk/META-INF/.gitignore create mode 100644 sdk/org.argeo.suite.sdk/bnd.bnd create mode 100644 sdk/org.argeo.suite.sdk/pom.xml create mode 100644 sdk/pom.xml diff --git a/.project b/.project new file mode 100644 index 0000000..ff41893 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + argeo-suite + + + + + + + + diff --git a/org.argeo.suite.web/.classpath b/org.argeo.suite.web/.classpath new file mode 100644 index 0000000..191b71a --- /dev/null +++ b/org.argeo.suite.web/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/org.argeo.suite.web/.gitignore b/org.argeo.suite.web/.gitignore new file mode 100644 index 0000000..016bb39 --- /dev/null +++ b/org.argeo.suite.web/.gitignore @@ -0,0 +1,3 @@ +/target +/*.target +/bin/ diff --git a/org.argeo.suite.web/.project b/org.argeo.suite.web/.project new file mode 100644 index 0000000..69a0922 --- /dev/null +++ b/org.argeo.suite.web/.project @@ -0,0 +1,25 @@ + + + org.argeo.suite.web + + + + + + org.eclipse.jdt.core.javabuilder + + + + org.eclipse.pde.ManifestBuilder + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/org.argeo.suite.web/META-INF/.gitignore b/org.argeo.suite.web/META-INF/.gitignore new file mode 100644 index 0000000..4854a41 --- /dev/null +++ b/org.argeo.suite.web/META-INF/.gitignore @@ -0,0 +1 @@ +/MANIFEST.MF diff --git a/org.argeo.suite.web/META-INF/spring/application.xml b/org.argeo.suite.web/META-INF/spring/application.xml new file mode 100644 index 0000000..b339e44 --- /dev/null +++ b/org.argeo.suite.web/META-INF/spring/application.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/org.argeo.suite.web/META-INF/spring/commons.xml b/org.argeo.suite.web/META-INF/spring/commons.xml new file mode 100644 index 0000000..b74429f --- /dev/null +++ b/org.argeo.suite.web/META-INF/spring/commons.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/org.argeo.suite.web/META-INF/spring/osgi.xml b/org.argeo.suite.web/META-INF/spring/osgi.xml new file mode 100644 index 0000000..3301729 --- /dev/null +++ b/org.argeo.suite.web/META-INF/spring/osgi.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + diff --git a/org.argeo.suite.web/META-INF/spring/people.xml b/org.argeo.suite.web/META-INF/spring/people.xml new file mode 100644 index 0000000..0c5a29f --- /dev/null +++ b/org.argeo.suite.web/META-INF/spring/people.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/org.argeo.suite.web/META-INF/spring/ui.xml b/org.argeo.suite.web/META-INF/spring/ui.xml new file mode 100644 index 0000000..e11d967 --- /dev/null +++ b/org.argeo.suite.web/META-INF/spring/ui.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a:link, a:visited { color: #333333; text-decoration:none; } + a:hover { text-decoration:underline; } + + + + + +]]> + + + + + + + + + + + + + + + + a:link, a:visited { color: #333333; text-decoration:none; } + a:hover { text-decoration:underline;} + +]]> + + + + + + + + + + theme/argeo-classic/argeo-classic.css + theme/argeo-classic/people-classic.css + theme/argeo-classic/fs-classic.css + theme/argeo-classic/maintenance-classic.css + + + + + + diff --git a/org.argeo.suite.web/apps.properties b/org.argeo.suite.web/apps.properties new file mode 100644 index 0000000..e0227a3 --- /dev/null +++ b/org.argeo.suite.web/apps.properties @@ -0,0 +1 @@ +argeo.security.systemKey=argeo \ No newline at end of file diff --git a/org.argeo.suite.web/bnd.bnd b/org.argeo.suite.web/bnd.bnd new file mode 100644 index 0000000..f13bd42 --- /dev/null +++ b/org.argeo.suite.web/bnd.bnd @@ -0,0 +1,11 @@ +Import-Package:\ +javax.jcr.nodetype,\ +org.argeo.node,\ +javax.jcr.security,\ +org.eclipse.swt,\ +* + +#org.argeo.cms.text,\ +#org.argeo.connect.people,\ + + diff --git a/org.argeo.suite.web/build.properties b/org.argeo.suite.web/build.properties new file mode 100644 index 0000000..3166058 --- /dev/null +++ b/org.argeo.suite.web/build.properties @@ -0,0 +1,3 @@ +source.. = src/ +output.. = bin/ + diff --git a/org.argeo.suite.web/pom.xml b/org.argeo.suite.web/pom.xml new file mode 100644 index 0000000..952c005 --- /dev/null +++ b/org.argeo.suite.web/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + org.argeo.suite + argeo-suite + 0.1.1-SNAPSHOT + .. + + org.argeo.suite.web + Argeo Suite Web UI + jar + + + + org.argeo.connect + org.argeo.connect.people.web + ${version.argeo-connect} + + + org.argeo.connect + org.argeo.connect.people.rap + ${version.argeo-connect} + + + org.argeo.connect + org.argeo.connect.ui + ${version.argeo-connect} + + + org.argeo.commons + org.argeo.cms.ui + ${version.argeo-commons} + + + diff --git a/org.argeo.suite.web/src/org/argeo/suite/SuiteException.java b/org.argeo.suite.web/src/org/argeo/suite/SuiteException.java new file mode 100644 index 0000000..6351804 --- /dev/null +++ b/org.argeo.suite.web/src/org/argeo/suite/SuiteException.java @@ -0,0 +1,14 @@ +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); + } +} diff --git a/org.argeo.suite.web/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java b/org.argeo.suite.web/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java new file mode 100644 index 0000000..27efb4d --- /dev/null +++ b/org.argeo.suite.web/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java @@ -0,0 +1,143 @@ +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 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 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; + } +} diff --git a/org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java b/org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java new file mode 100644 index 0000000..7e366c5 --- /dev/null +++ b/org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java @@ -0,0 +1,97 @@ +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 peopleIconPaths; + + // Local UI Providers + private CmsUiProvider orgPage; + + public DefaultDashboard(PeopleService peopleService, Map 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; + } +} diff --git a/org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java b/org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java new file mode 100644 index 0000000..1dcc4d5 --- /dev/null +++ b/org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java @@ -0,0 +1,137 @@ +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 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 peopleIconPaths) { + this.peopleIconPaths = peopleIconPaths; + } +} diff --git a/org.argeo.suite.web/src/org/argeo/suite/web/DynamicHeader.java b/org.argeo.suite.web/src/org/argeo/suite/web/DynamicHeader.java new file mode 100644 index 0000000..47b8544 --- /dev/null +++ b/org.argeo.suite.web/src/org/argeo/suite/web/DynamicHeader.java @@ -0,0 +1,35 @@ +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; + } +} diff --git a/org.argeo.suite.web/theme/argeo-classic/argeo-classic.css b/org.argeo.suite.web/theme/argeo-classic/argeo-classic.css new file mode 100644 index 0000000..71fc1b7 --- /dev/null +++ b/org.argeo.suite.web/theme/argeo-classic/argeo-classic.css @@ -0,0 +1,149 @@ +/* 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 diff --git a/org.argeo.suite.web/theme/argeo-classic/fs-classic.css b/org.argeo.suite.web/theme/argeo-classic/fs-classic.css new file mode 100644 index 0000000..923fd39 --- /dev/null +++ b/org.argeo.suite.web/theme/argeo-classic/fs-classic.css @@ -0,0 +1,87 @@ +/** +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; +} diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/delete.gif b/org.argeo.suite.web/theme/argeo-classic/icons/delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..1aca259db3187590fefc94c816bca144ef3d5d3e GIT binary patch literal 73 zcmZ?wbhEHb6krfwn8?6jA8*gV!0`Y7e;}#&lZBCifr&u}$Og&^0NGMg`d6NQ%P-22 ZVW$0o_tw|Ho*`y>u@XyPb%`)o0|0bQ6Wss+ literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/fs/createFolder.png b/org.argeo.suite.web/theme/argeo-classic/icons/fs/createFolder.png new file mode 100644 index 0000000000000000000000000000000000000000..3f56074f7817b41c52e978b6d405b1d8a60cb9a9 GIT binary patch literal 496 zcmVTL+@c706Xc<2?0}cp_ zh%g*Ia)jaSn>U1l!~v@TTwGiXrR5b2>KYnwiSEu0hQkLBFnD=*fbqGrXBh6@xr1Q< zBQ)UN@7}db;PK-}3`xl;V2MYM9x)`w$1x}!L4|0RQ>v*=GkRHl^yfT+UGrZ_5JDFAMZZ@`uy#eX8sY)yhEBf`?Rul zX=ZHIO53QFvRXTFnO6KlZ6J!7traz0D|)(i^mMI=$y$+fBXCHr$7Jy&;Nfve*b*?|Gz){-)}#wxA^{i z`#fLOIT>Lg76$+S|7RFXK=CIFBLhPKgAT}1pg3V*-`x<<+A34-`&~a z>)}4t!*^n{zq_};w|lFtwZ;++d4Df2f6o=GI5`+MGHSMX&Gla8=jyV@g-I)5vd`h^ zERxR5lFY2y2YY<_ebq0kJ2J58w72*QL70(Y)*K0-AbW|YuPggKE@p0FZns`>Z=flro-U3d8t115 zS+6_fz_aDLv{{hSMphvi_KO!3TPGD?2rd*52`rcv)7ZwQDJ#e;u<0|`V$uCg&-2P` zva56KWccn?|I+naE^O|*`S#mMDwU5J3_eTibR7~3oTQ@kX&P@s2U~OFRxyXz>$8&W zUuV6_Fq!4I{Fji^jT|#AgZWHp`|iJg{L$jt&bxUNx5l@h-gL&&-6i&V?)KZ;a;x{= zD`#YQUps3V*ZJqg^PVeRGU=^K=sY2j+;cI_iDUCkom-Fg&OiU0;nb!Yp4y!;t5$Vw zV~WrbW0=Aw;FNKD+bXT+cT$Wtp3zad7{+k=>8AVd*N15*Wsmqbyf9ot{UUAwS|5_E=SnL;> dw(j*W{>A-mGn^kqaR9@V!PC{xWt~$(697Plv9kaG literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/fax.png b/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/fax.png new file mode 100644 index 0000000000000000000000000000000000000000..791f511c53bd8eab4637ab4347fbeabe7642e006 GIT binary patch literal 637 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 e3hom1|K~5EC@wR%R=;ro0000y7D~$ literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/home.png b/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/home.png new file mode 100644 index 0000000000000000000000000000000000000000..16834e31b8960c16fb4ae90b15e6a2003a6735e5 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xl001;Ln>}1B^=;?=4=?ru;in?$ob_i#wXhnF8gdzd@<|y z!WkOQ6HNEBC$XzovagWv19H~0Co$@XaX36R;BhQBQ*5|wy+n$E&4)*XX_mCZg=psY ltZpXHC#{*DB+kGh!5~v&dTEK5{u7{W44$rjF6*2UngBo?JT(9S literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/impp.png b/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/impp.png new file mode 100644 index 0000000000000000000000000000000000000000..b334f91027fe3e895db0c307a5f179bc4fa760fd GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UA7>k44ofy`glX(f`a29w(7Bet# z3xhBt!>l ze|P<~X+fI=HcfZl;B)!&+%m31Td$uhiP*g zHr}|#@yBJKdA?iYlZom#)+a>IIrID>D~r*MDuHYPCLVy1vPG{u>HKMwU}9FhFhFz`N<5S={o;wEY2oRT77xjQg^u-G7sl3Hgf1T hExanlqi@H=!|*OQjho+mtsl@U44$rjF6*2UngHj3Ze#!e literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/linkedin.png b/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..d86dc0e47c8a3c7d403f22b700fea03882992975 GIT binary patch literal 479 zcmV<50U-W~P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^(; z3lt!waCpoB00Cb~L_t(2&yAAJs=_c3g=dl)#VQC26$;(@7H$P!zz6b0y6wj2kW>*| zD@EO?h}czQNhWuZd;I~gdR9ru$C;TkxY=x4trmQz%jJT3o+n8ng!uToEX&boaV?*1A%u zFvea0L=;6)v)PnV4hDnM>E!!<6h&EJ$2rW|C1XIV~lf7 zMAd55mElU@oFn4XShdywfQZ&w2fG(z%!{Ul5R=KI(P;R-AIGsVMhI~{9+M>5ZnsZO z|0crNZntyuU9Z>9iinoW!_N9X;1{{!pH Vq&}+gt?d8+002ovPDHLkV1jnV&)Wb1 literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/mail_black.png b/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/mail_black.png new file mode 100644 index 0000000000000000000000000000000000000000..790f7503f613f502f24fca98f7cbe4e0b230941d GIT binary patch literal 1391 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh*)icxGNo zet9uiy|1s8XI^nhVqS8pr;Du;&;-5A%oHmp6K6+fS3@&X6K5wwLswuhxwyC)8yL7b zni?7znw!G(y5uL9=BDPA!1Sgd^qS+;3rY&P1wfl!Qj0RnQd8WD@^clyUbf1_?G_W9 z=0WwQ;C72CPQCg-$LND17Ac}(Lcr7mV#1RxkONQnsd>QEUIa|m2DX!B7#J8Id%8G= zRNPt;9Gfj1C}6w0dU9Tq@3d_j`+0R;odj7lTh=yhn|f^8BWGpTfC-O|PyWWgCG+Mq zt+jR`%^Y=K*rznvJG_|vU$u5k{>{DRd((YBEojPMV|#aQPVu`pXJXWSgTEx}{W1}4 zdpO;q?|sJF|D7)?<&0*YF?ap+aQ60$?YAe~FO=DF?SD#J6;_h*w>3`C7V1d z>sk9&*ThWv$A^!bL(5rHu3B9QIkMHP;!g(eMZcB|Yo?uDi;k(O9aI1K>8PBUxs-*S zW#j8ISA~>ho_FikB&3@Q=~zDT5*D7kAVMdhCQ0b`dcJ`5*8??Ju64`us~nRtJTmF> zY$k8%55*FiQw>aPTCTJIo-up2tD;8N=Q9$;M+Ch4I5wQHxOn1e&5wQkSFcu|h?j8L zT-ot*_2ox4#$f%AOSBEjT7K5ZO<%t3!@pSJhi7{3eE4#5mc{uVLwBBy%Z$rZnYKAT z-DuR;XO~#9B*opNq4kzh*7oUDzDo?<&-`WQZ#^s|Vx8OGa{2Q59c6#n^!obB{=L60 zT3%3GCYQc;TEg>u-5VXuM+`T0tDUHrqW|Iec@`Rzadvz>vN;b7D8CF(5KIYC9Br>mdKI;Vst E09b?rOaK4? literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/mobile.png b/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..08ac54b9bccd2955bf7df2b708bcf6bad4f7a3a2 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggKE@o~a&8~0h?|?#yo-U3d7N?UF z99S87czC``N=W>BeBk@StPM>JHc}T2!<-Y$<{w|Ez@Wum%*l2j+e$3_kqLvmz=A6b zJf%K7B29tJD-syE`!bYHv+{2^VeVvTRnc&^!AVF*@5uCPo~O<+1c)2WaeVUWF3>Ut MPgg&ebxsLQ0K6hXm;e9( literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/myspace.png b/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/myspace.png new file mode 100644 index 0000000000000000000000000000000000000000..beb04fcadbfe6ad1f6232df75fe6ddb70f38fea7 GIT binary patch literal 484 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^(; z3l%h`v7PV$00Cr4L_t(2&y7+$uEH=7Tsuy}M~WzjlqOOnL>FkF;sWFj+$0Tk(&Z4` zfI2w>3N;c!g2ojI0_S7!D=hIu1ia^Jy)&~r8XFxBhhDD-|2yaN8D&|vTCFrq`;%Q& z)nc(A0HA5w7l9B0AtZ#5SNxU%0FTFma}EHU^Wktf9*;4`06-dSLda+|O4D>QnV6=T zB*|^j;5ZKFoHS;;uIsvPzu&hkO9(NYPHo$kXt&$Vvh2kYLMTnsJkR4emewhy z`~6;`*XtEaTZ*D!j4{SSi1~bO7>4J0+wGQ8dORLCn@yhQjIs54t*R=blrERccDpTS zgkfkH#&c&~*Q%<@x-3gdDUll#MUh1#gC|=WeiJJp4^M1br0NU+#mSuf1P!vVu ad;b8d-key8ZoA?D0000Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*z-5hydo z7!>6I00AvYL_t(2&xO&kOVn`~$MM(m>vxy^eyI>RJE+hRv;-wldW%agS8gpre?ZOk z4>Yvp8bO0&;Gl#dBq+28!G$2n1qr#R=in8;ufrW=OMa#gJiMRh`S6M4|B5MT)B{i4 zRWRaMf<2$DS`INeAFH>`x~}kJKsD_6=7aA{$Hb?n&1<%8IDag(+|%}EGuJFEIdW5> zr!?ZHx{ftl9@ET+wAJ)v7R?R#4X^anbcF2Gx_!eMX6<_9p+hqoYW96ZxW)MMiG?vU z?kjO(%eF7N@AqEzV@loW@{YIXo_yxDZ8K1mX+n~p9ZK7T4Q~O%We$ZUnO6i5*M|ZT`+eBu)I_q TFfU`e00000NkvXXu0mjfH1@b7 literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/reddit.png b/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/reddit.png new file mode 100644 index 0000000000000000000000000000000000000000..0eac7b8075218ff919e7615ccd8ebc713308ef07 GIT binary patch literal 646 zcmV;10(t$3P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^(; z3l%7`u))6o00IU{L_t(2&yAA3PV+DnhHb}0l{-}3U}h*wrB-Ur10aM%T}2&8X{^RkQxP8q^Hu#ep20en-}fBb=iu3F#u!6? zBS{j<7|ZAL2qBE|?m))?ptrjKV@&rGXx+|fn&$WSHz5QewB2sCjqd9-06+-&`1p8u zcsM*fe0+RF2({a7N+|%4U2Y9Rh!6q*_xJagmzPPBv|6o`lau%Ncdh(27=~e*CZ+V? z;2;b`$8jj7K@gmup9eu;7)GU1`Mt>J=Vzf%a9!8)JjPfQMaRd-rBW%&ve|4lpU)X% zQp%&Fql=4+)oMjC#*|Xe^UCEirPQ)4{Vf>dTCIi+5R(NYgY7LjVAPD2n1Z zR!ZI7-HpfNIF32zh;tstF#t51O#t}%`s#E#zVAOhJzZU0y}Y~tK%>!6O8sYu<9NAT z*6VfGbvfs^x3|4s@9phvI-Q=KoxQ%kN-5XtHRl|2&WpvOZUSS>w(a3?D5a#75<*T- zPrKdjX0uUBDW#$)`Zeh8VvGqPxm<2HENPl%S*D+)loCQvgpg87uNY&cl$3IRz~CQR gMuiaQ&j=xY0QLVymP_{0Z~y=R07*qoM6N<$f*vp+SpWb4 literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/skype.png b/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/skype.png new file mode 100644 index 0000000000000000000000000000000000000000..e31a04d2344ce0f14861b48051543106937f988a GIT binary patch literal 632 zcmV-;0*C#HP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^(; z3l=DuosxV200H<(L_t(2&yA8j&oMz1hR>Xtu@YfBAqvqDl|)E1bRtoy{0N0gukjE3 z3MGjkLLzF7LV_p|vW*0rT^2j@7W2mQl+Rtw*L~(XA7sDZ>$(nq5FzAxy)s?br_(8= zR0sh8;+Le9Qp)e*^?FsSRVJm>G>tJPgm7K=@pyQ>-asJWx~^dui0JWnlnoK3lnekU zrHH7amP#eR->(>?l*{FEwOVn`5s?rA08GIlqT@K_a+z~}KA(@rqu=jOBoe7q3IMj- zEv1xF3IGTIh=_%?JRZN@ZnN2}-EKD; zjb5(@0GUk2G)>OA$K&~*gQ{RS9In-B^?F?qQc5?Qjk>ig>u@-jrb!54-_9F`VcT{j z5@|M@i^YO-p3mn2U_PI#bno~3k3oU8TCGZ@lFep|#UcPa9*@~V0000N)()Lhl+r^ISj#n;zmUaDAR5ksr*j}%YFuC=YEV!QS z3Hu%Gfq2kd) zjvitYy&8$e3M#FQKj%uYcvd`ltq3C2s|ck?AQ!JzgcR|j;-!LHvk~;*p-REOQ^lXn z?u_rvZj!1!sI$!O?9BVV`M&p_Xt&$flO(yUwT2J^j$>b$ojp5`zZeG7YPEEuagxBi z0W2@yMHEF4X~;G(VJ@;P>*=|wrM7@6X61{v4;l>wOVsy8nv(m0Sj*q`d5c)wC4ST)heQXp9pO8KO&%MEM#tZz4G9pQLwjCCIz8U z5CqS0>EZ5KF&}Y1 zGC7c54m%fi1Mgkj+J6;c7~*E(4)9jt!;LOn*BvF1+tSp5I?!y8yh7f?*ZFmm{qs7l z!gpMwh64&z1vzF96UnW-+39o&+>Kd}R172Ba+~(kXA59zoJ`%b-5QB33 c@AxUe0N-KmGkuCZ)Bpeg07*qoM6N<$f_9@P)Bpeg literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/twitter.png b/org.argeo.suite.web/theme/argeo-classic/icons/people/contacts/twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..1023e5be20572e07427885bfcb6b64459efa41c0 GIT binary patch literal 878 zcmV-!1CjiRP) zjJ&_U-{0R~Utgp2i-EYTOITT6US3^Y9UB|t5sam!rAQMwI(me0>m91jMAH#ax! zc3T!3jmE;l0&$ef<>BGs|B3*9CMPGKpPyT;*4IC2cVv2c`WF-#wiJDQd=Ltz#UctT zO0k9MMxfCR833h=b;y~Tn$oOem$xq+vBj_lz*7OhoanEwujD2W2-xn2(rh+MrCBi? zMSxVR)w{bp+nqQuF)!4>f9S zV;NlIk`nqaZV1hfI5env+}g&AcL_t)3g7Z(?q ztQt$eH=9j1+rk)DcOD-fISH^LCkzVYUR_<0Bh5j;FRc)ebN z;4_(J64vqY@!8p#$Kw%5^StByNG6kedwXP6!_WbEja@LPYiNOY4O@nR^qp!q?4pOm zVNRr-!g|=8*TZ_eFa@(*n ztFZ(yt~jkC%uy9wX`mIaGnov`NE4~yqe@wE#c4rxSci&zAJ8?hxx2f&v9STOCnqOh zDAF~7E38w*`}_OWV(r>!U{orVot>RfC`3MHW@ftH8(gk>y`D;?oR+B>17=D1#l=PM z`-G(3QKMP&;pA@8V_JLzY;A1~@OHhuy*;?=`(FVD05Qig7|nBa&j0`b07*qoM6N<$ Ef_F%f8vp z{AZv5urU0mNI%ekfBy)p`uCq9MC}>_5Bnd63$Mf(F1(h&V*toSfB!;dS-_Nm=u3ti zm-}FL#9|c&WIY&OkQWkSm>v}cW=GDN#qjaR4~87O>tOzZQz{HEK5>9-fvaZ%n}&oR zzIns&@#ilFTTM-dN>5J)50wWDD&pV38rNKqXFyla1a<)$zI6W{*mNruNroK9I}qDX zsxW-{!Hl7ni4kZDGM4A#W2g!Y1Z&!Jp^<@y<1fR7#{vvHuSzhWs|8_}|7c-Q;pYdY zr|#Lq@aX+}F#E-OHirKoCo?i)L=YoSax%_@0E)I1$;W`M_`{I0z?k9AJAMo`7=eh4 zzkFw6SaVJWtT4y%HdZxEphSWXFE}F4@ZuvogMs`f1{IOd81jrfad88i7nuJ4``-Y> f3}oU4fB*vkWkLX|Fv&j100000NkvXXu0mjfs1mfm literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/misc/primary.gif b/org.argeo.suite.web/theme/argeo-classic/icons/people/misc/primary.gif new file mode 100644 index 0000000000000000000000000000000000000000..1965b847b1c388e1d9f02eae326d3b315b604d8e GIT binary patch literal 145 zcmV;C0B-+BNk%w1VGsZi0J8u9|MCF%;8ywCPyEUZ`O`!C%QpJVHu=mq`@InVzd!NA zYxkQN_mmy-Wg`Fo{{R30A^8LW000gEEC2ui01yBW000C&(8)=wy_mLKRa4vqG(hM8 zOu&>^<1&nZFz!|{38Cu=gN+5lfy7}976V^qwIL}jD4V0Px+J8MM#9AHnj!!@f!RKq literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/misc/primaryNOT.gif b/org.argeo.suite.web/theme/argeo-classic/icons/people/misc/primaryNOT.gif new file mode 100644 index 0000000000000000000000000000000000000000..acb026872f83b3becff092aec342bd3d4f83956d GIT binary patch literal 144 zcmV;B0B`?CNk%w1VGsZi0J8u9sj9}9o2r?etf#HQo1n0tq_v-^<1&nZFz!|{38Cu=gN+5lfs{cF7K2p=wrRkAw26~dN!X+blXh#00027&*g!=9 literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/people.gif b/org.argeo.suite.web/theme/argeo-classic/icons/people/people.gif new file mode 100644 index 0000000000000000000000000000000000000000..d28c326dea2e625abb82b8c862280fbe2f1a7e4f GIT binary patch literal 597 zcmZ?wbhEHb6krfwc*ek>-T+ljue_7{>xtp$SJo0$c(Z|!5 z?OV6+`s!Vm*6g~ta{IYW2d=N%b7{lg%j@@CTD$A~hP{^>rfiHQ$u=Fb4zPWpipG1uV`4SU9xbx6`yOmc#1)5q;QvN3~#!xxNl3Gu@+alEAKQJ zJsS>Z zbJrWP&e|=K0kJ&lQff@G;U=wyQL$-qmW-*N-CKj+I3zq{=3`0~DoF_JI5C4cO)kS> iM}tqVlabCA1K}p`Mk50Q1w#`KR~BKF;7L3z4Aua9TPx#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*z}5dbc+ zm1!;j00AsXL_t(2&t1{KPE&Ch2H@w{Ln~AyOft}<4k(~)2Lrte7jJ@vTX5kXU~uOW z7-1nH(7;ky#Aq1U_*10Xb4q(W4)he_J3o1o?|TEV^(ERc%3AO&0X8#U$`GXfC|Dn( z37GZKjfzVZmu8&)-|#hy1tmRYJw-EK;d6k(qpEqKsjO+*2Ys>FcD9|3z+dP3&UBo) z^<7uZP)*1iy5_{Hf~w%P)K3FH6mu}}O-I|UwvKZT>SA?i4jxn#Eht$~G%s?119wm0 zP-54WT~}Iud84ape8tdviB)B*%9ceg(3a#N({g9ewLRC4B^Je+3OR@^o3dicib+cf zj$~ST#(y|=Z{Ll5LnnS~7^purB;KK+q@nMv#F12MG#@@?6M{%8lA>>Cyyic7`)7g> Sq^79=0000o~msC literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/people/types/person.gif b/org.argeo.suite.web/theme/argeo-classic/icons/people/types/person.gif new file mode 100644 index 0000000000000000000000000000000000000000..90a00147bcb02b6855aa21c532a1ccfa992db5c7 GIT binary patch literal 310 zcmZ?wbhEHb6krfwxXQqw=RZ|1V5&*zbjzr@wlTAuk{7w9FY(G+?v^sgH*b|s=DdWu zZD~#0yBD7gDBG0Nv%jGKK*^*-71NG3%{kFF|CE3E#-Pg0p;ep1Yqmz#ZHsN(kz1OCBW9Gn(60SWa+}gzo||X6OdpAC pniZ}UB2{8+qLvgXp{K+VYbvgzz|tvZD96;vC(6Ls8R^Ji4FH!Gg(Uz0 literal 0 HcmV?d00001 diff --git a/org.argeo.suite.web/theme/argeo-classic/icons/userMenu.png b/org.argeo.suite.web/theme/argeo-classic/icons/userMenu.png new file mode 100644 index 0000000000000000000000000000000000000000..2e55e8f54b91f87a7d770818003e402d8448b59a GIT binary patch literal 233 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 + 4.0.0 + + org.argeo.commons + argeo-commons + 2.1.58-SNAPSHOT + + org.argeo.suite + argeo-suite + pom + Argeo Suite + + 0.1.1-SNAPSHOT + + org.argeo.suite.web + sdk + + + 0.1 + 2.1.63-SNAPSHOT + 2.1.9 + + + + scm:git:http://git.argeo.org/gpl/argeo-suite.git + http://git.argeo.org/?p=gpl/argeo-suite.git;a=summary + scm:git:https://code.argeo.org/git/gpl/argeo-suite.git + + 2014 + + + GPL v3 with exception + http://www.gnu.org/licenses/gpl-3.0.txt + repo + + +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.]]> + + + + + + mbaudier + Mathieu Baudier + + Argeo + http://www.argeo.org + + architect + developer + QA + + + + bsinou + Bruno Sinou + + Argeo + http://www.argeo.org + + architect + developer + QA + + + + + + argeo + http://forge.argeo.org/data/java/argeo-2.1 + + true + daily + warn + + + + argeo-extras + http://forge.argeo.org/data/java/argeo-extras-2.1 + + true + daily + warn + + + + + + staging + dav:https://repo.argeo.org/data/java/argeo-suite_0.1 + + + diff --git a/sdk/.gitignore b/sdk/.gitignore new file mode 100644 index 0000000..040ee0a --- /dev/null +++ b/sdk/.gitignore @@ -0,0 +1,2 @@ +/exec +/target diff --git a/sdk/.project b/sdk/.project new file mode 100644 index 0000000..d95f518 --- /dev/null +++ b/sdk/.project @@ -0,0 +1,11 @@ + + + argeo-suite-sdk + + + + + + + + diff --git a/sdk/ArgeoSuite_web.properties b/sdk/ArgeoSuite_web.properties new file mode 100644 index 0000000..261afa3 --- /dev/null +++ b/sdk/ArgeoSuite_web.properties @@ -0,0 +1,42 @@ +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// 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 diff --git a/sdk/all.policy b/sdk/all.policy new file mode 100644 index 0000000..facb613 --- /dev/null +++ b/sdk/all.policy @@ -0,0 +1,3 @@ +grant { + permission java.security.AllPermission; +}; \ No newline at end of file diff --git a/sdk/log4j.properties b/sdk/log4j.properties new file mode 100644 index 0000000..b5cffb7 --- /dev/null +++ b/sdk/log4j.properties @@ -0,0 +1,24 @@ +#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 diff --git a/sdk/org.argeo.suite.sdk/.gitignore b/sdk/org.argeo.suite.sdk/.gitignore new file mode 100644 index 0000000..a42384f --- /dev/null +++ b/sdk/org.argeo.suite.sdk/.gitignore @@ -0,0 +1,2 @@ +/target +/org.argeo.suite.sdk-maven.target diff --git a/sdk/org.argeo.suite.sdk/META-INF/.gitignore b/sdk/org.argeo.suite.sdk/META-INF/.gitignore new file mode 100644 index 0000000..4854a41 --- /dev/null +++ b/sdk/org.argeo.suite.sdk/META-INF/.gitignore @@ -0,0 +1 @@ +/MANIFEST.MF diff --git a/sdk/org.argeo.suite.sdk/bnd.bnd b/sdk/org.argeo.suite.sdk/bnd.bnd new file mode 100644 index 0000000..991aa1a --- /dev/null +++ b/sdk/org.argeo.suite.sdk/bnd.bnd @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sdk/org.argeo.suite.sdk/pom.xml b/sdk/org.argeo.suite.sdk/pom.xml new file mode 100644 index 0000000..75ec7de --- /dev/null +++ b/sdk/org.argeo.suite.sdk/pom.xml @@ -0,0 +1,39 @@ + + + 4.0.0 + + org.argeo.suite + sdk + 0.1.1-SNAPSHOT + .. + + org.argeo.suite.sdk + Argeo Suite Minimal SDK + jar + + + + org.argeo.suite + org.argeo.suite.web + 0.1.1-SNAPSHOT + + + + + org.argeo.commons + org.argeo.dep.cms.platform + ${version.argeo-commons} + + + + org.argeo.tp + argeo-tp + ${version.argeo-distribution} + + + org.argeo.tp.misc + org.postgresql.postgresql + + + diff --git a/sdk/pom.xml b/sdk/pom.xml new file mode 100644 index 0000000..b249fe3 --- /dev/null +++ b/sdk/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + org.argeo.suite + argeo-suite + 0.1.1-SNAPSHOT + .. + + sdk + Argeo Suite SDKs + pom + + org.argeo.suite.sdk + + + + + org.argeo.maven.plugins + maven-argeo-osgi-plugin + + + generate-descriptors + + descriptors + + generate-resources + + + + + + -- 2.30.2