Skip to content

Instantly share code, notes, and snippets.

@yasuflatland-lf
Last active July 30, 2019 06:54
Show Gist options
  • Select an option

  • Save yasuflatland-lf/a2e4423b1f1b67f01fdcb7772cf615f0 to your computer and use it in GitHub Desktop.

Select an option

Save yasuflatland-lf/a2e4423b1f1b67f01fdcb7772cf615f0 to your computer and use it in GitHub Desktop.
Fetch Document & Media's metadata from a Web Content Template
<#assign
languageId = languageUtil.getLanguageId(locale)
journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")
article = journalArticleLocalService.getArticle( groupId, .vars["reserved-article-id"].data )
resourceprimKey = article.getResourcePrimKey()
assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourceprimKey)
dLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")
dLFileEntryTypeLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryTypeLocalService")
dLFileEntryMetadataLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryMetadataLocalService")
storageEngine = serviceLocator.findService("com.liferay.dynamic.data.mapping.storage.StorageEngine")
serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
httpServletRequest = serviceContext.getRequest()
>
<#function value_of docXml field language_id>
<#local default_language_id = docXml.valueOf("/root/@default-locale") />
<#local value = docXml.valueOf("//dynamic-element[@name='" + field + "']/dynamic-content[@language-id='"+ language_id + "']/text()") />
<#if !value?has_content>
<#local value = docXml.valueOf("//dynamic-element[@name='" + field + "']/dynamic-content[@language-id='"+ default_language_id + "']/text()") />
</#if>
<#return value />
</#function>
<#assign
docXml = saxReaderUtil.read(article.getContent())
dmXmlfield = value_of(docXml, "dmfield", languageId)
evalDmField = dmXmlfield?eval
uuid = evalDmField.uuid
groupId = evalDmField.groupId
dlFileEntry = dLFileEntryLocalService.fetchDLFileEntryByUuidAndGroupId(uuid,groupId?number)
dlFileEntryType = dLFileEntryTypeLocalService.getFileEntryType(dlFileEntry.getFileEntryTypeId())
ddmStructures = dlFileEntryType.getDDMStructures()
ddmStructure = ddmStructures?first
dlFileEntryMetadata = dLFileEntryMetadataLocalService.getFileEntryMetadata(ddmStructure.getStructureId(), dlFileEntry.getFileVersion().getFileVersionId())
ddmFormValues = storageEngine.getDDMFormValues(dlFileEntryMetadata.getDDMStorageId())
ddmFormFieldValuesMap = ddmFormValues.getDDMFormFieldValuesMap()
/>
<#assign
asset_type = ddmFormFieldValuesMap['asset_type'][0].getValue().getString(locale)
recent_asset_primary_buyer_stage = ddmFormFieldValuesMap['recent_asset_primary_buyer_stage'][0].getValue().getString(locale)
recent_conversion_type = ddmFormFieldValuesMap['recent_conversion_type'][0].getValue().getString(locale)
/>
<#assign
recent_conversion_medium = paramUtil.getString(httpServletRequest, "recent_conversion_medium")
recent_conversion_source = paramUtil.getString(httpServletRequest, "recent_conversion_source")
recent_conversion_source_content = paramUtil.getString(httpServletRequest, "recent_conversion_source_content")
recent_conversion_source_term = paramUtil.getString(httpServletRequest, "recent_conversion_source_term")
recent_conversion_previous_page_seen = paramUtil.getString(httpServletRequest, "recent_conversion_previous_page_seen")
/>
<h2>Asset Name</h2>
<p>${dlFileEntry.getTitle()}</p>
<h2>Asset UUID</h2>
<p>Uuid ${uuid}</p>
<h2>Asset Type </h2>
<p>${asset_type}</p>
<h2>Recent Asset Primary Buyer Stage </h2>
<p>${recent_asset_primary_buyer_stage}</p>
<h2>Recent Conversion Type </h2>
<p>${recent_conversion_type}</p>
<hr />
<h1>Parameter values</h1>
<h3>recent_conversion_medium</h3>
<#if recent_conversion_medium?has_content>
<p>${recent_conversion_medium}</p>
<#else>
<p>No value in the parameter</p>
</#if>
<h3>recent_conversion_source</h3>
<#if recent_conversion_source?has_content>
<p>${recent_conversion_source}</p>
<#else>
<p>No value in the parameter</p>
</#if>
<h3>recent_conversion_source_content</h3>
<#if recent_conversion_source_content?has_content>
<p>${recent_conversion_source_content}</p>
<#else>
<p>No value in the parameter</p>
</#if>
<h3>recent_conversion_source_term</h3>
<#if recent_conversion_source_term?has_content>
<p>${recent_conversion_source_term}</p>
<#else>
<p>No value in the parameter</p>
</#if>
<h3>recent_conversion_previous_page_seen</h3>
<#if recent_conversion_previous_page_seen?has_content>
<p>${recent_conversion_previous_page_seen}</p>
<#else>
<p>No value in the parameter</p>
</#if>
<a href="${dmfield.getData()}"> ${languageUtil.format(locale, "download-x", "Documents and Media", false)} </a>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment