예제 #1
0
        private bool PopulateFromList(RssFeedDto feed, SPWeb web, string listIdStr, string viewIdStr, string fieldTitle, string fieldAuthor, string fieldDate, string fieldBody, string RelURL)
        {
            try
            {
                var list         = web.Lists[listIdStr];
                var limit        = int.Parse(GetProperty(list.RootFolder.Properties["vti_rss_ItemLimit"], "30"));
                var allItemsLink = SPUtility.ConcatUrls(web.Url, list.DefaultView.Url);
                feed.LastBuildDate = list.LastItemModifiedDate;
                feed.ETag          = list.CurrentChangeToken.ToString();
                feed.Description   = GetProperty(list.RootFolder.Properties["vti_rss_ChannelDescription"], list.Description);
                feed.ImageUrl      = ConvertRelativeUrlToAbsoluteUrl(GetProperty(list.RootFolder.Properties["vti_rss_ChannelImageUrl"], list.ImageUrl));
                feed.ImageLink     = allItemsLink;
                feed.ImageTitle    = list.Title;
                feed.Language      = web.UICulture.Name;
                feed.Link          = allItemsLink;
                feed.Title         = GetProperty(list.RootFolder.Properties["vti_rss_ChannelTitle"], list.Title);
                feed.XsltLink      = web.Url + "/_layouts/RssXslt.aspx?List=" + list.ID;
                feed.Ttl           = 60;

                for (var i = 0; i < list.Items.Count; i++)
                {
                    try
                    {
                        var listItem = list.Items[i];

                        var feedItem = new RssItem();
                        var itemUrl  = web.Site.RootWeb.Url + RelURL + "?ID=" + listItem.ID;
                        feedItem.PermalinkGuid = itemUrl;
                        feedItem.Title         = listItem[fieldTitle].ToString();
                        feedItem.Title         = Regex.Replace(feedItem.Title, @"<[^>]+>|&nbsp;", "").Trim();
                        feedItem.Link          = itemUrl;
                        feedItem.Description   = listItem[fieldBody] != null ? listItem[fieldBody].ToString() : "";
                        try
                        {
                            feedItem.PubDate = Convert.ToDateTime(listItem[fieldDate].ToString());
                        }
                        catch
                        {
                            try
                            {
                                feedItem.PubDate = Convert.ToDateTime(listItem["Modified"].ToString());
                            }
                            catch
                            {
                                feedItem.PubDate = DateTime.Today;
                            }
                        }
                        feedItem.Author = listItem[fieldAuthor].ToString();
                        feed.Items.Add(feedItem);
                    }
                    catch (Exception ex)
                    {
                    }
                }
                feed.Items = feed.Items.OrderByDescending(x => x.PubDate).Take(limit).ToList();


                return(true);
            }
            catch (Exception ex)
            {
            }
            return(false);
        }
예제 #2
0
        private bool PopulateFromList(RssFeedDto feed, SPWeb web, string listIdStr, string viewIdStr, string fieldTitle, string fieldAuthor, string fieldDate, string fieldBody, string RelURL)
        {
            try
            {
                var list = web.Lists[listIdStr];
                var limit = int.Parse(GetProperty(list.RootFolder.Properties["vti_rss_ItemLimit"], "30"));
                var allItemsLink = SPUtility.ConcatUrls(web.Url, list.DefaultView.Url);
                feed.LastBuildDate = list.LastItemModifiedDate;
                feed.ETag = list.CurrentChangeToken.ToString();
                feed.Description = GetProperty(list.RootFolder.Properties["vti_rss_ChannelDescription"], list.Description);
                feed.ImageUrl = ConvertRelativeUrlToAbsoluteUrl(GetProperty(list.RootFolder.Properties["vti_rss_ChannelImageUrl"], list.ImageUrl));
                feed.ImageLink = allItemsLink;
                feed.ImageTitle = list.Title;
                feed.Language = web.UICulture.Name;
                feed.Link = allItemsLink;
                feed.Title = GetProperty(list.RootFolder.Properties["vti_rss_ChannelTitle"], list.Title);
                feed.XsltLink = web.Url + "/_layouts/RssXslt.aspx?List=" + list.ID;
                feed.Ttl = 60;

                for (var i = 0; i < list.Items.Count; i++)
                {
                    try
                    {
                        var listItem = list.Items[i];

                        var feedItem = new RssItem();
                        var itemUrl = web.Site.RootWeb.Url + RelURL + "?ID=" + listItem.ID;
                        feedItem.PermalinkGuid = itemUrl;
                        feedItem.Title = listItem[fieldTitle].ToString();
                        feedItem.Title = Regex.Replace(feedItem.Title, @"<[^>]+>|&nbsp;", "").Trim();
                        feedItem.Link = itemUrl;
                        feedItem.Description = listItem[fieldBody] != null ? listItem[fieldBody].ToString() : "";
                        try
                        {
                            feedItem.PubDate = Convert.ToDateTime(listItem[fieldDate].ToString());
                        }
                        catch
                        {
                            try
                            {
                                feedItem.PubDate = Convert.ToDateTime(listItem["Modified"].ToString());
                            }
                            catch
                            {
                                feedItem.PubDate = DateTime.Today;
                            }
                        }
                        feedItem.Author = listItem[fieldAuthor].ToString();
                        feed.Items.Add(feedItem);
                    }
                    catch (Exception ex)
                    {

                    }
                }
                feed.Items = feed.Items.OrderByDescending(x => x.PubDate).Take(limit).ToList();

                return true;
            }
            catch (Exception ex)
            {
            }
            return false;
        }