mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
. Multi-select actions added to User Sandbox component
- stub implementation of Submit All, Revert All . Available Content Forms panel added to User Sandbox component - shows forms assigned to the web project (configured in the Web Project wizard) . Fix to RenderingEngineTemplateImpl refactor that was causing a null-ptr exception in the web project wizard git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4353 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -852,8 +852,11 @@ user_sandboxes=User Sandboxes
|
|||||||
sandbox_preview=Preview Website
|
sandbox_preview=Preview Website
|
||||||
sandbox_create=Create New Content
|
sandbox_create=Create New Content
|
||||||
sandbox_browse=Browse Website
|
sandbox_browse=Browse Website
|
||||||
|
sandbox_revert=Undo
|
||||||
|
sandbox_revertall=Undo All
|
||||||
sandbox_submitall=Submit All
|
sandbox_submitall=Submit All
|
||||||
sandbox_submitselected=Submit Selected
|
sandbox_submitselected=Submit Selected
|
||||||
|
sandbox_revertselected=Undo Selected
|
||||||
sandbox_icon=Browse Website
|
sandbox_icon=Browse Website
|
||||||
import_website_content=Import Website Content
|
import_website_content=Import Website Content
|
||||||
title_browse_sandbox=Browse Sandbox
|
title_browse_sandbox=Browse Sandbox
|
||||||
@@ -864,15 +867,19 @@ website_browse_folders=Browse Folders
|
|||||||
website_browse_files=Browse Files
|
website_browse_files=Browse Files
|
||||||
creator=Creator
|
creator=Creator
|
||||||
modified_items=Modified Items
|
modified_items=Modified Items
|
||||||
|
content_forms=Available Content Forms
|
||||||
store_created_on=Created On
|
store_created_on=Created On
|
||||||
store_created_by=Created By
|
store_created_by=Created By
|
||||||
store_working_users=There are {0} user(s) working on this web project.
|
store_working_users=There are {0} user(s) working on this web project.
|
||||||
avm_node_deleted=Deleted
|
avm_node_deleted=Deleted
|
||||||
|
revert=Revert
|
||||||
submit=Submit
|
submit=Submit
|
||||||
submit_success=Successfully submitted item: {0}
|
submit_success=Successfully submitted item: {0}
|
||||||
submitall_success=Successfully submitted sandbox for user: {0}
|
submitall_success=Successfully submitted sandbox for user: {0}
|
||||||
folder_preview=Preview Folder
|
folder_preview=Preview Folder
|
||||||
file_preview=Preview File
|
file_preview=Preview File
|
||||||
|
selected=Selected
|
||||||
|
create_form_content=Create Content
|
||||||
|
|
||||||
# Website actions and dialog messages
|
# Website actions and dialog messages
|
||||||
title_import_content=Import Content into Website
|
title_import_content=Import Content into Website
|
||||||
|
@@ -85,6 +85,19 @@
|
|||||||
</params>
|
</params>
|
||||||
</action>
|
</action>
|
||||||
|
|
||||||
|
<!-- Revert AVM node -->
|
||||||
|
<action id="revert">
|
||||||
|
<permissions>
|
||||||
|
<permission allow="true">Read</permission>
|
||||||
|
</permissions>
|
||||||
|
<label-id>revert</label-id>
|
||||||
|
<image>/images/icons/revert.gif</image>
|
||||||
|
<action-listener>#{AVMBrowseBean.revertNode}</action-listener>
|
||||||
|
<params>
|
||||||
|
<param name="id">#{actionContext.path}</param>
|
||||||
|
</params>
|
||||||
|
</action>
|
||||||
|
|
||||||
<!-- Preview folder -->
|
<!-- Preview folder -->
|
||||||
<action id="preview_folder">
|
<action id="preview_folder">
|
||||||
<label-id>folder_preview</label-id>
|
<label-id>folder_preview</label-id>
|
||||||
@@ -199,6 +212,7 @@
|
|||||||
<action idref="edit_file" />
|
<action idref="edit_file" />
|
||||||
<action idref="update_file" />
|
<action idref="update_file" />
|
||||||
<action idref="submit" />
|
<action idref="submit" />
|
||||||
|
<action idref="revert" />
|
||||||
<action idref="preview_file" />
|
<action idref="preview_file" />
|
||||||
<action idref="file_details" />
|
<action idref="file_details" />
|
||||||
<action idref="delete_file" />
|
<action idref="delete_file" />
|
||||||
@@ -208,6 +222,7 @@
|
|||||||
<action-group id="avm_folder_modified">
|
<action-group id="avm_folder_modified">
|
||||||
<show-link>false</show-link>
|
<show-link>false</show-link>
|
||||||
<action idref="submit" />
|
<action idref="submit" />
|
||||||
|
<action idref="revert" />
|
||||||
<action idref="preview_folder" />
|
<action idref="preview_folder" />
|
||||||
<action idref="folder_details" />
|
<action idref="folder_details" />
|
||||||
<action idref="delete_folder" />
|
<action idref="delete_folder" />
|
||||||
@@ -217,6 +232,7 @@
|
|||||||
<action-group id="avm_deleted_modified">
|
<action-group id="avm_deleted_modified">
|
||||||
<show-link>false</show-link>
|
<show-link>false</show-link>
|
||||||
<action idref="submit" />
|
<action idref="submit" />
|
||||||
|
<action idref="revert" />
|
||||||
</action-group>
|
</action-group>
|
||||||
|
|
||||||
<!-- Actions for the Create menu in the sandbox browse screen -->
|
<!-- Actions for the Create menu in the sandbox browse screen -->
|
||||||
|
@@ -727,23 +727,6 @@ public class AVMBrowseBean implements IContextListener
|
|||||||
tx = Repository.getUserTransaction(context, false);
|
tx = Repository.getUserTransaction(context, false);
|
||||||
tx.begin();
|
tx.begin();
|
||||||
|
|
||||||
// NodeRef nodeRef = getAvmActionNode().getNodeRef();
|
|
||||||
// String name = (String)this.nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
|
||||||
// NodeRef workflowPackage = this.workflowService.createPackage(null);
|
|
||||||
// ChildAssociationRef childRef =
|
|
||||||
// this.nodeService.createNode(workflowPackage, ContentModel.ASSOC_CONTAINS,
|
|
||||||
// QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI,
|
|
||||||
// name), ContentModel.TYPE_CMOBJECT);
|
|
||||||
// Map<QName, Serializable> aspectProperties = new HashMap<QName, Serializable>(1);
|
|
||||||
// aspectProperties.put(ContentModel.PROP_NODE_REF, nodeRef);
|
|
||||||
// NodeRef childNodeRef = childRef.getChildRef();
|
|
||||||
// this.nodeService.addAspect(childNodeRef, ContentModel.ASPECT_REFERENCES_NODE, aspectProperties);
|
|
||||||
//
|
|
||||||
// Map<String, Serializable> actionParams = new HashMap<String, Serializable>();
|
|
||||||
// actionParams.put(StartAVMWorkflowAction.PARAM_WORKFLOW_NAME, "jbpm$wcmwf:submit");
|
|
||||||
// Action action = this.actionService.createAction(ACTION_AVM_WORKFLOW, actionParams);
|
|
||||||
// this.actionService.executeAction(action, workflowPackage);
|
|
||||||
|
|
||||||
Action action = this.actionService.createAction(ACTION_AVM_SUBMIT);
|
Action action = this.actionService.createAction(ACTION_AVM_SUBMIT);
|
||||||
this.actionService.executeAction(action, getAvmActionNode().getNodeRef());
|
this.actionService.executeAction(action, getAvmActionNode().getNodeRef());
|
||||||
|
|
||||||
@@ -807,6 +790,9 @@ public class AVMBrowseBean implements IContextListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Submit items selected using multi-select
|
||||||
|
*/
|
||||||
public void submitSelected(ActionEvent event)
|
public void submitSelected(ActionEvent event)
|
||||||
{
|
{
|
||||||
UIActionLink link = (UIActionLink)event.getComponent();
|
UIActionLink link = (UIActionLink)event.getComponent();
|
||||||
@@ -815,6 +801,61 @@ public class AVMBrowseBean implements IContextListener
|
|||||||
String username = params.get("username");
|
String username = params.get("username");
|
||||||
|
|
||||||
List<AVMNodeDescriptor> selected = this.userSandboxes.getSelectedNodes(username);
|
List<AVMNodeDescriptor> selected = this.userSandboxes.getSelectedNodes(username);
|
||||||
|
if (selected != null)
|
||||||
|
{
|
||||||
|
UserTransaction tx = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
FacesContext context = FacesContext.getCurrentInstance();
|
||||||
|
tx = Repository.getUserTransaction(context, false);
|
||||||
|
tx.begin();
|
||||||
|
|
||||||
|
for (AVMNodeDescriptor node : selected)
|
||||||
|
{
|
||||||
|
Action action = this.actionService.createAction(ACTION_AVM_SUBMIT);
|
||||||
|
this.actionService.executeAction(action, AVMNodeConverter.ToNodeRef(-1, node.getPath()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// commit the transaction
|
||||||
|
tx.commit();
|
||||||
|
|
||||||
|
// if we get here, all was well - output friendly status message to the user
|
||||||
|
// TODO: different message once the submit screen is available
|
||||||
|
String msg = MessageFormat.format(Application.getMessage(
|
||||||
|
context, MSG_SUBMITALL_SUCCESS), username);
|
||||||
|
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg);
|
||||||
|
String formId = Utils.getParentForm(context, event.getComponent()).getClientId(context);
|
||||||
|
context.addMessage(formId + ':' + COMPONENT_SANDBOXESPANEL, facesMsg);
|
||||||
|
}
|
||||||
|
catch (Throwable err)
|
||||||
|
{
|
||||||
|
err.printStackTrace(System.err);
|
||||||
|
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
|
||||||
|
FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), err.getMessage()), err);
|
||||||
|
try { if (tx != null) {tx.rollback();} } catch (Exception tex) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undo changes to a single node
|
||||||
|
*/
|
||||||
|
public void revertNode(ActionEvent event)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undo changes to the entire sandbox
|
||||||
|
*/
|
||||||
|
public void revertAll(ActionEvent event)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undo changes to items selected using multi-select
|
||||||
|
*/
|
||||||
|
public void revertSelected(ActionEvent event)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -75,7 +75,7 @@ public class RenderingEngineTemplateImpl
|
|||||||
{
|
{
|
||||||
return (String)
|
return (String)
|
||||||
this.nodeService.getProperty(this.nodeRef,
|
this.nodeService.getProperty(this.nodeRef,
|
||||||
ContentModel.PROP_TITLE);
|
ContentModel.PROP_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDescription()
|
public String getDescription()
|
||||||
|
@@ -79,9 +79,11 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
|
|
||||||
private static final String COMPONENT_ACTIONS = "org.alfresco.faces.Actions";
|
private static final String COMPONENT_ACTIONS = "org.alfresco.faces.Actions";
|
||||||
|
|
||||||
private static final String ACT_PANEL = "_panel";
|
private static final String ACT_MODIFIED_PANEL = "_items";
|
||||||
|
private static final String ACT_FORMS_PANEL = "_forms";
|
||||||
|
|
||||||
private static final String MSG_MODIFIED_ITEMS = "modified_items";
|
private static final String MSG_MODIFIED_ITEMS = "modified_items";
|
||||||
|
private static final String MSG_CONTENT_FORMS = "content_forms";
|
||||||
private static final String MSG_SIZE = "size";
|
private static final String MSG_SIZE = "size";
|
||||||
private static final String MSG_CREATED = "created_date";
|
private static final String MSG_CREATED = "created_date";
|
||||||
private static final String MSG_USERNAME = "username";
|
private static final String MSG_USERNAME = "username";
|
||||||
@@ -90,6 +92,7 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
private static final String MSG_MODIFIED = "modified_date";
|
private static final String MSG_MODIFIED = "modified_date";
|
||||||
private static final String MSG_ACTIONS = "actions";
|
private static final String MSG_ACTIONS = "actions";
|
||||||
private static final String MSG_DELETED_ITEM = "avm_node_deleted";
|
private static final String MSG_DELETED_ITEM = "avm_node_deleted";
|
||||||
|
private static final String MSG_SELECTED = "selected";
|
||||||
|
|
||||||
private static final String SPACE_ICON = "/images/icons/" + BrowseBean.SPACE_SMALL_DEFAULT + ".gif";
|
private static final String SPACE_ICON = "/images/icons/" + BrowseBean.SPACE_SMALL_DEFAULT + ".gif";
|
||||||
|
|
||||||
@@ -109,6 +112,9 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
|
|
||||||
private String[] checkedItems = null;
|
private String[] checkedItems = null;
|
||||||
|
|
||||||
|
/** transient list of available web forms */
|
||||||
|
private List<NodeRef> forms = null;
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
// Component implementation
|
// Component implementation
|
||||||
@@ -172,9 +178,14 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
Map requestMap = context.getExternalContext().getRequestParameterMap();
|
Map requestMap = context.getExternalContext().getRequestParameterMap();
|
||||||
Map valuesMap = context.getExternalContext().getRequestParameterValuesMap();
|
Map valuesMap = context.getExternalContext().getRequestParameterValuesMap();
|
||||||
|
|
||||||
// detect if a panel has been expanded/collapsed
|
// detect if Modified Items or Available Content Forms panel has been expanded/collapsed
|
||||||
String fieldId = getClientId(context) + ACT_PANEL;
|
String fieldId = getClientId(context) + ACT_FORMS_PANEL;
|
||||||
String value = (String)requestMap.get(fieldId);
|
String value = (String)requestMap.get(fieldId);
|
||||||
|
if (value == null || value.length() == 0)
|
||||||
|
{
|
||||||
|
fieldId = getClientId(context) + ACT_MODIFIED_PANEL;
|
||||||
|
value = (String)requestMap.get(fieldId);
|
||||||
|
}
|
||||||
if (value != null && value.length() != 0)
|
if (value != null && value.length() != 0)
|
||||||
{
|
{
|
||||||
// expand/collapse the specified users panel
|
// expand/collapse the specified users panel
|
||||||
@@ -210,6 +221,7 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
this.rowToUserLookup.clear();
|
this.rowToUserLookup.clear();
|
||||||
this.userToRowLookup.clear();
|
this.userToRowLookup.clear();
|
||||||
this.userNodes.clear();
|
this.userNodes.clear();
|
||||||
|
this.forms = null;
|
||||||
|
|
||||||
ResourceBundle bundle = Application.getBundle(context);
|
ResourceBundle bundle = Application.getBundle(context);
|
||||||
AVMService avmService = getAVMService(context);
|
AVMService avmService = getAVMService(context);
|
||||||
@@ -310,6 +322,11 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
"#{AVMBrowseBean.submitAll}", null, null));
|
"#{AVMBrowseBean.submitAll}", null, null));
|
||||||
out.write(" ");
|
out.write(" ");
|
||||||
|
|
||||||
|
Utils.encodeRecursive(context, aquireAction(
|
||||||
|
context, mainStore, username, "sandbox_revertall", "/images/icons/revert.gif",
|
||||||
|
"#{AVMBrowseBean.revertAll}", null, null));
|
||||||
|
out.write(" ");
|
||||||
|
|
||||||
Utils.encodeRecursive(context, aquireAction(
|
Utils.encodeRecursive(context, aquireAction(
|
||||||
context, mainStore, username, "sandbox_browse", "/images/icons/space_small.gif",
|
context, mainStore, username, "sandbox_browse", "/images/icons/space_small.gif",
|
||||||
"#{AVMBrowseBean.setupSandboxAction}", "browseSandbox", null));
|
"#{AVMBrowseBean.setupSandboxAction}", "browseSandbox", null));
|
||||||
@@ -318,21 +335,42 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
// modified items panel
|
// modified items panel
|
||||||
out.write("<tr><td></td><td colspan=2>");
|
out.write("<tr><td></td><td colspan=2>");
|
||||||
String panelImage = WebResources.IMAGE_COLLAPSED;
|
String panelImage = WebResources.IMAGE_COLLAPSED;
|
||||||
if (this.expandedPanels.contains(username))
|
if (this.expandedPanels.contains(username + ACT_MODIFIED_PANEL))
|
||||||
{
|
{
|
||||||
panelImage = WebResources.IMAGE_EXPANDED;
|
panelImage = WebResources.IMAGE_EXPANDED;
|
||||||
}
|
}
|
||||||
out.write(Utils.buildImageTag(context, panelImage, 11, 11, "",
|
out.write(Utils.buildImageTag(context, panelImage, 11, 11, "",
|
||||||
Utils.generateFormSubmit(context, this, getClientId(context) + ACT_PANEL, username)));
|
Utils.generateFormSubmit(context, this, getClientId(context) + ACT_MODIFIED_PANEL, username + ACT_MODIFIED_PANEL)));
|
||||||
out.write(" <b>");
|
out.write(" <b>");
|
||||||
out.write(bundle.getString(MSG_MODIFIED_ITEMS));
|
out.write(bundle.getString(MSG_MODIFIED_ITEMS));
|
||||||
out.write("</b>");
|
out.write("</b>");
|
||||||
if (this.expandedPanels.contains(username))
|
if (this.expandedPanels.contains(username + ACT_MODIFIED_PANEL))
|
||||||
{
|
{
|
||||||
out.write("<div style='padding:2px'></div>");
|
out.write("<div style='padding:2px'></div>");
|
||||||
|
|
||||||
// list the modified docs for this sandbox user
|
// list the modified docs for this sandbox user
|
||||||
renderUserFiles(context, out, username, index, storeRoot);
|
renderUserFiles(context, out, username, storeRoot, index);
|
||||||
|
}
|
||||||
|
out.write("</td></tr>");
|
||||||
|
|
||||||
|
// content forms panel
|
||||||
|
out.write("<tr style='padding-top:4px'><td></td><td colspan=2>");
|
||||||
|
panelImage = WebResources.IMAGE_COLLAPSED;
|
||||||
|
if (this.expandedPanels.contains(username + ACT_FORMS_PANEL))
|
||||||
|
{
|
||||||
|
panelImage = WebResources.IMAGE_EXPANDED;
|
||||||
|
}
|
||||||
|
out.write(Utils.buildImageTag(context, panelImage, 11, 11, "",
|
||||||
|
Utils.generateFormSubmit(context, this, getClientId(context) + ACT_FORMS_PANEL, username + ACT_FORMS_PANEL)));
|
||||||
|
out.write(" <b>");
|
||||||
|
out.write(bundle.getString(MSG_CONTENT_FORMS));
|
||||||
|
out.write("</b>");
|
||||||
|
if (this.expandedPanels.contains(username + ACT_FORMS_PANEL))
|
||||||
|
{
|
||||||
|
out.write("<div style='padding:2px'></div>");
|
||||||
|
|
||||||
|
// list the content forms for this sandbox user
|
||||||
|
renderContentForms(context, out, websiteRef, username, storeRoot);
|
||||||
}
|
}
|
||||||
out.write("</td></tr></table>");
|
out.write("</td></tr></table>");
|
||||||
|
|
||||||
@@ -370,8 +408,9 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
*
|
*
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
private void renderUserFiles(FacesContext fc, ResponseWriter out, String username, int index, String storeRoot)
|
private void renderUserFiles(
|
||||||
throws IOException
|
FacesContext fc, ResponseWriter out, String username, String storeRoot, int index)
|
||||||
|
throws IOException
|
||||||
{
|
{
|
||||||
AVMSyncService avmSyncService = getAVMSyncService(fc);
|
AVMSyncService avmSyncService = getAVMSyncService(fc);
|
||||||
AVMService avmService = getAVMService(fc);
|
AVMService avmService = getAVMService(fc);
|
||||||
@@ -406,7 +445,7 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
this.userNodes.put(username, nodes);
|
this.userNodes.put(username, nodes);
|
||||||
|
|
||||||
// output the table of modified items
|
// output the table of modified items
|
||||||
out.write("<table class='modifiedItemsList' cellspacing=2 cellpadding=2 border=0 width=100%>");
|
out.write("<table class='modifiedItemsList' cellspacing=2 cellpadding=1 border=0 width=100%>");
|
||||||
|
|
||||||
// header row
|
// header row
|
||||||
out.write("<tr align=left><th>");
|
out.write("<tr align=left><th>");
|
||||||
@@ -415,8 +454,7 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
out.write(Integer.toString(index));
|
out.write(Integer.toString(index));
|
||||||
out.write("' onclick='");
|
out.write("' onclick='");
|
||||||
out.write("javascript:_sb_select(this);");
|
out.write("javascript:_sb_select(this);");
|
||||||
out.write("'></th>");
|
out.write("'></th><th width=16></th><th>");
|
||||||
out.write("</th><th width=16></th><th>");
|
|
||||||
out.write(bundle.getString(MSG_NAME));
|
out.write(bundle.getString(MSG_NAME));
|
||||||
out.write("</th><th>");
|
out.write("</th><th>");
|
||||||
out.write(bundle.getString(MSG_CREATED));
|
out.write(bundle.getString(MSG_CREATED));
|
||||||
@@ -565,10 +603,17 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
out.write("</td></tr>");
|
out.write("</td></tr>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// output multi-select actions for this user
|
||||||
out.write("<tr><td colspan=8>");
|
out.write("<tr><td colspan=8>");
|
||||||
|
out.write(bundle.getString(MSG_SELECTED));
|
||||||
|
out.write(": ");
|
||||||
Utils.encodeRecursive(fc, aquireAction(
|
Utils.encodeRecursive(fc, aquireAction(
|
||||||
fc, userStorePrefix, username, "sandbox_submitselected", "/images/icons/submit.gif",
|
fc, userStorePrefix, username, "sandbox_submitselected", "/images/icons/submit.gif",
|
||||||
"#{AVMBrowseBean.submitSelected}", null, null));
|
"#{AVMBrowseBean.submitSelected}", null, null));
|
||||||
|
out.write(" ");
|
||||||
|
Utils.encodeRecursive(fc, aquireAction(
|
||||||
|
fc, userStorePrefix, username, "sandbox_revertselected", "/images/icons/revert.gif",
|
||||||
|
"#{AVMBrowseBean.revertSelected}", null, null));
|
||||||
out.write("</td></tr>");
|
out.write("</td></tr>");
|
||||||
|
|
||||||
// end table
|
// end table
|
||||||
@@ -580,6 +625,69 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render the list of content forms available for this sandbox.
|
||||||
|
*
|
||||||
|
* @param fc FacesContext
|
||||||
|
* @param out ResponseWriter
|
||||||
|
*
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
private void renderContentForms(
|
||||||
|
FacesContext fc, ResponseWriter out, NodeRef websiteRef, String username, String storeRoot)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
NodeService nodeService = getNodeService(fc);
|
||||||
|
String userStorePrefix = AVMConstants.buildAVMUserMainStoreName(storeRoot, username);
|
||||||
|
|
||||||
|
// only need to collect the list of forms once per render
|
||||||
|
// TODO: execute permission evaluations on a per user basis against each form?
|
||||||
|
if (this.forms == null)
|
||||||
|
{
|
||||||
|
List<ChildAssociationRef> webFormRefs = nodeService.getChildAssocs(
|
||||||
|
websiteRef, ContentModel.ASSOC_WEBFORM, RegexQNamePattern.MATCH_ALL);
|
||||||
|
this.forms = new ArrayList<NodeRef>(webFormRefs.size());
|
||||||
|
for (ChildAssociationRef ref : webFormRefs)
|
||||||
|
{
|
||||||
|
this.forms.add(ref.getChildRef());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.forms.size() != 0)
|
||||||
|
{
|
||||||
|
ResourceBundle bundle = Application.getBundle(fc);
|
||||||
|
|
||||||
|
// output the table of available forms
|
||||||
|
out.write("<table class='modifiedItemsList' cellspacing=2 cellpadding=1 border=0 width=100%>");
|
||||||
|
|
||||||
|
// header row
|
||||||
|
out.write("<tr align=left><th>");
|
||||||
|
out.write(bundle.getString(MSG_NAME));
|
||||||
|
out.write("</th><th>");
|
||||||
|
out.write(bundle.getString(MSG_DESCRIPTION));
|
||||||
|
out.write("</th><th>");
|
||||||
|
out.write(bundle.getString(MSG_ACTIONS));
|
||||||
|
out.write("</th></tr>");
|
||||||
|
|
||||||
|
for (NodeRef formRef : this.forms)
|
||||||
|
{
|
||||||
|
out.write("<tr><td>");
|
||||||
|
String title = (String)nodeService.getProperty(formRef, ContentModel.PROP_TITLE);
|
||||||
|
out.write(title != null ? title : "");
|
||||||
|
out.write("</td><td>");
|
||||||
|
String desc = (String)nodeService.getProperty(formRef, ContentModel.PROP_DESCRIPTION);
|
||||||
|
out.write(desc != null ? desc : "");
|
||||||
|
out.write("</td><td>");
|
||||||
|
// actions
|
||||||
|
Utils.encodeRecursive(fc, aquireAction(
|
||||||
|
fc, userStorePrefix, username, "create_form_content", "/images/icons/new_content.gif",
|
||||||
|
null, "wizard:createWebContent", null));
|
||||||
|
out.write("</td></tr>");
|
||||||
|
}
|
||||||
|
|
||||||
|
out.write("</table>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Byte size converter
|
* @return Byte size converter
|
||||||
*/
|
*/
|
||||||
|
@@ -576,8 +576,8 @@ a.topToolbarLinkHighlight, a.topToolbarLinkHighlight:link, a.topToolbarLinkHighl
|
|||||||
|
|
||||||
.modifiedItemsList
|
.modifiedItemsList
|
||||||
{
|
{
|
||||||
background-color: #EEEEEE;
|
background-color: #f8f8f8;
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
border-style: dashed;
|
border-style: solid;
|
||||||
border-color: #AAAAAA;
|
border-color: #DDDDDD;
|
||||||
}
|
}
|
||||||
|
BIN
source/web/images/icons/revert.gif
Normal file
BIN
source/web/images/icons/revert.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 569 B |
BIN
source/web/images/icons/revert_large.gif
Normal file
BIN
source/web/images/icons/revert_large.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
Reference in New Issue
Block a user