Skip to content

Instantly share code, notes, and snippets.

@jonupchurch
Created July 10, 2013 19:00
Show Gist options
  • Save jonupchurch/5969085 to your computer and use it in GitHub Desktop.
Save jonupchurch/5969085 to your computer and use it in GitHub Desktop.
For reference in the Google Group
//our base implementation
[SitecoreType]
public class GlassBase : IGlassBase
{
[SitecoreId]
public virtual Guid Id { get; private set; }
[SitecoreInfo(SitecoreInfoType.Language)]
public virtual Language Language { get; private set; }
[SitecoreInfo(SitecoreInfoType.Version)]
public virtual int Version { get; private set; }
[SitecoreInfo(SitecoreInfoType.Path)]
public virtual string Path { get; private set; }
[SitecoreInfo(SitecoreInfoType.Name)]
public virtual string Name { get; set; }
[SitecoreInfo(SitecoreInfoType.Url)]
public virtual string Url { get; private set; }
[SitecoreInfo(SitecoreInfoType.TemplateId)]
public virtual Guid TemplateId { get; private set; }
[SitecoreInfo(SitecoreInfoType.TemplateName)]
public virtual string TemplateName { get; private set; }
[SitecoreChildren(IsLazy = false)]
public virtual IEnumerable<GlassBase> BaseChildren { get; set; }
[SitecoreField]
public virtual DateTime Publish { get; set; }
[SitecoreField]
public virtual DateTime Unpublish { get; set; }
//[SitecoreField("__Sortorder")]
//public virtual string Sortorder { get; set; }
public IEnumerable<T> GetChildren<T>(string templateName) where T : GlassBase
{
var items = new List<T>();
ISitecoreContext context = new SitecoreContext();
if (BaseChildren != null)
items.AddRange(
from item in BaseChildren
where item.TemplateName.ToLower() == templateName.ToLower()
select context.GetItem<T>(item.Id));
return items;
}
public IEnumerable<T> GetChildren<T>(Guid templateId) where T : GlassBase
{
var items = new List<T>();
ISitecoreContext context = new SitecoreContext();
if (BaseChildren != null)
items.AddRange(
from item in BaseChildren
where item.TemplateId == templateId
select context.GetItem<T>(item.Id));
return items;
}
}
//the parent class that sitecore is actually creating
[SitecoreType(TemplateId = "<myGuid>")]
public class ContentItem : GlassBase
{
[SitecoreField]
public virtual string IContentItemTitle { get; set; }
[SitecoreField]
public virtual string IContentItemOriginalId { get; set; }
[SitecoreField]
public virtual string IContentItemType { get; set; }
[SitecoreField]
public virtual string IContentItemSecurityGroup { get; set; }
[SitecoreField]
public virtual string IContentItemContributor { get; set; }
[SitecoreField]
public virtual string IContentItemAuthor { get; set; }
[SitecoreField]
public virtual DateTime IContentItemPublicationDate { get; set; }
[SitecoreField]
public virtual string IContentItemSource { get; set; }
[SitecoreField]
public virtual string IContentItemCategory { get; set; }
[SitecoreField]
public virtual string IContentItemSetting { get; set; }
[SitecoreField]
public virtual string IContentItemSpecialtyArea { get; set; }
[SitecoreField]
public virtual string IContentItemComments { get; set; }
[SitecoreField]
public virtual bool IContentItemPrioritizeContent { get; set; }
[SitecoreField(Setting = SitecoreFieldSettings.RichTextRaw)]
public virtual string IContentItemAbstract { get; set; }
[SitecoreField]
public virtual DateTime IContentItemReleaseDate { get; set; }
[SitecoreField]
public virtual string IContentItemDateDisplayFormat { get; set; }
[SitecoreField]
public virtual bool IContentItemDisplayInResults { get; set; }
[SitecoreField]
public virtual IEnumerable<ContentItem> IContentItemRelatedTerms { get; set; }
[SitecoreField]
public virtual IEnumerable<ContentItem> IContentItemSeeAlso { get; set; }
[SitecoreField]
public virtual string IContentItemDomain { get; set; }
[SitecoreField]
public virtual string IContentItemLevel { get; set; }
#region TemporaryCategoryStorage
[SitecoreField]
public virtual string Cat1 { get; set; }
[SitecoreField]
public virtual string Cat2 { get; set; }
[SitecoreField]
public virtual string Cat3 { get; set; }
[SitecoreField]
public virtual string Cat4 { get; set; }
#endregion
public string FormattedDate(DateTime date)
{
return date.ToString(IContentItemDateDisplayFormat);
}
}
//The concrete class
[SitecoreClass(TemplateId = "myGuid")]
public class HtmlItem : ContentItem
{
[SitecoreField(Setting = SitecoreFieldSettings.RichTextRaw)]
public virtual string HtmlItemContent { get; set; }
}
@mikeedwards83
Copy link

Can you add the code that uses these classes to create the items in Sitecore?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment