<#@ assembly name="System.Core" #> <#@ assembly name="$(SolutionDir)tools\CodeGeneration\Sitecore.CodeGenerator\bin\Debug\Sitecore.Kernel.DLL" #> <#@ import namespace="Sitecore.CodeGenerator.Domain" #> <#@ import namespace="System.Linq" #> <#+ public class GlassMappedClassTemplate : CSharpTemplate { public TemplateItem Template { get; set; } public string ConstantsClassName { get { return Identifier(Template.SyncItem.Name) + "TemplateConstants"; } } public Func GetFieldOptionsFunction { get; set; } private string Extends { get; set; } public override string Identifier(string name) { return base.Identifier(name).Replace("_", string.Empty); } public string GetTemplateIdConstantName() { return "TemplateId"; } public string GetFieldIdConstantName(TemplateField field) { return Identifier(field.SyncItem.Name) + "FieldId"; } public string GetFieldNameConstantName(TemplateField field) { return Identifier(field.SyncItem.Name) + "FieldName"; } public override string TransformText() { this.Extends = string.Empty; if(this.Template.BaseTemplates.Any()) { this.Extends = string.Concat(" : ", string.Join(", ", this.Template.BaseTemplates.Select(b => string.Concat("I", Identifier(b.SyncItem.Name))))); } else { this.Extends = " : ISitecoreItemBase"; } base.TransformText(); #> namespace <#= DefaultNamespace #> { using System; using System.Collections.Generic; using System.Collections.Specialized; using global::Glass.Mapper.Sc.Configuration; using global::Glass.Mapper.Sc.Configuration.Attributes; using global::Glass.Mapper.Sc.Fields; using WesleyanPlatform.Foundation.Orm.Glass.Models; /// /// Represents a constants for item <#= Template.SyncItem.ID #> in Sitecore. /// Path: <#= Template.SyncItem.ItemPath #> /// public class <#= ConstantsClassName #> { public const string <#= GetTemplateIdConstantName() #> = "<#= Template.SyncItem.ID #>"; <#+ foreach(var section in Template.Sections) { #> #region <#=section.SyncItem.Name#> Fields <#+ foreach(var field in section.Fields) { var fieldOptions = GetFieldOptionsFunction(field.FieldTypeName, field.SyncItem.ID); if(! string.IsNullOrWhiteSpace(field.FieldTitle)) { #> /// /// <#=field.FieldTitle#> /// <#+ } #> public const string <#=GetFieldIdConstantName(field)#> = "<#=field.SyncItem.ID#>"; public const string <#=GetFieldNameConstantName(field)#> = "<#=field.SyncItem.Name#>"; <#+ } #> #endregion <#+ } #> } /// /// Represents a mapped type for item <#= Template.SyncItem.ID #> in Sitecore. /// Path: <#= Template.SyncItem.ItemPath #> /// [SitecoreType(TemplateId = <#= ConstantsClassName #>.<#= GetTemplateIdConstantName() #>)] public partial interface I<#=Identifier(Template.SyncItem.Name)#><#=Extends#> { <#+ foreach(var section in Template.Sections) { #> #region <#=section.SyncItem.Name#> <#+ foreach(var field in section.Fields) { var fieldOptions = GetFieldOptionsFunction(field.FieldTypeName, field.SyncItem.ID); if(! string.IsNullOrWhiteSpace(field.FieldTitle)) { #> /// /// <#=field.FieldTitle#> /// <#+ } #> [SitecoreField(FieldId = <#= ConstantsClassName #>.<#= GetFieldIdConstantName(field) #>, FieldName = <#= ConstantsClassName #>.<#= GetFieldNameConstantName(field) #> <#=fieldOptions.AttributeExtras ?? string.Empty #>)] <#=fieldOptions.GlassFieldTypeName#> <#=Identifier(field.SyncItem.Name)#> { get; set; } <#+ } #> #endregion <#+ } #> } } <#+ return this.GenerationEnvironment.ToString(); } } #>