Files
Umbraco-CMS/src/Umbraco.Core/Models/Template.cs
2013-02-06 13:33:04 -01:00

120 lines
3.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using Umbraco.Core.Configuration;
using Umbraco.Core.IO;
namespace Umbraco.Core.Models
{
/// <summary>
/// Represents a Template file
/// </summary>
[Serializable]
[DataContract(IsReference = true)]
public class Template : File, ITemplate
{
private readonly string _alias;
private readonly string _name;
internal Template(string path)
: base(path)
{
base.Path = path;
ParentId = -1;
}
public Template(string path, string name, string alias)
: base(path)
{
base.Path = path;
ParentId = -1;
Key = name.EncodeAsGuid();
_name = name;
_alias = alias;
CreateDate = DateTime.Now;
UpdateDate = DateTime.Now;
}
[DataMember]
internal int CreatorId { get; set; }
[DataMember]
internal int Level { get; set; }
[DataMember]
internal int SortOrder { get; set; }
[DataMember]
internal int ParentId { get; set; }
[DataMember]
internal string NodePath { get; set; }
[DataMember]
internal int MasterTemplateId { get; set; }
[DataMember]
internal string MasterTemplateAlias { get; set; }
[DataMember]
public override string Alias
{
get
{
return _alias;
}
}
[DataMember]
public override string Name
{
get
{
return _name;
}
}
/// <summary>
/// Returns the <see cref="RenderingEngine"/> that corresponds to the template file
/// </summary>
/// <returns><see cref="RenderingEngine"/></returns>
public RenderingEngine GetTypeOfRenderingEngine()
{
if(Path.EndsWith("cshtml") || Path.EndsWith("vbhtml"))
return RenderingEngine.Mvc;
return RenderingEngine.WebForms;
}
/// <summary>
/// Boolean indicating whether the file could be validated
/// </summary>
/// <returns>True if file is valid, otherwise false</returns>
public override bool IsValid()
{
var exts = new List<string>();
if (UmbracoSettings.DefaultRenderingEngine == RenderingEngine.Mvc)
{
exts.Add("cshtml");
exts.Add("vbhtml");
}
else
{
exts.Add(UmbracoSettings.UseAspNetMasterPages ? "master" : "aspx");
}
var dirs = SystemDirectories.Masterpages;
if (UmbracoSettings.DefaultRenderingEngine == RenderingEngine.Mvc)
dirs += "," + SystemDirectories.MvcViews;
//Validate file
var validFile = IOHelper.VerifyEditPath(Path, dirs.Split(','));
//Validate extension
var validExtension = IOHelper.VerifyFileExtension(Path, exts);
return validFile && validExtension;
}
}
}