This is an automated email from the ASF dual-hosted git repository. dklco pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git
commit 32b7e56a01f78bc80e4fef4fdc2c722edce98b8d Author: Dan Klco <[email protected]> AuthorDate: Mon Aug 6 10:24:11 2018 -0400 Making the RSS feed more flexible and fixing some validation issues --- .../reference/components/general/rss/rss.xml.jsp | 48 +++++++++++++++------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/reference/src/main/resources/jcr_root/apps/reference/components/general/rss/rss.xml.jsp b/reference/src/main/resources/jcr_root/apps/reference/components/general/rss/rss.xml.jsp index daa07ca..5d0987b 100644 --- a/reference/src/main/resources/jcr_root/apps/reference/components/general/rss/rss.xml.jsp +++ b/reference/src/main/resources/jcr_root/apps/reference/components/general/rss/rss.xml.jsp @@ -15,36 +15,54 @@ * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. - */ --%><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"> + */ --%><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <%@ page language="java" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%> <%@include file="/libs/sling-cms/global.jsp"%> -<c:set var="site" value="${sling:adaptTo(resource,'org.apache.sling.cms.core.models.SiteManager').site}" /> + <c:set var="site" value="${sling:adaptTo(resource,'org.apache.sling.cms.core.models.SiteManager').site}" /> <channel> - <title>${site.title}</title> - <description>${site.description}</description> + <title>${sling:encode(site.title,'XML')}</title> + <description>${sling:encode(site.description,'XML')}</description> + <language>${site.locale.language}</language> <link>${site.url}</link> - <atom:link href="${site.url}/feed.xml" rel="self" type="application/rss+xml" /> - <c:set var="query" value="SELECT * FROM [sling:Page] WHERE ISDESCENDANTNODE([${site.path}/posts]) AND [jcr:content/published]=true ORDER BY [jcr:content/publishDate] DESC" /> + <image> + <url>${site.url}${fn:replace(properties.image,site.path,'')}</url> + <title>${sling:encode(site.title,'XML')}</title> + <link>${site.url}</link> + </image> + <atom:link href="${site.url}${fn:replace(resource.path,site.path,'')}.xml" rel="self" type="application/rss+xml" /> + <c:set var="query" value="SELECT * FROM [sling:Page] WHERE ISDESCENDANTNODE([${site.path}/${properties.subpath}]) AND [jcr:content/published]=true ORDER BY [jcr:content/publishDate] DESC" /> <c:forEach var="postRsrc" items="${sling:findResources(resourceResolver,query,'JCR-SQL2')}" end="9"> <item> <c:set var="post" value="${sling:adaptTo(postRsrc,'org.apache.sling.cms.core.models.PageManager').page}" /> <title><sling:encode value="${post.title}" mode="XML" /></title> + <dc:creator><sling:encode value="${post.properties.author}" mode="XML" /></dc:creator> <description><sling:encode value="${post.properties['jcr:description']}" mode="XML" /></description> + <c:choose> + <c:when test="${fn:startsWith(post.properties['sling:thumbnail'],'http') && fn:indexOf(post.properties['sling:thumbnail'],'.png') != -1}"> + <c:set var="thumbLink" value="${fn:replace(post.properties['sling:thumbnail'],'https:','http:')}" /> + <c:set var="thumbType" value="image/png" /> + </c:when> + <c:when test="${fn:startsWith(post.properties['sling:thumbnail'],'http') && fn:indexOf(post.properties['sling:thumbnail'],'.jpg') != -1}"> + <c:set var="thumbLink" value="${fn:replace(post.properties['sling:thumbnail'],'https:','http:')}" /> + <c:set var="thumbType" value="image/jpeg" /> + </c:when> + <c:when test="${fn:indexOf(post.properties['sling:thumbnail'],'.png') != -1}"> + <c:set var="thumbLink" value="${fn:replace(site.url,'https','http')}${fn:replace(post.properties['sling:thumbnail'],site.path,'')}" /> + <c:set var="thumbType" value="image/png" /> + </c:when> + <c:otherwise> + <c:set var="thumbLink" value="${fn:replace(site.url,'https','http')}${fn:replace(post.properties['sling:thumbnail'],site.path,'')}" /> + <c:set var="thumbType" value="image/jpeg" /> + </c:otherwise> + </c:choose> <content:encoded> <![CDATA[ - <img src="${site.url}${fn:replace(post.properties['sling:thumbnail'],site.path,'')}" title="${sling:encode(post.properties.summary,'XML_ATTR')}" /> + <img src="${thumbLink}" title="${sling:encode(post.title,'XML_ATTR')}" /> <sling:encode value="${post.properties.snippet}" mode="XML" /> ]]> </content:encoded> <c:if test="${not empty post.properties['sling:thumbnail']}"> - <c:choose> - <c:when test="${fn:indexOf(post.properties['sling:thumbnail'],'.png') != -1}"> - <enclosure length="0" type="image/png" url="${fn:replace(site.url,'https','http')}${fn:replace(post.properties['sling:thumbnail'],site.path,'')}" /> - </c:when> - <c:otherwise> - <enclosure length="0" type="image/jpeg" url="${fn:replace(site.url,'https','http')}${fn:replace(post.properties['sling:thumbnail'],site.path,'')}" /> - </c:otherwise> - </c:choose> + <enclosure length="0" type="${thumbType}" url="${sling:encode(thumbLink,'XML_ATTR')}" /> </c:if> <fmt:parseDate value="${post.properties.publishDate}" var="publishDate" pattern="yyyy-MM-dd" /> <pubDate><fmt:formatDate value="${publishDate}" pattern="EEE, dd MMM yyyy HH:mm:ss Z" /></pubDate>
