Beispiel #1
0
        protected void Page_Load(object sender, System.EventArgs e)
        {
            // nothing should post here
            if (Page.IsPostBack)
            {
                return;
            }

            siteSettings = CacheHelper.GetCurrentSiteSettings();
            RssGroup rssGroup = new RssGroup();

            rssGroup.ModuleId    = -1;
            rssGroup.PageId      = -1;
            rssGroup.ItemId      = -1;
            rssGroup.TopicId     = -1;
            rssGroup.MaximumDays = maxDaysOld;

            pageId   = WebUtils.ParseInt32FromQueryString("pageid", -1);
            moduleId = WebUtils.ParseInt32FromQueryString("mid", -1);
            itemId   = WebUtils.ParseInt32FromQueryString("ItemID", -1);
            topicId  = WebUtils.ParseInt32FromQueryString("topic", -1);


            if (WebConfigSettings.UseFoldersInsteadOfHostnamesForMultipleSites)
            {
                navigationSiteRoot = SiteUtils.GetNavigationSiteRoot();
                imageSiteRoot      = WebUtils.GetSiteRoot();
                cssBaseUrl         = imageSiteRoot;
            }
            else
            {
                navigationSiteRoot = WebUtils.GetHostRoot();
                imageSiteRoot      = navigationSiteRoot;
                cssBaseUrl         = WebUtils.GetSiteRoot();
            }

            groupUrl = SiteUtils.GetCurrentPageUrl();

            if (siteSettings != null)
            {
                rssGroup.SiteId = siteSettings.SiteId;
            }
            rssGroup.ModuleId = moduleId;
            rssGroup.PageId   = pageId;
            rssGroup.ItemId   = itemId;
            rssGroup.TopicId  = topicId;

            RenderRss(rssGroup);
        }
Beispiel #2
0
        private void RenderRss(RssGroup rssGroup)
        {
            Response.ContentType     = "application/xml";
            Response.ContentEncoding = System.Text.Encoding.UTF8;

            Hashtable moduleSettings = ModuleSettings.GetModuleSettings(rssGroup.ModuleId);

            rssGroup.MaximumDays = WebUtils.ParseInt32FromHashtable(
                moduleSettings, "RSSFeedMaxDaysOldSetting", 90);

            int entriesLimit = WebUtils.ParseInt32FromHashtable(
                moduleSettings, "RSSFeedMaxPostsSetting", 90);

            int entryCount = 0;

            Rss.RssChannel channel = new Rss.RssChannel();
            string         baseUrl = Request.Url.ToString().Replace("RSS.aspx", "Topic.aspx");

            using (IDataReader posts = rssGroup.GetPostsForRss())
            {
                while ((posts.Read()) && (entryCount <= entriesLimit))
                {
                    Rss.RssItem item = new Rss.RssItem();

                    item.Title       = posts["Subject"].ToString();
                    item.Description = SiteUtils.ChangeRelativeUrlsToFullyQuailifiedUrls(navigationSiteRoot, imageSiteRoot, posts["Post"].ToString());
                    item.PubDate     = Convert.ToDateTime(posts["PostDate"]);

                    string target = baseUrl;

                    if (target.IndexOf("&topic=") < 0 && target.IndexOf("?topic=") < 0)
                    {
                        if (target.IndexOf("?") < 0)
                        {
                            target += "?topic=" + posts["TopicID"].ToString() + "#post" + posts["PostID"].ToString();
                        }
                        else
                        {
                            target += "&topic=" + posts["TopicID"].ToString() + "#post" + posts["PostID"].ToString();
                        }
                    }
                    item.Link = new System.Uri(target);

                    item.Author = posts["StartedBy"].ToString();

                    channel.Items.Add(item);
                    entryCount += 1;
                }
            }

            object value = GetModule();
            Module m;

            channel.LastBuildDate = channel.Items.LatestPubDate();
            channel.Link          = new System.Uri(groupUrl);

            if (value != null)
            {
                m = (Module)value;

                channel.Title       = m.ModuleTitle;
                channel.Description = m.ModuleTitle;
            }
            else
            {
                channel.Title       = siteSettings.SiteName;
                channel.Description = siteSettings.SiteName;
            }

            if (channel.Items.Count == 0)
            {
                Rss.RssItem item = new Rss.RssItem();

                item.Title       = "No Items Found";
                item.Description = "No items found";
                item.PubDate     = DateTime.UtcNow;

                item.Link = new System.Uri(navigationSiteRoot);

                item.Author = "system";

                channel.Items.Add(item);
            }


            Rss.RssFeed rss = new Rss.RssFeed();
            rss.BaseUrl = cssBaseUrl;

            rss.Encoding = System.Text.Encoding.UTF8;
            rss.Channels.Add(channel);
            rss.Write(Response.OutputStream);
            //Response.End();
        }