Skip to content

Instantly share code, notes, and snippets.

@evaldeslacasa
Last active September 4, 2019 11:21
Show Gist options
  • Save evaldeslacasa/dfa8ce6615779ad5313aa88b852df4e9 to your computer and use it in GitHub Desktop.
Save evaldeslacasa/dfa8ce6615779ad5313aa88b852df4e9 to your computer and use it in GitHub Desktop.
Pagination for dynamic Asset Publisher using ADT (hard-coded delta though)
#set ($AssetEntryLocalService = $serviceLocator.findService("com.liferay.portlet.asset.service.AssetEntryLocalService"))
#set ($journalArticleLocalService = $serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService"))
#set( $structureId = $journalArticle.getStructureId() )
#set ($ddmStructureLocalService = $serviceLocator.findService("com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalService") )
#set( $numNews = $journalArticleLocalService.getStructureArticles($groupId, $structureId) )
#set( $newsUrl = $layout.getFriendlyURL() )
#set( $newsArticles = $journalArticleLocalService.getStructureArticles($groupId, $structureId) )
#set( $checkedArticleIds = [] )
#foreach ($newArticle in $newsArticles)
#set ( $articleId = $newArticle.getArticleId() )
#set ( $articleIdStr = $getterUtil.getString($articleId))
#set ( $firstChar = $articleIdStr.substring(0,1).toLowerCase())
#set ( $slash = "/")
#if((!$checkedArticleIds.contains($articleId))&&($firstChar != $slash))
#set ( $articleLastVersion = $journalArticleLocalService.getLatestArticle($groupId, $newArticle.getArticleId()) )
#set ( $added = $checkedArticleIds.add($newArticle.getArticleId()))
#end
#end
#set ( $numNews = $checkedArticleIds.size() )
#set( $cur = "" )
#set( $cur = $renderRequest.getParameter("cur") )
#set( $delta = 20 )
#set( $extraNews = $numNews % $delta )
#if ( $cur == "" || $cur == 1 )
#set( $page = 1 )
#else
#set( $page = $getterUtil.getInteger($cur) )
#end
#if ($numNews > $delta)
#if ( $extraNews == 0 )
#set( $numPages = ($numNews / $delta) )
#else
#set( $numPages = ($numNews / $delta) + 1 )
#end
#else
#set ($numPages = 1)
#end
#if ($page <3)
#set ($pointer = 3)
#elseif ($page > $numPages - 2)
#set ($pointer = $numPages - 2)
#else
#set($Integer = 0)
#set ($pointer = $Integer.parseInt($cur))
#end
#set($start = $pointer - 2)
#if ($start <= 0)
#set ($start = 1)
#end
#set($end = $pointer + 2)
#if ($end > $numPages)
#set ($end = $numPages)
#end
#set($range = [$start..$end])
#set( $ppid = $themeDisplay.getPortletDisplay().getId())
<div class="pagination">
#if ($page > 1)
<a href="javascript: createURL($page - 1)" class="button">&lt;</a>
#end
#foreach($i in $range)
#if ($i != $page)
<a href="javascript: createURL($i)" class="button">$i</a>
#else
<a href="#" class="button selected">$page</a>
#end
#end
#if ($page < $numPages)
<a href="javascript: createURL($page + 1)" class="button">&gt;</a>
#end
</div>
<script type="text/javascript">
function createURL(cur) {
AUI().ready('liferay-portlet-url', function(A) {
var renderURL = Liferay.PortletURL.createRenderURL();
renderURL.setPortletId("$ppid");
renderURL.setPortletMode("view");
renderURL.setWindowState("normal");
renderURL.setParameter("cur",cur);
window.location = renderURL.toString();
});
}
</script>
@evaldeslacasa
Copy link
Author

Hi @nielskaepsele. I hadn't seen your message, sorry. This would fit at the bottom part of an Asset Publisher ADT for Liferay.

@yuki2811
Copy link

hi @evaldeslacasa. im using liferay 7.2 , your code still usefull with it? tks.

@evaldeslacasa
Copy link
Author

Hello @yuki2811. I'm not sure if it will! I haven't had much experience with Liferay 7 yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment