Compare commits

...

28 Commits

Author SHA1 Message Date
alfresco-build
9860cf63ae [maven-release-plugin][skip ci] prepare release 25.3.0.64 2025-10-30 09:16:47 +00:00
Somnath-Deshmukh
a49e0b2ae3 MNT-25422 Bulleted list, numbered list, and underline are not working properly when adding comment in the file. (#3624) 2025-10-30 13:26:32 +05:30
alfresco-build
e28b7b35da [maven-release-plugin][skip ci] prepare for next development iteration 2025-10-28 11:24:54 +00:00
alfresco-build
6baafc0e88 [maven-release-plugin][skip ci] prepare release 25.3.0.63 2025-10-28 11:24:51 +00:00
Somnath-Deshmukh
b1cf78ce7c Fix/mnt 25359 Prevent XSS attack during posting a comment keeping the editor styles intact (#3623)
Fix for MNT-25359 Prevent XSS attack during posting a comment keeping the editor styles intact.
2025-10-28 15:35:34 +05:30
alfresco-build
a2f9857442 [maven-release-plugin][skip ci] prepare for next development iteration 2025-10-26 00:10:29 +00:00
alfresco-build
8c69432052 [maven-release-plugin][skip ci] prepare release 25.3.0.62 2025-10-26 00:10:28 +00:00
Alfresco CI User
124f87ee21 [force] Force release for 2025-10-26. 2025-10-26 00:05:04 +00:00
Swarnajit3004
3cd3b2c2d6 [ACS-10547] Added code to handle PATCH request (#3622) 2025-10-24 10:18:34 +05:30
alfresco-build
14da8d2002 [maven-release-plugin][skip ci] prepare for next development iteration 2025-10-22 09:51:01 +00:00
alfresco-build
6a4bbb021c [maven-release-plugin][skip ci] prepare release 25.3.0.61 2025-10-22 09:50:59 +00:00
Debjit Chattopadhyay
42d70b17c7 Revert "MNT-24776 adding if-else conditionals to avoid null values"
Revert "MNT-24776 adding if-else conditionals to avoid null values"
2025-10-22 14:33:09 +05:30
Debjit Chattopadhyay
c7eba0ddc8 Revert "MNT-24776 adding if-else conditionals to avoid null values"
This reverts commit be02be5a8b.
2025-10-22 13:08:21 +05:30
alfresco-build
266094c0e1 [maven-release-plugin][skip ci] prepare for next development iteration 2025-10-19 00:08:29 +00:00
alfresco-build
e442b4acf0 [maven-release-plugin][skip ci] prepare release 25.3.0.60 2025-10-19 00:08:28 +00:00
Alfresco CI User
fd1028a685 [force] Force release for 2025-10-19. 2025-10-19 00:05:12 +00:00
alfresco-build
0a7e275a9c [maven-release-plugin][skip ci] prepare for next development iteration 2025-10-17 06:19:01 +00:00
alfresco-build
d1bbba7286 [maven-release-plugin][skip ci] prepare release 25.3.0.59 2025-10-17 06:18:59 +00:00
Somnath-Deshmukh
e1baddebee Fix/mnt 25359 (#3613)
Prevent XSS attack during posting a comment
2025-10-17 10:58:02 +05:30
alfresco-build
3263dcaf2f [maven-release-plugin][skip ci] prepare for next development iteration 2025-10-12 00:09:47 +00:00
alfresco-build
8926f7f9a7 [maven-release-plugin][skip ci] prepare release 25.3.0.58 2025-10-12 00:09:45 +00:00
Alfresco CI User
764a1b656c [force] Force release for 2025-10-12. 2025-10-12 00:04:45 +00:00
alfresco-build
cf265f2dea [maven-release-plugin][skip ci] prepare for next development iteration 2025-10-10 08:32:39 +00:00
alfresco-build
fd0d5204eb [maven-release-plugin][skip ci] prepare release 25.3.0.57 2025-10-10 08:32:36 +00:00
Piotr Żurek
f9b8a4b42d Fix missing import 2025-10-10 09:44:45 +02:00
Piotr Żurek
fcdc1438e7 Fix formatting 2025-10-10 09:26:24 +02:00
Axel Faust
7cd1416561 Governance Serivces: LinkedHashSet for stable reader/writer authorities set order + hash code for in-place group names (#2664) 2025-10-10 08:39:23 +02:00
alfresco-build
f197757f94 [maven-release-plugin][skip ci] prepare for next development iteration 2025-10-09 09:23:06 +00:00
30 changed files with 148 additions and 124 deletions

View File

@@ -104,7 +104,7 @@ jobs:
mkdir temp-dir-for-sast mkdir temp-dir-for-sast
bash ./scripts/ci/remove-sast-exclusions.sh ./packaging/war/target/alfresco.war temp-dir-for-sast/reduced.war bash ./scripts/ci/remove-sast-exclusions.sh ./packaging/war/target/alfresco.war temp-dir-for-sast/reduced.war
- name: "Run SAST Scan" - name: "Run SAST Scan"
uses: veracode/Veracode-pipeline-scan-action@v1.0.16 uses: veracode/Veracode-pipeline-scan-action@v1.0.20
with: with:
vid: ${{ secrets.VERACODE_API_ID }} vid: ${{ secrets.VERACODE_API_ID }}
vkey: ${{ secrets.VERACODE_API_KEY }} vkey: ${{ secrets.VERACODE_API_KEY }}

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-amps</artifactId> <artifactId>alfresco-community-repo-amps</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<modules> <modules>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-parent</artifactId> <artifactId>alfresco-governance-services-community-parent</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<modules> <modules>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-automation-community-repo</artifactId> <artifactId>alfresco-governance-services-automation-community-repo</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<build> <build>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-parent</artifactId> <artifactId>alfresco-governance-services-community-parent</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<modules> <modules>

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-repo-parent</artifactId> <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<properties> <properties>

View File

@@ -31,6 +31,7 @@ import static org.alfresco.service.cmr.security.PermissionService.GROUP_PREFIX;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -247,7 +248,7 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
*/ */
private Set<String> getAuthorities(String group) private Set<String> getAuthorities(String group)
{ {
Set<String> result = new HashSet<>(); Set<String> result = new LinkedHashSet<>();
result.addAll(authorityService.getContainedAuthorities(null, group, true)); result.addAll(authorityService.getContainedAuthorities(null, group, true));
return result; return result;
} }

View File

@@ -33,6 +33,7 @@ import java.io.Serializable;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -325,8 +326,8 @@ public class ExtendedPermissionServiceImpl extends PermissionServiceImpl impleme
return aclReaders; return aclReaders;
} }
HashSet<String> assigned = new HashSet<>(); Set<String> assigned = new LinkedHashSet<>();
HashSet<String> readers = new HashSet<>(); Set<String> readers = new LinkedHashSet<>();
for (AccessControlEntry ace : acl.getEntries()) for (AccessControlEntry ace : acl.getEntries())
{ {
@@ -412,8 +413,8 @@ public class ExtendedPermissionServiceImpl extends PermissionServiceImpl impleme
return aclWriters; return aclWriters;
} }
HashSet<String> assigned = new HashSet<>(); Set<String> assigned = new LinkedHashSet<>();
HashSet<String> readers = new HashSet<>(); Set<String> readers = new LinkedHashSet<>();
for (AccessControlEntry ace : acl.getEntries()) for (AccessControlEntry ace : acl.getEntries())
{ {
@@ -485,7 +486,7 @@ public class ExtendedPermissionServiceImpl extends PermissionServiceImpl impleme
Set<String> writers = getWriters(aclId); Set<String> writers = getWriters(aclId);
// add the current owner to the list of extended writers // add the current owner to the list of extended writers
Set<String> modifiedWrtiers = new HashSet<>(writers); Set<String> modifiedWrtiers = new LinkedHashSet<>(writers);
String owner = ownableService.getOwner(nodeRef); String owner = ownableService.getOwner(nodeRef);
if (StringUtils.isNotBlank(owner) && if (StringUtils.isNotBlank(owner) &&
!owner.equals(OwnableService.NO_OWNER) && !owner.equals(OwnableService.NO_OWNER) &&

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-repo-parent</artifactId> <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<build> <build>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<modules> <modules>

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-amps</artifactId> <artifactId>alfresco-community-repo-amps</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<properties> <properties>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<dependencies> <dependencies>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<properties> <properties>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<dependencies> <dependencies>

View File

@@ -9,6 +9,6 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
</project> </project>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<properties> <properties>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<modules> <modules>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<modules> <modules>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<organization> <organization>

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<developers> <developers>

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<developers> <developers>

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<properties> <properties>

View File

@@ -675,6 +675,11 @@ public class RestWrapper extends DSLWrapper<RestWrapper>
{ {
returnedResponse = onRequest().get(restRequest.getPath(), restRequest.getPathParams()).andReturn(); returnedResponse = onRequest().get(restRequest.getPath(), restRequest.getPathParams()).andReturn();
} }
else if (HttpMethod.PATCH.equals(httpMethod))
{
returnedResponse = onRequest().body(restRequest.getBody())
.patch(restRequest.getPath(), restRequest.getPathParams()).andReturn();
}
else else
{ {
returnedResponse = onRequest().get(restRequest.getPath(), restRequest.getPathParams()).andReturn(); returnedResponse = onRequest().get(restRequest.getPath(), restRequest.getPathParams()).andReturn();

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<developers> <developers>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<properties> <properties>

View File

@@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>Alfresco Community Repo Parent</name> <name>Alfresco Community Repo Parent</name>
@@ -154,7 +154,7 @@
<connection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</connection> <connection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</connection>
<developerConnection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</developerConnection> <developerConnection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</developerConnection>
<url>https://github.com/Alfresco/alfresco-community-repo</url> <url>https://github.com/Alfresco/alfresco-community-repo</url>
<tag>25.3.0.56</tag> <tag>25.3.0.64</tag>
</scm> </scm>
<distributionManagement> <distributionManagement>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<dependencies> <dependencies>

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Remote API * Alfresco Remote API
* %% * %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited * Copyright (C) 2005 - 2025 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
@@ -31,7 +31,10 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.owasp.html.HtmlPolicyBuilder;
import org.owasp.html.PolicyFactory;
import org.springframework.extensions.webscripts.Cache; import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.extensions.webscripts.WebScriptRequest;
@@ -67,6 +70,29 @@ public class CommentsPost extends AbstractCommentsWebScript
// get json object from request // get json object from request
JSONObject json = parseJSON(req); JSONObject json = parseJSON(req);
// Validating and Sanitizing comment content to prevent XSS
String commentContent = getOrNull(json, "content");
if (StringUtils.isBlank(commentContent))
{
throw new IllegalArgumentException("Comment content must not be empty");
}
else
{
// Allowed HTML elements and attributes in comment content e.g. Text formatting ,Lists and Structure & Styling
String[] allowedElements = {"b", "i", "u", "strong", "em", "ul", "ol", "li", "p", "br", "span", "div"};
PolicyFactory policy = new HtmlPolicyBuilder()
.allowElements(allowedElements)
.allowAttributes("style")
.onElements("span", "div", "p", "ul")
.allowStyling()
.allowStandardUrlProtocols()
.toFactory();
String safeContent = policy.sanitize(commentContent);
json.replace("content", safeContent);
}
/* MNT-10231, MNT-9771 fix */ /* MNT-10231, MNT-9771 fix */
this.behaviourFilter.disableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE); this.behaviourFilter.disableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE);

View File

@@ -1,92 +1,83 @@
<#macro renderParent node indent=" "> <#macro renderParent node indent=" ">
<#escape x as jsonUtils.encodeJSONString(x)> <#escape x as jsonUtils.encodeJSONString(x)>
${indent}"parent": ${indent}"parent":
${indent}{ ${indent}{
<#if (node != rootNode) && node.parent??> <#if (node != rootNode) && node.parent??>
<@renderParent node.parent indent+" " /> <@renderParent node.parent indent+" " />
</#if> </#if>
${indent}"type": "${node.typeShort}", ${indent}"type": "${node.typeShort}",
${indent}"isContainer": ${node.isContainer?string}, ${indent}"isContainer": ${node.isContainer?string},
${indent}"name": "${node.properties.name!""}", ${indent}"name": "${node.properties.name!""}",
${indent}"title": "${node.properties.title!""}", ${indent}"title": "${node.properties.title!""}",
${indent}"description": "${node.properties.description!""}", ${indent}"description": "${node.properties.description!""}",
<#if node.properties.modified??>${indent}"modified": "${xmldate(node.properties.modified)}",</#if> <#if node.properties.modified??>${indent}"modified": "${xmldate(node.properties.modified)}",</#if>
<#if node.properties.modifier??>${indent}"modifier": "${node.properties.modifier}",</#if> <#if node.properties.modifier??>${indent}"modifier": "${node.properties.modifier}",</#if>
${indent}"displayPath": "${node.displayPath!""}", ${indent}"displayPath": "${node.displayPath!""}",
${indent}"qnamePath": "${node.qnamePath!""}", ${indent}"qnamePath": "${node.qnamePath!""}",
<#if node.aspects??> <#if node.aspects??>
${indent}"aspects": ${indent}"aspects":
${indent}[ ${indent}[
<#list node.aspects as aspect> <#list node.aspects as aspect>
"${shortQName(aspect)}" "${shortQName(aspect)}"
<#if aspect_has_next>,</#if> <#if aspect_has_next>,</#if>
</#list> </#list>
${indent}], ${indent}],
</#if> </#if>
${indent}"nodeRef": "${node.nodeRef}" ${indent}"nodeRef": "${node.nodeRef}"
${indent}}, ${indent}},
</#escape> </#escape>
</#macro> </#macro>
<#macro pickerResultsJSON results> <#macro pickerResultsJSON results>
<#escape x as jsonUtils.encodeJSONString(x)> <#escape x as jsonUtils.encodeJSONString(x)>
{ {
"data": "data":
{ {
<#if parent??> <#if parent??>
<@renderParent parent /> <@renderParent parent />
</#if> </#if>
"items": "items":
[ [
<#list results as row> <#list results as row>
{ {
"type": "${row.item.typeShort}", "type": "${row.item.typeShort}",
"parentType": "${row.item.parentTypeShort!""}", "parentType": "${row.item.parentTypeShort!""}",
"isContainer": ${row.item.isContainer?string}, "isContainer": ${row.item.isContainer?string},
<#if row.container??>"container": "${row.container!""}",</#if> <#if row.container??>"container": "${row.container!""}",</#if>
<#if row.item.properties?? && row.item.properties.name??> "name": "${row.item.properties.name!""}",
"name": "${row.item.properties.name!""}", <#if row.item.aspects??>
<#else> "aspects": [
"name": "${(row.item.name)!row.item?string!""}", <#list row.item.aspects as aspect>
</#if> "${shortQName(aspect)}"
<#if row.item.aspects??> <#if aspect_has_next>,</#if>
"aspects": [ </#list>
<#list row.item.aspects as aspect> ],
"${shortQName(aspect)}" </#if>
<#if aspect_has_next>,</#if> "title":<#if row.item.properties["lnk:title"]??>"${row.item.properties["lnk:title"]}",
</#list> <#elseif row.item.properties["ia:whatEvent"]??>"${row.item.properties["ia:whatEvent"]}",
], <#else>"${row.item.properties.title!""}",</#if>
</#if> "description": "${row.item.properties.description!""}",
<#if row.item.properties??> <#if row.item.properties.modified??>"modified": "${xmldate(row.item.properties.modified)}",</#if>
"title":<#if row.item.properties["lnk:title"]??>"${row.item.properties["lnk:title"]}", <#if row.item.properties.modifier??>"modifier": "${row.item.properties.modifier}",</#if>
<#elseif row.item.properties["ia:whatEvent"]??>"${row.item.properties["ia:whatEvent"]}", <#if row.item.siteShortName??>"site": "${row.item.siteShortName}",</#if>
<#else>"${row.item.properties.title!""}",</#if> <#if row.item.properties["ia:fromDate"]??>"fromDate": "${xmldate(row.item.properties["ia:fromDate"])}",</#if>
"description": "${row.item.properties.description!""}", "displayPath": "${row.item.displayPath!""}",
<#else> "qnamePath": "${row.item.qnamePath!""}",
"title": "${(row.item.name)!row.item?string!""}", <#if row.item.typeShort != "cm:person" && row.item.typeShort != "cm:authorityContainer">
"description": "", "userAccess":
</#if> {
<#if row.item.properties.modified??>"modified": "${xmldate(row.item.properties.modified)}",</#if> "create": ${row.item.hasPermission("CreateChildren")?string},
<#if row.item.properties.modifier??>"modifier": "${row.item.properties.modifier}",</#if> "edit": ${row.item.hasPermission("Write")?string},
<#if row.item.siteShortName??>"site": "${row.item.siteShortName}",</#if> "delete": ${row.item.hasPermission("Delete")?string}
<#if row.item.properties["ia:fromDate"]??>"fromDate": "${xmldate(row.item.properties["ia:fromDate"])}",</#if> },
"displayPath": "${row.item.displayPath!""}", </#if>
"qnamePath": "${row.item.qnamePath!""}", "nodeRef": "${row.item.nodeRef}"<#if row.selectable?exists>,
<#if row.item.typeShort != "cm:person" && row.item.typeShort != "cm:authorityContainer"> "selectable" : ${row.selectable?string}</#if>
"userAccess": }<#if row_has_next>,</#if>
{ </#list>
"create": ${row.item.hasPermission("CreateChildren")?string}, ]
"edit": ${row.item.hasPermission("Write")?string}, }
"delete": ${row.item.hasPermission("Delete")?string} }
}, </#escape>
</#if>
"nodeRef": "${row.item.nodeRef}"<#if row.selectable?exists>,
"selectable" : ${row.selectable?string}</#if>
}<#if row_has_next>,</#if>
</#list>
]
}
}
</#escape>
</#macro> </#macro>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.3.0.56</version> <version>25.3.0.64</version>
</parent> </parent>
<dependencies> <dependencies>