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>

Reply via email to