mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V2.1-A to HEAD
8403: Fix for ADB-33 8586: Fix for ADB-33 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@9192 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -602,6 +602,8 @@ space_owner=User ''{0}'' is the current owner of this space.
|
|||||||
users_and_groups=Users and Groups
|
users_and_groups=Users and Groups
|
||||||
authority=Username
|
authority=Username
|
||||||
invite_users_summary=Users and Roles
|
invite_users_summary=Users and Roles
|
||||||
|
too_many_users=Too many users matched by your search. Please narrow your search and try again.
|
||||||
|
max_users_returned=Search has been limited to show first {0} results.
|
||||||
|
|
||||||
# Invite Content Users Wizard messages
|
# Invite Content Users Wizard messages
|
||||||
invite_content_title=Invite Content Users Wizard
|
invite_content_title=Invite Content Users Wizard
|
||||||
|
@@ -51,6 +51,9 @@
|
|||||||
<!-- Limit search results within selectors, -1 for unlimited. -->
|
<!-- Limit search results within selectors, -1 for unlimited. -->
|
||||||
<selectors-search-max-results>500</selectors-search-max-results>
|
<selectors-search-max-results>500</selectors-search-max-results>
|
||||||
|
|
||||||
|
<!-- Limit search results within invite users wizard, -1 for unlimited. -->
|
||||||
|
<invite-users-max-results>500</invite-users-max-results>
|
||||||
|
|
||||||
<!-- The path to starting point when creating/finding home folders for new users in the UI -->
|
<!-- The path to starting point when creating/finding home folders for new users in the UI -->
|
||||||
<default-home-space-path>/app:company_home/app:user_homes</default-home-space-path>
|
<default-home-space-path>/app:company_home/app:user_homes</default-home-space-path>
|
||||||
|
|
||||||
|
@@ -54,6 +54,7 @@ import org.alfresco.web.bean.repository.Repository;
|
|||||||
import org.alfresco.web.ui.common.SortableSelectItem;
|
import org.alfresco.web.ui.common.SortableSelectItem;
|
||||||
import org.alfresco.web.ui.common.Utils;
|
import org.alfresco.web.ui.common.Utils;
|
||||||
import org.alfresco.web.ui.common.component.UIGenericPicker;
|
import org.alfresco.web.ui.common.component.UIGenericPicker;
|
||||||
|
import org.apache.lucene.search.BooleanQuery;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of the add user dialog.
|
* Implementation of the add user dialog.
|
||||||
@@ -244,6 +245,15 @@ public class AddUsersDialog extends BaseDialogBean
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
catch (BooleanQuery.TooManyClauses clauses)
|
||||||
|
{
|
||||||
|
Utils.addErrorMessage(Application.getMessage(
|
||||||
|
FacesContext.getCurrentInstance(), "too_many_users"));
|
||||||
|
|
||||||
|
try { if (tx != null) {tx.rollback();} } catch (Exception tex) {}
|
||||||
|
|
||||||
|
return new SelectItem[0];
|
||||||
|
}
|
||||||
catch (Exception err)
|
catch (Exception err)
|
||||||
{
|
{
|
||||||
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
|
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
|
||||||
|
@@ -46,7 +46,9 @@ import javax.transaction.UserTransaction;
|
|||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.search.impl.lucene.QueryParser;
|
import org.alfresco.repo.search.impl.lucene.QueryParser;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.search.LimitBy;
|
||||||
import org.alfresco.service.cmr.search.ResultSet;
|
import org.alfresco.service.cmr.search.ResultSet;
|
||||||
|
import org.alfresco.service.cmr.search.SearchParameters;
|
||||||
import org.alfresco.service.cmr.search.SearchService;
|
import org.alfresco.service.cmr.search.SearchService;
|
||||||
import org.alfresco.service.cmr.security.AuthorityService;
|
import org.alfresco.service.cmr.security.AuthorityService;
|
||||||
import org.alfresco.service.cmr.security.AuthorityType;
|
import org.alfresco.service.cmr.security.AuthorityType;
|
||||||
@@ -61,6 +63,9 @@ import org.alfresco.web.bean.repository.User;
|
|||||||
import org.alfresco.web.ui.common.SortableSelectItem;
|
import org.alfresco.web.ui.common.SortableSelectItem;
|
||||||
import org.alfresco.web.ui.common.Utils;
|
import org.alfresco.web.ui.common.Utils;
|
||||||
import org.alfresco.web.ui.common.component.UIGenericPicker;
|
import org.alfresco.web.ui.common.component.UIGenericPicker;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.apache.lucene.search.BooleanQuery;
|
||||||
import org.springframework.mail.javamail.JavaMailSender;
|
import org.springframework.mail.javamail.JavaMailSender;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -72,12 +77,15 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
|
|||||||
{
|
{
|
||||||
private static final long serialVersionUID = -5145813383038390250L;
|
private static final long serialVersionUID = -5145813383038390250L;
|
||||||
|
|
||||||
|
private final static Log logger = LogFactory.getLog(BaseInviteUsersWizard.class);
|
||||||
|
|
||||||
/** I18N message strings */
|
/** I18N message strings */
|
||||||
protected static final String MSG_USERROLES = "invite_users_summary";
|
protected static final String MSG_USERROLES = "invite_users_summary";
|
||||||
private static final String MSG_USERS = "users";
|
private static final String MSG_USERS = "users";
|
||||||
private static final String MSG_GROUPS = "groups";
|
private static final String MSG_GROUPS = "groups";
|
||||||
private static final String MSG_INVITED_TO = "invited_to";
|
private static final String MSG_INVITED_TO = "invited_to";
|
||||||
private static final String MSG_INVITED_ROLE = "invite_role";
|
private static final String MSG_INVITED_ROLE = "invite_role";
|
||||||
|
private static final String MSG_MAX_USERS = "max_users_returned";
|
||||||
|
|
||||||
protected static final String STEP_NOTIFY = "notify";
|
protected static final String STEP_NOTIFY = "notify";
|
||||||
|
|
||||||
@@ -111,6 +119,9 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
|
|||||||
/** True to allow duplicate authorities (with a different role) */
|
/** True to allow duplicate authorities (with a different role) */
|
||||||
protected boolean allowDuplicateAuthorities = true;
|
protected boolean allowDuplicateAuthorities = true;
|
||||||
|
|
||||||
|
/** Flag to determine if the maximum number of users have been returned */
|
||||||
|
protected boolean maxUsersReturned = false;
|
||||||
|
|
||||||
/** dialog state */
|
/** dialog state */
|
||||||
private String notify = NOTIFY_NO;
|
private String notify = NOTIFY_NO;
|
||||||
|
|
||||||
@@ -208,6 +219,7 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
|
|||||||
{
|
{
|
||||||
super.init(parameters);
|
super.init(parameters);
|
||||||
|
|
||||||
|
maxUsersReturned = false;
|
||||||
notify = NOTIFY_NO;
|
notify = NOTIFY_NO;
|
||||||
userRolesDataModel = null;
|
userRolesDataModel = null;
|
||||||
userGroupRoles = new ArrayList<UserGroupRole>(8);
|
userGroupRoles = new ArrayList<UserGroupRole>(8);
|
||||||
@@ -339,6 +351,7 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
|
|||||||
FacesContext context = FacesContext.getCurrentInstance();
|
FacesContext context = FacesContext.getCurrentInstance();
|
||||||
|
|
||||||
SelectItem[] items;
|
SelectItem[] items;
|
||||||
|
this.maxUsersReturned = false;
|
||||||
|
|
||||||
UserTransaction tx = null;
|
UserTransaction tx = null;
|
||||||
try
|
try
|
||||||
@@ -360,11 +373,32 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
|
|||||||
query.append("*\" @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:userName:");
|
query.append("*\" @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:userName:");
|
||||||
query.append(term);
|
query.append(term);
|
||||||
query.append("*");
|
query.append("*");
|
||||||
ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query(
|
|
||||||
Repository.getStoreRef(),
|
int maxResults = Application.getClientConfig(context).getInviteUsersMaxResults();
|
||||||
SearchService.LANGUAGE_LUCENE,
|
|
||||||
query.toString());
|
if (logger.isDebugEnabled())
|
||||||
List<NodeRef> nodes = resultSet.getNodeRefs();
|
{
|
||||||
|
logger.debug("Maximum invite users results size: " + maxResults);
|
||||||
|
}
|
||||||
|
|
||||||
|
SearchParameters searchParams = new SearchParameters();
|
||||||
|
searchParams.addStore(Repository.getStoreRef());
|
||||||
|
searchParams.setLanguage(SearchService.LANGUAGE_LUCENE);
|
||||||
|
searchParams.setQuery(query.toString());
|
||||||
|
if (maxResults > 0)
|
||||||
|
{
|
||||||
|
searchParams.setLimit(maxResults);
|
||||||
|
searchParams.setLimitBy(LimitBy.FINAL_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query(searchParams);
|
||||||
|
List<NodeRef> nodes = resultSet.getNodeRefs();
|
||||||
|
|
||||||
|
// set the maximum users returned flag if appropriate
|
||||||
|
if (nodes.size() == maxResults)
|
||||||
|
{
|
||||||
|
this.maxUsersReturned = true;
|
||||||
|
}
|
||||||
|
|
||||||
for (int index=0; index<nodes.size(); index++)
|
for (int index=0; index<nodes.size(); index++)
|
||||||
{
|
{
|
||||||
@@ -403,6 +437,15 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
|
|||||||
// commit the transaction
|
// commit the transaction
|
||||||
tx.commit();
|
tx.commit();
|
||||||
}
|
}
|
||||||
|
catch (BooleanQuery.TooManyClauses clauses)
|
||||||
|
{
|
||||||
|
Utils.addErrorMessage(Application.getMessage(
|
||||||
|
FacesContext.getCurrentInstance(), "too_many_users"));
|
||||||
|
|
||||||
|
try { if (tx != null) {tx.rollback();} } catch (Exception tex) {}
|
||||||
|
|
||||||
|
items = new SelectItem[0];
|
||||||
|
}
|
||||||
catch (Throwable err)
|
catch (Throwable err)
|
||||||
{
|
{
|
||||||
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
|
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
|
||||||
@@ -662,6 +705,28 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
|
|||||||
new String[] {buf.toString()});
|
new String[] {buf.toString()});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return flag to indicate whether maximum users have been returned
|
||||||
|
*/
|
||||||
|
public boolean getHaveMaximumUsersBeenReturned()
|
||||||
|
{
|
||||||
|
return this.maxUsersReturned;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Message to display when the maximum number of users have been returned
|
||||||
|
*/
|
||||||
|
public String getMaximumUsersMsg()
|
||||||
|
{
|
||||||
|
FacesContext context = FacesContext.getCurrentInstance();
|
||||||
|
|
||||||
|
String pattern = Application.getMessage(context, MSG_MAX_USERS);
|
||||||
|
String msg = MessageFormat.format(pattern,
|
||||||
|
Application.getClientConfig(context).getInviteUsersMaxResults());
|
||||||
|
|
||||||
|
return Utils.encode(msg);
|
||||||
|
}
|
||||||
|
|
||||||
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
|
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
|
||||||
{
|
{
|
||||||
in.defaultReadObject();
|
in.defaultReadObject();
|
||||||
|
@@ -64,6 +64,7 @@ public class ClientConfigElement extends ConfigElementAdapter
|
|||||||
private boolean forceAndTerms = false;
|
private boolean forceAndTerms = false;
|
||||||
private int searchMaxResults = -1;
|
private int searchMaxResults = -1;
|
||||||
private int selectorsSearchMaxResults = 500;
|
private int selectorsSearchMaxResults = 500;
|
||||||
|
private int inviteUsersMaxResults = 500;
|
||||||
private String helpUrl = null;
|
private String helpUrl = null;
|
||||||
private String editLinkType = "http";
|
private String editLinkType = "http";
|
||||||
private String homeSpacePermission = null;
|
private String homeSpacePermission = null;
|
||||||
@@ -185,6 +186,11 @@ public class ClientConfigElement extends ConfigElementAdapter
|
|||||||
combinedElement.setSelectorsSearchMaxResults(newElement.getSelectorsSearchMaxResults());
|
combinedElement.setSelectorsSearchMaxResults(newElement.getSelectorsSearchMaxResults());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (newElement.getInviteUsersMaxResults() != combinedElement.getInviteUsersMaxResults())
|
||||||
|
{
|
||||||
|
combinedElement.setInviteUsersMaxResults(newElement.getInviteUsersMaxResults());
|
||||||
|
}
|
||||||
|
|
||||||
if (newElement.isShelfVisible() != combinedElement.isShelfVisible())
|
if (newElement.isShelfVisible() != combinedElement.isShelfVisible())
|
||||||
{
|
{
|
||||||
combinedElement.setShelfVisible(newElement.isShelfVisible());
|
combinedElement.setShelfVisible(newElement.isShelfVisible());
|
||||||
@@ -474,6 +480,29 @@ public class ClientConfigElement extends ConfigElementAdapter
|
|||||||
{
|
{
|
||||||
this.selectorsSearchMaxResults = selectorsSearchMaxResults;
|
this.selectorsSearchMaxResults = selectorsSearchMaxResults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If positive, this will limit the size of the result set from the
|
||||||
|
* invite users wizard.
|
||||||
|
*
|
||||||
|
* @return The maximum number of results to display
|
||||||
|
*/
|
||||||
|
public int getInviteUsersMaxResults()
|
||||||
|
{
|
||||||
|
return this.inviteUsersMaxResults;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set if the the result set from a search for the invite users wizard
|
||||||
|
* will be of limited size. If negative it is unlimited, by default,
|
||||||
|
* this is set to 500.
|
||||||
|
*
|
||||||
|
* @param inviteUsersMaxResults
|
||||||
|
*/
|
||||||
|
/*package*/ void setInviteUsersMaxResults(int inviteUsersMaxResults)
|
||||||
|
{
|
||||||
|
this.inviteUsersMaxResults = inviteUsersMaxResults;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Returns the default Home Space permissions.
|
* @return Returns the default Home Space permissions.
|
||||||
|
@@ -50,6 +50,7 @@ public class ClientElementReader implements ConfigElementReader
|
|||||||
public static final String ELEMENT_SEARCHANDTERMS = "search-and-terms";
|
public static final String ELEMENT_SEARCHANDTERMS = "search-and-terms";
|
||||||
public static final String ELEMENT_SEARCHMAXRESULTS = "search-max-results";
|
public static final String ELEMENT_SEARCHMAXRESULTS = "search-max-results";
|
||||||
public static final String ELEMENT_SELECTORSSEARCHMAXRESULTS = "selectors-search-max-results";
|
public static final String ELEMENT_SELECTORSSEARCHMAXRESULTS = "selectors-search-max-results";
|
||||||
|
public static final String ELEMENT_INVITESEARCHMAXRESULTS = "invite-users-max-results";
|
||||||
public static final String ELEMENT_HOMESPACEPERMISSION = "home-space-permission";
|
public static final String ELEMENT_HOMESPACEPERMISSION = "home-space-permission";
|
||||||
public static final String ELEMENT_FROMEMAILADDRESS = "from-email-address";
|
public static final String ELEMENT_FROMEMAILADDRESS = "from-email-address";
|
||||||
public static final String ELEMENT_SHELFVISIBLE = "shelf-visible";
|
public static final String ELEMENT_SHELFVISIBLE = "shelf-visible";
|
||||||
@@ -143,6 +144,14 @@ public class ClientElementReader implements ConfigElementReader
|
|||||||
Integer.parseInt(selectorsSearchMaxResults.getTextTrim()));
|
Integer.parseInt(selectorsSearchMaxResults.getTextTrim()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get the invite users max results size
|
||||||
|
Element inviteUsersMaxResults = element.element(ELEMENT_INVITESEARCHMAXRESULTS);
|
||||||
|
if (inviteUsersMaxResults != null)
|
||||||
|
{
|
||||||
|
configElement.setInviteUsersMaxResults(
|
||||||
|
Integer.parseInt(inviteUsersMaxResults.getTextTrim()));
|
||||||
|
}
|
||||||
|
|
||||||
// get the default permission for newly created users Home Spaces
|
// get the default permission for newly created users Home Spaces
|
||||||
Element permission = element.element(ELEMENT_HOMESPACEPERMISSION);
|
Element permission = element.element(ELEMENT_HOMESPACEPERMISSION);
|
||||||
if (permission != null)
|
if (permission != null)
|
||||||
|
@@ -29,6 +29,20 @@
|
|||||||
|
|
||||||
<%@ page buffer="32kb" contentType="text/html;charset=UTF-8" %>
|
<%@ page buffer="32kb" contentType="text/html;charset=UTF-8" %>
|
||||||
<%@ page isELIgnored="false" %>
|
<%@ page isELIgnored="false" %>
|
||||||
|
<%@ page import="org.alfresco.web.ui.common.PanelGenerator" %>
|
||||||
|
<%@ page import="org.alfresco.web.ui.common.Utils" %>
|
||||||
|
|
||||||
|
<h:panelGroup rendered="#{WizardManager.bean.haveMaximumUsersBeenReturned}">
|
||||||
|
<f:verbatim>
|
||||||
|
<% PanelGenerator.generatePanelStart(out, request.getContextPath(), "yellowInner", "#ffffcc"); %>
|
||||||
|
<img src='<%=request.getContextPath()%>/images/icons/info_icon.gif' align='absmiddle' />
|
||||||
|
</f:verbatim>
|
||||||
|
<h:outputText id="infoMsg" value="#{WizardManager.bean.maximumUsersMsg}" />
|
||||||
|
<f:verbatim>
|
||||||
|
<% PanelGenerator.generatePanelEnd(out, request.getContextPath(), "yellowInner");
|
||||||
|
out.write("<div style='padding:2px;'></div>"); %>
|
||||||
|
</f:verbatim>
|
||||||
|
</h:panelGroup>
|
||||||
|
|
||||||
<h:panelGrid columns="1" cellpadding="2" style="padding-top:2px; padding-bottom:2px;" width="100%">
|
<h:panelGrid columns="1" cellpadding="2" style="padding-top:2px; padding-bottom:2px;" width="100%">
|
||||||
<h:outputText styleClass="mainSubText" value="#{msg.specify_usersgroups}" />
|
<h:outputText styleClass="mainSubText" value="#{msg.specify_usersgroups}" />
|
||||||
|
Reference in New Issue
Block a user