private IEnumerable<Teaser> GetEntityItems(EntityModel entity) { List<Teaser> res = new List<Teaser>(); //1. Check if entity is a teaser, if add it if (entity is Teaser) { res.Add((Teaser)entity); } else { //2. Second check if entity type is (semantically) a list, and if so, get its list items List<Teaser> items = GetTeaserListFromSemantics(entity); if (items != null) { res = items; } else { //3. Last resort, try to find some suitable properties using reflection Teaser teaser = new Teaser(); foreach (PropertyInfo pi in entity.GetType().GetProperties()) { switch (pi.Name) { case "Headline": case "Name": teaser.Headline = pi.GetValue(entity) as String; break; case "Date": DateTime? date = pi.GetValue(entity) as DateTime?; if (date != null) teaser.Date = date; break; case "Description": teaser.Text = pi.GetValue(entity) as String; break; case "Link": teaser.Link = pi.GetValue(entity) as Link; break; case "Url": string url = pi.GetValue(entity) as String; if (url != null) teaser.Link = new Link { Url = url }; break; } } if (teaser.Headline != null || teaser.Text != null || teaser.Link != null) { res.Add(teaser); } } } return res; }
private static Teaser GetTeaserFromMeta(IComponentMeta compMeta) { Teaser result = new Teaser { Link = new Link { Url = String.Format("tcm:{0}-{1}", compMeta.PublicationId, compMeta.Id) }, Date = GetDateFromCustomMeta(compMeta.CustomMeta, "dateCreated") ?? compMeta.LastPublicationDate, Headline = GetTextFromCustomMeta(compMeta.CustomMeta, "name") ?? compMeta.Title, Text = GetTextFromCustomMeta(compMeta.CustomMeta, "introText") }; return result; }
private SyndicationItem GetSyndicationItemFromTeaser(Teaser item) { SyndicationItem si = new SyndicationItem(); if (item.Headline != null) { si.Title = new TextSyndicationContent(item.Headline); } if (item.Text != null) { si.Summary = new TextSyndicationContent(item.Text.ToString()); } if (item.Link != null && item.Link.Url!=null && item.Link.Url.StartsWith("http")) { si.Links.Add(new SyndicationLink(new Uri(item.Link.Url))); } if (item.Date != null) { si.PublishDate = (DateTime)item.Date; } return si; }