From bfc8434d9d13b24545bc5667e3033fb710591a42 Mon Sep 17 00:00:00 2001 From: jensp Date: Sun, 29 Sep 2019 14:52:02 +0000 Subject: [PATCH] Bugfixes for Freemarker Macro libraries git-svn-id: https://svn.libreccm.org/ccm/trunk@6226 8810af33-2d31-482b-a856-94f89814c4df --- .../ccm-cms-assets-fileattachments.ftl | 33 +++++++++++++++---- .../freemarker/ccm-cms-assets-imagestep.ftl | 19 +++++++++-- .../freemarker/ccm-cms-assets-notes.ftl | 11 +++++-- .../freemarker/ccm-cms-assets-relatedlink.ftl | 29 +++++++++++----- .../FreeMarkerPresentationManager.java | 8 +++-- 5 files changed, 77 insertions(+), 23 deletions(-) diff --git a/ccm-cms-assets-fileattachment/web/themes/freemarker/ccm-cms-assets-fileattachments.ftl b/ccm-cms-assets-fileattachment/web/themes/freemarker/ccm-cms-assets-fileattachments.ftl index 413e65fd9..7a8c0b140 100644 --- a/ccm-cms-assets-fileattachment/web/themes/freemarker/ccm-cms-assets-fileattachments.ftl +++ b/ccm-cms-assets-fileattachment/web/themes/freemarker/ccm-cms-assets-fileattachments.ftl @@ -6,10 +6,29 @@ > <#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 getFileType file> +<#-- <#function getFileType file> + <#return file.fileType> + --> + +<#function _getFileType file> <#if (file["./mimeType/mimeType"].@@text == "text/plain") && file["./mimeType/label"].@@text == "caption"> <#return "caption"> <#else> @@ -17,16 +36,16 @@ -<#function getMimeType file> - <#return file["./mimeType/mimeType"]> +<#-- <#function getMimeType file> + <#return file["./mimeType/mimeType"]> <#function getMimeTypeLabel file> - <#return file["./mimeType/label"]> + <#return file["./mimeType/label"]> <#function getMimeTypeFileExtension file> - <#return file["./mimeType/fileExtension"]> + <#return file["./mimeType/fileExtension"]> <#function getFileSize file unit="byte"> @@ -57,7 +76,7 @@ <#function getFileUrl file> <#return dispatcherPrefix + '/cms-service/stream/asset/' + getFileName(file) + '?asset_id=' + getFileId(file)> - + --> diff --git a/ccm-cms-assets-imagestep/web/themes/freemarker/ccm-cms-assets-imagestep.ftl b/ccm-cms-assets-imagestep/web/themes/freemarker/ccm-cms-assets-imagestep.ftl index b873faa46..914d615a1 100644 --- a/ccm-cms-assets-imagestep/web/themes/freemarker/ccm-cms-assets-imagestep.ftl +++ b/ccm-cms-assets-imagestep/web/themes/freemarker/ccm-cms-assets-imagestep.ftl @@ -6,10 +6,23 @@ > <#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 getImageId image> +<#-- <#function getImageId image> <#return image["./image/id"]> @@ -35,4 +48,4 @@ <#function getImageUrl image> <#return dispatcherPrefix + '/cms-service/stream/image/?image_id=' + getImageId(image)> - + --> diff --git a/ccm-cms-assets-notes/web/themes/freemarker/ccm-cms-assets-notes.ftl b/ccm-cms-assets-notes/web/themes/freemarker/ccm-cms-assets-notes.ftl index a523a1595..ccddc9be0 100644 --- a/ccm-cms-assets-notes/web/themes/freemarker/ccm-cms-assets-notes.ftl +++ b/ccm-cms-assets-notes/web/themes/freemarker/ccm-cms-assets-notes.ftl @@ -6,9 +6,14 @@ > <#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 getContent note> +<#-- <#function getContent note> <#return note["./content"]> - \ No newline at end of file + --> \ No newline at end of file diff --git a/ccm-cms-assets-relatedlink/web/themes/freemarker/ccm-cms-assets-relatedlink.ftl b/ccm-cms-assets-relatedlink/web/themes/freemarker/ccm-cms-assets-relatedlink.ftl index 21ec8b578..cc9bef5b2 100644 --- a/ccm-cms-assets-relatedlink/web/themes/freemarker/ccm-cms-assets-relatedlink.ftl +++ b/ccm-cms-assets-relatedlink/web/themes/freemarker/ccm-cms-assets-relatedlink.ftl @@ -7,10 +7,19 @@ <#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 getLinkType link> +<#function _getLinkType link> <#if (link["./targetType"].@@text == "externalLink" && link["./targetURI"] == "caption")> <#return "caption"> <#elseif (link["./targetType"].@@text == "internalLink")> @@ -20,7 +29,7 @@ -<#function getLinkTitle link> +<#-- <#function getLinkTitle link> <#return link["./linkTitle"].@@text> @@ -30,10 +39,12 @@ <#function getLinkOrder link> <#return link["./linkOrder"].@@text> - + --> -<#function getInternalLinkParameters link> - <#if (link["./targetURI"]?size > 0)> +<#function _getInternalLinkParameters link> + <#if (_getLinkType(link) == "caption")> + <#return ""> + <#elseif (link["./targetURI"]?size > 0)> <#assign targetUri=link["./targetURI"].@@text> <#if (targetUri@starts_with("&?"))> <#return "&${targetUri[3]}"> @@ -45,8 +56,10 @@ -<#function getTargetUri link> - <#if (getLinkType(link) == "internalLink")> +<#function _getTargetUri link> + <#if (_getLinkType(link) == "caption")> + <#return ""> + <#elseif (_getLinkType(link) == "internalLink")> <#return "${contextPrefix}/redirect/?oid=${link['./targetItem/@oid']}${getInternalLinkParameters(link)}"> <#else> <#return link["./targetURI"].@@text> diff --git a/ccm-themedirector/src/org/libreccm/theming/FreeMarkerPresentationManager.java b/ccm-themedirector/src/org/libreccm/theming/FreeMarkerPresentationManager.java index c285405fb..2fc2ad219 100644 --- a/ccm-themedirector/src/org/libreccm/theming/FreeMarkerPresentationManager.java +++ b/ccm-themedirector/src/org/libreccm/theming/FreeMarkerPresentationManager.java @@ -620,7 +620,6 @@ public class FreeMarkerPresentationManager implements PresentationManager { @Override public Object exec(final List list) throws TemplateModelException { - // list.get(0).get(0).get("fileOrder").getNode().getTextContent() if (list.isEmpty() || list.size() != 2) { throw new IllegalArgumentException( "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)) { throw new IllegalArgumentException( String.format( "The first argument of SortAttachmentList must be a " - + "Sequence." + + "Sequence but is a %s...", + list.get(0).getClass().getName() ) ); }