mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V2.2 to HEAD
7531: Merged V2.1 to V2.2 7397: Fix and improvments to all web-client People pickers - all now search on Username and build Lucene queries rather than XPath. Fixes AWC-853, AWC-935, AWC-1180, AWC-1660 Merge conflicts resolved around query strings and client session cluster changes 7532: Added action to go back to last deployment report in history panel 7533: Moved deploy actions to resources panel header in review task dialog git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8400 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1221,6 +1221,7 @@ deployed_by=By
|
||||
deployment_report_action=View Deployments
|
||||
deployment_report_title=Last Deployment Report
|
||||
deployment_report_desc=View deployment details for each of the servers selected in the last deployment.
|
||||
last_deploy_report=Show Last Deployment Report
|
||||
more_deploy_reports=More Deployment Reports
|
||||
deployment_previous_report_title=Deployment Report for {0}
|
||||
deployment_previous_report_desc=View deployment details for each of the servers selected in the deployment.
|
||||
|
@@ -37,10 +37,12 @@ import javax.faces.model.SelectItem;
|
||||
import javax.transaction.UserTransaction;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.search.impl.lucene.QueryParser;
|
||||
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
||||
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.search.ResultSet;
|
||||
import org.alfresco.service.cmr.search.SearchService;
|
||||
import org.alfresco.service.cmr.security.AuthorityService;
|
||||
import org.alfresco.service.cmr.security.PermissionService;
|
||||
import org.alfresco.service.cmr.security.PersonService;
|
||||
@@ -202,15 +204,21 @@ public class AddUsersDialog extends BaseDialogBean
|
||||
{
|
||||
SelectItem[] items;
|
||||
|
||||
// build xpath to match available User/Person objects
|
||||
ServiceRegistry services = Repository.getServiceRegistry(context);
|
||||
NodeRef peopleRef = getPersonService().getPeopleContainer();
|
||||
String xpath = "*[like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "firstName, '%" + contains +
|
||||
"%', false)" + " or " + "like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" +
|
||||
"lastName, '%" + contains + "%', false)]";
|
||||
|
||||
List<NodeRef> nodes = services.getSearchService().selectNodes(peopleRef, xpath, null,
|
||||
services.getNamespaceService(), false);
|
||||
// Use lucene search to retrieve user details
|
||||
String term = QueryParser.escape(contains.trim());
|
||||
StringBuilder query = new StringBuilder(128);
|
||||
query.append("@").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:firstName:*");
|
||||
query.append(term);
|
||||
query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:lastName:*");
|
||||
query.append(term);
|
||||
query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:userName:");
|
||||
query.append(term);
|
||||
query.append("*");
|
||||
ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query(
|
||||
Repository.getStoreRef(),
|
||||
SearchService.LANGUAGE_LUCENE,
|
||||
query.toString());
|
||||
List<NodeRef> nodes = resultSet.getNodeRefs();
|
||||
|
||||
ArrayList<SelectItem> itemList = new ArrayList<SelectItem>(nodes.size());
|
||||
for (NodeRef personRef : nodes)
|
||||
@@ -221,7 +229,7 @@ public class AddUsersDialog extends BaseDialogBean
|
||||
String firstName = (String)getNodeService().getProperty(personRef, ContentModel.PROP_FIRSTNAME);
|
||||
String lastName = (String)getNodeService().getProperty(personRef, ContentModel.PROP_LASTNAME);
|
||||
|
||||
SelectItem item = new SortableSelectItem(username, firstName + " " + lastName, lastName);
|
||||
SelectItem item = new SortableSelectItem(username, firstName + " " + lastName + " [" + username + "]", lastName);
|
||||
itemList.add(item);
|
||||
}
|
||||
}
|
||||
|
@@ -43,6 +43,7 @@ import org.alfresco.service.cmr.repository.InvalidNodeRefException;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.search.SearchParameters;
|
||||
import org.alfresco.service.cmr.search.SearchService;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.app.context.IContextListener;
|
||||
@@ -320,20 +321,18 @@ public class UsersDialog extends BaseDialogBean implements IContextListener, Cha
|
||||
|
||||
// define the query to find people by their first or last name
|
||||
String search = properties.getSearchCriteria().trim();
|
||||
StringBuilder query = new StringBuilder(256);
|
||||
query.append("TYPE:\"{http://www.alfresco.org/model/content/1.0}person\" AND (");
|
||||
StringBuilder query = new StringBuilder(128);
|
||||
for (StringTokenizer t = new StringTokenizer(search, " "); t.hasMoreTokens(); /**/)
|
||||
{
|
||||
String term = QueryParser.escape(t.nextToken());
|
||||
query.append("((@\\{http\\://www.alfresco.org/model/content/1.0\\}firstName:*");
|
||||
query.append("@").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:firstName:*");
|
||||
query.append(term);
|
||||
query.append("*) OR (@\\{http\\://www.alfresco.org/model/content/1.0\\}lastName:*");
|
||||
query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:lastName:*");
|
||||
query.append(term);
|
||||
query.append("*) OR (@\\{http\\://www.alfresco.org/model/content/1.0\\}userName:");
|
||||
query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:userName:");
|
||||
query.append(term);
|
||||
query.append("*)) "); // final space here is important as default OR separator
|
||||
query.append("*");
|
||||
}
|
||||
query.append(")");
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("Query: " + query.toString());
|
||||
|
@@ -166,6 +166,16 @@ public class ViewDeploymentReportDialog extends BaseDialogBean
|
||||
this.panelExpanded = !this.panelExpanded;
|
||||
}
|
||||
|
||||
/**
|
||||
* Action handler called when user wants to go back to the last report
|
||||
*/
|
||||
public void showLastReport(ActionEvent event)
|
||||
{
|
||||
this.attempt = null;
|
||||
this.attemptDate = null;
|
||||
this.panelExpanded = false;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// Bean getters and setters
|
||||
|
||||
|
@@ -44,6 +44,7 @@ import javax.faces.model.SelectItem;
|
||||
import javax.transaction.UserTransaction;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.search.impl.lucene.QueryParser;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.search.ResultSet;
|
||||
import org.alfresco.service.cmr.search.SearchService;
|
||||
@@ -342,13 +343,20 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
|
||||
|
||||
if (filterIndex == 0)
|
||||
{
|
||||
// build xpath to match available User/Person objects
|
||||
NodeRef peopleRef = getPersonService().getPeopleContainer();
|
||||
|
||||
// Use lucene search to retrieve user details
|
||||
String lucene = "@" + NamespaceService.CONTENT_MODEL_PREFIX + "\\:firstName:*" + contains + "* " +
|
||||
"@" + NamespaceService.CONTENT_MODEL_PREFIX + "\\:lastName:*" + contains + "* ";
|
||||
ResultSet resultSet = getSearchService().query(peopleRef.getStoreRef(), SearchService.LANGUAGE_LUCENE, lucene);
|
||||
String term = QueryParser.escape(contains.trim());
|
||||
StringBuilder query = new StringBuilder(128);
|
||||
query.append("@").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:firstName:*");
|
||||
query.append(term);
|
||||
query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:lastName:*");
|
||||
query.append(term);
|
||||
query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:userName:");
|
||||
query.append(term);
|
||||
query.append("*");
|
||||
ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query(
|
||||
Repository.getStoreRef(),
|
||||
SearchService.LANGUAGE_LUCENE,
|
||||
query.toString());
|
||||
List<NodeRef> nodes = resultSet.getNodeRefs();
|
||||
|
||||
items = new SelectItem[nodes.size()];
|
||||
@@ -369,7 +377,7 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
|
||||
groups.addAll(getAuthorityService().getAllAuthorities(AuthorityType.EVERYONE));
|
||||
|
||||
List<SelectItem> results = new ArrayList<SelectItem>(groups.size());
|
||||
String containsLower = contains.toLowerCase();
|
||||
String containsLower = contains.trim().toLowerCase();
|
||||
int offset = PermissionService.GROUP_PREFIX.length();
|
||||
for (String group : groups)
|
||||
{
|
||||
|
@@ -26,6 +26,7 @@ package org.alfresco.web.bean.workflow;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -38,7 +39,11 @@ import javax.faces.model.SelectItem;
|
||||
import javax.transaction.UserTransaction;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.search.impl.lucene.QueryParser;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.search.ResultSet;
|
||||
import org.alfresco.service.cmr.search.SearchService;
|
||||
import org.alfresco.service.cmr.security.PermissionService;
|
||||
import org.alfresco.service.cmr.security.PersonService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
@@ -164,30 +169,36 @@ public class ReassignTaskDialog extends BaseDialogBean
|
||||
tx = Repository.getUserTransaction(context, true);
|
||||
tx.begin();
|
||||
|
||||
// build xpath to match available User/Person objects
|
||||
NodeRef peopleRef = getPersonService().getPeopleContainer();
|
||||
// NOTE: see SearcherComponentTest
|
||||
String xpath = "*[not(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "userName='guest') and " +
|
||||
"(like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "firstName, '%" + contains + "%', false)" +
|
||||
" or " + "like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "lastName, '%" + contains + "%', false))]";
|
||||
// Use lucene search to retrieve user details
|
||||
String term = QueryParser.escape(contains.trim());
|
||||
StringBuilder query = new StringBuilder(128);
|
||||
query.append("@").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:firstName:*");
|
||||
query.append(term);
|
||||
query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:lastName:*");
|
||||
query.append(term);
|
||||
query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:userName:");
|
||||
query.append(term);
|
||||
query.append("*");
|
||||
ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query(
|
||||
Repository.getStoreRef(),
|
||||
SearchService.LANGUAGE_LUCENE,
|
||||
query.toString());
|
||||
List<NodeRef> nodes = resultSet.getNodeRefs();
|
||||
|
||||
List<NodeRef> nodes = getSearchService().selectNodes(
|
||||
peopleRef,
|
||||
xpath,
|
||||
null,
|
||||
this.getNamespaceService(),
|
||||
false);
|
||||
|
||||
items = new SelectItem[nodes.size()];
|
||||
for (int index=0; index<nodes.size(); index++)
|
||||
ArrayList<SelectItem> itemList = new ArrayList<SelectItem>(nodes.size());
|
||||
for (NodeRef personRef : nodes)
|
||||
{
|
||||
NodeRef personRef = nodes.get(index);
|
||||
String firstName = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_FIRSTNAME);
|
||||
String lastName = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_LASTNAME);
|
||||
String username = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_USERNAME);
|
||||
SelectItem item = new SortableSelectItem(username, firstName + " " + lastName, lastName);
|
||||
items[index] = item;
|
||||
String username = (String) getNodeService().getProperty(personRef, ContentModel.PROP_USERNAME);
|
||||
if (PermissionService.GUEST_AUTHORITY.equals(username) == false)
|
||||
{
|
||||
String firstName = (String) getNodeService().getProperty(personRef, ContentModel.PROP_FIRSTNAME);
|
||||
String lastName = (String) getNodeService().getProperty(personRef, ContentModel.PROP_LASTNAME);
|
||||
SelectItem item = new SortableSelectItem(username, firstName + " " + lastName + " [" + username + "]", lastName);
|
||||
itemList.add(item);
|
||||
}
|
||||
}
|
||||
items = new SelectItem[itemList.size()];
|
||||
itemList.toArray(items);
|
||||
|
||||
Arrays.sort(items);
|
||||
|
||||
|
@@ -26,6 +26,7 @@ package org.alfresco.web.bean.workflow;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -38,7 +39,11 @@ import javax.faces.model.SelectItem;
|
||||
import javax.transaction.UserTransaction;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.search.impl.lucene.QueryParser;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.search.ResultSet;
|
||||
import org.alfresco.service.cmr.search.SearchService;
|
||||
import org.alfresco.service.cmr.security.PermissionService;
|
||||
import org.alfresco.service.cmr.security.PersonService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
@@ -164,29 +169,36 @@ public class ReassignWorkItemDialog extends BaseDialogBean
|
||||
tx = Repository.getUserTransaction(context, true);
|
||||
tx.begin();
|
||||
|
||||
// build xpath to match available User/Person objects
|
||||
NodeRef peopleRef = getPersonService().getPeopleContainer();
|
||||
// NOTE: see SearcherComponentTest
|
||||
String xpath = "*[like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "firstName, '%" + contains + "%', false)" +
|
||||
" or " + "like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "lastName, '%" + contains + "%', false)]";
|
||||
// Use lucene search to retrieve user details
|
||||
String term = QueryParser.escape(contains.trim());
|
||||
StringBuilder query = new StringBuilder(128);
|
||||
query.append("@").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:firstName:*");
|
||||
query.append(term);
|
||||
query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:lastName:*");
|
||||
query.append(term);
|
||||
query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:userName:");
|
||||
query.append(term);
|
||||
query.append("*");
|
||||
ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query(
|
||||
Repository.getStoreRef(),
|
||||
SearchService.LANGUAGE_LUCENE,
|
||||
query.toString());
|
||||
List<NodeRef> nodes = resultSet.getNodeRefs();
|
||||
|
||||
List<NodeRef> nodes = getSearchService().selectNodes(
|
||||
peopleRef,
|
||||
xpath,
|
||||
null,
|
||||
this.getNamespaceService(),
|
||||
false);
|
||||
|
||||
items = new SelectItem[nodes.size()];
|
||||
for (int index=0; index<nodes.size(); index++)
|
||||
ArrayList<SelectItem> itemList = new ArrayList<SelectItem>(nodes.size());
|
||||
for (NodeRef personRef : nodes)
|
||||
{
|
||||
NodeRef personRef = nodes.get(index);
|
||||
String firstName = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_FIRSTNAME);
|
||||
String lastName = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_LASTNAME);
|
||||
String username = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_USERNAME);
|
||||
SelectItem item = new SortableSelectItem(username, firstName + " " + lastName, lastName);
|
||||
items[index] = item;
|
||||
String username = (String) getNodeService().getProperty(personRef, ContentModel.PROP_USERNAME);
|
||||
if (PermissionService.GUEST_AUTHORITY.equals(username) == false)
|
||||
{
|
||||
String firstName = (String) getNodeService().getProperty(personRef, ContentModel.PROP_FIRSTNAME);
|
||||
String lastName = (String) getNodeService().getProperty(personRef, ContentModel.PROP_LASTNAME);
|
||||
SelectItem item = new SortableSelectItem(username, firstName + " " + lastName + " [" + username + "]", lastName);
|
||||
itemList.add(item);
|
||||
}
|
||||
}
|
||||
items = new SelectItem[itemList.size()];
|
||||
itemList.toArray(items);
|
||||
|
||||
Arrays.sort(items);
|
||||
|
||||
|
@@ -34,9 +34,18 @@
|
||||
|
||||
<w:deploymentReports value="#{DialogManager.bean.store}" attempt="#{DialogManager.bean.attempt}" />
|
||||
|
||||
<a:panel id="more-reports-panel" label="#{msg.more_deploy_reports}" progressive="true" styleClass="mainSubTitle"
|
||||
border="innerwhite" bgcolor="white" titleBgcolor="white" expanded="#{DialogManager.bean.panelExpanded}"
|
||||
expandedActionListener="#{DialogManager.bean.panelToggled}">
|
||||
<h:panelGroup id="panel-facets">
|
||||
<f:facet name="title">
|
||||
<a:actionLink id="back-to-last-report" value="#{msg.last_deploy_report}" showLink="false"
|
||||
rendered="#{DialogManager.bean.attempt != null}"
|
||||
image="/images/icons/deployment_report.gif"
|
||||
actionListener="#{DialogManager.bean.showLastReport}" />
|
||||
</f:facet>
|
||||
</h:panelGroup>
|
||||
|
||||
<a:panel id="more-reports-panel" label="#{msg.more_deploy_reports}" progressive="true" facetsId="dialog-body:panel-facets"
|
||||
styleClass="mainSubTitle" border="innerwhite" bgcolor="white" titleBgcolor="white"
|
||||
expanded="#{DialogManager.bean.panelExpanded}" expandedActionListener="#{DialogManager.bean.panelToggled}">
|
||||
|
||||
<h:outputText value="<div class='deployMoreReportsPanel'>" escape="false" />
|
||||
<h:panelGrid id="more-reports-filter" columns="2" styleClass="deployMoreReportsList" width="100%" columnClasses=",rightHandColumn">
|
||||
@@ -53,7 +62,7 @@
|
||||
</h:panelGrid>
|
||||
|
||||
<w:deploymentReports id="more-reports-list" value="#{DialogManager.bean.store}" showPrevious="true"
|
||||
dateFilter="#{DialogManager.bean.dateFilter}" />
|
||||
dateFilter="#{DialogManager.bean.dateFilter}" />
|
||||
<h:outputText value="</div>" escape="false" />
|
||||
|
||||
</a:panel>
|
||||
|
@@ -62,17 +62,22 @@
|
||||
|
||||
<h:outputText id="padding3" styleClass="paddingRow" value=" " escape="false" />
|
||||
|
||||
<a:panel id="resources-panel" label="#{msg.resources}"
|
||||
border="white" bgcolor="white" titleBorder="lbgrey" expandedTitleBorder="dotted" titleBgcolor="white" styleClass="mainSubTitle">
|
||||
|
||||
<h:panelGroup id="resources-actions" styleClass="deployReviewTaskActions">
|
||||
<a:actionLink id="resources-action1" value="#{msg.sandbox_deploy}" image="/images/icons/deploy.gif"
|
||||
action="#{DialogManager.bean.deploy}"
|
||||
rendered="#{DialogManager.bean.testServersAvailable}" />
|
||||
<a:actionLink id="resources-action2" value="#{msg.deployment_report_action}" image="/images/icons/deployment_report.gif"
|
||||
action="#{DialogManager.bean.viewDeployReport}"
|
||||
rendered="#{DialogManager.bean.deployAttempted}" />
|
||||
</h:panelGroup>
|
||||
<h:panelGroup id="resources-panel-facets">
|
||||
<f:facet name="title">
|
||||
<h:panelGroup id="resources-actions" styleClass="deployReviewTaskActions">
|
||||
<a:actionLink id="resources-action1" value="#{msg.sandbox_deploy}" image="/images/icons/deploy.gif"
|
||||
action="#{DialogManager.bean.deploy}" showLink="false"
|
||||
rendered="#{DialogManager.bean.testServersAvailable}" />
|
||||
<a:actionLink id="resources-action2" value="#{msg.deployment_report_action}" image="/images/icons/deployment_report.gif"
|
||||
action="#{DialogManager.bean.viewDeployReport}" showLink="false"
|
||||
rendered="#{DialogManager.bean.deployAttempted}" />
|
||||
</h:panelGroup>
|
||||
</f:facet>
|
||||
</h:panelGroup>
|
||||
|
||||
<a:panel id="resources-panel" label="#{msg.resources}" facetsId="dialog-body:resources-panel-facets"
|
||||
border="white" bgcolor="white" titleBorder="lbgrey" expandedTitleBorder="dotted" titleBgcolor="white"
|
||||
styleClass="mainSubTitle">
|
||||
|
||||
<h:outputText value="<div>#{msg.no_resources}</div>" rendered="#{empty DialogManager.bean.resources}" />
|
||||
|
||||
|
Reference in New Issue
Block a user