Bugfixes for Freemarker Macro libraries

git-svn-id: https://svn.libreccm.org/ccm/trunk@6226 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2019-09-29 14:52:02 +00:00
parent 3d8af10d17
commit bfc8434d9d
5 changed files with 77 additions and 23 deletions

View File

@ -6,10 +6,29 @@
> >
<#function getFileAttachments item> <#function getFileAttachments item>
<#return item["./fileAttachments"]?sort_by("fileOrder")>
<#return item["./fileAttachments"]?map(
file -> {
"fileType": _getFileType(file),
"mimeType": file["./mimeType/mimeType"].@@text,
"mimeTypeLabel": file["./mimeType/label"].@@text,
"fileSize": file["./length"].@@text?number,
"fileExtension": file["./mimeType/fileExtension"],
"fileId": file["./id"].@@text,
"fileName": file["./name"].@@text,
"description": file["./description"].@@text,
"fileUrl": dispatcherPrefix + '/cms-service/stream/asset/' + file["./name"].@@text + '?asset_id=' + file["./id"],
"fileOrder": file["./fileOrder"]?number
})?sort_by("fileOrder")>
<#-- <#return item["./fileAttachments"]?sort_by("fileOrder")> -->
</#function> </#function>
<#function getFileType file> <#-- <#function getFileType file>
<#return file.fileType>
</#function> -->
<#function _getFileType file>
<#if (file["./mimeType/mimeType"].@@text == "text/plain") && file["./mimeType/label"].@@text == "caption"> <#if (file["./mimeType/mimeType"].@@text == "text/plain") && file["./mimeType/label"].@@text == "caption">
<#return "caption"> <#return "caption">
<#else> <#else>
@ -17,7 +36,7 @@
</#if> </#if>
</#function> </#function>
<#function getMimeType file> <#-- <#function getMimeType file>
<#return file["./mimeType/mimeType"]> <#return file["./mimeType/mimeType"]>
</#function> </#function>
@ -57,7 +76,7 @@
<#function getFileUrl file> <#function getFileUrl file>
<#return dispatcherPrefix + '/cms-service/stream/asset/' + getFileName(file) + '?asset_id=' + getFileId(file)> <#return dispatcherPrefix + '/cms-service/stream/asset/' + getFileName(file) + '?asset_id=' + getFileId(file)>
</#function> </#function> -->

View File

@ -6,10 +6,23 @@
> >
<#function getImageAttachments item> <#function getImageAttachments item>
<#return item["./imageAttachments"]>
<#return item["./imageAttachments"]?map(
image -> {
"imageId": image["./image/id"].@@text,
"name": image["./image/name"].@@text,
"caption": image["./caption"].@@text,
"sortKey": image["./sortKey"]@number,
"width": image["./width"]@number,
"height": image["./width"]@number,
"imageUrl: dispatcherPrefix + "/cms-service/stream/image/?image_id=" + image["./image/id"].@@text
}
)?sort_by("sortKey")>
<#-- <#return item["./imageAttachments"]> -->
</#function> </#function>
<#function getImageId image> <#-- <#function getImageId image>
<#return image["./image/id"]> <#return image["./image/id"]>
</#function> </#function>
@ -35,4 +48,4 @@
<#function getImageUrl image> <#function getImageUrl image>
<#return dispatcherPrefix + '/cms-service/stream/image/?image_id=' + getImageId(image)> <#return dispatcherPrefix + '/cms-service/stream/image/?image_id=' + getImageId(image)>
</#function> </#function> -->

View File

@ -6,9 +6,14 @@
> >
<#function getNotes item> <#function getNotes item>
<#return item["./ca_notes"]> <#-- <#return item["./ca_notes"]> -->
<#return item["./ca_notes"]?map(
note -> {
"content": note["./content"],
"rank": note["./rank"]?number
})?sort_by("rank")>
</#function> </#function>
<#function getContent note> <#-- <#function getContent note>
<#return note["./content"]> <#return note["./content"]>
</#function> </#function> -->

View File

@ -7,10 +7,19 @@
<#function getRelatedLinks item linkListName="NONE"> <#function getRelatedLinks item linkListName="NONE">
<#return item["./links[./linkListName='${linkListName}']"]?sort_by("linkOrder")> <#return item["./links[./linkListName='${linkListName}']"]?map(
link -> {
"linkType": _getLinkType(link),
"title": link["./linkTitle"].@@text,
"description": link["./linkDescription"].@@text,
"linkOrder": link["./linkOrder"]?number,
"targetUri": _getTargetUri(link)
})?sort_by("linkOrder")>
<#-- <#return item["./links[./linkListName='${linkListName}']"]?sort_by("linkOrder")> -->
</#function> </#function>
<#function getLinkType link> <#function _getLinkType link>
<#if (link["./targetType"].@@text == "externalLink" && link["./targetURI"] == "caption")> <#if (link["./targetType"].@@text == "externalLink" && link["./targetURI"] == "caption")>
<#return "caption"> <#return "caption">
<#elseif (link["./targetType"].@@text == "internalLink")> <#elseif (link["./targetType"].@@text == "internalLink")>
@ -20,7 +29,7 @@
</#if> </#if>
</#function> </#function>
<#function getLinkTitle link> <#-- <#function getLinkTitle link>
<#return link["./linkTitle"].@@text> <#return link["./linkTitle"].@@text>
</#function> </#function>
@ -30,10 +39,12 @@
<#function getLinkOrder link> <#function getLinkOrder link>
<#return link["./linkOrder"].@@text> <#return link["./linkOrder"].@@text>
</#function> </#function> -->
<#function getInternalLinkParameters link> <#function _getInternalLinkParameters link>
<#if (link["./targetURI"]?size > 0)> <#if (_getLinkType(link) == "caption")>
<#return "">
<#elseif (link["./targetURI"]?size > 0)>
<#assign targetUri=link["./targetURI"].@@text> <#assign targetUri=link["./targetURI"].@@text>
<#if (targetUri@starts_with("&?"))> <#if (targetUri@starts_with("&?"))>
<#return "&${targetUri[3]}"> <#return "&${targetUri[3]}">
@ -45,8 +56,10 @@
</#if> </#if>
</#function> </#function>
<#function getTargetUri link> <#function _getTargetUri link>
<#if (getLinkType(link) == "internalLink")> <#if (_getLinkType(link) == "caption")>
<#return "">
<#elseif (_getLinkType(link) == "internalLink")>
<#return "${contextPrefix}/redirect/?oid=${link['./targetItem/@oid']}${getInternalLinkParameters(link)}"> <#return "${contextPrefix}/redirect/?oid=${link['./targetItem/@oid']}${getInternalLinkParameters(link)}">
<#else> <#else>
<#return link["./targetURI"].@@text> <#return link["./targetURI"].@@text>

View File

@ -620,7 +620,6 @@ public class FreeMarkerPresentationManager implements PresentationManager {
@Override @Override
public Object exec(final List list) throws TemplateModelException { public Object exec(final List list) throws TemplateModelException {
// list.get(0).get(0).get("fileOrder").getNode().getTextContent()
if (list.isEmpty() || list.size() != 2) { if (list.isEmpty() || list.size() != 2) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
"SortAttachmentList requires the following parameters: " "SortAttachmentList requires the following parameters: "
@ -629,11 +628,16 @@ public class FreeMarkerPresentationManager implements PresentationManager {
); );
} }
if (list.get(0) == null) {
return null;
}
if (!(list.get(0) instanceof TemplateModelListSequence)) { if (!(list.get(0) instanceof TemplateModelListSequence)) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
String.format( String.format(
"The first argument of SortAttachmentList must be a " "The first argument of SortAttachmentList must be a "
+ "Sequence." + "Sequence but is a %s...",
list.get(0).getClass().getName()
) )
); );
} }