Files
Umbraco-CMS/src/Umbraco.Core/Models/Script.cs

67 lines
2.3 KiB
C#

using System;
using System.Linq;
using System.Runtime.Serialization;
using Umbraco.Core.Configuration;
using Umbraco.Core.IO;
namespace Umbraco.Core.Models
{
/// <summary>
/// Represents a Script file
/// </summary>
[Serializable]
[DataContract(IsReference = true)]
public class Script : File
{
public Script(string path) : base(path)
{
base.Path = path;
}
/// <summary>
/// Boolean indicating whether the file could be validated
/// </summary>
/// <remarks>
/// The validation logic was previsouly placed in the codebehind of editScript.aspx,
/// but has been moved to the script file so the validation is central.
/// </remarks>
/// <returns>True if file is valid, otherwise false</returns>
public override bool IsValid()
{
//NOTE Since a script file can be both JS, Razor Views, Razor Macros and Xslt
//it might be an idea to create validations for all 3 and divide the validation
//into 4 private methods.
//See codeEditorSave.asmx.cs for reference.
var exts = UmbracoSettings.ScriptFileTypes.Split(',').ToList();
/*if (UmbracoSettings.DefaultRenderingEngine == RenderingEngine.Mvc)
{
exts.Add("cshtml");
exts.Add("vbhtml");
}*/
var dirs = SystemDirectories.Scripts;
/*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;
}
/// <summary>
/// Indicates whether the current entity has an identity, which in this case is a path/name.
/// </summary>
/// <remarks>
/// Overrides the default Entity identity check.
/// </remarks>
public override bool HasIdentity
{
get { return string.IsNullOrEmpty(Path) == false; }
}
}
}