diff --git a/config/alfresco/messages/webclient.properties b/config/alfresco/messages/webclient.properties index b1dad76cf0..03c93f173a 100644 --- a/config/alfresco/messages/webclient.properties +++ b/config/alfresco/messages/webclient.properties @@ -924,6 +924,7 @@ sandbox_icon=Browse Website sandbox_snapshot=Create Snapshot sandbox_snapshot_info=Create a snaphost of this sandbox. sandbox_remove=Delete Sandbox +sandbox_refresh=Refresh import_website_content=Bulk Import title_browse_sandbox=Browse Sandbox sandbox_info=Use this view to browse the files and folders within the sandbox for a web project. diff --git a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java index 6880f0633c..3bfbeea9ad 100644 --- a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java +++ b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java @@ -862,6 +862,25 @@ public class AVMBrowseBean implements IContextListener this.allItemsAction = true; } + /** + * Refresh Sandbox in the virtualisation server + */ + public void refreshSandbox(ActionEvent event) + { + UIActionLink link = (UIActionLink)event.getComponent(); + Map params = link.getParameterMap(); + String store = params.get("store"); + + if (store == null) + { + store = getStagingStore(); + } + + // update the specified webapp in the store + String webappPath = AVMConstants.buildStoreWebappPath(store, getWebapp()); + AVMConstants.updateVServerWebapp(webappPath, true); + } + /** * Undo changes to a single node */ diff --git a/source/java/org/alfresco/web/ui/repo/component/shelf/UIClipboardShelfItem.java b/source/java/org/alfresco/web/ui/repo/component/shelf/UIClipboardShelfItem.java index f17b67b71b..e22e994488 100644 --- a/source/java/org/alfresco/web/ui/repo/component/shelf/UIClipboardShelfItem.java +++ b/source/java/org/alfresco/web/ui/repo/component/shelf/UIClipboardShelfItem.java @@ -35,6 +35,7 @@ import javax.faces.event.FacesEvent; import org.alfresco.model.ContentModel; import org.alfresco.repo.avm.AVMNodeConverter; import org.alfresco.service.cmr.dictionary.DictionaryService; +import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.web.app.Application; import org.alfresco.web.app.servlet.DownloadContentServlet; import org.alfresco.web.bean.clipboard.ClipboardItem; @@ -154,6 +155,7 @@ public class UIClipboardShelfItem extends UIShelfItem if (items.size() != 0) { DictionaryService dd = Repository.getServiceRegistry(context).getDictionaryService(); + NodeService nodeService = Repository.getServiceRegistry(context).getNodeService(); ResourceBundle bundle = Application.getBundle(context); @@ -161,6 +163,14 @@ public class UIClipboardShelfItem extends UIShelfItem { ClipboardItem item = items.get(i); + // check that the item has not been deleted since added to the clipboard + if (nodeService.exists(item.getNodeRef()) == false) + { + // remove from clipboard + items.remove(i--); + continue; + } + // start row with cut/copy state icon out.write(""); if (item.getMode() == ClipboardStatus.COPY) diff --git a/source/java/org/alfresco/web/ui/wcm/component/UIUserSandboxes.java b/source/java/org/alfresco/web/ui/wcm/component/UIUserSandboxes.java index f49c5250f1..31cddc2b74 100644 --- a/source/java/org/alfresco/web/ui/wcm/component/UIUserSandboxes.java +++ b/source/java/org/alfresco/web/ui/wcm/component/UIUserSandboxes.java @@ -99,6 +99,7 @@ public class UIUserSandboxes extends SelfRenderingComponent private static final String ACT_SANDBOX_PREVIEW = "sandbox_preview"; private static final String ACT_SANDBOX_ICON = "sandbox_icon"; private static final String ACT_REMOVE_SANDBOX = "sandbox_remove"; + private static final String ACT_SANDBOX_REFRESH = "sandbox_refresh"; private static final String ACTIONS_FILE = "avm_file_modified"; private static final String ACTIONS_FOLDER = "avm_folder_modified"; @@ -362,12 +363,14 @@ public class UIUserSandboxes extends SelfRenderingComponent out.write(bundle.getString(userrole)); out.write(")"); - // direct actions for a sandbox + // Direct actions for a sandbox... + // Browse Sandbox Utils.encodeRecursive(context, aquireAction( context, mainStore, username, ACT_SANDBOX_BROWSE, "/images/icons/space_small.gif", "#{AVMBrowseBean.setupSandboxAction}", "browseSandbox")); out.write("  "); + // Preview Website String websiteUrl = AVMConstants.buildWebappUrl(mainStore, getWebapp()); Map requestMap = context.getExternalContext().getRequestMap(); requestMap.put(REQUEST_PREVIEW_REF, websiteUrl); @@ -375,18 +378,28 @@ public class UIUserSandboxes extends SelfRenderingComponent context, mainStore, username, ACT_SANDBOX_PREVIEW, "/images/icons/preview_website.gif", null, null, "#{" + REQUEST_PREVIEW_REF + "}", null)); requestMap.remove(REQUEST_PREVIEW_REF); - out.write(" "); - - Utils.encodeRecursive(context, aquireAction( - context, mainStore, username, ACT_SANDBOX_SUBMITALL, "/images/icons/submit_all.gif", - "#{AVMBrowseBean.setupAllItemsAction}", "dialog:submitSandboxItems")); out.write("  "); + // Refresh Sandbox + Utils.encodeRecursive(context, aquireAction( + context, mainStore, username, ACT_SANDBOX_REFRESH, "/images/icons/reset.gif", + "#{AVMBrowseBean.refreshSandbox}", null)); + out.write("  "); + + // Submit All Items + // NOTE: removed for 2.0 final + /*Utils.encodeRecursive(context, aquireAction( + context, mainStore, username, ACT_SANDBOX_SUBMITALL, "/images/icons/submit_all.gif", + "#{AVMBrowseBean.setupAllItemsAction}", "dialog:submitSandboxItems")); + out.write("  ");*/ + + // Revert All Items Utils.encodeRecursive(context, aquireAction( context, mainStore, username, ACT_SANDBOX_REVERTALL, "/images/icons/revert_all.gif", "#{AVMBrowseBean.setupAllItemsAction}", "dialog:revertAllItems")); out.write("  "); + // Delete Sandbox if (AVMConstants.ROLE_CONTENT_MANAGER.equals(currentUserRole)) { Utils.encodeRecursive(context, aquireAction( @@ -589,6 +602,24 @@ public class UIUserSandboxes extends SelfRenderingComponent // TODO: apply tag style - removed hardcoded out.write(""); + // output multi-select actions for this user + out.write(""); + // header row out.write(""); } - // output multi-select actions for this user - out.write(""); - // end table out.write("
"); + out.write(bundle.getString(MSG_SELECTED)); + out.write(":  "); + NodeRef userStoreRef = AVMNodeConverter.ToNodeRef(-1, AVMConstants.buildSandboxRootPath(userStore)); + if (permissionService.hasPermission(userStoreRef, PermissionService.WRITE) == AccessStatus.ALLOWED || + permissionService.hasPermission(userStoreRef, PermissionService.ADD_CHILDREN) == AccessStatus.ALLOWED) + { + Utils.encodeRecursive(fc, aquireAction( + fc, userStore, username, ACT_SANDBOX_SUBMITSELECTED, "/images/icons/submit_all.gif", + "#{AVMBrowseBean.setupSandboxAction}", "dialog:submitSandboxItems")); + out.write("  "); + Utils.encodeRecursive(fc, aquireAction( + fc, userStore, username, ACT_SANDBOX_REVERTSELECTED, "/images/icons/revert_all.gif", + "#{AVMBrowseBean.setupSandboxAction}", "dialog:revertSelectedItems")); + } + out.write("
"); // multi-select checkbox @@ -745,24 +776,6 @@ public class UIUserSandboxes extends SelfRenderingComponent out.write("
"); - out.write(bundle.getString(MSG_SELECTED)); - out.write(":  "); - NodeRef userStoreRef = AVMNodeConverter.ToNodeRef(-1, AVMConstants.buildSandboxRootPath(userStore)); - if (permissionService.hasPermission(userStoreRef, PermissionService.WRITE) == AccessStatus.ALLOWED || - permissionService.hasPermission(userStoreRef, PermissionService.ADD_CHILDREN) == AccessStatus.ALLOWED) - { - Utils.encodeRecursive(fc, aquireAction( - fc, userStore, username, ACT_SANDBOX_SUBMITSELECTED, "/images/icons/submit_all.gif", - "#{AVMBrowseBean.setupSandboxAction}", "dialog:submitSandboxItems")); - out.write("  "); - Utils.encodeRecursive(fc, aquireAction( - fc, userStore, username, ACT_SANDBOX_REVERTSELECTED, "/images/icons/revert_all.gif", - "#{AVMBrowseBean.setupSandboxAction}", "dialog:revertSelectedItems")); - } - out.write("
"); } diff --git a/source/web/jsp/wcm/browse-website.jsp b/source/web/jsp/wcm/browse-website.jsp index 7b9e5f0cdb..e1173c7762 100644 --- a/source/web/jsp/wcm/browse-website.jsp +++ b/source/web/jsp/wcm/browse-website.jsp @@ -130,8 +130,10 @@ -    +   +   + <%-- Disabled action for GA --%>