mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
- Refactored client config for workflow
- Enabled all default actions for workflow package items - Added view content properties dialog - Added view completed task dialog git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3644 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -47,9 +47,9 @@ import org.apache.commons.logging.LogFactory;
|
||||
public class AlfrescoNavigationHandler extends NavigationHandler
|
||||
{
|
||||
public final static String OUTCOME_SEPARATOR = ":";
|
||||
public final static String DIALOG_PREXIX = "dialog" + OUTCOME_SEPARATOR;
|
||||
public final static String DIALOG_PREFIX = "dialog" + OUTCOME_SEPARATOR;
|
||||
public final static String WIZARD_PREFIX = "wizard" + OUTCOME_SEPARATOR;
|
||||
public final static String CLOSE_DIALOG_OUTCOME = DIALOG_PREXIX + "close";
|
||||
public final static String CLOSE_DIALOG_OUTCOME = DIALOG_PREFIX + "close";
|
||||
public final static String CLOSE_WIZARD_OUTCOME = WIZARD_PREFIX + "close";
|
||||
|
||||
protected final static String CONFIG_NAV_BEAN = "NavigationBean";
|
||||
@@ -135,7 +135,7 @@ public class AlfrescoNavigationHandler extends NavigationHandler
|
||||
{
|
||||
boolean dialog = false;
|
||||
|
||||
if (outcome != null && outcome.startsWith(DIALOG_PREXIX))
|
||||
if (outcome != null && outcome.startsWith(DIALOG_PREFIX))
|
||||
{
|
||||
dialog = true;
|
||||
}
|
||||
|
@@ -40,6 +40,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.version.Version;
|
||||
import org.alfresco.service.cmr.version.VersionType;
|
||||
import org.alfresco.web.app.AlfrescoNavigationHandler;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.app.context.UIContextService;
|
||||
import org.alfresco.web.app.servlet.DownloadContentServlet;
|
||||
@@ -492,12 +493,18 @@ public class CheckinCheckoutBean
|
||||
Node node = getWorkingDocument();
|
||||
if (node != null)
|
||||
{
|
||||
// reset the underlying node
|
||||
if (this.browseBean.getDocument() != null)
|
||||
{
|
||||
this.browseBean.getDocument().reset();
|
||||
}
|
||||
|
||||
// clean up and clear action context
|
||||
clearUpload();
|
||||
setDocument(null);
|
||||
setWorkingDocument(null);
|
||||
|
||||
outcome = "browse";
|
||||
|
||||
outcome = AlfrescoNavigationHandler.CLOSE_DIALOG_OUTCOME;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -522,7 +529,7 @@ public class CheckinCheckoutBean
|
||||
setDocument(null);
|
||||
setWorkingDocument(null);
|
||||
|
||||
outcome = "browse";
|
||||
outcome = AlfrescoNavigationHandler.CLOSE_DIALOG_OUTCOME;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -570,7 +577,7 @@ public class CheckinCheckoutBean
|
||||
// navigate to appropriate screen
|
||||
FacesContext fc = FacesContext.getCurrentInstance();
|
||||
this.navigator.setupDispatchContext(node);
|
||||
fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "editTextInline");
|
||||
fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "dialog:editTextInline");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -581,7 +588,7 @@ public class CheckinCheckoutBean
|
||||
// navigate to appropriate screen
|
||||
FacesContext fc = FacesContext.getCurrentInstance();
|
||||
this.navigator.setupDispatchContext(node);
|
||||
fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "editHtmlInline");
|
||||
fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "dialog:editHtmlInline");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -591,7 +598,7 @@ public class CheckinCheckoutBean
|
||||
// normal downloadable document
|
||||
FacesContext fc = FacesContext.getCurrentInstance();
|
||||
this.navigator.setupDispatchContext(node);
|
||||
fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "editFile");
|
||||
fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "dialog:editFile");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -628,8 +635,8 @@ public class CheckinCheckoutBean
|
||||
setDocument(null);
|
||||
setDocumentContent(null);
|
||||
setEditorOutput(null);
|
||||
|
||||
outcome = "browse";
|
||||
|
||||
outcome = AlfrescoNavigationHandler.CLOSE_DIALOG_OUTCOME;
|
||||
}
|
||||
catch (Throwable err)
|
||||
{
|
||||
@@ -664,7 +671,7 @@ public class CheckinCheckoutBean
|
||||
|
||||
clearUpload();
|
||||
|
||||
outcome = "browse";
|
||||
outcome = AlfrescoNavigationHandler.CLOSE_DIALOG_OUTCOME;
|
||||
}
|
||||
catch (Throwable err)
|
||||
{
|
||||
@@ -711,10 +718,10 @@ public class CheckinCheckoutBean
|
||||
{
|
||||
throw new IllegalStateException("Node supplied for undo checkout has neither Working Copy or Locked aspect!");
|
||||
}
|
||||
|
||||
|
||||
clearUpload();
|
||||
|
||||
outcome = "browse";
|
||||
outcome = AlfrescoNavigationHandler.CLOSE_DIALOG_OUTCOME + AlfrescoNavigationHandler.OUTCOME_SEPARATOR + "browse";
|
||||
}
|
||||
catch (Throwable err)
|
||||
{
|
||||
@@ -801,7 +808,8 @@ public class CheckinCheckoutBean
|
||||
setDocument(null);
|
||||
clearUpload();
|
||||
|
||||
outcome = "browse";
|
||||
outcome = AlfrescoNavigationHandler.CLOSE_DIALOG_OUTCOME +
|
||||
AlfrescoNavigationHandler.OUTCOME_SEPARATOR + "browse";
|
||||
}
|
||||
catch (Throwable err)
|
||||
{
|
||||
@@ -857,7 +865,7 @@ public class CheckinCheckoutBean
|
||||
setDocument(null);
|
||||
clearUpload();
|
||||
|
||||
outcome = "browse";
|
||||
outcome = AlfrescoNavigationHandler.CLOSE_DIALOG_OUTCOME;
|
||||
}
|
||||
catch (Throwable err)
|
||||
{
|
||||
@@ -883,7 +891,7 @@ public class CheckinCheckoutBean
|
||||
// reset the state
|
||||
clearUpload();
|
||||
|
||||
return "browse";
|
||||
return AlfrescoNavigationHandler.CLOSE_DIALOG_OUTCOME;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -0,0 +1,75 @@
|
||||
package org.alfresco.web.bean.content;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.faces.context.FacesContext;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.service.cmr.repository.ContentData;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.bean.dialog.BaseDialogBean;
|
||||
import org.alfresco.web.bean.repository.Node;
|
||||
|
||||
/**
|
||||
* Bean implementation of the "View Content Properties" dialog.
|
||||
*
|
||||
* @author gavinc
|
||||
*/
|
||||
public class ViewContentPropertiesDialog extends BaseDialogBean
|
||||
{
|
||||
protected static final String TEMP_PROP_MIMETYPE = "mimetype";
|
||||
|
||||
protected Node viewingNode;
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// Dialog implementation
|
||||
|
||||
@Override
|
||||
public void init(Map<String, String> parameters)
|
||||
{
|
||||
super.init(parameters);
|
||||
|
||||
// setup the editable node
|
||||
this.viewingNode = new Node(this.browseBean.getDocument().getNodeRef());
|
||||
|
||||
// special case for Mimetype - since this is a sub-property of the ContentData object
|
||||
// we must extract it so it can be edited in the client, then we check for it later
|
||||
// and create a new ContentData object to wrap it and it's associated URL
|
||||
ContentData content = (ContentData)this.viewingNode.getProperties().get(ContentModel.PROP_CONTENT);
|
||||
if (content != null)
|
||||
{
|
||||
this.viewingNode.getProperties().put(TEMP_PROP_MIMETYPE, content.getMimetype());
|
||||
}
|
||||
|
||||
// add the specially handled 'size' property
|
||||
this.viewingNode.addPropertyResolver("size", this.browseBean.resolverSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String finishImpl(FacesContext context, String outcome)
|
||||
throws Exception
|
||||
{
|
||||
// nothing to do as the finish button is not shown and the dialog is read only
|
||||
|
||||
return outcome;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCancelButtonLabel()
|
||||
{
|
||||
return Application.getMessage(FacesContext.getCurrentInstance(), "close");
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// Bean getters and setters
|
||||
|
||||
/**
|
||||
* Returns the node being viewed
|
||||
*
|
||||
* @return The node being viewed
|
||||
*/
|
||||
public Node getViewingNode()
|
||||
{
|
||||
return this.viewingNode;
|
||||
}
|
||||
}
|
@@ -1,7 +1,9 @@
|
||||
package org.alfresco.web.bean.repository;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
@@ -10,6 +12,8 @@ import org.alfresco.service.cmr.dictionary.AssociationDefinition;
|
||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
|
||||
import org.alfresco.service.cmr.dictionary.TypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.util.GUID;
|
||||
@@ -93,11 +97,64 @@ public class TransientNode extends Node
|
||||
{
|
||||
if (assocDef.isChild())
|
||||
{
|
||||
this.childAssociations.put(item, data.get(item));
|
||||
// TODO: handle lists of NodeRef's
|
||||
NodeRef child = null;
|
||||
Object obj = data.get(item);
|
||||
if (obj instanceof String)
|
||||
{
|
||||
child = new NodeRef((String)obj);
|
||||
}
|
||||
else if (obj instanceof NodeRef)
|
||||
{
|
||||
child = (NodeRef)obj;
|
||||
}
|
||||
else if (obj instanceof List)
|
||||
{
|
||||
if (logger.isWarnEnabled())
|
||||
logger.warn("0..* child associations are not supported yet");
|
||||
}
|
||||
|
||||
if (child != null)
|
||||
{
|
||||
// create a child association reference, add it to a list and add the list
|
||||
// to the list of child associations for this node
|
||||
List<ChildAssociationRef> assocs = new ArrayList<ChildAssociationRef>(1);
|
||||
ChildAssociationRef childRef = new ChildAssociationRef(assocDef.getName(), this.nodeRef,
|
||||
null, child);
|
||||
assocs.add(childRef);
|
||||
|
||||
this.childAssociations.put(item, assocs);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.associations.put(item, data.get(item));
|
||||
// TODO: handle lists of NodeRef's
|
||||
NodeRef target = null;
|
||||
Object obj = data.get(item);
|
||||
if (obj instanceof String)
|
||||
{
|
||||
target = new NodeRef((String)obj);
|
||||
}
|
||||
else if (obj instanceof NodeRef)
|
||||
{
|
||||
target = (NodeRef)obj;
|
||||
}
|
||||
else if (obj instanceof List)
|
||||
{
|
||||
if (logger.isWarnEnabled())
|
||||
logger.warn("0..* associations are not supported yet");
|
||||
}
|
||||
|
||||
if (target != null)
|
||||
{
|
||||
// create a association reference, add it to a list and add the list
|
||||
// to the list of associations for this node
|
||||
List<AssociationRef> assocs = new ArrayList<AssociationRef>(1);
|
||||
AssociationRef assocRef = new AssociationRef(this.nodeRef, assocDef.getName(), target);
|
||||
assocs.add(assocRef);
|
||||
|
||||
this.associations.put(item, assocs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -140,7 +197,7 @@ public class TransientNode extends Node
|
||||
// don't reset anything otherwise we'll lose our data
|
||||
// with no way of getting it back!!
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
|
@@ -24,6 +24,7 @@ import org.alfresco.service.cmr.workflow.WorkflowTransition;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.service.namespace.RegexQNamePattern;
|
||||
import org.alfresco.web.app.AlfrescoNavigationHandler;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.bean.dialog.BaseDialogBean;
|
||||
import org.alfresco.web.bean.repository.MapNode;
|
||||
@@ -60,7 +61,7 @@ public class ManageTaskDialog extends BaseDialogBean
|
||||
protected boolean isItemBeingAdded = false;
|
||||
|
||||
protected static final String ID_PREFIX = "transition_";
|
||||
protected static final String CLIENT_ID_PREFIX = "dialog:" + ID_PREFIX;
|
||||
protected static final String CLIENT_ID_PREFIX = AlfrescoNavigationHandler.DIALOG_PREFIX + ID_PREFIX;
|
||||
|
||||
private static final Log logger = LogFactory.getLog(ManageTaskDialog.class);
|
||||
|
||||
@@ -86,6 +87,7 @@ public class ManageTaskDialog extends BaseDialogBean
|
||||
if (this.packageItemsRichList != null)
|
||||
{
|
||||
this.packageItemsRichList.setValue(null);
|
||||
this.packageItemsRichList = null;
|
||||
}
|
||||
|
||||
// get the task details
|
||||
|
@@ -0,0 +1,40 @@
|
||||
package org.alfresco.web.bean.workflow;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.faces.context.FacesContext;
|
||||
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.config.DialogsConfigElement.DialogButtonConfig;
|
||||
|
||||
/**
|
||||
* Bean implementation for the "View Completed Task" dialog.
|
||||
*
|
||||
* @author gavinc
|
||||
*/
|
||||
public class ViewCompletedTaskDialog extends ManageTaskDialog
|
||||
{
|
||||
// ------------------------------------------------------------------------------
|
||||
// Dialog implementation
|
||||
|
||||
@Override
|
||||
protected String finishImpl(FacesContext context, String outcome)
|
||||
throws Exception
|
||||
{
|
||||
// nothing to do as the finish button is not shown and the dialog is read only
|
||||
|
||||
return outcome;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCancelButtonLabel()
|
||||
{
|
||||
return Application.getMessage(FacesContext.getCurrentInstance(), "close");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DialogButtonConfig> getAdditionalButtons()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user