Beispiel #1
0
        private SyndicationItem CreateSyndicationItem(IContent content)
        {
            var changeTrackable = content as IChangeTrackable;
            var versionable     = content as IVersionable;

            var changed   = DateTime.Now;
            var changedby = string.Empty;

            if (changeTrackable != null)
            {
                changed   = changeTrackable.Saved;
                changedby = changeTrackable.ChangedBy;
            }

            var item = new SyndicationItem
            {
                Title           = new TextSyndicationContent(content.Name),
                Summary         = new TextSyndicationContent(ItemDescriptionProvider.ItemDescripton(content)),
                LastUpdatedTime = changed
            };

            if (versionable != null)
            {
                var published = versionable.StartPublish;
                if (published.HasValue)
                {
                    item.PublishDate = published.Value;
                }
            }

            var categorizable = content as ICategorizable;

            if (categorizable != null)
            {
                var categoryRepository = ServiceLocator.Current.GetInstance <CategoryRepository>();
                foreach (var category in categorizable.Category)
                {
                    item.Categories.Add(new SyndicationCategory(categoryRepository.Get(category).Description));
                }
            }

            var mimeType = GetMimeType(content);
            Uri url      = GetItemUrl(content);

            item.Content = new UrlSyndicationContent(url, mimeType);
            item.AddPermalink(url);
            item.Authors.Add(new SyndicationPerson(string.Empty, changedby, string.Empty));

            item = ItemModifier.Modify(item, content);


            return(item);
        }