Add files that was rejected by Git.

This commit is contained in:
Vova Perebykivskiy 2015-10-15 18:09:56 +03:00 committed by Vova Perebykivskiy
parent e31a749f5a
commit 7add95e5ca
10 changed files with 419 additions and 43 deletions

View file

@ -0,0 +1,42 @@
package org.libreplan.business.templates.daos;
import org.libreplan.business.common.daos.GenericDAOHibernate;
import org.libreplan.business.templates.entities.EmailTemplate;
import org.springframework.stereotype.Repository;
/**
* Created by
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
* on 24.09.15.
*/
@Repository
public class EmailTemplateDAO extends GenericDAOHibernate<EmailTemplate, Long> implements IEmailTemplateDAO{
@Override
public String initializeContent() {
for ( int i = 0; i < list(EmailTemplate.class ).size(); i++)
if ( list(EmailTemplate.class).get(i).getType() == 1 && list(EmailTemplate.class).get(i).getLanguage() == 3) return list(EmailTemplate.class).get(i).getContent();
return " ";
}
@Override
public String getContentBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal) {
for (int i = 0; i < list(EmailTemplate.class).size(); i++)
if (list(EmailTemplate.class).get(i).getLanguage() == languageOrdinal &&
// emailTemplateTypeOrdinal + 1, because first value is 0
list(EmailTemplate.class).get(i).getType() == emailTemplateTypeOrdinal + 1)
return list(EmailTemplate.class).get(i).getContent();
return "";
}
@Override
public String getContentBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal) {
for (int i = 0; i < list(EmailTemplate.class).size(); i++)
// emailTemplateTypeOrdinal + 1, because first value is 0
if ( list(EmailTemplate.class).get(i).getType() == emailTemplateTypeOrdinal + 1 &&
list(EmailTemplate.class).get(i).getLanguage() == languageOrdinal )
return list(EmailTemplate.class).get(i).getContent();
return "";
}
}

View file

@ -0,0 +1,20 @@
package org.libreplan.business.templates.daos;
import org.libreplan.business.common.daos.IGenericDAO;
import org.libreplan.business.templates.entities.EmailTemplate;
import java.util.List;
/**
* DAO interface for the <code>EmailTemplate</code> entity.
*
* Created by
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
* on 29.09.15.
*/
public interface IEmailTemplateDAO extends IGenericDAO<EmailTemplate, Long>{
String initializeContent();
String getContentBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal);
String getContentBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal);
}

View file

@ -0,0 +1,38 @@
package org.libreplan.business.templates.entities;
import org.libreplan.business.common.BaseEntity;
/**
* Created by
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
* on 29.09.15.
*/
public class EmailTemplate extends BaseEntity {
private Integer type;
private Integer language;
private String content;
public int getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public Integer getLanguage() {
return language;
}
public void setLanguage(Integer language) {
this.language = language;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}

View file

@ -0,0 +1,29 @@
package org.libreplan.business.templates.entities;
import static org.libreplan.business.i18n.I18nHelper._;
/**
* Available E-mail templates
*
* Created by
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
* on 28.09.15.
*
* TEMPLATE_N(_("Template N")) - for i18n
* TEMPLATE_A("Template A") - for general use (no internationalizing)
*/
public enum EmailTemplateEnum {
TEMPLATE_TASK_ASSIGNED_TO_RESOURCE(_("Task assigned to resource")),
TEMPLATE_TEMPLATE_1("Test template");
private final String templateType;
EmailTemplateEnum(String templateType) {
this.templateType = templateType;
}
public String getTemplateType() {
return templateType;
}
}

View file

@ -18,47 +18,6 @@
*/ */
package org.libreplan.business.users.bootstrap; package org.libreplan.business.users.bootstrap;
import static org.libreplan.business.users.entities.UserRole.ROLE_CALENDARS;
import static org.libreplan.business.users.entities.UserRole.ROLE_CALENDAR_EXCEPTION_DAYS;
import static org.libreplan.business.users.entities.UserRole.ROLE_COMPANIES;
import static org.libreplan.business.users.entities.UserRole.ROLE_COST_CATEGORIES;
import static org.libreplan.business.users.entities.UserRole.ROLE_CREATE_PROJECTS;
import static org.libreplan.business.users.entities.UserRole.ROLE_CRITERIA;
import static org.libreplan.business.users.entities.UserRole.ROLE_EDIT_ALL_PROJECTS;
import static org.libreplan.business.users.entities.UserRole.ROLE_ESTIMATED_PLANNED_HOURS_PER_TASK_REPORT;
import static org.libreplan.business.users.entities.UserRole.ROLE_EXPENSES;
import static org.libreplan.business.users.entities.UserRole.ROLE_HOURS_TYPES;
import static org.libreplan.business.users.entities.UserRole.ROLE_HOURS_WORKED_PER_RESOURCE_REPORT;
import static org.libreplan.business.users.entities.UserRole.ROLE_JOB_SCHEDULING;
import static org.libreplan.business.users.entities.UserRole.ROLE_LABELS;
import static org.libreplan.business.users.entities.UserRole.ROLE_MACHINES;
import static org.libreplan.business.users.entities.UserRole.ROLE_MAIN_SETTINGS;
import static org.libreplan.business.users.entities.UserRole.ROLE_MATERIALS;
import static org.libreplan.business.users.entities.UserRole.ROLE_MATERIALS_NEED_AT_DATE_REPORT;
import static org.libreplan.business.users.entities.UserRole.ROLE_MATERIAL_UNITS;
import static org.libreplan.business.users.entities.UserRole.ROLE_PLANNING;
import static org.libreplan.business.users.entities.UserRole.ROLE_PROFILES;
import static org.libreplan.business.users.entities.UserRole.ROLE_PROGRESS_TYPES;
import static org.libreplan.business.users.entities.UserRole.ROLE_PROJECT_COSTS_REPORT;
import static org.libreplan.business.users.entities.UserRole.ROLE_PROJECT_STATUS_REPORT;
import static org.libreplan.business.users.entities.UserRole.ROLE_QUALITY_FORMS;
import static org.libreplan.business.users.entities.UserRole.ROLE_READ_ALL_PROJECTS;
import static org.libreplan.business.users.entities.UserRole.ROLE_RECEIVED_FROM_CUSTOMERS;
import static org.libreplan.business.users.entities.UserRole.ROLE_RECEIVED_FROM_SUBCONTRACTORS;
import static org.libreplan.business.users.entities.UserRole.ROLE_SEND_TO_CUSTOMERS;
import static org.libreplan.business.users.entities.UserRole.ROLE_SEND_TO_SUBCONTRACTORS;
import static org.libreplan.business.users.entities.UserRole.ROLE_TASK_SCHEDULING_STATUS_IN_PROJECT_REPORT;
import static org.libreplan.business.users.entities.UserRole.ROLE_TEMPLATES;
import static org.libreplan.business.users.entities.UserRole.ROLE_TIMESHEETS;
import static org.libreplan.business.users.entities.UserRole.ROLE_TIMESHEETS_TEMPLATES;
import static org.libreplan.business.users.entities.UserRole.ROLE_TIMESHEET_LINES_LIST;
import static org.libreplan.business.users.entities.UserRole.ROLE_TOTAL_WORKED_HOURS_BY_RESOURCE_IN_A_MONTH_REPORT;
import static org.libreplan.business.users.entities.UserRole.ROLE_USER_ACCOUNTS;
import static org.libreplan.business.users.entities.UserRole.ROLE_VIRTUAL_WORKERS;
import static org.libreplan.business.users.entities.UserRole.ROLE_WORKERS;
import static org.libreplan.business.users.entities.UserRole.ROLE_WORK_AND_PROGRESS_PER_PROJECT_REPORT;
import static org.libreplan.business.users.entities.UserRole.ROLE_WORK_AND_PROGRESS_PER_TASK_REPORT;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@ -66,16 +25,18 @@ import java.util.Set;
import org.libreplan.business.users.entities.Profile; import org.libreplan.business.users.entities.Profile;
import org.libreplan.business.users.entities.UserRole; import org.libreplan.business.users.entities.UserRole;
import static org.libreplan.business.users.entities.UserRole.*;
/** /**
* Defines the default {@link org.libreplan.business.users.entities.Profile * Defines the default {@link org.libreplan.business.users.entities.Profile
* Profiles} * Profiles}
* *
* @author Manuel Rego Casasnovas <rego@igalia.com> * @author Manuel Rego Casasnovas <rego@igalia.com>
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
*/ */
public enum PredefinedProfiles { public enum PredefinedProfiles {
SYSTEMS_ADMINISTRATOR("Systems Administrator", ROLE_MAIN_SETTINGS, SYSTEMS_ADMINISTRATOR("Systems Administrator", ROLE_MAIN_SETTINGS,
ROLE_USER_ACCOUNTS, ROLE_PROFILES, ROLE_JOB_SCHEDULING), ROLE_USER_ACCOUNTS, ROLE_PROFILES, ROLE_JOB_SCHEDULING, ROLE_EDIT_EMAIL_TEMPLATES),
PROJECT_MANAGER("Project Manager", ROLE_READ_ALL_PROJECTS, PROJECT_MANAGER("Project Manager", ROLE_READ_ALL_PROJECTS,
ROLE_EDIT_ALL_PROJECTS, ROLE_CREATE_PROJECTS, ROLE_PLANNING, ROLE_EDIT_ALL_PROJECTS, ROLE_CREATE_PROJECTS, ROLE_PLANNING,

View file

@ -28,21 +28,26 @@ import static org.libreplan.business.i18n.I18nHelper._;
* *
* @author Fernando Bellas Permuy <fbellas@udc.es> * @author Fernando Bellas Permuy <fbellas@udc.es>
* @author Manuel Rego Casasnovas <rego@igalia.com> * @author Manuel Rego Casasnovas <rego@igalia.com>
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
*/ */
public enum UserRole { public enum UserRole {
// Access to all pages // Access to all pages
ROLE_SUPERUSER(_("Superuser")), ROLE_SUPERUSER(_("Superuser")),
// Web services roles // Web services roles
ROLE_WS_READER(_("Web service reader")), ROLE_WS_READER(_("Web service reader")),
ROLE_WS_WRITER(_("Web service writer")), ROLE_WS_WRITER(_("Web service writer")),
ROLE_WS_SUBCONTRACTING(_("Web service subcontractor operations")), ROLE_WS_SUBCONTRACTING(_("Web service subcontractor operations")),
// Project operations roles // Project operations roles
ROLE_READ_ALL_PROJECTS(_("Read all projects")), ROLE_READ_ALL_PROJECTS(_("Read all projects")),
ROLE_EDIT_ALL_PROJECTS(_("Edit all projects")), ROLE_EDIT_ALL_PROJECTS(_("Edit all projects")),
ROLE_CREATE_PROJECTS(_("Create projects")), ROLE_CREATE_PROJECTS(_("Create projects")),
// Special role for bound users // Special role for bound users
ROLE_BOUND_USER(_("Bound user")), ROLE_BOUND_USER(_("Bound user")),
// Page roles // Page roles
ROLE_PLANNING(_("Planning")), ROLE_PLANNING(_("Planning")),
ROLE_TEMPLATES(_("Templates")), ROLE_TEMPLATES(_("Templates")),
@ -81,7 +86,9 @@ public enum UserRole {
ROLE_PROJECT_COSTS_REPORT(_("Project Costs Report")), ROLE_PROJECT_COSTS_REPORT(_("Project Costs Report")),
ROLE_TASK_SCHEDULING_STATUS_IN_PROJECT_REPORT(_("Task Scheduling Status In Project Report")), ROLE_TASK_SCHEDULING_STATUS_IN_PROJECT_REPORT(_("Task Scheduling Status In Project Report")),
ROLE_MATERIALS_NEED_AT_DATE_REPORT(_("Materials Needed At Date Report")), ROLE_MATERIALS_NEED_AT_DATE_REPORT(_("Materials Needed At Date Report")),
ROLE_PROJECT_STATUS_REPORT(_("Project Status Report")); ROLE_PROJECT_STATUS_REPORT(_("Project Status Report")),
ROLE_EDIT_EMAIL_TEMPLATES(_("Edit E-mail Templates"));
private final String displayName; private final String displayName;

View file

@ -91,4 +91,14 @@
</joined-subclass> </joined-subclass>
</class> </class>
<class name="EmailTemplate" abstract="true" table="email_template">
<id name="id" access="property" type="long">
<generator class="hilo" >
<param name="max_lo">100</param>
</generator>
</id>
<property name="type" column="type" type="int"/>
<property name="language" column="language" type="int"/>
<property name="content" column="content" />
</class>
</hibernate-mapping> </hibernate-mapping>

View file

@ -0,0 +1,150 @@
package org.libreplan.web.templates;
import org.libreplan.business.common.exceptions.ValidationException;
import org.libreplan.business.settings.entities.Language;
import org.libreplan.business.templates.daos.EmailTemplateDAO;
import org.libreplan.business.templates.entities.EmailTemplateEnum;
import org.libreplan.web.common.IMessagesForUser;
import org.libreplan.web.common.Level;
import org.libreplan.web.common.MessagesForUser;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
import org.zkoss.zul.Textbox;
import java.util.*;
import static org.libreplan.web.I18nHelper._;
/**
* Created by
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
* on 25.09.15.
*/
public class EmailTemplateController extends GenericForwardComposer{
private IEmailTemplateModel emailTemplateModel;
private EmailTemplateDAO emailTemplateDAO;
private IMessagesForUser messages;
private Component messagesContainer;
private Textbox contentsTextbox;
public static ListitemRenderer languagesRenderer = new ListitemRenderer() {
@Override
public void render(org.zkoss.zul.Listitem item, Object data)
throws Exception {
Language language = (Language) data;
String displayName = language.getDisplayName();
if (language.equals(Language.BROWSER_LANGUAGE)) {
displayName = _(language.getDisplayName());
}
item.setLabel(displayName);
}
};
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
comp.setVariable("emailTemplateController", this, true);
messages = new MessagesForUser(messagesContainer);
contentsTextbox.setValue(getInitialContentData());
}
public boolean save(){
try {
setSelectedContent();
emailTemplateModel.confirmSave();
messages.clearMessages();
messages.showMessage(Level.INFO, _("E-mail template saved"));
return true;
} catch (ValidationException e) {
messages.showInvalidValues(e);
}
return false;
}
public void cancel() throws InterruptedException {
Executions.getCurrent().sendRedirect("../planner/index.zul");
}
public Language getSelectedLanguage() {
return emailTemplateModel.getLanguage();
}
public void setSelectedLanguage(Language language){
emailTemplateModel.setLanguage(language);
getContentDataBySelectedLanguage();
}
public static ListitemRenderer getLanguagesRenderer() {
return languagesRenderer;
}
public List<Language> getLanguages() {
List<Language> languages = Arrays.asList(Language.values());
Collections.sort(languages, new Comparator<Language>() {
@Override
public int compare(Language o1, Language o2) {
if (o1.equals(Language.BROWSER_LANGUAGE)) {
return -1;
}
if (o2.equals(Language.BROWSER_LANGUAGE)) {
return 1;
}
return o1.getDisplayName().compareTo(o2.getDisplayName());
}
});
return languages;
}
public EmailTemplateEnum getSelectedEmailTemplateEnum() {
return emailTemplateModel.getEmailTemplateEnum();
}
public void setSelectedEmailTemplateEnum(EmailTemplateEnum emailTemplateEnum){
emailTemplateModel.setEmailTemplateEnum(emailTemplateEnum);
getContentDataBySelectedTemplate();
}
public ListitemRenderer getEmailTemplateEnumRenderer() {
return new ListitemRenderer() {
@Override
public void render(Listitem item, Object data) throws Exception {
EmailTemplateEnum template = (EmailTemplateEnum) data;
item.setLabel(_(template.getTemplateType()));
item.setValue(template);
}
};
}
public List<EmailTemplateEnum> getEmailTemplateEnum() {
return Arrays.asList(EmailTemplateEnum.values());
}
public void setSelectedContent(){
emailTemplateModel.setContent(contentsTextbox.getValue());
}
public String getInitialContentData(){
return emailTemplateModel.initializeContent();
}
private void getContentDataBySelectedLanguage(){
contentsTextbox.setValue(emailTemplateModel.getContentBySelectedLanguage(getSelectedLanguage().ordinal(), getSelectedEmailTemplateEnum().ordinal()));
}
private void getContentDataBySelectedTemplate(){
contentsTextbox.setValue( emailTemplateModel.getContentBySelectedTemplate( getSelectedEmailTemplateEnum().ordinal(), getSelectedLanguage().ordinal() ) );
}
}

View file

@ -0,0 +1,90 @@
package org.libreplan.web.templates;
import org.libreplan.business.settings.entities.Language;
import org.libreplan.business.templates.daos.IEmailTemplateDAO;
import org.libreplan.business.templates.entities.EmailTemplate;
import org.libreplan.business.templates.entities.EmailTemplateEnum;
import org.libreplan.web.common.concurrentdetection.OnConcurrentModification;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* Created by
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
* on 25.09.15.
*/
@Service
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
@OnConcurrentModification(goToPage = "/templates/email_templates.zul")
public class EmailTemplateModel implements IEmailTemplateModel {
@Autowired
private IEmailTemplateDAO emailTemplateDAO;
private Language language = Language.ENGLISH_LANGUAGE;
private EmailTemplateEnum emailTemplateEnum = EmailTemplateEnum.TEMPLATE_TASK_ASSIGNED_TO_RESOURCE;
private String content;
private EmailTemplate emailTemplate;
@Override
@Transactional
public void confirmSave(){
emailTemplate = new EmailTemplate();
// + 1 because first ordinal = 0
emailTemplate.setType(emailTemplateEnum.ordinal() + 1);
emailTemplate.setLanguage(language.ordinal());
emailTemplate.setContent(content);
emailTemplateDAO.save(emailTemplate);
}
@Override
public Language getLanguage() {
return language;
}
@Override
public void setLanguage(Language language){ this.language = language; }
@Override
public EmailTemplateEnum getEmailTemplateEnum() {
return emailTemplateEnum;
}
@Override
public void setEmailTemplateEnum(EmailTemplateEnum emailTemplateEnum) {
this.emailTemplateEnum = emailTemplateEnum;
}
@Override
public String getContent() {
return content;
}
@Override
public void setContent(String content) {
this.content = content;
}
@Override
@Transactional
public String initializeContent() {
return emailTemplateDAO.initializeContent();
}
@Override
@Transactional
public String getContentBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal) {
return emailTemplateDAO.getContentBySelectedLanguage(languageOrdinal, emailTemplateTypeOrdinal);
}
@Override
@Transactional
public String getContentBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal) {
return emailTemplateDAO.getContentBySelectedTemplate(emailTemplateTypeOrdinal, languageOrdinal);
}
}

View file

@ -0,0 +1,29 @@
package org.libreplan.web.templates;
import org.libreplan.business.common.exceptions.ValidationException;
import org.libreplan.business.settings.entities.Language;
import org.libreplan.business.templates.entities.EmailTemplateEnum;
/**
* Model E-mail Templates
*
* Created by
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
* on 28.09.15.
*/
public interface IEmailTemplateModel {
void confirmSave() throws ValidationException;
Language getLanguage();
void setLanguage(Language language);
EmailTemplateEnum getEmailTemplateEnum();
void setEmailTemplateEnum(EmailTemplateEnum emailTemplateEnum);
String getContent();
void setContent(String content);
String initializeContent();
String getContentBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal);
String getContentBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal);
}