Files
Umbraco-CMS/umbraco.MacroEngines.Juno/RazorCore/BaseContext.cs
agrath@gmail.com 603a12c5a0 Split umbraco.MacroEngines.Juno into two subfolders (namespaces remain the same)
RazorCore contains all the core razor engine implementation
RazorDynamicNode contains all the DynamicNode functionality and associated support files
2011-02-24 16:05:54 -13:00

55 lines
1.9 KiB
C#

using System;
using System.Web.WebPages;
using umbraco.cms.businesslogic.macro;
using umbraco.interfaces;
namespace umbraco.MacroEngines
{
public abstract class BaseContext<T> : WebPage, IMacroContext {
private MacroModel _macro;
private INode _node;
protected T CurrentModel;
protected IParameterDictionary ParameterDictionary;
protected ICultureDictionary CultureDictionary;
public dynamic Parameter { get { return ParameterDictionary; } }
public dynamic Dictionary { get { return CultureDictionary; } }
public MacroModel Macro { get { return _macro; } }
public INode Node { get { return _node; } }
public T Current { get { return CurrentModel; } }
public new dynamic Model { get { return CurrentModel; } }
public virtual void SetMembers(MacroModel macro, INode node) {
if (macro == null)
throw new ArgumentNullException("macro");
if (node == null)
throw new ArgumentNullException("node");
_macro = macro;
ParameterDictionary = new UmbracoParameterDictionary(macro.Properties);
CultureDictionary = new UmbracoCultureDictionary();
_node = node;
}
protected override void ConfigurePage(WebPageBase parentPage) {
if (parentPage == null)
return;
//Inject SetMembers Into New Context
if (parentPage is IMacroContext) {
var macroContext = (IMacroContext)parentPage;
SetMembers(macroContext.Macro, macroContext.Node);
}
}
public string GetParameter(string alias) {
return ParameterDictionary[alias];
}
public string GetDictionary(string key) {
return CultureDictionary[key];
}
}
}