diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.lib.ftl index 2b7028a31e..3069b73a0a 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.lib.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.lib.ftl @@ -2,46 +2,46 @@ <#macro renderPerson person fieldName> <#escape x as jsonUtils.encodeJSONString(x)> - "${fieldName}": - { - <#if person.assocs["cm:avatar"]??> - "avatarRef": "${person.assocs["cm:avatar"][0].nodeRef?string}", - - "username": "${person.properties["cm:userName"]}", - "firstName": "${person.properties["cm:firstName"]!""}", - "lastName": "${person.properties["cm:lastName"]!""}" - }, + "${fieldName}": + { + <#if person.assocs["cm:avatar"]??> + "avatarRef": "${person.assocs["cm:avatar"][0].nodeRef?string}", + + "username": "${person.properties["cm:userName"]}", + "firstName": "${person.properties["cm:firstName"]!""}", + "lastName": "${person.properties["cm:lastName"]!""}" + }, <#-- - This template renders a link. + This template renders a link. --> <#macro linkJSON item> <#escape x as jsonUtils.encodeJSONString(x)> { - "url": "${item.url!''}", - "commentsUrl": "/node/${item.node.nodeRef?replace('://','/')}/comments", - "description": "${item.description!''}", - "nodeRef": "${item.node.nodeRef}", - "name": "${item.name!''}", - "title": "${item.title!''}", - "internal": ${(item.internal!false)?string}, - "createdOn": "${item.createdOn?string("MMM dd yyyy HH:mm:ss 'GMT'Z '('zzz')'")}", - <#if item.creator??> - <@renderPerson person=item.creator fieldName="author" /> - <#else> - "author": - { - "username": "${item.node.properties.creator}" - }, - - "permissions": - { - "edit": ${item.node.hasPermission("Write")?string}, - "delete": ${item.node.hasPermission("Delete")?string} - }, - "tags": [<#list item.tags as x>"${x}"<#if x_has_next>, ] + "url": "${item.url!''}", + "commentsUrl": "/node/${item.node.nodeRef?replace('://','/')}/comments", + "description": "${item.description!''}", + "nodeRef": "${item.node.nodeRef}", + "name": "${item.name!''}", + "title": "${item.title!''}", + "internal": ${(item.internal!false)?string}, + "createdOn": "${item.createdOn?string("MMM dd yyyy HH:mm:ss 'GMT'Z '('zzz')'")}", + <#if item.creator??> + <@renderPerson person=item.creator fieldName="author" /> + <#else> + "author": + { + "username": "${item.node.properties.creator}" + }, + + "permissions": + { + "edit": ${item.node.hasPermission("Write")?string}, + "delete": ${item.node.hasPermission("Delete")?string} + }, + "tags": [<#list item.tags as x>"${x}"<#if x_has_next>, ] } @@ -49,16 +49,16 @@ <#macro renderLinkList> <#escape x as jsonUtils.encodeJSONString(x)> { - "metadata": - { - "linkPermissions": - { - "create": "${links.hasPermission("CreateChildren")?string}" - } - }, - <@gen.pagedResults data=data ; item> - <@linkJSON item=item /> - + "metadata": + { + "linkPermissions": + { + "create": "${links.hasPermission("CreateChildren")?string}" + } + }, + <@gen.pagedResults data=data ; item> + <@linkJSON item=item /> + } @@ -66,7 +66,7 @@ <#macro renderLink> <#escape x as jsonUtils.encodeJSONString(x)> { - "item": <@linkJSON item=item /> + "item": <@linkJSON item=item /> } \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js index 813fe54db5..3894fae490 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js @@ -25,15 +25,15 @@ function runAction(p_params) // Ensure the file is versionable if (!assetNode.hasAspect("cm:versionable")) { - var props = new Array(1); - props["cm:autoVersionOnUpdateProps"] = false; - assetNode.addAspect("cm:versionable", props); + var props = new Array(1); + props["cm:autoVersionOnUpdateProps"] = false; + assetNode.addAspect("cm:versionable", props); } if (assetNode.versionHistory == null) { - // Create the first version manually so we have 1.0 before checkout - assetNode.createVersion("", true); + // Create the first version manually so we have 1.0 before checkout + assetNode.createVersion("", true); } // Checkout the asset @@ -43,6 +43,10 @@ function runAction(p_params) status.setCode(status.STATUS_INTERNAL_SERVER_ERROR, "Could not checkout: " + p_params.path); return; } + + // Extra property to allow the full series of actions via the Explorer client + workingCopy.properties["cm:workingCopyMode"] = "offlineEditing"; + workingCopy.save(); var resultId = assetNode.name, resultNodeRef = workingCopy.nodeRef.toString(); diff --git a/source/java/org/alfresco/repo/webdav/MoveMethod.java b/source/java/org/alfresco/repo/webdav/MoveMethod.java index 5e339c383a..20b0b37d61 100644 --- a/source/java/org/alfresco/repo/webdav/MoveMethod.java +++ b/source/java/org/alfresco/repo/webdav/MoveMethod.java @@ -68,6 +68,15 @@ public class MoveMethod extends AbstractMoveOrCopyMethod checkNode(fileInfo); - fileFolderService.move(sourceNodeRef, destParentNodeRef, name); + if (getNodeService().getPrimaryParent(sourceNodeRef).getParentRef().equals(destParentNodeRef)) + { + // It is renaming operation + fileFolderService.rename(sourceNodeRef, name); + } + else + { + // It is move operation + fileFolderService.move(sourceNodeRef, destParentNodeRef, name); + } } } diff --git a/source/java/org/alfresco/repo/webdav/WebDAVMethod.java b/source/java/org/alfresco/repo/webdav/WebDAVMethod.java index f59dbd44cd..fd0b65a23c 100644 --- a/source/java/org/alfresco/repo/webdav/WebDAVMethod.java +++ b/source/java/org/alfresco/repo/webdav/WebDAVMethod.java @@ -383,7 +383,15 @@ public abstract class WebDAVMethod factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); - body = builder.parse(new InputSource(m_request.getReader())); + if (m_request.getCharacterEncoding() == null) + { + // Let the XML parser work out the encoding if it is not explicitly declared in the HTTP header + body = builder.parse(new InputSource(m_request.getInputStream())); + } + else + { + body = builder.parse(new InputSource(m_request.getReader())); + } } catch (ParserConfigurationException e) {