mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged 1.4 to HEAD
svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4229 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4230 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4232 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4233 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4234 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4235 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4239 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4240 . svn resolved root\projects\web-client\source\java\org\alfresco\web\app\AlfrescoNavigationHandler.java svn resolved root\projects\web-client\source\web\WEB-INF\faces-config-beans.xml svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4241 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4242 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4243 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4244 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4244 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4245 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4245 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4246 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4247 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4248 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4248 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4249 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4250 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4251 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4251 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4252 . git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4633 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -17,9 +17,10 @@
|
||||
<label-id>manage_task</label-id>
|
||||
<image>/images/icons/manage_workflow_task.gif</image>
|
||||
<action>dialog:manageTask</action>
|
||||
<action-listener>#{DialogManager.setupParameters}</action-listener>
|
||||
<action-listener>#{WorkflowBean.setupTaskDialog}</action-listener>
|
||||
<params>
|
||||
<param name="id">#{actionContext.id}</param>
|
||||
<param name="type">#{actionContext.type}</param>
|
||||
</params>
|
||||
</action>
|
||||
|
||||
@@ -27,9 +28,10 @@
|
||||
<label-id>view_completed_task_title</label-id>
|
||||
<image>/images/icons/view_workflow_task.gif</image>
|
||||
<action>dialog:viewCompletedTask</action>
|
||||
<action-listener>#{DialogManager.setupParameters}</action-listener>
|
||||
<action-listener>#{WorkflowBean.setupTaskDialog}</action-listener>
|
||||
<params>
|
||||
<param name="id">#{actionContext.id}</param>
|
||||
<param name="type">#{actionContext.type}</param>
|
||||
</params>
|
||||
</action>
|
||||
|
||||
@@ -37,9 +39,10 @@
|
||||
<label-id>reassign</label-id>
|
||||
<image>/images/icons/reassign_task.gif</image>
|
||||
<action>dialog:reassignTask</action>
|
||||
<action-listener>#{DialogManager.setupParameters}</action-listener>
|
||||
<action-listener>#{WorkflowBean.setupTaskDialog}</action-listener>
|
||||
<params>
|
||||
<param name="id">#{actionContext.id}</param>
|
||||
<param name="type">#{actionContext.type}</param>
|
||||
</params>
|
||||
</action>
|
||||
|
||||
|
@@ -21,6 +21,7 @@ import javax.faces.context.FacesContext;
|
||||
import org.alfresco.model.ApplicationModel;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||
import org.alfresco.service.cmr.security.PermissionService;
|
||||
import org.alfresco.web.action.ActionEvaluator;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.bean.repository.Node;
|
||||
@@ -50,6 +51,7 @@ public class EditDocCIFSEvaluator implements ActionEvaluator
|
||||
"cifs".equals(Application.getClientConfig(fc).getEditLinkType()))
|
||||
{
|
||||
if (node.isWorkingCopyOwner() == true ||
|
||||
(node.hasAspect(ContentModel.ASPECT_WORKING_COPY) && node.hasPermission(PermissionService.WRITE)) ||
|
||||
(node.isLocked() == false && node.hasAspect(ContentModel.ASPECT_WORKING_COPY) == false))
|
||||
{
|
||||
result = true;
|
||||
|
@@ -21,6 +21,7 @@ import javax.faces.context.FacesContext;
|
||||
import org.alfresco.model.ApplicationModel;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||
import org.alfresco.service.cmr.security.PermissionService;
|
||||
import org.alfresco.web.action.ActionEvaluator;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.bean.repository.Node;
|
||||
@@ -51,6 +52,7 @@ public class EditDocHttpEvaluator implements ActionEvaluator
|
||||
"http".equals(Application.getClientConfig(fc).getEditLinkType()))
|
||||
{
|
||||
if (node.isWorkingCopyOwner() == true ||
|
||||
(node.hasAspect(ContentModel.ASPECT_WORKING_COPY) && node.hasPermission(PermissionService.WRITE)) ||
|
||||
(node.isLocked() == false && node.hasAspect(ContentModel.ASPECT_WORKING_COPY) == false))
|
||||
{
|
||||
result = true;
|
||||
|
@@ -21,6 +21,7 @@ import javax.faces.context.FacesContext;
|
||||
import org.alfresco.model.ApplicationModel;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||
import org.alfresco.service.cmr.security.PermissionService;
|
||||
import org.alfresco.web.action.ActionEvaluator;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.bean.repository.Node;
|
||||
@@ -50,6 +51,7 @@ public class EditDocWebDavEvaluator implements ActionEvaluator
|
||||
"webdav".equals(Application.getClientConfig(fc).getEditLinkType()))
|
||||
{
|
||||
if (node.isWorkingCopyOwner() == true ||
|
||||
(node.hasAspect(ContentModel.ASPECT_WORKING_COPY) && node.hasPermission(PermissionService.WRITE)) ||
|
||||
(node.isLocked() == false && node.hasAspect(ContentModel.ASPECT_WORKING_COPY) == false))
|
||||
{
|
||||
result = true;
|
||||
|
@@ -26,7 +26,7 @@ import javax.faces.context.FacesContext;
|
||||
|
||||
import org.alfresco.config.Config;
|
||||
import org.alfresco.config.ConfigService;
|
||||
import org.alfresco.web.app.servlet.ExternalAccessServlet;
|
||||
import org.alfresco.web.app.servlet.FacesHelper;
|
||||
import org.alfresco.web.bean.NavigationBean;
|
||||
import org.alfresco.web.bean.dialog.DialogManager;
|
||||
import org.alfresco.web.bean.dialog.DialogState;
|
||||
@@ -121,6 +121,13 @@ public class AlfrescoNavigationHandler extends NavigationHandler
|
||||
}
|
||||
}
|
||||
|
||||
// reset the dispatch context
|
||||
Object bean = FacesHelper.getManagedBean(context, CONFIG_NAV_BEAN);
|
||||
if (bean instanceof NavigationBean)
|
||||
{
|
||||
((NavigationBean)bean).resetDispatchContext();
|
||||
}
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("view stack: " + getViewStack(context));
|
||||
}
|
||||
@@ -658,29 +665,15 @@ public class AlfrescoNavigationHandler extends NavigationHandler
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// the details pages can be loaded via the external access servlet,
|
||||
// if this is the case the details page would not have been loaded as
|
||||
// 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)))
|
||||
{
|
||||
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())
|
||||
// return to the main page of the app (print warning if debug is enabled)
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.warn("Attempting to close a " + closingItem + " with an empty view stack, returning null outcome");
|
||||
logger.debug("Attempting to close a " + closingItem + " with an empty view stack, returning 'browse' outcome");
|
||||
}
|
||||
|
||||
navigate(context, fromAction, null);
|
||||
}
|
||||
navigate(context, fromAction, "browse");
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -251,7 +251,7 @@ public class TransientNode extends Node
|
||||
TypeDefinition typeDef = ddService.getType(this.type);
|
||||
if (typeDef == null)
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Failed to find type definition for start task: " + this.type);
|
||||
throw new AlfrescoRuntimeException("Failed to find type definition: " + this.type);
|
||||
}
|
||||
|
||||
this.aspects = new HashSet<QName>();
|
||||
|
@@ -229,7 +229,7 @@ public final class User
|
||||
Map<QName, Serializable> props = nodeService.getProperties(user);
|
||||
String firstName = (String)props.get(ContentModel.PROP_FIRSTNAME);
|
||||
String lastName = (String)props.get(ContentModel.PROP_LASTNAME);
|
||||
String fullName = firstName + " " + (lastName != null ? lastName : "");
|
||||
String fullName = firstName + ((lastName != null && lastName.length() > 0) ? " " + lastName : "");
|
||||
|
||||
return fullName;
|
||||
}
|
||||
|
@@ -461,16 +461,18 @@ public class CreateSpaceWizard extends BaseWizardBean
|
||||
String xpath = Application.getRootPath(context) + "/" + Application.getGlossaryFolderName(context) +
|
||||
"/" + Application.getSpaceTemplatesFolderName(context) + "/*";
|
||||
NodeRef rootNodeRef = this.nodeService.getRootNode(Repository.getStoreRef());
|
||||
NamespaceService resolver = Repository.getServiceRegistry(context).getNamespaceService();
|
||||
List<NodeRef> results = this.searchService.selectNodes(rootNodeRef, xpath, null, resolver, false);
|
||||
List<NodeRef> results = this.searchService.selectNodes(rootNodeRef, xpath, null, this.namespaceService, false);
|
||||
|
||||
if (results.size() > 0)
|
||||
{
|
||||
for (NodeRef assocRef : results)
|
||||
{
|
||||
Node childNode = new Node(assocRef);
|
||||
if (this.dictionaryService.isSubClass(childNode.getType(), ContentModel.TYPE_FOLDER))
|
||||
{
|
||||
this.templates.add(new SelectItem(childNode.getId(), childNode.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
// make sure the list is sorted by the label
|
||||
QuickSort sorter = new QuickSort(this.templates, "label", true, IDataContainer.SORT_CASEINSENSITIVE);
|
||||
|
@@ -532,6 +532,22 @@ public class StartWorkflowWizard extends BaseWizardBean
|
||||
return availableWorkflows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the URL to the Workflow Definition Image of the current task
|
||||
*
|
||||
* @return the url
|
||||
*/
|
||||
public String getWorkflowDefinitionImageUrl()
|
||||
{
|
||||
String url = null;
|
||||
if (selectedWorkflow != null)
|
||||
{
|
||||
WorkflowDefinition def = workflows.get(selectedWorkflow);
|
||||
url = "/workflowdefinitionimage/" + def.id;
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of resources associated with this task
|
||||
* i.e. the children of the workflow package
|
||||
|
@@ -2,8 +2,10 @@ package org.alfresco.web.bean.workflow;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.faces.context.FacesContext;
|
||||
import javax.faces.event.ActionEvent;
|
||||
import javax.transaction.UserTransaction;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
@@ -14,13 +16,17 @@ import org.alfresco.service.cmr.workflow.WorkflowTask;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowTaskDefinition;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowTaskState;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowTransition;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.util.ISO9075;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.bean.NavigationBean;
|
||||
import org.alfresco.web.bean.repository.Node;
|
||||
import org.alfresco.web.bean.repository.Repository;
|
||||
import org.alfresco.web.bean.repository.TransientMapNode;
|
||||
import org.alfresco.web.bean.repository.TransientNode;
|
||||
import org.alfresco.web.bean.repository.User;
|
||||
import org.alfresco.web.ui.common.Utils;
|
||||
import org.alfresco.web.ui.common.component.UIActionLink;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
@@ -31,6 +37,7 @@ import org.apache.commons.logging.LogFactory;
|
||||
*/
|
||||
public class WorkflowBean
|
||||
{
|
||||
protected NavigationBean navigationBean;
|
||||
protected NodeService nodeService;
|
||||
protected WorkflowService workflowService;
|
||||
protected List<Node> tasks;
|
||||
@@ -141,6 +148,16 @@ public class WorkflowBean
|
||||
return this.completedTasks;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the navigation bean to use
|
||||
*
|
||||
* @param navigationBean The NavigationBean to set.
|
||||
*/
|
||||
public void setNavigationBean(NavigationBean navigationBean)
|
||||
{
|
||||
this.navigationBean = navigationBean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the workflow service to use
|
||||
*
|
||||
@@ -161,6 +178,24 @@ public class WorkflowBean
|
||||
this.nodeService = nodeService;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// Navigation handlers
|
||||
|
||||
public void setupTaskDialog(ActionEvent event)
|
||||
{
|
||||
UIActionLink link = (UIActionLink)event.getComponent();
|
||||
Map<String, String> params = link.getParameterMap();
|
||||
String id = params.get("id");
|
||||
String type = params.get("type");
|
||||
|
||||
// setup the dispatch context with the task we're opening a dialog for
|
||||
TransientNode node = new TransientNode(QName.createQName(type), id, null);
|
||||
this.navigationBean.setupDispatchContext(node);
|
||||
|
||||
// pass on parameters for the dialog
|
||||
Application.getDialogManager().setupParameters(event);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// Helper methods
|
||||
|
||||
@@ -181,7 +216,7 @@ public class WorkflowBean
|
||||
|
||||
// add properties for the other useful metadata
|
||||
node.getProperties().put(ContentModel.PROP_NAME.toString(), task.title);
|
||||
node.getProperties().put("type", taskDef.metadata.getTitle());
|
||||
node.getProperties().put("type", node.getType().toString());
|
||||
node.getProperties().put("id", task.id);
|
||||
|
||||
// add extra properties for completed tasks
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -150,7 +150,7 @@
|
||||
<a:richList id="rulesList" viewMode="details" value="#{RulesBean.rules}" var="r"
|
||||
styleClass="recordSet" headerStyleClass="recordSetHeader" rowStyleClass="recordSetRow"
|
||||
altRowStyleClass="recordSetRowAlt" width="100%" pageSize="10"
|
||||
initialSortColumn="title" initialSortDescending="true"
|
||||
initialSortColumn="createdDate" initialSortDescending="false"
|
||||
binding="#{RulesBean.richList}">
|
||||
|
||||
<%-- Primary column for details view mode --%>
|
||||
|
@@ -136,7 +136,7 @@
|
||||
<a:panel rendered="false" id="workflow-outline" label="#{msg.workflow_outline}" progressive="true" expanded="false"
|
||||
border="white" bgcolor="white" titleBorder="blue" titleBgcolor="#D3E6FE" styleClass="mainSubTitle">
|
||||
|
||||
<h:graphicImage value="#{DialogManager.bean.workflowDefinitionImageUrl}"/>
|
||||
<h:graphicImage value="#{WizardManager.bean.workflowDefinitionImageUrl}"/>
|
||||
|
||||
</a:panel>
|
||||
|
@@ -18,13 +18,15 @@
|
||||
</f:facet>
|
||||
<f:facet name="small-icon">
|
||||
<a:actionLink id="col1-act1" value="#{r['bpm:description']}" image="/images/icons/completed_workflow_task.gif" showLink="false"
|
||||
actionListener="#{DialogManager.setupParameters}" action="dialog:viewCompletedTask">
|
||||
actionListener="#{WorkflowBean.setupTaskDialog}" action="dialog:viewCompletedTask">
|
||||
<f:param name="id" value="#{r.id}" />
|
||||
<f:param name="type" value="#{r.type}" />
|
||||
</a:actionLink>
|
||||
</f:facet>
|
||||
<a:actionLink id="col1-act2" value="#{r['bpm:description']}" actionListener="#{DialogManager.setupParameters}"
|
||||
<a:actionLink id="col1-act2" value="#{r['bpm:description']}" actionListener="#{WorkflowBean.setupTaskDialog}"
|
||||
action="dialog:viewCompletedTask">
|
||||
<f:param name="id" value="#{r.id}" />
|
||||
<f:param name="type" value="#{r.type}" />
|
||||
</a:actionLink>
|
||||
</a:column>
|
||||
|
||||
|
@@ -18,13 +18,15 @@
|
||||
</f:facet>
|
||||
<f:facet name="small-icon">
|
||||
<a:actionLink id="col1-act1" value="#{r['bpm:description']}" image="/images/icons/workflow_task.gif" showLink="false"
|
||||
actionListener="#{DialogManager.setupParameters}" action="dialog:manageTask">
|
||||
actionListener="#{WorkflowBean.setupTaskDialog}" action="dialog:manageTask">
|
||||
<f:param name="id" value="#{r.id}" />
|
||||
<f:param name="type" value="#{r.type}" />
|
||||
</a:actionLink>
|
||||
</f:facet>
|
||||
<a:actionLink id="col1-act2" value="#{r['bpm:description']}" actionListener="#{DialogManager.setupParameters}"
|
||||
<a:actionLink id="col1-act2" value="#{r['bpm:description']}" actionListener="#{WorkflowBean.setupTaskDialog}"
|
||||
action="dialog:manageTask">
|
||||
<f:param name="id" value="#{r.id}" />
|
||||
<f:param name="type" value="#{r.type}" />
|
||||
</a:actionLink>
|
||||
</a:column>
|
||||
|
||||
|
Reference in New Issue
Block a user