As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
Alfresco.doclib.Actions.prototype.onActionBackup = function DL_onActionBackup(file) { this.modules.actions.genericAction( …
Alfresco.doclib.Actions.prototype.onActionBackup = function DL_onActionBackup(file) { //var file = this.widgets.dataTable.getRecord(row).getData();
<script type="text/javascript" src="${page.url.context}/components/documentlibrary/backup-action.js"></script> vs <@script type="text/javascript" src="${page.url.context}/components/documentlibrary/backup-action.js"></@script>
… <action id="onActionManageAspects" type="action-link" permission="edit" label="actions.document.manage-aspects" /> <action id="onActionBackup" type="action-link" permission="" label="actions.document.backup" /> </actionSet>
… <!– Manage Aspects –> <@link rel="stylesheet" type="text/css" href="${page.url.context}/modules/documentlibrary/aspects.css" /> <@script type="text/javascript" src="${page.url.context}/modules/documentlibrary/aspects.js"></@script> <!– Backup Action –> <@link rel="stylesheet" type="text/css" href="${page.url.context}/components/documentlibrary/backup-action.css" /> <@script type="text/javascript" src="${page.url.context}/components/documentlibrary/backup-action.js"></@script>
/** * DocumentList "Backup" action * * @namespace Alfresco * @class Alfresco.DocumentList */ (function() { /** * Backup single document. * * @method onActionBackup * @param row {object} DataTable row representing file to be actioned */ Alfresco.doclib.Actions.prototype.onActionBackup = function DL_onActionBackup(file) { //var file = this.widgets.dataTable.getRecord(row).getData(); this.modules.actions.genericAction( { success: { message: this._msg("message.backup.success", file.displayName) }, failure: { message: this._msg("message.backup.failure", file.displayName) }, webscript: { name: "backup/site/{site}/{container}", method: Alfresco.util.Ajax.POST }, params: { site: this.options.siteId, container: this.options.containerId }, config: { requestContentType: Alfresco.util.Ajax.JSON, dataObj: { nodeRefs: [file.nodeRef] } } }); }; })();
java -jar yuicompressor-2.4.2.jar <share>/components/documentlibrary/backup-action.js -o <share>/components/documentlibrary/backup-action-min.js
/org /alfresco /slingshot /documentlibrary /action
<webscript> <shortname>backup</shortname> <description>Document List Action - Backup document(s)</description> <url>/slingshot/doclib/action/backup/site/{site}/{container}</url> <format default="json">argument</format> <authentication>user</authentication> <transaction>required</transaction> </webscript>
<import resource="classpath:/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/action.lib.js"> /** * Backup multiple files action * @method POST */ /** * Entrypoint required by action.lib.js * * @method runAction * @param p_params {object} Object literal containing files array * @return {object|null} object representation of action results */ function runAction(p_params) { var results = []; var files = p_params.files; var file, fileNode, result, nodeRef; // Find destination node var destNode = p_params.rootNode.childByNamePath("/Backup"); if (destNode == null) { destNode = p_params.rootNode.createFolder("Backup"); } // Must have destNode by this point if (destNode == null) { status.setCode(status.STATUS_NOT_FOUND, "Could not find or create /Backup folder."); return; } // Must have array of files if (!files || files.length == 0) { status.setCode(status.STATUS_BAD_REQUEST, "No files."); return; } for (file in files) { nodeRef = files[file]; result = { nodeRef: nodeRef, action: "backupFile", success: false } try { fileNode = search.findNode(nodeRef); if (fileNode === null) { result.id = file; result.nodeRef = nodeRef; result.success = false; } else { result.id = fileNode.name; result.type = fileNode.isContainer ? "folder" : "document"; // copy the node to the backup folder result.nodeRef = fileNode.copy(destNode); result.success = (result.nodeRef !== null); } } catch (e) { result.id = file; result.nodeRef = nodeRef; result.success = false; } results.push(result); } return results; } /* Bootstrap action script */ main();
<#import "action.lib.ftl" as actionLib /> <@actionLib.resultsJSON results=results />
backup POST /alfresco/service/slingshot/doclib/action/backup/site/{site}/{container} — Document List Action - Backup document(s) — Authentication: user Transaction: required Format Style: argument Default Format: json Id: org/alfresco/slingshot/documentlibrary/action/backup.post Descriptor: workspace://SpacesStore/app:company_home/app:dictionary/cm:extensionwebscripts/org/alfresco/slingshot/documentlibrary/action/backup.post.desc.xml
Web Script: org/alfresco/slingshot/documentlibrary/action/backup.post Generated from /alfresco/service/script/org/alfresco/slingshot/documentlibrary/action/backup.post on 4/Nov/2009 11:32:58 Script Properties Id: org/alfresco/slingshot/documentlibrary/action/backup.post Short Name: backup Description: Document List Action - Backup document(s) Authentication: user Transaction: required Method: POST URL Template: /slingshot/doclib/action/backup/site/{site}/{container} Format Style: argument Default Format: json Negotiated Formats: [undefined] Implementation: class org.alfresco.web.scripts.DeclarativeWebScript Extensions: [undefined] Store: workspace://SpacesStore/app:company_home/app:dictionary/cm:extensionwebscripts File: org/alfresco/slingshot/documentlibrary/action/backup.post.desc.xml <webscript> <shortname>backup</shortname> <description>Document List Action - Backup document(s)</description> <url>/slingshot/doclib/action/backup/site/{site}/{container}</url> <format default="json">argument</format> <authentication>user</authentication> <transaction>required</transaction> </webscript> File: org/alfresco/slingshot/documentlibrary/action/backup.post.json.ftl <#import "action.lib.ftl" as actionLib /> <@actionLib.resultsJSON results=results /> File: org/alfresco/slingshot/documentlibrary/action/backup.post.json.js <import resource="classpath:/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/action.lib.js"> /** * Backup multiple files action * @method POST */ /** * Entrypoint required by action.lib.js * * @method runAction * @param p_params {object} Object literal containing files array * @return {object|null} object representation of action results */ function runAction(p_params) { var results = []; var files = p_params.files; var file, fileNode, result, nodeRef; // Find destination node var destNode = p_params.rootNode.childByNamePath("/Backup"); if (destNode == null) { destNode = p_params.rootNode.createFolder("Backup"); } // Must have destNode by this point if (destNode == null) { status.setCode(status.STATUS_NOT_FOUND, "Could not find or create /Backup folder."); return; } // Must have array of files if (!files || files.length == 0) { status.setCode(status.STATUS_BAD_REQUEST, "No files."); return; } for (file in files) { nodeRef = files[file]; result = { nodeRef: nodeRef, action: "backupFile", success: false } try { fileNode = search.findNode(nodeRef); if (fileNode === null) { result.id = file; result.nodeRef = nodeRef; result.success = false; } else { result.id = fileNode.name; result.type = fileNode.isContainer ? "folder" : "document"; // copy the node to the backup folder result.nodeRef = fileNode.copy(destNode); result.success = (result.nodeRef !== null); } } catch (e) { result.id = file; result.nodeRef = nodeRef; result.success = false; } results.push(result); } return results; } /* Bootstrap action script */ main(); Store: workspace://SpacesStore/app:company_home/app:dictionary/cm:webscripts [No implementation files] Store: classpath:alfresco/templates/webscripts [No implementation files] Store: classpath:alfresco/webscripts [No implementation files]
/** * DocumentList "Backup" action * * @namespace Alfresco * @class Alfresco.DocumentList */ (function() { /** * Backup single document. * * @method onActionBackup * @param row {object} DataTable row representing file to be actioned */ Alfresco.DocumentList.prototype.onActionBackup = function DL_onActionBackup(row) { var file = row; var displayName = file.displayName; var nodeRef = file.nodeRef; this.modules.actions.genericAction( { success: { message: this.msg("message.backup.success", displayName) // previously _msg }, failure: { message: this.msg("message.backup.failure", displayName) }, webscript: { name: "backup/site/{site}/{container}", method: Alfresco.util.Ajax.POST }, params: { site: this.options.siteId, container: this.options.containerId }, wait: { message: this.msg("message.please-wait") }, config: { requestContentType: Alfresco.util.Ajax.JSON, dataObj: { nodeRefs: [nodeRef] } } }); }; })();
11:27:32,457 ERROR [org.alfresco.web.scripts.AbstractRuntime] Exception from executeScript - redirecting to status template error: 10100022 Wrapped Exception (with status template\ ): org.json.JSONObject$Null cannot be cast to java.io.Serializable org.alfresco.web.scripts.WebScriptException: 10100022 Wrapped Exception (with status template): org.json.JSONObject$Null cannot be cast to java.io.Serializable at org.alfresco.web.scripts.AbstractWebScript.createStatusException(AbstractWebScript.java:613) at org.alfresco.web.scripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:165) at org.alfresco.repo.web.scripts.RepositoryContainer$2.execute(RepositoryContainer.java:357) at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:326) at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:407) at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:424) at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:288) at org.alfresco.web.scripts.AbstractRuntime.executeScript(AbstractRuntime.java:262) at org.alfresco.web.scripts.AbstractRuntime.executeScript(AbstractRuntime.java:139) at org.alfresco.web.scripts.servlet.WebScriptServlet.service(WebScriptServlet.java:122) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.ClassCastException: org.json.JSONObject$Null cannot be cast to java.io.Serializable at org.alfresco.repo.jscript.ValueConverter.convertValueForRepo(ValueConverter.java:169) at org.alfresco.repo.jscript.ValueConverter.convertValueForRepo(ValueConverter.java:241) at org.alfresco.repo.jscript.ValueConverter.convertValueForRepo(ValueConverter.java:206) at org.alfresco.repo.web.scripts.RepositoryScriptProcessor.unwrapValue(RepositoryScriptProcessor.java:116) at org.alfresco.web.scripts.DeclarativeWebScript.mergeScriptModelIntoTemplateModel(DeclarativeWebScript.java:181) at org.alfresco.web.scripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:91) … 21 more
var file = this.widgets.dataTable.getRecord(row).getData();
var file = row;