11-03-2009 09:59 AM
11-03-2009 10:33 AM
11-03-2009 12:17 PM
Alfresco.doclib.Actions.prototype.onActionBackup = function DL_onActionBackup(file)
{
this.modules.actions.genericAction(
…
11-03-2009 01:40 PM
Alfresco.doclib.Actions.prototype.onActionBackup = function DL_onActionBackup(file)
{
//var file = this.widgets.dataTable.getRecord(row).getData();
11-03-2009 02:29 PM
<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>
11-03-2009 02:51 PM
11-03-2009 04:28 PM
11-04-2009 07:24 AM
…
<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>
<share>/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/documentlibrary/documentlist.get.head.ftl
…
<!– 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>
<share>/components/documentlibrary/backup-action.js
/**
* 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]
}
}
});
};
})();
I Use the YUI Compressor to compress the backup-action.js and create <share>/components/documentlibrary/backup-action-min.js: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
and then the following three files, which will form our backup repository 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>
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();
backup.post.json.ftl
<#import "action.lib.ftl" as actionLib />
<@actionLib.resultsJSON results=results />
I browse to the Web Scripts Home, (http://<server>/alfresco/service/index) and after "Refresh Web Scripts" I "Browse all Web Scripts":
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
finally I Check if the webscripts have registered correctly by browsing to: http://<server>/alfresco/service/script/org/alfresco/slingshot/documentlibrary/action/backup.post:
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]
11-07-2009 05:13 PM
11-09-2009 05:53 AM
/**
* 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]
}
}
});
};
})();
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.