using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.SessionState;
using Sitecore.Data;
using Sitecore.Data.Items;
using Sitecore.Web;
using Project.Namespace.Properties;
using Sitecore.Shell.Applications.WebEdit.Commands;
using Sitecore.Collections;
using Sitecore;
using System.Xml;
using System.Text;
namespace Project.Namespace.rss
{
public class Newslisting : IHttpHandler
{
public string itemID = string.Empty;
public string itemLanguage = string.Empty;
public int Total = 0;
public bool IsReusable
{
get
{
return false;
}
}
public void ProcessRequest(HttpContext context)
{
if (context.Request.QueryString.ToString() != string.Empty)
{
itemID = context.Request.QueryString["newsid"].ToString();
itemLanguage = context.Request.QueryString["language"].ToString();
context.Response.ContentType = "application/rss+xml";
Item newsListing = Sitecore.Context.Database.GetItem(itemID);
CreateRSS(newsListing.GetFieldValue("Newslisting_Source", itemID));
}
else
{
return;
}
}
///
/// Creates the RSS.
///
/// The item ID.
private void CreateRSS(string itemID)
{
#if !debug
try
{
#endif
if (itemLanguage != null)
{
Sitecore.Globalization.Language scLanguage = Sitecore.Globalization.Language.Parse(itemLanguage);
Sitecore.Context.Language = scLanguage;
}
ID ItemID = new ID(itemID);
Item currentNewslisting = Sitecore.Context.Database.GetItem(ItemID);
int count = 0;
XmlTextWriter xtw = new XmlTextWriter(HttpContext.Current.Response.OutputStream, Encoding.UTF8);
xtw.WriteStartDocument();
xtw.WriteStartElement("rss");
xtw.WriteAttributeString("version", "2.0");
xtw.WriteStartElement("channel");
xtw.WriteElementString("title", currentNewslisting.Fields["Newslisting_Title"].Value);
xtw.WriteElementString("pubDate", currentNewslisting.Statistics.Created.ToString("r"));
xtw.WriteElementString("lastBuildDate", DateTime.Now.ToString("r"));
xtw.WriteElementString("description", StringUtil.RemoveTags(currentNewslisting.Fields["Newslisting_Introduction"].Value)); xtw.WriteElementString("link", "http://" + WebUtil.GetHostName() + HttpUtility.UrlPathEncode(currentNewslisting.GetFriendlyUrl()));
foreach (Item currentitem in currentNewslisting.Children)
{
if(currentitem.TemplateID.ToString() == Settings.Default.TemplateNewsdetailID)
{
if (count < 10)
{
Sitecore.Globalization.Language language = Sitecore.Globalization.Language.Parse(itemLanguage);
int verCount = Sitecore.Data.Managers.ItemManager.GetVersions(currentitem, language).Count;
if (verCount > 0)
{
xtw.WriteStartElement("item");
xtw.WriteElementString("title", currentitem.Fields["Newsdetail_Title"].Value);
xtw.WriteElementString("description", StringUtil.RemoveTags(currentitem.Fields["Newsdetail_DescriptionRSS"].Value));
xtw.WriteElementString("link", "http://" + WebUtil.GetHostName() + HttpUtility.UrlPathEncode(currentitem.GetFriendlyUrl()));
xtw.WriteElementString("guid", "http://" + WebUtil.GetHostName() + HttpUtility.UrlPathEncode(currentitem.GetFriendlyUrl()));
xtw.WriteElementString("pubDate", currentitem.Statistics.Created.ToString("r"));
xtw.WriteEndElement();
count++
}
}
}
}
xtw.WriteEndElement();
xtw.WriteEndElement();
xtw.WriteEndDocument();
xtw.Flush();
xtw.Close();
#if !debug
}
catch(Exception ex)
{
Sitecore.Diagnostics.Log.Error("RSS could not be created for " + itemID + ex, this);
}
#endif
}
}
}