diff --git a/zanata-war/src/main/java/org/zanata/action/VersionGroupHome.java b/zanata-war/src/main/java/org/zanata/action/VersionGroupHome.java index 23092d214a..81485848e0 100644 --- a/zanata-war/src/main/java/org/zanata/action/VersionGroupHome.java +++ b/zanata-war/src/main/java/org/zanata/action/VersionGroupHome.java @@ -97,10 +97,12 @@ public class VersionGroupHome extends SlugHome { private List statusList; - @Getter @Setter - // string format: #{hlocale.retrieveDisplayName()} [#{hlocale.localeId}] - private String newLanguage; + private String languageQuery; + + @Setter + // localeId + private String selectedLocale; @Setter private String versionQuery; @@ -164,23 +166,23 @@ public void setStatus(char initial) { getInstance().setStatus(EntityStatus.valueOf(initial)); } - public List suggestLocales(final String query) { + public List suggestLocales() { List localeList = localeServiceImpl.getSupportedLocales(); Collection filtered = Collections2.filter(localeList, new Predicate() { @Override public boolean apply(@Nullable HLocale input) { - if (StringUtils.isEmpty(query)) { + if (StringUtils.isEmpty(languageQuery)) { return !getInstance().getActiveLocales().contains( input); } return !getInstance().getActiveLocales() .contains(input) && (input.getLocaleId().getId() - .startsWith(query) || input + .startsWith(languageQuery) || input .retrieveDisplayName().toLowerCase() - .contains(query.toLowerCase())); + .contains(languageQuery.toLowerCase())); } }); @@ -221,26 +223,6 @@ public boolean apply(@Nullable HPerson input) { return Lists.newArrayList(filtered); } - // Chinese (Traditional Han) [zh-Hant] - @Restrict("#{s:hasPermission(versionGroupHome.instance, 'update')}") - public void addLanguage() { - if (StringUtils.isEmpty(newLanguage)) { - return; - } - String localeId = newLanguage.split("\\[")[1].replace("]", ""); - - HLocale locale = localeServiceImpl.getByLocaleId(localeId); - - getInstance().getActiveLocales().add(locale); - super.update(); - newLanguage = ""; - - addMessage( - StatusMessage.Severity.INFO, - zanataMessages.getMessage("jsf.LanguageAddedToGroup", - locale.retrieveDisplayName())); - } - /** * Use FlashScopeBean to store message in page. Multiple ajax requests for * re-rendering statistics after updating will clear FacesMessages. @@ -260,6 +242,25 @@ private void clearMessage() { flashScope.getAndClearAttribute("message"); } + @Restrict("#{s:hasPermission(versionGroupHome.instance, 'update')}") + public void addLanguage() { + if (StringUtils.isEmpty(selectedLocale)) { + return; + } + + HLocale locale = localeServiceImpl.getByLocaleId(selectedLocale); + + getInstance().getActiveLocales().add(locale); + super.update(); + selectedLocale = ""; + languageQuery = ""; + + addMessage( + StatusMessage.Severity.INFO, + zanataMessages.getMessage("jsf.LanguageAddedToGroup", + locale.retrieveDisplayName())); + } + @Restrict("#{s:hasPermission(versionGroupHome.instance, 'update')}") public void addVersion() { if (StringUtils.isEmpty(selectedVersion)) { @@ -270,7 +271,8 @@ public void addVersion() { projectIterationDAO.findById(new Long(selectedVersion)); getInstance().getProjectIterations().add(version); super.update(); - this.selectedVersion = ""; + selectedVersion = ""; + versionQuery = ""; addMessage( StatusMessage.Severity.INFO, @@ -287,7 +289,8 @@ public void addMaintainer() { HPerson maintainer = personDAO.findByUsername(selectedMaintainer); getInstance().getMaintainers().add(maintainer); super.update(); - this.selectedMaintainer = ""; + selectedMaintainer = ""; + maintainerQuery = ""; addMessage(StatusMessage.Severity.INFO, zanataMessages.getMessage( "jsf.MaintainerAddedToGroup", maintainer.getName())); diff --git a/zanata-war/src/main/resources/messages.properties b/zanata-war/src/main/resources/messages.properties index 7227a625b6..76596232e9 100644 --- a/zanata-war/src/main/resources/messages.properties +++ b/zanata-war/src/main/resources/messages.properties @@ -438,6 +438,8 @@ jsf.Missing=missing jsf.GroupId=Group ID jsf.General=General jsf.Maintainers=Maintainers +jsf.SearchLanguages=Search Languages +jsf.SearchUsers=Search Users diff --git a/zanata-war/src/main/webapp/WEB-INF/layout/version-group/settings-tab.xhtml b/zanata-war/src/main/webapp/WEB-INF/layout/version-group/settings-tab.xhtml index e3d1c67bef..95c4b09d7f 100644 --- a/zanata-war/src/main/webapp/WEB-INF/layout/version-group/settings-tab.xhtml +++ b/zanata-war/src/main/webapp/WEB-INF/layout/version-group/settings-tab.xhtml @@ -60,18 +60,6 @@ } - - - - - - - -

#{messages['Settings']}

@@ -174,27 +162,26 @@
  • -
  • @@ -204,7 +191,7 @@ #{messages['jsf.Projects']} -
      +
        @@ -226,7 +213,7 @@
      • @@ -240,7 +227,7 @@ fetchValue="#{result.id}" render="settings-projects-form" oncomplete="refreshStatistics();focusCurrentActiveInput();" - placeholder="#{messages['jsf.AddAProject']}"> + placeholder="#{messages['jsf.SearchProjects']}"> #{result.project.slug} #{result.slug} @@ -253,7 +240,7 @@ #{messages['jsf.Maintainers']} -
          +
          • @@ -274,7 +261,7 @@
          • @@ -282,13 +269,13 @@ selectedField="#{versionGroupHome.selectedMaintainer}" getResultAction="#{versionGroupHome.suggestMaintainers()}" onselectItem="#{versionGroupHome.addMaintainer()}" - maxlength="80" minlength="0" id="maintainerAutocomplete" + maxlength="80" minlength="3" id="maintainerAutocomplete" queryField="#{versionGroupHome.maintainerQuery}" displayValue="#{result.name} @#{result.account.username}" fetchValue="#{result.account.username}" render="settings-maintainers-form,pageMessages" oncomplete="focusCurrentActiveInput()" - placeholder="#{messages['jsf.AddAMaintainer']}"> + placeholder="#{messages['jsf.SearchUsers']}"> + shortDescription="id of component (java naming)" required="true"/> @@ -52,25 +52,29 @@ - + - -
            - + + - - + id="#{cc.attrs.id}-autocomplete__input" placeholder="#{cc.attrs.placeholder}"/> +