<% import org.exoplatform.ecm.jcr.model.VersionNode; import org.exoplatform.portal.webui.util.Util; import org.exoplatform.social.core.identity.model.Identity; import org.exoplatform.social.core.identity.provider.OrganizationIdentityProvider; import org.exoplatform.social.core.service.LinkProvider; import org.exoplatform.commons.utils.CommonsUtils; import org.exoplatform.social.webui.Utils; import org.exoplatform.social.core.manager.IdentityManager; import org.exoplatform.news.NewsService; import javax.jcr.RepositoryException; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.time.LocalDateTime; import java.util.TimeZone; import java.util.Date; import java.util.Comparator; import groovy.json.JsonOutput; public String getProfileFullName(String userName) { String profileFullName = ""; Identity identity = org.exoplatform.social.webui.Utils.getIdentityManager().getOrCreateIdentity(OrganizationIdentityProvider.NAME, userName, true); if(identity != null && identity.getProfile() != null) { profileFullName = identity.getProfile().getFullName(); } return profileFullName; } private Date getPublicationDate(def node) throws RepositoryException { def originalNode = node; if (node.isNodeType("nt:frozenNode")) { String uuid = node.getProperty("jcr:frozenUuid").getString(); originalNode = node.getSession().getNodeByUUID(uuid); } VersionNode versionNode = new VersionNode(originalNode, originalNode.getSession()); List versions = versionNode.getChildren(); if(versions.size() > 0) { versions.sort(new Comparator() { @Override public int compare(VersionNode o1, VersionNode o2) { return Integer.parseInt(o1.getName()) - Integer.parseInt(o2.getName()); } }); return versions.get(0).getCreatedTime().getTime(); } return null; } NewsService newsService = CommonsUtils.getService(NewsService.class); def pcontext = Util.getPortalRequestContext(); def newsNode = uicomponent.getNode(); def news = newsService.convertNodeToNews(newsNode); if(news.archived && !news.canArchive) { %>

<%=_ctx.appRes("news.archive.text")%>

<% } else { String illustrationURL = ""; if(news.illustrationURL != null) { illustrationURL = new StringBuilder("/rest/v1/news/").append(news.id).append("/illustration").toString(); } def activityId = ""; if (news.activities) { def originalSpaceIdActivityId = news.activities.split(";")[0]; if (originalSpaceIdActivityId != null) { def originalActivityId = originalSpaceIdActivityId.split(":")[1]; if (originalActivityId != null) { activityId = originalActivityId; } } } def authorFullName = getProfileFullName(news.author); def updaterFullName = news.author.equals(news.updater) ? authorFullName : getProfileFullName(news.updater); def authorProfileURL = LinkProvider.getUserProfileUri(news.author); def updaterProfileURL = news.author.equals(news.updater) ? authorProfileURL : LinkProvider.getUserProfileUri(news.updater); def ownerAvatar = new StringBuilder("/portal/rest/v1/social/users/").append(news.author).append("/avatar").toString(); def spaceName = news.spaceDisplayName; def mediumDateFormat = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(pcontext.getLocale()); def newsPostedDate = ""; def newsPublicationDate = getPublicationDate(newsNode); if(newsPublicationDate != null) { def postedDate = LocalDateTime.ofInstant(newsPublicationDate.toInstant(), TimeZone.getDefault().toZoneId()); newsPostedDate = postedDate.format(mediumDateFormat); } def updatedDate = LocalDateTime.ofInstant(news.updateDate.toInstant(), TimeZone.getDefault().toZoneId()); def newsUpdatedDate = updatedDate.format(mediumDateFormat); if( news.updateDate.getTime() == newsPublicationDate.getTime() ){ newsUpdatedDate = null; } def newsTitle = news.title.replaceAll("'", "\\\\'").replaceAll("

<%= notAuthorizedUserLabel %>

<% } %>