From ce83c8a1b991edd3a22fabc91b5714a3611eb29e Mon Sep 17 00:00:00 2001 From: Elijah Date: Wed, 16 Feb 2011 01:48:40 -1100 Subject: [PATCH] Added SupportedUIExtensions to IMacroEngine --- .../DLRScriptingEngine.cs | 37 ++++++---------- umbraco.MacroEngines.Juno/RazorMacroEngine.cs | 4 +- .../Scripting/MacroScript.cs | 44 +++++++------------ .../cms/businesslogic/macro/IMacroEngine.cs | 20 +++------ .../businesslogic/macro/MacroEngineFactory.cs | 20 ++++++--- .../umbraco/create/DLRScripting.ascx.cs | 6 +-- 6 files changed, 53 insertions(+), 78 deletions(-) diff --git a/umbraco.MacroEngines.Juno/DLRScriptingEngine.cs b/umbraco.MacroEngines.Juno/DLRScriptingEngine.cs index 4d21c1839c..ca24f0f9b5 100644 --- a/umbraco.MacroEngines.Juno/DLRScriptingEngine.cs +++ b/umbraco.MacroEngines.Juno/DLRScriptingEngine.cs @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using umbraco.cms.businesslogic.macro; using umbraco.interfaces; @@ -11,47 +12,37 @@ namespace umbraco.MacroEngines { #region IMacroEngine Members - public virtual string Name - { + public virtual string Name { get { return "Umbraco DLR Macro Engine"; } } - public virtual List SupportedExtensions - { - get - { - var exts = new List { "py", "rb" }; - return exts; - } + public virtual IEnumerable SupportedExtensions { + get { return new [] {"py", "rb"}; } } - public virtual Dictionary SupportedProperties - { + public IEnumerable SupportedUIExtensions { + get { return SupportedExtensions; } + } + + public virtual Dictionary SupportedProperties { get { throw new NotImplementedException(); } } - public virtual bool Validate(string code, string filePath, INode currentPage, out string errorMessage) { errorMessage = string.Empty; return true; } - public virtual string Execute(MacroModel macro, INode currentPage) - { - string fileEnding = macro.ScriptName.Substring(macro.ScriptName.LastIndexOf('.')).Trim('.'); - - MacroScriptEngine mse = MacroScriptEngine.LoadEngineByFileExtension(fileEnding); - - var vars = new SortedDictionary - { + public virtual string Execute(MacroModel macro, INode currentPage) { + var fileEnding = macro.ScriptName.Substring(macro.ScriptName.LastIndexOf('.')).Trim('.'); + var mse = MacroScriptEngine.LoadEngineByFileExtension(fileEnding); + var vars = new SortedDictionary { {"currentPage", new DynamicNode(currentPage)} }; - foreach (MacroPropertyModel prop in macro.Properties) - { + foreach (var prop in macro.Properties) { vars.Add(prop.Key, prop.Value); } mse.ScriptVariables = vars; - return mse.ExecuteFile(IOHelper.MapPath(SystemDirectories.Python + "/" + macro.ScriptName)); } diff --git a/umbraco.MacroEngines.Juno/RazorMacroEngine.cs b/umbraco.MacroEngines.Juno/RazorMacroEngine.cs index 31e62ac38d..92a74de859 100644 --- a/umbraco.MacroEngines.Juno/RazorMacroEngine.cs +++ b/umbraco.MacroEngines.Juno/RazorMacroEngine.cs @@ -134,7 +134,9 @@ namespace umbraco.MacroEngines public string Name { get { return "Razor Macro Engine"; } } - public List SupportedExtensions { get { return new List {"cshtml", "vbhtml", "razor"}; } } + public IEnumerable SupportedExtensions { get { return new List {"cshtml", "vbhtml", "razor"}; } } + + public IEnumerable SupportedUIExtensions { get { return new List { "cshtml", "vbhtml" }; } } public Dictionary SupportedProperties { get { throw new NotSupportedException(); } diff --git a/umbraco.MacroEngines.Juno/Scripting/MacroScript.cs b/umbraco.MacroEngines.Juno/Scripting/MacroScript.cs index 973f949ce6..2e2a7d23d9 100644 --- a/umbraco.MacroEngines.Juno/Scripting/MacroScript.cs +++ b/umbraco.MacroEngines.Juno/Scripting/MacroScript.cs @@ -1,17 +1,14 @@ -using System; -using System.Collections; +using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Text; using Microsoft.Scripting.Hosting; namespace umbraco.MacroEngines.Scripting { - public class MacroScript - { - public static string Execute(string script, string scriptType, Hashtable variables) - { - MacroScriptEngine mse = new MacroScriptEngine(scriptType); + public class MacroScript { + + public static string Execute(string script, string scriptType, Hashtable variables) { + var mse = new MacroScriptEngine(scriptType); mse.ScriptVariables = ConvertHashTable(variables); mse.Script = script; return mse.Execute(); @@ -19,47 +16,38 @@ namespace umbraco.MacroEngines.Scripting public static string Evaluate(string script, string scriptType, Hashtable variables) { - MacroScriptEngine mse = new MacroScriptEngine(scriptType); + var mse = new MacroScriptEngine(scriptType); mse.ScriptVariables = ConvertHashTable(variables); mse.Script = script; return mse.Evaluate(); } - public static string ExecuteFile(string path, Hashtable variables) - { - string fileEnding = path.Substring(path.LastIndexOf('.')).Trim('.'); - - MacroScriptEngine mse = MacroScriptEngine.LoadEngineByFileExtension(fileEnding); + public static string ExecuteFile(string path, Hashtable variables) { + var fileEnding = path.Substring(path.LastIndexOf('.')).Trim('.'); + var mse = MacroScriptEngine.LoadEngineByFileExtension(fileEnding); mse.ScriptVariables = ConvertHashTable(variables); - return mse.ExecuteFile(path); } //friendly helpers.... - public static string ExecutePython(string script, Hashtable variables) - { + public static string ExecutePython(string script, Hashtable variables) { return Execute(script, "python", variables); } - public static string ExecuteRuby(string script, Hashtable variables) - { + public static string ExecuteRuby(string script, Hashtable variables) { return Execute(script, "ruby", variables); } - private static SortedDictionary ConvertHashTable(Hashtable ht) - { - SortedDictionary retval = new SortedDictionary(); - foreach (DictionaryEntry de in ht) - { + private static SortedDictionary ConvertHashTable(Hashtable ht) { + var retval = new SortedDictionary(); + foreach (DictionaryEntry de in ht) { retval.Add(de.Key.ToString(), de.Value); } - return retval; } - public static List GetAvailableLanguages() - { - return ScriptRuntimeSetup.ReadConfiguration().LanguageSetups.ToList(); + public static List GetAvailableLanguages() { + return ScriptRuntimeSetup.ReadConfiguration().LanguageSetups.ToList(); } } } diff --git a/umbraco/cms/businesslogic/macro/IMacroEngine.cs b/umbraco/cms/businesslogic/macro/IMacroEngine.cs index 9b65c2565f..ac957bb2e3 100644 --- a/umbraco/cms/businesslogic/macro/IMacroEngine.cs +++ b/umbraco/cms/businesslogic/macro/IMacroEngine.cs @@ -6,21 +6,11 @@ using umbraco.interfaces; namespace umbraco.cms.businesslogic.macro { - public interface IMacroEngine - { - string Name - { - get; - } - List SupportedExtensions - { - get; - } - Dictionary SupportedProperties - { - get; - } - + public interface IMacroEngine { + string Name { get; } + IEnumerable SupportedExtensions { get; } + IEnumerable SupportedUIExtensions { get; } + Dictionary SupportedProperties { get; } bool Validate(string code, string tempFileName, INode currentPage, out string errorMessage); string Execute(MacroModel macro, INode currentPage); } diff --git a/umbraco/cms/businesslogic/macro/MacroEngineFactory.cs b/umbraco/cms/businesslogic/macro/MacroEngineFactory.cs index 50e9bd2d32..245c6a4cb2 100644 --- a/umbraco/cms/businesslogic/macro/MacroEngineFactory.cs +++ b/umbraco/cms/businesslogic/macro/MacroEngineFactory.cs @@ -49,16 +49,23 @@ namespace umbraco.cms.businesslogic.macro } } - public static List GetSupportedLanguages() - { - List languages = new List(); - foreach(IMacroEngine engine in GetAll()) - { + public static IEnumerable GetSupportedLanguages() { + var languages = new List(); + foreach(var engine in GetAll()) { foreach(string lang in engine.SupportedExtensions) if (languages.Find(t => t.Extension == lang) == null) languages.Add(new MacroEngineLanguage(lang, engine.Name)); } + return languages; + } + public static IEnumerable GetSupportedUILanguages() { + var languages = new List(); + foreach (var engine in GetAll()) { + foreach (string lang in engine.SupportedUIExtensions) + if (languages.Find(t => t.Extension == lang) == null) + languages.Add(new MacroEngineLanguage(lang, engine.Name)); + } return languages; } @@ -68,8 +75,7 @@ namespace umbraco.cms.businesslogic.macro if (m_allEngines.Count == 0) { Initialize(); - foreach (string name in m_engines.Keys) - { + foreach (string name in m_engines.Keys) { m_allEngines.Add(GetEngine(name)); } } diff --git a/umbraco/presentation/umbraco/create/DLRScripting.ascx.cs b/umbraco/presentation/umbraco/create/DLRScripting.ascx.cs index 21257f6f30..4c4983619d 100644 --- a/umbraco/presentation/umbraco/create/DLRScripting.ascx.cs +++ b/umbraco/presentation/umbraco/create/DLRScripting.ascx.cs @@ -23,10 +23,8 @@ namespace umbraco.presentation.create protected void Page_Load(object sender, System.EventArgs e) { sbmt.Text = ui.Text("create"); - if (!Page.IsPostBack) - { - foreach (MacroEngineLanguage lang in MacroEngineFactory.GetSupportedLanguages()) - { + if (!Page.IsPostBack) { + foreach (MacroEngineLanguage lang in MacroEngineFactory.GetSupportedUILanguages()) { filetype.Items.Add(new ListItem(string.Format("{0} by {1}", helper.SpaceCamelCasing(lang.Extension), lang.EngineName), lang.Extension)); } filetype.SelectedIndex = 0;