Add edit E-mail template page.

This commit is contained in:
Vova Perebykivskiy 2015-10-06 18:00:43 +03:00 committed by Vova Perebykivskiy
parent 17ef953a86
commit 60a108f377
10 changed files with 372 additions and 18 deletions

View file

@ -205,6 +205,79 @@ openSUSE
* Go to http://localhost:8080/libreplan-webapp/
Microsoft Windows
~~~~~~~~
* Download and install latest Java Development Kit 7u80 (JDK7u80)::
# http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
* Download and install latest PostgreSQL database::
# http://www.enterprisedb.com/products-services-training/pgdownload#windows
* Download and install Git
# https://git-scm.com/download/win
* Download Maven
# https://maven.apache.org/download.cgi
.. WARNING::
Check if latest Maven version is compatible with your JDK
* Connect to database::
# Go to PostgreSQL bin folder and command window from here
# psql -U postgres
* Use SQL sentences::
CREATE DATABASE libreplandev;
CREATE DATABASE libreplandevtest;
CREATE USER libreplan WITH PASSWORD 'libreplan';
REVOKE ALL
ON ALL TABLES IN SCHEMA public
FROM PUBLIC;
GRANT ALL PRIVILEGES ON DATABASE libreplan TO libreplan;
GRANT SELECT, INSERT, UPDATE, DELETE
ON ALL TABLES IN SCHEMA public
TO libreplan;
* Restore PostgreSQL dump - scripts/database/postgresql_1.4.1.backup
* Download source code::
# Open GitBash
# git clone https://github.com/LibrePlan/libreplan.git
* Set JAVA_HOME environment variable::
# You need to set it to your JDK installed directory (e.g. C:\Program Files\Java\jdk1.7.0_80)
* Add path of unpacked distribution’s bin directory of Maven to 'Path' environment variable
# (e.g. C:\Program Files\apache-maven-3.3.3\bin)
* Compile project::
# cd libreplan
# mvn clean install
* Launch application::
# cd libreplan-webapp
# mvn jetty:run
* Go to http://localhost:8080/libreplan-webapp/
CutyCapt compilation
--------------------
@ -466,4 +539,4 @@ For MySQL users here are specific instructions.
* Launch application::
$ cd libreplan-webapp/
$ mvn -Pdev,mysql jetty:run
$ mvn -Pdev,mysql jetty:run

View file

@ -117,6 +117,11 @@ Instructions depending on the distribution:
If you have memory problems review the section `Fix memory errors`_.
Microsoft Windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RPM Packages
~~~~~~~~~~~~
@ -316,6 +321,78 @@ openSUSE
* Go to http://localhost:8080/libreplan/
Microsoft Windows
~~~~~~~~~~~
Instructions:
* Download and install latest Java Runtime Environment 7u79 (JRE7u79)::
# http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html
* Download and install latest PostgreSQL database::
# http://www.enterprisedb.com/products-services-training/pgdownload#windows
* Download and install Apache Tomcat 6::
# http://tomcat.apache.org/download-60.cgi
.. NOTE::
In JDK folder there is JRE folder
* Set up JDBC41 PostgreSQL Driver::
# Download latest driver: https://jdbc.postgresql.org/download.html
# Copy downloaded *.jar file to JRE location: (e.g. C:\Program Files\Java\jre7\lib\ext)
* Download latest ``.war`` file from SourceForge.net (for PostgreSQL) and rename it to libreplan.war::
# http://sourceforge.net/projects/libreplan/files/LibrePlan/
* Create database::
CREATE DATABASE libreplan;
* Use SQL sentences::
CREATE USER libreplan WITH PASSWORD 'libreplan';
GRANT ALL PRIVILEGES ON DATABASE libreplan TO libreplan;
REVOKE ALL
ON ALL TABLES IN SCHEMA public
FROM PUBLIC;
GRANT SELECT, INSERT, UPDATE, DELETE
ON ALL TABLES IN SCHEMA public
TO libreplan;
* Restore PostgreSQL dump - scripts/database/postgresql_1.4.1.backup::
* Create an Environment Variable JRE_HOME
# You need to set it to your JRE installed directory
* Configure Apache Tomcat Server
# Put libreplan.war file to Apache Tomcat webapps folder (e.g. C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\)
# Go to localhost folder (e.g. C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\Catalina\localhost\) and create there libreplan.xml file with this lines of code:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="">
<Resource name="jdbc/libreplan-ds" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="libreplan" password="libreplan"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost/libreplan" />
</Context>
* Start Apache Tomcat server
# Example location: C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\Tomcat6.exe
* Go to http://localhost:8080/libreplan
Logs
----

View file

@ -0,0 +1,101 @@
How To Start Development With JetBrains Intellij IDEA
======================================================
.. sectnum::
:Author: Perebykivskiy Vova
:Contact: vova@libreplan-enterprise.com
:Date: 09/09/2015
:Copyright:
Some rights reserved. This document is distributed under the Creative
Commons Attribution-ShareAlike 3.0 licence, available in
http://creativecommons.org/licenses/by-sa/3.0/.
:Abstract:
Quick guide to start the development of LibrePlan_ using JetBrains Intellij IDEA_ IDE.
As this is the most common way of work among LibrePlan developers team.
.. contents:: Table of Contents
Download LibrePlan source code
------------------------------
* You need to download LibrePlan_ source code to start hacking on it. You have two
options:
a) Clone Git repository (recommended)::
git clone git://github.com/LibrePlan/libreplan.git
b) Download last version source code::
http://sourceforge.net/projects/libreplan/files/LibrePlan/libreplan_*.tar.gz
* Download latest libreplan_*.war file for your database (PostgreSQL or MySQL)
http://sourceforge.net/projects/libreplan/files/LibrePlan/
You should review ``HACKING`` file to check that you have installed all the
requirements.
Import LibrePlan project
------------------------
* Run Intellij IDEA
* Select Import Project
* Select directory with source code of Libreplan
# e.g. C\Users\PC-User\IdeaProjects\libreplan
* Select *Import project from external model* > *Maven* and click *Next*
* Then leave all as default
* Then select profiles: dev and for PostgreSQL users - postgresql / Mysql users - mysql
* Then leave all by default
* Then choose your JDK
* Then define project name or leave default name
Configure project to run
------------------------
* Go to *Run* > *Edit Configurations...*
* Create a new *Maven Build* called *MavenConfig*
* Change the following values:
* Working directory: Choose ``libreplan-webapp`` folder in your workspace
* Command line: ``jetty:stop jetty:run``
* Profiles (optional): ``-userguide -reports -i18n``
(to disable userguide,reports and i18n profiles to save compilation time
as they are not mandatory to run LibrePlan)
* Mark the following checkboxes (recommended):
* Resolve Workspace artifacts
* In "Before launch" section choose "+" and add Build Artifact (war file)
* Click *Run* and application will be available at
http://localhost:8080/libreplan-webapp/
Develop LibrePlan in Intellij IDEA using MySQL
----------------------------------------
* This tutorial works properly with PostgreSQL, but if you want to develop
LibrePlan using MySQL you have to do 2 small changes:
* In section `Configure project to run`_ you have to set the *Profiles* to:
``-dev -mysql -userguide -reports -i18n``
* Remember that the three last profiles that are being disabled is just to save
compilation time and not mandatory. However, to develop using MySQL you have
to set at least the first two: ``-dev`` and ``-mysql``.
.. _LibrePlan: http://www.libreplan.com/
.. _JetBrains Intellij IDEA: https://www.jetbrains.com/idea/

View file

@ -27,6 +27,7 @@ import static org.libreplan.business.i18n.I18nHelper._;
*
* @author Miciele Ghiorghis <m.ghiorghis@antoniusziekenhuis.nl>
* @author Manuel Rego Casasnovas <rego@igalia.com>
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
*/
public class PredefinedConnectorProperties {
@ -51,4 +52,9 @@ public class PredefinedConnectorProperties {
*/
public static final String JIRA_CODE_PREFIX = "JIRA-";
// Specific for E-mail
public static String HOST = _("Host");
public static String USER_EMAIL = _("E-mail");
public static String PORT = _("Port");
}

View file

@ -28,6 +28,7 @@ import java.util.List;
*
* @author Miciele Ghiorghis <m.ghiorghis@antoniusziekenhuis.nl>
* @author Manuel Rego Casasnovas <rego@igalia.com>
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
*/
public enum PredefinedConnectors {
@ -50,7 +51,14 @@ public enum PredefinedConnectors {
ConnectorProperty
.create(PredefinedConnectorProperties.JIRA_LABELS, ""),
ConnectorProperty.create(
PredefinedConnectorProperties.JIRA_HOURS_TYPE, "Default"));
PredefinedConnectorProperties.JIRA_HOURS_TYPE, "Default")),
EMAIL("E-mail",
ConnectorProperty.create(PredefinedConnectorProperties.ACTIVATED, "N"),
ConnectorProperty.create(PredefinedConnectorProperties.HOST, ""),
ConnectorProperty.create(PredefinedConnectorProperties.PORT, ""),
ConnectorProperty.create(PredefinedConnectorProperties.USER_EMAIL, ""),
ConnectorProperty.create(PredefinedConnectorProperties.PASSWORD, "")
);
private String name;
private List<ConnectorProperty> properties;

View file

@ -430,6 +430,14 @@
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</dependency>
<!--Java mail-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
<!-- JAX-RS API -->
<dependency>
<groupId>javax.ws.rs</groupId>

View file

@ -23,16 +23,9 @@ package org.libreplan.web.common;
import static org.libreplan.web.I18nHelper._;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.ConcurrentModificationException;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import javax.mail.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
@ -97,6 +90,7 @@ import org.zkoss.zul.impl.InputElement;
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
* @author Cristina Alavarino Perez <cristina.alvarino@comtecsf.es>
* @author Ignacio Diaz Teijido <ignacio.diaz@comtecsf.es>
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
*/
public class ConfigurationController extends GenericForwardComposer {
@ -251,6 +245,7 @@ public class ConfigurationController extends GenericForwardComposer {
public void cancel() throws InterruptedException {
configurationModel.cancel();
messages.clearMessages();
messages.showMessage(Level.INFO, _("Changes have been canceled"));
reloadWindow();
reloadEntitySequences();
@ -305,12 +300,18 @@ public class ConfigurationController extends GenericForwardComposer {
String password = properties
.get(PredefinedConnectorProperties.PASSWORD);
if (selectedConnector.getName().equals(
PredefinedConnectors.TIM.getName())) {
if ( selectedConnector.getName().equals(
PredefinedConnectors.TIM.getName()) ) {
testTimConnection(url, username, password);
} else if (selectedConnector.getName().equals(
PredefinedConnectors.JIRA.getName())) {
} else if ( selectedConnector.getName().equals(
PredefinedConnectors.JIRA.getName()) ) {
testJiraConnection(url, username, password);
} else if( selectedConnector.getName().equals(
PredefinedConnectors.EMAIL.getName()) ){
String host = properties.get(PredefinedConnectorProperties.HOST);
String email = properties.get(PredefinedConnectorProperties.USER_EMAIL);
String port = properties.get(PredefinedConnectorProperties.PORT);
testEmailConnection(host, port, email, password);
} else {
throw new RuntimeException("Unknown connector");
}
@ -373,6 +374,65 @@ public class ConfigurationController extends GenericForwardComposer {
}
}
/**
* Test E-mail connection
*
* @param host
* the host
* @param port
* the port
* @param email
* the email
* @param password
* the password
*/
private void testEmailConnection(String host, String port, String email, String password){
String[] hostWords = host.split("\\.");
// + "s" means that protocol coming with SSL
String protocol = hostWords[0] + "s";
Properties props = System.getProperties();
if ( hostWords[0].equals("pop") ){
protocol = "pop3s";
props.setProperty("mail.pop3s.port", port);
}
else if ( hostWords[0].equals("smtp") ){ props.setProperty("mail.smtps.port", port); }
else if ( hostWords[0].equals("imap") ){ props.setProperty("mail.imaps.port", port); }
try {
Session session = Session.getInstance(props, null);
session.setDebug(true);
if ( hostWords[0].equals("pop") || hostWords[0].equals("imap") ){
Store store = session.getStore(protocol);
store.connect(host, email, password);
messages.clearMessages();
if ( store.isConnected() ) messages.showMessage(Level.INFO, _("Connection successful!"));
}
else if ( hostWords[0].equals("smtp") ){
Transport transport = session.getTransport(protocol);
transport.connect(host, email, password);
messages.clearMessages();
if ( transport.isConnected() ) messages.showMessage(Level.INFO, _("Connection successful!"));
}
}
catch (AuthenticationFailedException e){
LOG.error(e);
messages.showMessage(Level.ERROR, _("Invalid credentials"));
}
catch (MessagingException e){
LOG.error(e);
messages.showMessage(Level.ERROR, _("Cannot connect"));
}
catch (Exception e){
LOG.error(e);
messages.showMessage(Level.ERROR, _("Failed to connect"));
}
}
private boolean checkValidEntitySequenceRows() {
Rows rows = entitySequencesGrid.getRows();
for (Row row : (List<Row>) rows.getChildren()) {

View file

@ -59,6 +59,7 @@ import org.zkoss.zul.Vbox;
* Controller for customMenu <br />
* @author Lorenzo Tilve Álvaro <ltilve@igalia.com>
* @author Fernando Bellas Permuy <fbellas@udc.es>
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
*/
public class CustomMenuController extends Div implements IMenuItemsRegister {
@ -420,6 +421,11 @@ public class CustomMenuController extends Div implements IMenuItemsRegister {
"/common/job_scheduling.zul",
"19-scheduler.html"));
}
if (SecurityUtils.isSuperuserOrUserInRoles(UserRole.ROLE_EDIT_EMAIL_TEMPLATES)) {
configurationItems.add(subItem(_("Edit E-mail Templates"),
"/templates/email_templates.zul",
"email-templates.html"));
}
if (!configurationItems.isEmpty()) {
topItem(_("Configuration"), "/common/configuration.zul", "",

View file

@ -26,7 +26,6 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.logging.Filter;
import org.libreplan.business.common.exceptions.ValidationException;
import org.libreplan.business.labels.entities.Label;
@ -38,8 +37,6 @@ import org.libreplan.web.common.Level;
import org.libreplan.web.common.MessagesForUser;
import org.libreplan.web.common.components.bandboxsearch.BandboxSearch;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Session;
import org.zkoss.zk.ui.Sessions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;

View file

@ -889,6 +889,7 @@ msgstr ""
#: libreplan-webapp/src/main/webapp/resources/worker/_edition.zul:122
#: libreplan-webapp/src/main/webapp/resources/worker/_edition.zul:158
#: libreplan-webapp/src/main/webapp/users/_editUser.zul:84
#: libreplan-business/src/main/java/org/libreplan/business/common/entities/PredefinedConnectorProperties.java:56
msgid "E-mail"
msgstr ""
@ -1363,6 +1364,7 @@ msgid "First expense"
msgstr ""
#: libreplan-webapp/src/main/webapp/common/configuration.zul:296
#: libreplan-business/src/main/java/org/libreplan/business/common/entities/PredefinedConnectorProperties.java:55
msgid "Host"
msgstr ""
@ -9212,3 +9214,19 @@ msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/settings/entities/Language.java:36
msgid "Use browser language configuration"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/templates/entities/EmailTemplateEnum.java:17
msgid "Task assigned to resource"
msgstr ""
#: libreplan-webapp/src/main/java/org/libreplan/web/common/CustomMenuController.java:425
msgid "Edit E-mail Templates"
msgstr ""
#: libreplan-webapp/src/main/java/org/libreplan/web/templates/EmailTemplateController.java:72
msgid "E-mail template saved"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/common/entities/PredefinedConnectorProperties.java:57
msgid "Port"
msgstr ""