mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
. Soft Delete UI fixups and minor changes
- Removed use of "sys:archivedOriginalPath" - instead uses childassocref to build path (as per Derek's request) - Fix to building of success/failure items lists outside of the transaction to restore nodes . JavaScript example files added to bootstrap . JavaScript file icons from Linton git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2868 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -35,10 +35,10 @@ import org.alfresco.repo.node.archive.RestoreNodeReport;
|
||||
import org.alfresco.repo.node.archive.RestoreNodeReport.RestoreStatus;
|
||||
import org.alfresco.repo.search.impl.lucene.QueryParser;
|
||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.repository.Path;
|
||||
import org.alfresco.service.cmr.search.ResultSet;
|
||||
import org.alfresco.service.cmr.search.ResultSetRow;
|
||||
import org.alfresco.service.cmr.search.SearchParameters;
|
||||
@@ -479,13 +479,31 @@ public class TrashcanBean implements IContextListener
|
||||
|
||||
private NodePropertyResolver resolverLocationPath = new NodePropertyResolver() {
|
||||
public Object get(Node node) {
|
||||
return (Path)node.getProperties().get(ContentModel.PROP_ARCHIVED_ORIGINAL_PATH);
|
||||
ChildAssociationRef childRef =
|
||||
(ChildAssociationRef)node.getProperties().get(ContentModel.PROP_ARCHIVED_ORIGINAL_PARENT_ASSOC);
|
||||
if (nodeService.exists(childRef.getParentRef()))
|
||||
{
|
||||
return nodeService.getPath(childRef.getParentRef());
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private NodePropertyResolver resolverDisplayPath = new NodePropertyResolver() {
|
||||
public Object get(Node node) {
|
||||
return Repository.getDisplayPath((Path)node.getProperties().get(ContentModel.PROP_ARCHIVED_ORIGINAL_PATH));
|
||||
ChildAssociationRef childRef =
|
||||
(ChildAssociationRef)node.getProperties().get(ContentModel.PROP_ARCHIVED_ORIGINAL_PARENT_ASSOC);
|
||||
if (nodeService.exists(childRef.getParentRef()))
|
||||
{
|
||||
return Repository.getDisplayPath(nodeService.getPath(childRef.getParentRef()), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -623,6 +641,16 @@ public class TrashcanBean implements IContextListener
|
||||
contextUpdated();
|
||||
}
|
||||
|
||||
/**
|
||||
* Action handler to setup actions that act on lists
|
||||
*/
|
||||
public void setupListAction(ActionEvent event)
|
||||
{
|
||||
// clear the UI state in preparation for finishing the next action
|
||||
setDestination(null);
|
||||
contextUpdated();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete single item OK button handler
|
||||
*/
|
||||
@@ -739,12 +767,6 @@ public class TrashcanBean implements IContextListener
|
||||
{
|
||||
FacesContext fc = FacesContext.getCurrentInstance();
|
||||
|
||||
UserTransaction tx = null;
|
||||
try
|
||||
{
|
||||
tx = Repository.getUserTransaction(FacesContext.getCurrentInstance(), true);
|
||||
tx.begin();
|
||||
|
||||
// restore the nodes - the user may have requested a restore to a different parent
|
||||
List<NodeRef> nodeRefs = new ArrayList<NodeRef>(this.listedItems.size());
|
||||
for (Node node : this.listedItems)
|
||||
@@ -761,6 +783,12 @@ public class TrashcanBean implements IContextListener
|
||||
reports = this.nodeArchiveService.restoreArchivedNodes(nodeRefs, this.destination, null, null);
|
||||
}
|
||||
|
||||
UserTransaction tx = null;
|
||||
try
|
||||
{
|
||||
tx = Repository.getUserTransaction(FacesContext.getCurrentInstance(), true);
|
||||
tx.begin();
|
||||
|
||||
saveReportDetail(reports);
|
||||
|
||||
tx.commit();
|
||||
@@ -776,9 +804,6 @@ public class TrashcanBean implements IContextListener
|
||||
fc.addMessage(null, facesMsg);
|
||||
}
|
||||
|
||||
// clear the UI state in preparation for finishing the action
|
||||
contextUpdated();
|
||||
|
||||
return OUTCOME_RECOVERY_REPORT;
|
||||
}
|
||||
|
||||
@@ -789,12 +814,6 @@ public class TrashcanBean implements IContextListener
|
||||
{
|
||||
FacesContext fc = FacesContext.getCurrentInstance();
|
||||
|
||||
UserTransaction tx = null;
|
||||
try
|
||||
{
|
||||
tx = Repository.getUserTransaction(FacesContext.getCurrentInstance(), true);
|
||||
tx.begin();
|
||||
|
||||
// restore all nodes - the user may have requested a restore to a different parent
|
||||
List<RestoreNodeReport> reports;
|
||||
if (this.destination == null)
|
||||
@@ -806,7 +825,12 @@ public class TrashcanBean implements IContextListener
|
||||
reports = this.nodeArchiveService.restoreAllArchivedNodes(Repository.getStoreRef(), this.destination, null, null);
|
||||
}
|
||||
|
||||
// TODO: wrap all this in a UserTransaction - it performs a lot of getProperties()!
|
||||
UserTransaction tx = null;
|
||||
try
|
||||
{
|
||||
tx = Repository.getUserTransaction(FacesContext.getCurrentInstance(), true);
|
||||
tx.begin();
|
||||
|
||||
saveReportDetail(reports);
|
||||
|
||||
tx.commit();
|
||||
@@ -822,9 +846,6 @@ public class TrashcanBean implements IContextListener
|
||||
fc.addMessage(null, facesMsg);
|
||||
}
|
||||
|
||||
// clear the UI state in preparation for finishing the action
|
||||
contextUpdated();
|
||||
|
||||
return OUTCOME_RECOVERY_REPORT;
|
||||
}
|
||||
|
||||
@@ -858,9 +879,6 @@ public class TrashcanBean implements IContextListener
|
||||
FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), err.getMessage()), err);
|
||||
}
|
||||
|
||||
// clear the UI state in preparation for finishing the action
|
||||
contextUpdated();
|
||||
|
||||
return OUTCOME_DIALOGCLOSE;
|
||||
}
|
||||
|
||||
@@ -879,9 +897,6 @@ public class TrashcanBean implements IContextListener
|
||||
FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), err.getMessage()), err);
|
||||
}
|
||||
|
||||
// clear the UI state in preparation for finishing the action
|
||||
contextUpdated();
|
||||
|
||||
return OUTCOME_DIALOGCLOSE;
|
||||
}
|
||||
|
||||
@@ -1100,10 +1115,11 @@ public class TrashcanBean implements IContextListener
|
||||
buf.append("</td><td>");
|
||||
buf.append(node.getName());
|
||||
buf.append("</td><td>");
|
||||
Path path = (Path)node.getProperties().get(ContentModel.PROP_ARCHIVED_ORIGINAL_PATH);
|
||||
if (path != null)
|
||||
ChildAssociationRef childRef =
|
||||
(ChildAssociationRef)node.getProperties().get(ContentModel.PROP_ARCHIVED_ORIGINAL_PARENT_ASSOC);
|
||||
if (nodeService.exists(childRef.getParentRef()))
|
||||
{
|
||||
buf.append(Repository.getDisplayPath(path));
|
||||
buf.append(Repository.getNamePath(nodeService, nodeService.getPath(childRef.getParentRef()), null, "/", null));
|
||||
}
|
||||
buf.append("</td>");
|
||||
if (report)
|
||||
|
@@ -223,10 +223,25 @@ public final class Repository
|
||||
* @return human readable form of the Path excluding the final element
|
||||
*/
|
||||
public static String getDisplayPath(Path path)
|
||||
{
|
||||
return getDisplayPath(path, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the human readable form of the specified node Path. Fast version of the method that
|
||||
* simply converts QName localname components to Strings.
|
||||
*
|
||||
* @param path Path to extract readable form from
|
||||
* @param showLeaf Whether to process the final leaf element of the path
|
||||
*
|
||||
* @return human readable form of the Path excluding the final element
|
||||
*/
|
||||
public static String getDisplayPath(Path path, boolean showLeaf)
|
||||
{
|
||||
StringBuilder buf = new StringBuilder(64);
|
||||
|
||||
for (int i=0; i<path.size()-1; i++)
|
||||
int count = path.size() - (showLeaf ? 0 : 1);
|
||||
for (int i=0; i<count; i++)
|
||||
{
|
||||
String elementString = null;
|
||||
Path.Element element = path.get(i);
|
||||
|
@@ -55,7 +55,7 @@ public class NodePathTag extends HtmlComponentTag
|
||||
setActionListenerProperty((UICommand)component, this.actionListener);
|
||||
setBooleanProperty(component, "breadcrumb", this.breadcrumb);
|
||||
setBooleanProperty(component, "disabled", this.disabled);
|
||||
setBooleanProperty(component, "showLeaf", this.disabled);
|
||||
setBooleanProperty(component, "showLeaf", this.showLeaf);
|
||||
setStringBindingProperty(component, "value", this.value);
|
||||
}
|
||||
|
||||
|
BIN
source/web/images/filetypes/js.gif
Normal file
BIN
source/web/images/filetypes/js.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
BIN
source/web/images/filetypes32/js.gif
Normal file
BIN
source/web/images/filetypes32/js.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
@@ -114,8 +114,8 @@
|
||||
|
||||
<td align=right style="white-space:nowrap">
|
||||
<%-- Admin only global actions --%>
|
||||
<a:actionLink value="#{msg.recover_all_items}" image="/images/icons/recover_all.gif" action="dialog:recoverAllItems" rendered="#{NavigationBean.currentUser.admin == true}" />
|
||||
<a:actionLink value="#{msg.delete_all_items}" image="/images/icons/delete_all.gif" action="dialog:deleteAllItems" rendered="#{NavigationBean.currentUser.admin == true}" />
|
||||
<a:actionLink value="#{msg.recover_all_items}" image="/images/icons/recover_all.gif" action="dialog:recoverAllItems" actionListener="#{TrashcanBean.setupListAction}" rendered="#{NavigationBean.currentUser.admin == true}" />
|
||||
<a:actionLink value="#{msg.delete_all_items}" image="/images/icons/delete_all.gif" action="dialog:deleteAllItems" actionListener="#{TrashcanBean.setupListAction}" rendered="#{NavigationBean.currentUser.admin == true}" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -210,8 +210,8 @@
|
||||
<div style="padding: 4px;"></div>
|
||||
|
||||
<%-- Recover Listed Items actions --%>
|
||||
<a:actionLink value="#{msg.recover_listed_items}" image="/images/icons/recover_all.gif" action="dialog:recoverListedItems" />
|
||||
<a:actionLink value="#{msg.delete_listed_items}" image="/images/icons/delete_all.gif" action="dialog:deleteListedItems"/>
|
||||
<a:actionLink value="#{msg.recover_listed_items}" image="/images/icons/recover_all.gif" action="dialog:recoverListedItems" actionListener="#{TrashcanBean.setupListAction}" />
|
||||
<a:actionLink value="#{msg.delete_listed_items}" image="/images/icons/delete_all.gif" action="dialog:deleteListedItems" actionListener="#{TrashcanBean.setupListAction}" />
|
||||
<div style="padding: 4px;"></div>
|
||||
|
||||
<a:richList id="trashcan-list" binding="#{TrashcanBean.itemsRichList}" viewMode="details" pageSize="10"
|
||||
@@ -238,7 +238,7 @@
|
||||
<f:facet name="header">
|
||||
<a:sortLink label="#{msg.original_location}" value="displayPath" styleClass="header"/>
|
||||
</f:facet>
|
||||
<r:nodePath value="#{r.locationPath}" actionListener="#{BrowseBean.clickSpacePath}" showLeaf="#{r.isFolder == false}" />
|
||||
<r:nodePath value="#{r.locationPath}" actionListener="#{BrowseBean.clickSpacePath}" showLeaf="true" />
|
||||
</a:column>
|
||||
|
||||
<%-- Deleted Date column --%>
|
||||
|
Reference in New Issue
Block a user