diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnail.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnail.lib.ftl new file mode 100644 index 0000000000..4754aed9ef --- /dev/null +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnail.lib.ftl @@ -0,0 +1,6 @@ +<#macro thumbnailJSON node thumbnailName> +{ + "thumbnailName" : "${thumbnailName}", + "url" : "${url.serviceContext}/api/node/${node.storeType}/${node.storeId}/${node.id}/content/thumbnails/${thumbnailName}" +} + \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnails.get.js b/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnails.get.js new file mode 100644 index 0000000000..2310c1c59a --- /dev/null +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnails.get.js @@ -0,0 +1,23 @@ +function main() +{ + // Get the node from the URL + var pathSegments = url.match.split("/"); + var reference = [ url.templateArgs.store_type, url.templateArgs.store_id ].concat(url.templateArgs.id.split("/")); + var node = search.findNode(pathSegments[2], reference); + + // 404 if the node to thumbnail is not found + if (node == null) + { + status.setCode(status.STATUS_NOT_FOUND, "The thumbnail source node could not be found"); + return; + } + + // Get the thumbnails + var thumbnails = node.getThumbnails(); + + // Add them to the model + model.node = node; + model.thumbnails = thumbnails; +} + +main(); \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnails.get.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnails.get.json.ftl new file mode 100644 index 0000000000..fe8ec7126a --- /dev/null +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnails.get.json.ftl @@ -0,0 +1,8 @@ +<#import "thumbnail.lib.ftl" as thumbnailLib/> + +[ + <#list thumbnails as thumbnail> + <@thumbnailLib.thumbnailJSON node=node thumbnailName=thumbnail.properties.thumbnailName/> + <#if thumbnail_has_next>, + +] \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnails.post.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnails.post.json.ftl index 8ef8781e35..38a1892120 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnails.post.json.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnails.post.json.ftl @@ -1,6 +1,5 @@ +<#import "thumbnail.lib.ftl" as thumbnailLib/> + <#if node?exists> -{ - "thumbnailName" : "${thumbnailName}", - "url" : "${url.serviceContext}/api/node/${node.storeType}/${node.storeId}/${node.id}/content/thumbnails/${thumbnailName}" -} + <@thumbnailLib.thumbnailJSON node=node thumbnailName=thumbnailName/> \ No newline at end of file diff --git a/source/java/org/alfresco/repo/web/scripts/thumbnail/ThumbnailServiceTest.java b/source/java/org/alfresco/repo/web/scripts/thumbnail/ThumbnailServiceTest.java index 8a3a919e2d..21f091d5a1 100644 --- a/source/java/org/alfresco/repo/web/scripts/thumbnail/ThumbnailServiceTest.java +++ b/source/java/org/alfresco/repo/web/scripts/thumbnail/ThumbnailServiceTest.java @@ -38,6 +38,7 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.util.GUID; import org.apache.tools.ant.taskdefs.Sleep; +import org.json.JSONArray; import org.json.JSONObject; import org.springframework.mock.web.MockHttpServletResponse; @@ -115,6 +116,12 @@ public class ThumbnailServiceTest extends BaseWebScriptTest System.out.println(response.getContentAsString()); } + // Check getAll whilst we are here + MockHttpServletResponse getAllResp = this.getRequest(getThumbnailsURL(jpgNode), 200); + JSONArray getArr = new JSONArray(getAllResp.getContentAsString()); + assertNotNull(getArr); + assertEquals(0, getArr.length()); + // Do a image transformation (medium) String url = "/api/node/" + jpgNode.getStoreRef().getProtocol() + "/" + jpgNode.getStoreRef().getIdentifier() + "/" + jpgNode.getId() + "/content/thumbnails"; JSONObject tn = new JSONObject(); @@ -127,6 +134,13 @@ public class ThumbnailServiceTest extends BaseWebScriptTest System.out.println(thumbnailUrl); response = getRequest(thumbnailUrl, 200); + // Check getAll whilst we are here + getAllResp = this.getRequest(getThumbnailsURL(jpgNode), 200); + getArr = new JSONArray(getAllResp.getContentAsString()); + assertNotNull(getArr); + assertEquals(1, getArr.length()); + assertEquals("medium", getArr.getJSONObject(0).get("thumbnailName")); + } public void testCreateAsyncThumbnail() throws Exception @@ -154,7 +168,6 @@ public class ThumbnailServiceTest extends BaseWebScriptTest getWait(jpgNode, "medium"); } - private void getWait(NodeRef node, String thumbnailName) throws Exception {