diff --git a/zanata-war/src/main/java/org/zanata/action/ProjectHome.java b/zanata-war/src/main/java/org/zanata/action/ProjectHome.java index 7e2dda0485..2b258f3860 100644 --- a/zanata-war/src/main/java/org/zanata/action/ProjectHome.java +++ b/zanata-war/src/main/java/org/zanata/action/ProjectHome.java @@ -310,7 +310,7 @@ public void validateSuppliedId() { } @Transactional - @Restrict("#{s:hasPermission(projectHome.instance, 'update')}") + public void updateCopyTrans(String action, String value) { copyTransOptionsModel.setInstance(getInstance() .getDefaultCopyTransOpts()); @@ -321,7 +321,7 @@ public void updateCopyTrans(String action, String value) { update(); addMessage(StatusMessage.Severity.INFO, - zanataMessages.getMessage("jsf.project.CopyTransOpts.saved")); + zanataMessages.getMessage("jsf.project.CopyTransOpts.updated")); } public void initialize() { diff --git a/zanata-war/src/main/java/org/zanata/action/VersionHome.java b/zanata-war/src/main/java/org/zanata/action/VersionHome.java index 30a0c3ab6f..0e79a64c4d 100644 --- a/zanata-war/src/main/java/org/zanata/action/VersionHome.java +++ b/zanata-war/src/main/java/org/zanata/action/VersionHome.java @@ -111,6 +111,10 @@ public class VersionHome extends SlugHome { @Setter private boolean isNewInstance = false; + @Getter + @Setter + private String selectedProjectType; + public void createNew() { isNewInstance = true; } @@ -332,6 +336,59 @@ public int compare(HLocale hLocale, HLocale hLocale2) { return locales; } + public List getProjectActiveLocales() { + List projectLocales; + if (getInstance().getProject().isOverrideLocales()) { + projectLocales = + Lists.newArrayList(getInstance().getProject() + .getCustomizedLocales()); + } else { + projectLocales = localeServiceImpl.getSupportedLocales(); + } + Collections.sort(projectLocales, new Comparator() { + @Override + public int compare(HLocale hLocale, HLocale hLocale2) { + return hLocale.retrieveDisplayName().compareTo( + hLocale2.retrieveDisplayName()); + } + }); + return projectLocales; + } + + public boolean isLocalesSameAsProject() { + return getInstanceActiveLocales().equals(getProjectActiveLocales()); + } + + public boolean isValidationsSameAsProject() { + return getInstance().getCustomizedValidations().equals( + getInstance().getProject().getCustomizedValidations()); + } + + public void copyValidationFromProject() { + getInstance().getCustomizedValidations().clear(); + getInstance().getCustomizedValidations().putAll( + getInstance().getProject().getCustomizedValidations()); + availableValidations.clear(); + update(); + addMessage( + StatusMessage.Severity.INFO, + zanataMessages + .getMessage("jsf.iteration.CopyProjectValidations.message")); + } + + public void copyLanguagesFromProject() { + getInstance().setOverrideLocales( + getInstance().getProject().isOverrideLocales()); + getInstance().getCustomizedLocales().clear(); + getInstance().getCustomizedLocales().addAll( + getInstance().getProject().getCustomizedLocales()); + update(); + addMessage( + StatusMessage.Severity.INFO, + zanataMessages + .getMessage("jsf.iteration.CopyProjectLanguages.message")); + } + @Override @Restrict("#{s:hasPermission(versionHome.instance, 'update')}") public String update() { @@ -367,20 +424,18 @@ public void updateStatus(char initial) { "jsf.iteration.status.updated", EntityStatus.valueOf(initial))); } - @Getter - @Setter - private String selectedProjectType; - public void updateSelectedProjectType(ValueChangeEvent e) { selectedProjectType = (String) e.getNewValue(); updateProjectType(); - if (!StringUtils.isEmpty(selectedProjectType) - && !selectedProjectType.equals("null")) { - ProjectType projectType = ProjectType.valueOf(selectedProjectType); - getInstance().setProjectType(projectType); - } else { - getInstance().setProjectType(null); - } + } + + public void copyProjectTypeFromProject() { + getInstance().setProjectType( + getInstance().getProject().getDefaultProjectType()); + addMessage(StatusMessage.Severity.INFO, + zanataMessages + .getMessage("jsf.iteration.CopyProjectType.message")); + update(); } private void updateProjectType() { diff --git a/zanata-war/src/main/resources/messages.properties b/zanata-war/src/main/resources/messages.properties index 36839c94ab..dc367ce753 100644 --- a/zanata-war/src/main/resources/messages.properties +++ b/zanata-war/src/main/resources/messages.properties @@ -293,7 +293,7 @@ jsf.YouAreNoLongerMaintainerForThisProject=You are no longer a maintainer for th #------ [home] > Projects > [project-id] > [version-id] > Copy Translations ------ # Some of these strings are only visible while copytrans is running jsf.project.CopyTransOpts.title=#{messages['jsf.CopyTrans']} Options -jsf.project.CopyTransOpts.saved=#{messages['jsf.CopyTrans']} options saved. +jsf.project.CopyTransOpts.updated=#{messages['jsf.CopyTrans']} options updated. jsf.iteration.CopyTrans.Condition=Condition jsf.iteration.CopyTrans.Condition.onContentMismatch=On content mismatch jsf.iteration.CopyTrans.Condition.onContentMismatch.details=If the translations are not identical @@ -326,6 +326,12 @@ jsf.iteration.requireReview.enabled=Enabled translation review jsf.iteration.requireReview.disabled=Disabled translation review jsf.iteration.copyTrans.start.question=Do you want to run Copy Trans on this version? jsf.iteration.CopyTrans.message=This is automatically run whenever a new version is created +jsf.iteration.CopyProjectType.label=Copy project type from project +jsf.iteration.CopyProjectLanguages.label=Copy languages from project +jsf.iteration.CopyProjectValidation.label=Copy translation validation settings from project +jsf.iteration.CopyProjectLanguages.message=Copied language settings from project +jsf.iteration.CopyProjectValidations.message=Copied validation settings from project +jsf.iteration.CopyProjectType.message=Copied project type from project ! used in coloured display tiles #FIXME this is actually longer, may not be necessary or should be named better @@ -410,8 +416,8 @@ jsf.ConfirmExportTMXIter=Are you sure you want to export this project version to #------ [home] > Projects > [project-id] > [version-id] > Source Documents ------ #------ [home] > Projects > [project-id] > [version-id] > Documents ([locale]) ------ -jsf.pager.NextPage=next -jsf.pager.PreviousPage=prev +jsf.pager.NextPage=Next +jsf.pager.PreviousPage=Previous jsf.iteration.ExportTMXIter=Export Version to TMX jsf.iteration.ExportTMX.Language=Export {0} Documents to TMX diff --git a/zanata-war/src/main/webapp/WEB-INF/layout/project/edit_form.xhtml b/zanata-war/src/main/webapp/WEB-INF/layout/project/edit_form.xhtml index 9d8aca287c..61fb6b96fe 100644 --- a/zanata-war/src/main/webapp/WEB-INF/layout/project/edit_form.xhtml +++ b/zanata-war/src/main/webapp/WEB-INF/layout/project/edit_form.xhtml @@ -33,7 +33,8 @@
#{messages['jsf.ProjectId']} - + #{messages['jsf.projectType.NoSelection']} #{messages['jsf.projectType.detail.noSelection']} - +
diff --git a/zanata-war/src/main/webapp/WEB-INF/layout/project/settings-tab.xhtml b/zanata-war/src/main/webapp/WEB-INF/layout/project/settings-tab.xhtml index a6b0fda00a..95657fb9bd 100644 --- a/zanata-war/src/main/webapp/WEB-INF/layout/project/settings-tab.xhtml +++ b/zanata-war/src/main/webapp/WEB-INF/layout/project/settings-tab.xhtml @@ -15,6 +15,10 @@ function onRestrictedByRoleValueChanged(key, checked) { bindRestrictedByRoleValue(key, checked); } + + function getUserRoleId() { + return "[id='#{rich:clientId('user-roles')}']"; + } @@ -263,10 +267,10 @@

#{validationAction.description} - + title="#{messages['jsf.tooltip.ShowExample']}"> #{messages['jsf.tooltip.More']} @@ -331,8 +335,7 @@

#{messages['jsf.Copytrans.message']} + title="#{messages['jsf.project.CopyTransOpts.tooltip']}">

@@ -359,6 +362,7 @@ @#{maintainer.account.username} @@ -377,7 +381,7 @@ maxlength="80" minlength="3" id="maintainerAutocomplete" fetchValue="#{result.account.username}" render="settings-permissions-form,maintainers-size, maintainers_content, pageMessages" - oncomplete="focusCurrentActiveInput()" + oncomplete="zanata.form.appendCheckboxes(getUserRoleId());focusCurrentActiveInput()" placeholder="#{messages['jsf.SearchUsers']}"> @@ -392,15 +396,15 @@
-
+ - +
  • @@ -412,7 +416,7 @@
-
+
  • diff --git a/zanata-war/src/main/webapp/WEB-INF/layout/project/versions-tab.xhtml b/zanata-war/src/main/webapp/WEB-INF/layout/project/versions-tab.xhtml index 3f0b51d3db..a76fc697a7 100644 --- a/zanata-war/src/main/webapp/WEB-INF/layout/project/versions-tab.xhtml +++ b/zanata-war/src/main/webapp/WEB-INF/layout/project/versions-tab.xhtml @@ -4,7 +4,8 @@ xmlns:h="http://java.sun.com/jsf/html" xmlns:zanata="http://java.sun.com/jsf/composite/zanata" xmlns:f="http://java.sun.com/jsf/core" - xmlns:a4j="http://richfaces.org/a4j"> + xmlns:a4j="http://richfaces.org/a4j" + xmlns:rich="http://richfaces.org/rich">
    @@ -12,6 +13,7 @@