diff --git a/zanata-war/src/main/java/org/zanata/action/VersionGroupAction.java b/zanata-war/src/main/java/org/zanata/action/VersionGroupAction.java
index b006b08bee..f3b1bf902e 100644
--- a/zanata-war/src/main/java/org/zanata/action/VersionGroupAction.java
+++ b/zanata-war/src/main/java/org/zanata/action/VersionGroupAction.java
@@ -25,20 +25,20 @@
import java.util.List;
import java.util.Set;
-import org.apache.lucene.queryParser.ParseException;
import org.h2.util.StringUtils;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.annotations.security.Restrict;
+import org.jboss.seam.log.Log;
import org.jboss.seam.security.management.JpaIdentityStore;
import org.zanata.common.EntityStatus;
import org.zanata.dao.ProjectDAO;
import org.zanata.model.HAccount;
import org.zanata.model.HIterationGroup;
-import org.zanata.model.HIterationProject;
import org.zanata.model.HProject;
import org.zanata.model.HProjectIteration;
import org.zanata.service.VersionGroupService;
@@ -58,50 +58,108 @@ public class VersionGroupAction implements Serializable
@In(required = false, value = JpaIdentityStore.AUTHENTICATED_USER)
HAccount authenticatedAccount;
+ @Logger
+ Log log;
+
private List allVersionGroups;
- private List searchResults;
+ private List searchResults;
private List maintainedProjectVersions;
private HIterationGroup group;
- private String searchTerm;
+ private String searchTerm = "";
private String groupNameFilter;
private boolean showActiveGroups = true;
private boolean showObsoleteGroups = false;
+ private boolean selectAll = false;
+
+ public final class SelectableHIterationProject
+ {
+ private HProjectIteration projectIteration;
+ private boolean selected;
+
+ public SelectableHIterationProject(HProjectIteration projectIteration)
+ {
+ this.projectIteration = projectIteration;
+ selected = false;
+ }
+
+ public HProjectIteration getProjectIteration()
+ {
+ return projectIteration;
+ }
+
+ public boolean getSelected()
+ {
+ return selected;
+ }
+
+ public void setSelected(boolean selected)
+ {
+ this.selected = selected;
+ }
+ }
public void loadAllActiveGroupsOrIsMaintainer()
{
allVersionGroups = versionGroupServiceImpl.getAllActiveVersionGroupsOrIsMaintainer();
}
- public void init(String slug, String projectSlug, String iterationSlug)
+ public void init(String slug)
{
group = versionGroupServiceImpl.getBySlug(slug);
- executePreSearch(projectSlug, iterationSlug);
+ }
+
+ public void addSelected()
+ {
+ for (SelectableHIterationProject selectableVersion : getSearchResults())
+ {
+ if (selectableVersion.getSelected())
+ {
+ joinVersionGroup(selectableVersion.getProjectIteration().getId());
+ }
+ }
+ }
+
+ public void selectAll()
+ {
+ for (SelectableHIterationProject selectableVersion : getSearchResults())
+ {
+ if (!isVersionInGroup(selectableVersion.getProjectIteration().getId()))
+ {
+ selectableVersion.setSelected(selectAll);
+ }
+ }
}
/**
* Run search on unique project version if projectSlug, iterationSlug exits
+ * else search versions available
*/
- private void executePreSearch(String projectSlug, String iterationSlug)
+ public void executePreSearch(String projectSlug, String iterationSlug)
{
if (!StringUtils.isNullOrEmpty(projectSlug) && !StringUtils.isNullOrEmpty(iterationSlug))
{
- HProjectIteration projectIteration = versionGroupServiceImpl.getProjectIterationBySlug(projectSlug, iterationSlug);
- if (projectIteration != null)
+ HProjectIteration projectVersion = versionGroupServiceImpl.getProjectIterationBySlug(projectSlug, iterationSlug);
+ if (projectVersion != null)
{
- getSearchResults().add(projectIteration);
+ getSearchResults().add(new SelectableHIterationProject(projectVersion));
}
}
+ else
+ {
+ searchProjectAndVersion();
+ }
+
}
public void searchMaintainedProjects()
{
Set maintainedProjects = authenticatedAccount.getPerson().getMaintainerProjects();
- for(HProject project:maintainedProjects)
+ for (HProject project : maintainedProjects)
{
getMaintainedProjectVersions().addAll(projectDAO.getAllIterations(project.getSlug()));
}
@@ -115,6 +173,7 @@ public List getMaintainedProjectVersions()
}
return maintainedProjectVersions;
}
+
public String getSearchTerm()
{
return searchTerm;
@@ -125,11 +184,11 @@ public void setSearchTerm(String searchTerm)
this.searchTerm = searchTerm;
}
- public List getSearchResults()
+ public List getSearchResults()
{
if (searchResults == null)
{
- searchResults = new ArrayList();
+ searchResults = new ArrayList();
}
return searchResults;
}
@@ -154,20 +213,20 @@ public void joinVersionGroup(Long projectIterationId)
}
@Transactional
+ @Restrict("#{s:hasPermission(versionGroupHome.instance, 'update')}")
public void leaveVersionGroup(Long projectIterationId)
{
versionGroupServiceImpl.leaveVersionGroup(group.getSlug(), projectIterationId);
+ searchProjectAndVersion();
}
public void searchProjectAndVersion()
{
- try
+ getSearchResults().clear();
+ List result = versionGroupServiceImpl.searchLikeSlugOrProjectSlug(this.searchTerm);
+ for (HProjectIteration version : result)
{
- this.searchResults = versionGroupServiceImpl.searchLikeSlugOrProjectSlug(this.searchTerm);
- }
- catch (ParseException e)
- {
- return;
+ getSearchResults().add(new SelectableHIterationProject(version));
}
}
@@ -248,4 +307,14 @@ public void setShowObsoleteGroups(boolean showObsoleteGroups)
{
this.showObsoleteGroups = showObsoleteGroups;
}
+
+ public boolean isSelectAll()
+ {
+ return selectAll;
+ }
+
+ public void setSelectAll(boolean selectAll)
+ {
+ this.selectAll = selectAll;
+ }
}
diff --git a/zanata-war/src/main/java/org/zanata/dao/ProjectIterationDAO.java b/zanata-war/src/main/java/org/zanata/dao/ProjectIterationDAO.java
index fe4616f6ae..892d5833b7 100644
--- a/zanata-war/src/main/java/org/zanata/dao/ProjectIterationDAO.java
+++ b/zanata-war/src/main/java/org/zanata/dao/ProjectIterationDAO.java
@@ -20,10 +20,12 @@
*/
package org.zanata.dao;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.queryParser.MultiFieldQueryParser;
-import org.apache.lucene.queryParser.ParseException;
-import org.apache.lucene.util.Version;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.core.EntityTag;
+
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
@@ -39,18 +41,12 @@
import org.zanata.common.LocaleId;
import org.zanata.common.TransUnitCount;
import org.zanata.common.TransUnitWords;
-import org.zanata.hibernate.search.GroupSearchBridge;
import org.zanata.model.HIterationProject;
import org.zanata.model.HProject;
import org.zanata.model.HProjectIteration;
import org.zanata.model.StatusCount;
import org.zanata.util.HashUtil;
-import javax.ws.rs.core.EntityTag;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
@Name("projectIterationDAO")
@AutoCreate
@Scope(ScopeType.STATELESS)
@@ -298,7 +294,7 @@ public int getTotalObsoleteProjectIterCount()
return totalCount.intValue();
}
- public List searchLikeSlugOrProjectSlug(String searchTerm) throws ParseException
+ public List searchLikeSlugOrProjectSlug(String searchTerm)
{
Query q = getSession().createQuery("from HProjectIteration t where t.slug LIKE :searchTerm OR t.project.slug LIKE :searchTerm");
q.setParameter("searchTerm", "%" + searchTerm + "%");
diff --git a/zanata-war/src/main/java/org/zanata/service/VersionGroupService.java b/zanata-war/src/main/java/org/zanata/service/VersionGroupService.java
index 9c7d14ce6d..a69e7b1ca9 100644
--- a/zanata-war/src/main/java/org/zanata/service/VersionGroupService.java
+++ b/zanata-war/src/main/java/org/zanata/service/VersionGroupService.java
@@ -22,7 +22,6 @@
import java.util.List;
-import org.apache.lucene.queryParser.ParseException;
import org.zanata.model.HIterationGroup;
import org.zanata.model.HPerson;
import org.zanata.model.HProjectIteration;
@@ -36,7 +35,7 @@ public interface VersionGroupService
HIterationGroup getBySlug(String slug);
- List searchLikeSlugOrProjectSlug(String searchTerm) throws ParseException;
+ List searchLikeSlugOrProjectSlug(String searchTerm);
List getMaintainerBySlug(String slug);
diff --git a/zanata-war/src/main/java/org/zanata/service/impl/VersionGroupServiceImpl.java b/zanata-war/src/main/java/org/zanata/service/impl/VersionGroupServiceImpl.java
index 980cb42be3..ac7ef6a55b 100644
--- a/zanata-war/src/main/java/org/zanata/service/impl/VersionGroupServiceImpl.java
+++ b/zanata-war/src/main/java/org/zanata/service/impl/VersionGroupServiceImpl.java
@@ -23,7 +23,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.lucene.queryParser.ParseException;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
@@ -91,7 +90,7 @@ public HIterationGroup getBySlug(String slug)
}
@Override
- public List searchLikeSlugOrProjectSlug(String searchTerm) throws ParseException
+ public List searchLikeSlugOrProjectSlug(String searchTerm)
{
return projectIterationDAO.searchLikeSlugOrProjectSlug(searchTerm);
}
diff --git a/zanata-war/src/main/webapp/META-INF/MANIFEST.MF b/zanata-war/src/main/webapp/META-INF/MANIFEST.MF
index b1e8cd9c3f..a68b91683c 100644
--- a/zanata-war/src/main/webapp/META-INF/MANIFEST.MF
+++ b/zanata-war/src/main/webapp/META-INF/MANIFEST.MF
@@ -21,5 +21,27 @@ Class-Path: zanata-common-api-1.6-SNAPSHOT.jar zanata-common-util-1.6-
ss-el-1.0_02.CR4.jar hibernate-search-3.1.1.GA.jar hsqldb-1.8.0.8-bre
w.jar zanata-adapter-po-1.6.0-alpha-2.jar jgettext-0.6.jar resteasy-a
tom-provider-2.1.0.GA.jar commons-beanutils-1.7.0.jar openprops-0.5.j
- ar
+ ar zanata-model-1.6.1-SNAPSHOT.jar jboss-seam-ui-2.2.0.GA.jar jboss-s
+ eam-jul-2.2.0.GA.jar jboss-seam-debug-2.2.0.GA.jar jsf-facelets-1.1.1
+ 5.B1.jar jboss-seam-mail-2.2.0.GA.jar jboss-seam-remoting-2.2.0.GA.ja
+ r jboss-seam-resteasy-2.2.0.GA.jar resteasy-jackson-provider-2.1.0.GA
+ .jar jackson-jaxrs-1.5.0.jar drools-core-5.0.1.jar mvel2-2.0.10.jar d
+ rools-api-5.0.1.jar joda-time-1.6.jar drools-compiler-5.0.1.jar antlr
+ -runtime-3.1.1.jar core-3.4.2.v_883_R34x.jar janino-2.5.15.jar richfa
+ ces-api-3.3.3.Final.jar richfaces-impl-3.3.3.Final.jar commons-digest
+ er-1.8.1.jar richfaces-ui-3.3.3.Final.jar ehcache-core-2.5.1.jar dbun
+ it-2.2.jar urlrewritefilter-3.0.4.jar jrobin-1.5.9.jar enunciate-core
+ -annotations-1.24.jar quartz-1.5.2.jar commons-fileupload-1.2.1.jar g
+ wt-servlet-2.4.0.jar gin-1.5.0.jar guice-3.0.jar javax.inject-1.jar a
+ opalliance-1.0.jar guice-assistedinject-3.0-rc2.jar gwt-dispatch-1.0.
+ 0.jar gwt-log-3.1.7.jar gwteventservice-1.2.0.jar eventservice-rpc-1.
+ 2.0.jar eventservice-1.2.0.jar liquibase-core-2.0.3.jar modify-column
+ -2.0.0.jar htmlparser-1.6.jar openid4java-0.9.5.jar openid4java-consu
+ mer-0.9.5.jar openid4java-nodeps-0.9.5.jar nekohtml-1.9.7.jar openid4
+ java-server-0.9.5.jar openid4java-server-JdbcServerAssociationStore-0
+ .9.5.jar spring-jdbc-2.0.6.jar spring-beans-2.0.6.jar spring-core-2.0
+ .6.jar spring-context-2.0.6.jar spring-dao-2.0.6.jar openid4java-cons
+ umer-SampleConsumer-0.9.5.jar openid4java-server-SampleServer-0.9.5.j
+ ar openxri-client-1.2.0.jar openxri-syntax-1.2.0.jar jug-1.1.2.jar xm
+ lsec-1.3.0.jar
diff --git a/zanata-war/src/main/webapp/WEB-INF/pages.xml b/zanata-war/src/main/webapp/WEB-INF/pages.xml
index b8b3f0f1a3..42415f170e 100644
--- a/zanata-war/src/main/webapp/WEB-INF/pages.xml
+++ b/zanata-war/src/main/webapp/WEB-INF/pages.xml
@@ -195,7 +195,8 @@
-
+
+
diff --git a/zanata-war/src/main/webapp/project/home.xhtml b/zanata-war/src/main/webapp/project/home.xhtml
index 1f47f06560..a9015e63a6 100644
--- a/zanata-war/src/main/webapp/project/home.xhtml
+++ b/zanata-war/src/main/webapp/project/home.xhtml
@@ -35,7 +35,7 @@
page="#{projectAction.scrollerPage}" id="scroller" reRender="sc2" />
-
+
diff --git a/zanata-war/src/main/webapp/stylesheet/zanata.css b/zanata-war/src/main/webapp/stylesheet/zanata.css
index 570fedad89..f932430785 100644
--- a/zanata-war/src/main/webapp/stylesheet/zanata.css
+++ b/zanata-war/src/main/webapp/stylesheet/zanata.css
@@ -19,7 +19,7 @@
font-size: larger;
}
-.filter-options {
+.float-right {
float: right;
}
diff --git a/zanata-war/src/main/webapp/version-group/home.xhtml b/zanata-war/src/main/webapp/version-group/home.xhtml
index 9c9b7e07f9..fda5943d9d 100644
--- a/zanata-war/src/main/webapp/version-group/home.xhtml
+++ b/zanata-war/src/main/webapp/version-group/home.xhtml
@@ -36,7 +36,7 @@
-
+
diff --git a/zanata-war/src/main/webapp/version-group/request_to_join.xhtml b/zanata-war/src/main/webapp/version-group/request_to_join.xhtml
index a3606fa109..f17d3ff2a9 100644
--- a/zanata-war/src/main/webapp/version-group/request_to_join.xhtml
+++ b/zanata-war/src/main/webapp/version-group/request_to_join.xhtml
@@ -28,6 +28,7 @@
+
diff --git a/zanata-war/src/main/webapp/version-group/version_group.xhtml b/zanata-war/src/main/webapp/version-group/version_group.xhtml
index f87ce0e74a..120472f314 100644
--- a/zanata-war/src/main/webapp/version-group/version_group.xhtml
+++ b/zanata-war/src/main/webapp/version-group/version_group.xhtml
@@ -49,7 +49,7 @@
#{messages['jsf.Actions']}
+ action="#{versionGroupAction.leaveVersionGroup(_iteration.id)}" reRender="iterationsDataTable, searchResults" />
@@ -93,7 +93,7 @@
-
+
Find Project Version
@@ -103,42 +103,58 @@
-
+
+
+
-
-
-
-
-
- #{messages['jsf.SearchResults']}
-
- #{messages['jsf.ProjectName']}
- #{projectIteration.project.name}
-
-
- #{messages['jsf.Version']}
- #{projectIteration.slug}
-
-
-
- #{messages['jsf.Actions']}
-
-
-
-
-
-
-
-
+
+
+
+
+ #{messages['jsf.SearchResults']}
+
+
+ #{messages['jsf.ProjectName']}
+ #{selectableVersion.projectIteration.project.name}
+
+
+ #{messages['jsf.Version']}
+ #{selectableVersion.projectIteration.slug}
+
+
+
+ #{messages['jsf.Actions']}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+