mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merged V1.3 to HEAD(3126:3160)
svn merge svn://www.alfresco.org:3691/alfresco/BRANCHES/V1.3@3126 svn://www.alfresco.org:3691/alfresco/BRANCHES/V1.3@3160 . git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3405 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -26,6 +26,7 @@ import javax.faces.context.FacesContext;
|
|||||||
|
|
||||||
import org.alfresco.config.Config;
|
import org.alfresco.config.Config;
|
||||||
import org.alfresco.config.ConfigService;
|
import org.alfresco.config.ConfigService;
|
||||||
|
import org.alfresco.web.app.servlet.ExternalAccessServlet;
|
||||||
import org.alfresco.web.bean.NavigationBean;
|
import org.alfresco.web.bean.NavigationBean;
|
||||||
import org.alfresco.web.bean.dialog.DialogManager;
|
import org.alfresco.web.bean.dialog.DialogManager;
|
||||||
import org.alfresco.web.bean.repository.Node;
|
import org.alfresco.web.bean.repository.Node;
|
||||||
@@ -623,14 +624,28 @@ public class AlfrescoNavigationHandler extends NavigationHandler
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// we are trying to close a dialog when one hasn't been opened!
|
// the details pages can be loaded via the external access servlet,
|
||||||
// log a warning and return a null outcome to stay on the same page
|
// if this is the case the details page would not have been loaded as
|
||||||
if (logger.isWarnEnabled())
|
// a dialog, in this scenario just use the global "browse" outcome.
|
||||||
|
String referer = (String)context.getExternalContext().
|
||||||
|
getRequestHeaderMap().get("referer");
|
||||||
|
if ((referer != null) &&
|
||||||
|
((referer.indexOf(ExternalAccessServlet.OUTCOME_DOCDETAILS) != -1) ||
|
||||||
|
(referer.indexOf(ExternalAccessServlet.OUTCOME_SPACEDETAILS) != -1)))
|
||||||
{
|
{
|
||||||
logger.warn("Attempting to close a " + closingItem + " with an empty view stack, returning null outcome");
|
navigate(context, fromAction, "browse");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// we are trying to close a dialog when one hasn't been opened!
|
||||||
|
// log a warning and return a null outcome to stay on the same page
|
||||||
|
if (logger.isWarnEnabled())
|
||||||
|
{
|
||||||
|
logger.warn("Attempting to close a " + closingItem + " with an empty view stack, returning null outcome");
|
||||||
|
}
|
||||||
|
|
||||||
|
navigate(context, fromAction, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
navigate(context, fromAction, null);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -62,11 +62,11 @@ public class ExternalAccessServlet extends BaseServlet
|
|||||||
|
|
||||||
private static Log logger = LogFactory.getLog(ExternalAccessServlet.class);
|
private static Log logger = LogFactory.getLog(ExternalAccessServlet.class);
|
||||||
|
|
||||||
private final static String OUTCOME_DOCDETAILS = "showDocDetails";
|
public final static String OUTCOME_DOCDETAILS = "showDocDetails";
|
||||||
private final static String OUTCOME_SPACEDETAILS = "showSpaceDetails";
|
public final static String OUTCOME_SPACEDETAILS = "showSpaceDetails";
|
||||||
private final static String OUTCOME_BROWSE = "browse";
|
public final static String OUTCOME_BROWSE = "browse";
|
||||||
private final static String OUTCOME_MYALFRESCO = "myalfresco";
|
public final static String OUTCOME_MYALFRESCO = "myalfresco";
|
||||||
private final static String OUTCOME_LOGOUT = "logout";
|
public final static String OUTCOME_LOGOUT = "logout";
|
||||||
|
|
||||||
private static final String ARG_TEMPLATE = "template";
|
private static final String ARG_TEMPLATE = "template";
|
||||||
private static final String ARG_PAGE = "page";
|
private static final String ARG_PAGE = "page";
|
||||||
|
@@ -57,6 +57,7 @@ import org.alfresco.service.namespace.NamespaceService;
|
|||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.service.namespace.RegexQNamePattern;
|
import org.alfresco.service.namespace.RegexQNamePattern;
|
||||||
import org.alfresco.util.CachingDateFormat;
|
import org.alfresco.util.CachingDateFormat;
|
||||||
|
import org.alfresco.util.ISO9075;
|
||||||
import org.alfresco.web.app.Application;
|
import org.alfresco.web.app.Application;
|
||||||
import org.alfresco.web.bean.SearchContext.RangeProperties;
|
import org.alfresco.web.bean.SearchContext.RangeProperties;
|
||||||
import org.alfresco.web.bean.repository.MapNode;
|
import org.alfresco.web.bean.repository.MapNode;
|
||||||
@@ -1375,7 +1376,8 @@ public class AdvancedSearchBean
|
|||||||
{
|
{
|
||||||
FacesContext fc = FacesContext.getCurrentInstance();
|
FacesContext fc = FacesContext.getCurrentInstance();
|
||||||
User user = Application.getCurrentUser(fc);
|
User user = Application.getCurrentUser(fc);
|
||||||
String xpath = NamespaceService.APP_MODEL_PREFIX + ":" + QName.createValidLocalName(user.getUserName());
|
String userName = ISO9075.encode(user.getUserName());
|
||||||
|
String xpath = NamespaceService.APP_MODEL_PREFIX + ":" + QName.createValidLocalName(userName);
|
||||||
|
|
||||||
List<NodeRef> results = null;
|
List<NodeRef> results = null;
|
||||||
try
|
try
|
||||||
|
@@ -35,6 +35,7 @@ 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.AuthenticationService;
|
import org.alfresco.service.cmr.security.AuthenticationService;
|
||||||
import org.alfresco.service.cmr.security.PersonService;
|
import org.alfresco.service.cmr.security.PersonService;
|
||||||
|
import org.alfresco.util.ISO9075;
|
||||||
import org.alfresco.web.app.Application;
|
import org.alfresco.web.app.Application;
|
||||||
import org.alfresco.web.app.context.IContextListener;
|
import org.alfresco.web.app.context.IContextListener;
|
||||||
import org.alfresco.web.app.context.UIContextService;
|
import org.alfresco.web.app.context.UIContextService;
|
||||||
@@ -413,10 +414,11 @@ public class UsersBean implements IContextListener
|
|||||||
tx.begin();
|
tx.begin();
|
||||||
|
|
||||||
// define the query to find people by their first or last name
|
// define the query to find people by their first or last name
|
||||||
|
String search = ISO9075.encode(this.searchCriteria);
|
||||||
String query = "( TYPE:\"{http://www.alfresco.org/model/content/1.0}person\") AND " +
|
String query = "( TYPE:\"{http://www.alfresco.org/model/content/1.0}person\") AND " +
|
||||||
"((@\\{http\\://www.alfresco.org/model/content/1.0\\}firstName:" + this.searchCriteria +
|
"((@\\{http\\://www.alfresco.org/model/content/1.0\\}firstName:" + search +
|
||||||
"*) OR (@\\{http\\://www.alfresco.org/model/content/1.0\\}lastName:" + this.searchCriteria +
|
"*) OR (@\\{http\\://www.alfresco.org/model/content/1.0\\}lastName:" + search +
|
||||||
"*) OR (@\\{http\\://www.alfresco.org/model/content/1.0\\}userName:" + this.searchCriteria +
|
"*) OR (@\\{http\\://www.alfresco.org/model/content/1.0\\}userName:" + search +
|
||||||
"*)))";
|
"*)))";
|
||||||
|
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
|
@@ -50,6 +50,7 @@ public class ImagePickerRadioRenderer extends BaseRenderer
|
|||||||
private int columns;
|
private int columns;
|
||||||
private int position;
|
private int position;
|
||||||
private boolean open;
|
private boolean open;
|
||||||
|
private boolean imageSelected = false;
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
// Renderer implemenation
|
// Renderer implemenation
|
||||||
@@ -89,6 +90,7 @@ public class ImagePickerRadioRenderer extends BaseRenderer
|
|||||||
this.columns = 1;
|
this.columns = 1;
|
||||||
this.position = 0;
|
this.position = 0;
|
||||||
this.open = false;
|
this.open = false;
|
||||||
|
this.imageSelected = false;
|
||||||
|
|
||||||
ResponseWriter out = context.getResponseWriter();
|
ResponseWriter out = context.getResponseWriter();
|
||||||
|
|
||||||
@@ -210,6 +212,14 @@ public class ImagePickerRadioRenderer extends BaseRenderer
|
|||||||
|
|
||||||
ResponseWriter out = context.getResponseWriter();
|
ResponseWriter out = context.getResponseWriter();
|
||||||
out.write("</table>");
|
out.write("</table>");
|
||||||
|
|
||||||
|
// if we didn't select any image, default to the first one
|
||||||
|
if (this.imageSelected == false)
|
||||||
|
{
|
||||||
|
out.write("\n<script type='text/javascript'>document.getElementById('");
|
||||||
|
out.write(component.getClientId(context));
|
||||||
|
out.write("').checked = true;</script>\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -275,6 +285,7 @@ public class ImagePickerRadioRenderer extends BaseRenderer
|
|||||||
if (itemValue != null && itemValue.equals(currentValue))
|
if (itemValue != null && itemValue.equals(currentValue))
|
||||||
{
|
{
|
||||||
out.write(" checked='true'");
|
out.write(" checked='true'");
|
||||||
|
this.imageSelected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tooltip != null)
|
if (tooltip != null)
|
||||||
|
@@ -32,6 +32,7 @@ import javax.faces.event.AbortProcessingException;
|
|||||||
import javax.faces.event.ActionEvent;
|
import javax.faces.event.ActionEvent;
|
||||||
import javax.faces.event.FacesEvent;
|
import javax.faces.event.FacesEvent;
|
||||||
|
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.service.cmr.dictionary.AssociationDefinition;
|
import org.alfresco.service.cmr.dictionary.AssociationDefinition;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
@@ -698,9 +699,17 @@ public abstract class BaseAssociationEditor extends UIInput
|
|||||||
}
|
}
|
||||||
out.write("'>");
|
out.write("'>");
|
||||||
|
|
||||||
out.write(Repository.getDisplayPath(nodeService.getPath(targetRef)));
|
if (ContentModel.TYPE_PERSON.equals(nodeService.getType(targetRef)))
|
||||||
out.write("/");
|
{
|
||||||
out.write(Repository.getNameForNode(nodeService, targetRef));
|
out.write((String)nodeService.getProperty(targetRef, ContentModel.PROP_USERNAME));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
out.write(Repository.getDisplayPath(nodeService.getPath(targetRef)));
|
||||||
|
out.write("/");
|
||||||
|
out.write(Repository.getNameForNode(nodeService, targetRef));
|
||||||
|
}
|
||||||
|
|
||||||
out.write("</td><td class='");
|
out.write("</td><td class='");
|
||||||
if (this.highlightedRow)
|
if (this.highlightedRow)
|
||||||
{
|
{
|
||||||
@@ -815,9 +824,17 @@ public abstract class BaseAssociationEditor extends UIInput
|
|||||||
out.write("<option value='");
|
out.write("<option value='");
|
||||||
out.write(item.getId());
|
out.write(item.getId());
|
||||||
out.write("'>");
|
out.write("'>");
|
||||||
out.write(Repository.getDisplayPath(nodeService.getPath(item)));
|
// if the node represents a person, show the username instead of the name
|
||||||
out.write("/");
|
if (ContentModel.TYPE_PERSON.equals(nodeService.getType(item)))
|
||||||
out.write(Repository.getNameForNode(nodeService, item));
|
{
|
||||||
|
out.write((String)nodeService.getProperty(item, ContentModel.PROP_USERNAME));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
out.write(Repository.getDisplayPath(nodeService.getPath(item)));
|
||||||
|
out.write("/");
|
||||||
|
out.write(Repository.getNameForNode(nodeService, item));
|
||||||
|
}
|
||||||
out.write("</option>");
|
out.write("</option>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -852,17 +869,31 @@ public abstract class BaseAssociationEditor extends UIInput
|
|||||||
if (assocDef != null)
|
if (assocDef != null)
|
||||||
{
|
{
|
||||||
// find and show all the available options for the current association
|
// find and show all the available options for the current association
|
||||||
|
String type = assocDef.getTargetClass().getName().toString();
|
||||||
StringBuilder query = new StringBuilder("+TYPE:\"");
|
StringBuilder query = new StringBuilder("+TYPE:\"");
|
||||||
query.append(assocDef.getTargetClass().getName().toString());
|
query.append(type);
|
||||||
query.append("\"");
|
query.append("\"");
|
||||||
|
|
||||||
if (contains != null && contains.length() > 0)
|
if (contains != null && contains.length() > 0)
|
||||||
{
|
{
|
||||||
String safeContains = Utils.remove(contains.trim(), "\"");
|
String safeContains = Utils.remove(contains.trim(), "\"");
|
||||||
String nameAttr = Repository.escapeQName(QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "name"));
|
|
||||||
|
|
||||||
query.append(" AND +@");
|
query.append(" AND +@");
|
||||||
query.append(nameAttr);
|
|
||||||
|
// if the association's target is the person type search on the
|
||||||
|
// username instead of the name property
|
||||||
|
if (type.equals(ContentModel.TYPE_PERSON.toString()))
|
||||||
|
{
|
||||||
|
String userName = Repository.escapeQName(QName.createQName(
|
||||||
|
NamespaceService.CONTENT_MODEL_1_0_URI, "userName"));
|
||||||
|
query.append(userName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String nameAttr = Repository.escapeQName(QName.createQName(
|
||||||
|
NamespaceService.CONTENT_MODEL_1_0_URI, "name"));
|
||||||
|
query.append(nameAttr);
|
||||||
|
}
|
||||||
|
|
||||||
query.append(":*" + safeContains + "*");
|
query.append(":*" + safeContains + "*");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -26,6 +26,7 @@ import java.util.Map;
|
|||||||
import javax.faces.context.FacesContext;
|
import javax.faces.context.FacesContext;
|
||||||
import javax.faces.context.ResponseWriter;
|
import javax.faces.context.ResponseWriter;
|
||||||
|
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
@@ -152,9 +153,18 @@ public class UIAssociationEditor extends BaseAssociationEditor
|
|||||||
{
|
{
|
||||||
out.write("<tr><td>");
|
out.write("<tr><td>");
|
||||||
AssociationRef assoc = (AssociationRef)iter.next();
|
AssociationRef assoc = (AssociationRef)iter.next();
|
||||||
out.write(Repository.getDisplayPath(nodeService.getPath(assoc.getTargetRef())));
|
NodeRef targetNode = assoc.getTargetRef();
|
||||||
out.write("/");
|
// if the node represents a person, show the username instead of the name
|
||||||
out.write(Repository.getNameForNode(nodeService, assoc.getTargetRef()));
|
if (ContentModel.TYPE_PERSON.equals(nodeService.getType(targetNode)))
|
||||||
|
{
|
||||||
|
out.write((String)nodeService.getProperty(targetNode, ContentModel.PROP_USERNAME));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
out.write(Repository.getDisplayPath(nodeService.getPath(targetNode)));
|
||||||
|
out.write("/");
|
||||||
|
out.write(Repository.getNameForNode(nodeService, targetNode));
|
||||||
|
}
|
||||||
out.write("</td></tr>");
|
out.write("</td></tr>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -26,6 +26,7 @@ import java.util.Map;
|
|||||||
import javax.faces.context.FacesContext;
|
import javax.faces.context.FacesContext;
|
||||||
import javax.faces.context.ResponseWriter;
|
import javax.faces.context.ResponseWriter;
|
||||||
|
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
@@ -152,9 +153,19 @@ public class UIChildAssociationEditor extends BaseAssociationEditor
|
|||||||
{
|
{
|
||||||
out.write("<tr><td>");
|
out.write("<tr><td>");
|
||||||
ChildAssociationRef assoc = (ChildAssociationRef)iter.next();
|
ChildAssociationRef assoc = (ChildAssociationRef)iter.next();
|
||||||
out.write(Repository.getDisplayPath(nodeService.getPath(assoc.getChildRef())));
|
NodeRef targetNode = assoc.getChildRef();
|
||||||
out.write("/");
|
// if the node represents a person, show the username instead of the name
|
||||||
out.write(Repository.getNameForNode(nodeService, assoc.getChildRef()));
|
if (ContentModel.TYPE_PERSON.equals(nodeService.getType(targetNode)))
|
||||||
|
{
|
||||||
|
out.write((String)nodeService.getProperty(targetNode, ContentModel.PROP_USERNAME));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
out.write(Repository.getDisplayPath(nodeService.getPath(targetNode)));
|
||||||
|
out.write("/");
|
||||||
|
out.write(Repository.getNameForNode(nodeService, targetNode));
|
||||||
|
}
|
||||||
|
|
||||||
out.write("</tr></td>");
|
out.write("</tr></td>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user