diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/upload/upload.post.js b/config/alfresco/templates/webscripts/org/alfresco/repository/upload/upload.post.js
index 12f4b97775..0cd23d467e 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/upload/upload.post.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/upload/upload.post.js
@@ -3,6 +3,7 @@ var content = null;
var mimetype = null;
var siteId = null;
var containerId = null;
+var thumbnailName = null;
// Upload specific
var uploadDirectory = null;
@@ -73,6 +74,10 @@ for each (field in formdata.fields)
case "overwrite":
overwrite = field.value == "true";
break;
+
+ case "thumbnail":
+ thumbnailName = field.value;
+ break;
}
}
@@ -107,21 +112,21 @@ else
status.message = "Component container (" + containerId + ") not found.";
status.redirect = true;
}
- if(updateNodeRef !== null && uploadDirectory === null)
+
+ if (updateNodeRef !== null && uploadDirectory === null)
{
// Update mode, since updateNodeRef was used
-
var workingCopy = search.findNode(updateNodeRef);
- if(workingCopy.isLocked)
+ if (workingCopy.isLocked)
{
- // Its not a working copy, should have been the working copy, throw error
+ // It's not a working copy, should have been the working copy, throw error
status.code = 404;
status.message = "Cannot upload document since updateNodeRef '" + updateNodeRef + "' points to a locked document, supply a nodeRef to its working copy instead.";
status.redirect = true;
}
- else if(!workingCopy.hasAspect("cm:workingcopy"))
+ else if (!workingCopy.hasAspect("cm:workingcopy"))
{
- // Its not a working copy, do a check out to get the working copy
+ // It's not a working copy, do a check out to get the working copy
workingCopy = workingCopy.checkout();
}
// Update the working copy
@@ -130,7 +135,7 @@ else
workingCopy = workingCopy.checkin(description, majorVersion);
model.document = workingCopy;
}
- else if(uploadDirectory !== null && updateNodeRef === null)
+ else if (uploadDirectory !== null && updateNodeRef === null)
{
var destNode = container;
if (uploadDirectory != "")
@@ -149,7 +154,7 @@ else
if (existingFile !== null)
{
// File already exists, decide what to do
- if(overwrite)
+ if (overwrite)
{
// Upload component was configured to overwrite files if name clashes
existingFile.properties.content.write(content);
@@ -173,7 +178,7 @@ else
}
// save the new file (original or renamed file) as long as an overwrite hasn't been performed
- if(!overwritten)
+ if (!overwritten)
{
var newFile = destNode.createFile(filename);
newFile.properties.contentType = contentType;
@@ -187,6 +192,11 @@ else
newFile.addAspect("cm:versionable");
// Save new file
newFile.save();
+ // Create thumbnail?
+ if (thumbnailName && thumbnailService.isThumbnailNameRegistered(thumbnailName))
+ {
+ newFile.createThumbnail(thumbnailName, true);
+ }
model.document = newFile;
}
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.desc.xml
new file mode 100644
index 0000000000..aee02252c2
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.desc.xml
@@ -0,0 +1,9 @@
+
+ files
+ Document List Action - Move multiple files
+ /slingshot/doclib/action/move-to/site/{site}/{container}/{path}
+ /slingshot/doclib/action/move-to/node/{store_type}/{store_id}/{id}
+ argument
+ user
+ required
+
diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.js
new file mode 100644
index 0000000000..6ce797a5f5
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.js
@@ -0,0 +1,76 @@
+
+
+/**
+ * Move 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.node || getAssetNode(p_params.rootNode, p_params.filePath);
+
+ // Must have destNode by this point
+ if (typeof assetNode == "string")
+ {
+ status.setCode(status.STATUS_NOT_FOUND, "Not found: " + p_params.filePath);
+ 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: "moveFile",
+ 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";
+ // move the node
+ result.success = fileNode.move(destNode);
+ }
+ }
+ catch (e)
+ {
+ result.id = file;
+ result.nodeRef = nodeRef;
+ result.success = false;
+ }
+
+ results.push(result);
+ }
+
+ return results;
+}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.json.ftl
new file mode 100644
index 0000000000..e2f0e9da9f
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.json.ftl
@@ -0,0 +1,2 @@
+<#import "action.lib.ftl" as actionLib />
+<@actionLib.resultsJSON results=results />
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.js
index 1291872980..327f683873 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.js
@@ -2,6 +2,8 @@
+var THUMBNAIL_NAME = "doclib";
+
/**
* Document List Component: doclist
*/
@@ -12,6 +14,9 @@ function getDocList(filter)
{
var items = new Array();
var assets;
+
+ // Is our thumbnail tpe registered?
+ var haveThumbnails = thumbnailService.isThumbnailNameRegistered(THUMBNAIL_NAME);
// Use helper function to get the arguments
var parsedArgs = getParsedArgs();
@@ -44,9 +49,7 @@ function getDocList(filter)
}
// Locked/working copy status defines action set
- var itemStatus;
- var itemOwner;
- var actionSet;
+ var itemStatus, itemOwner, actionSet, thumbnail;
for each(asset in assets)
{
@@ -71,6 +74,17 @@ function getDocList(filter)
itemStatus.push("lockedBySelf");
}
+ // Make sure we have a thumbnail
+ if (haveThumbnails)
+ {
+ thumbnail = asset.getThumbnail(THUMBNAIL_NAME);
+ if (thumbnail === null)
+ {
+ // No thumbnail, so queue creation
+ asset.createThumbnail(THUMBNAIL_NAME, true);
+ }
+ }
+
// Get relevant actions set
actionSet = getActionSet(asset,
{
diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/filters.lib.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/filters.lib.js
index bd2ebb05cc..bd7014fe82 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/filters.lib.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/filters.lib.js
@@ -30,6 +30,7 @@ function getFilterQuery(filter, obj)
filterQuery = "+PATH:\"" + obj.rootNode.qnamePath + "//*\" ";
filterQuery += "+@cm\\:" + dateField + ":[" + fromQuery + "T00\\:00\\:00 TO " + toQuery + "T23\\:59\\:59] ";
filterQuery += "-ASPECT:\"{http://www.alfresco.org/model/content/1.0}workingcopy\"";
+ filterQuery += "-TYPE:\"{http://www.alfresco.org/model/content/1.0}thumbnail\"";
break;
case "editingMe":