Files
Umbraco-CMS/src/umbraco.MacroEngines/RazorDynamicNode/RazorLibraryCore.cs
Shannon Deminick 54e5140d6a Added more extension methods to our strongly typed IPublishedContent object and IEnumerable<IPublishedContent> to match all of the available methods
that are on the DynamicPublishedContent object. Added more unit tests for all of these classes.
Moved some of the Dynamic objects into the web project which simplifies things quite a bit as some of these classes require access to the biz logic layer.
Now we have intellisense for all of the nice magical methods that were on DynamicPublishedContent on our strongly typed object!
2012-10-04 03:26:56 +05:00

306 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using Umbraco.Core.Dynamics;
using Umbraco.Core.Models;
using Umbraco.Web;
using Umbraco.Web.Models;
using umbraco.interfaces;
using System.Xml.Linq;
using System.Xml.XPath;
using System.Web;
using System.IO;
using HtmlAgilityPack;
namespace umbraco.MacroEngines.Library
{
public class RazorLibraryCore
{
private readonly INode _node;
private readonly UmbracoHelper _umbracoHelper;
/// <summary>
/// An empty HtmlHelper with a blank ViewContext, used only to access some htmlHelper extension methods
/// </summary>
private readonly HtmlHelper _htmlHelper;
public INode Node
{
get { return _node; }
}
public RazorLibraryCore(INode node)
{
this._node = node;
_umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
_htmlHelper = new HtmlHelper(new ViewContext(), new ViewPage());
}
public dynamic NodeById(int Id)
{
var node = new DynamicNode(Id);
if (node != null && node.Id == 0) return new DynamicNull();
return node;
}
public dynamic NodeById(string Id)
{
var node = new DynamicNode(Id);
if (node != null && node.Id == 0) return new DynamicNull();
return node;
}
public dynamic NodeById(DynamicNull Id)
{
return new DynamicNull();
}
public dynamic NodeById(object Id)
{
if (Id.GetType() == typeof(DynamicNull))
{
return new DynamicNull();
}
var node = new DynamicNode(Id);
if (node != null && node.Id == 0) return new DynamicNull();
return node;
}
public dynamic NodesById(List<object> Ids)
{
List<DynamicNode> nodes = new List<DynamicNode>();
foreach (object eachId in Ids)
nodes.Add(new DynamicNode(eachId));
return new DynamicNodeList(nodes);
}
public dynamic NodesById(List<int> Ids)
{
List<DynamicNode> nodes = new List<DynamicNode>();
foreach (int eachId in Ids)
nodes.Add(new DynamicNode(eachId));
return new DynamicNodeList(nodes);
}
public dynamic NodesById(List<int> Ids, DynamicBackingItemType ItemType)
{
List<DynamicNode> nodes = new List<DynamicNode>();
foreach (int eachId in Ids)
nodes.Add(new DynamicNode(eachId, ItemType));
return new DynamicNodeList(nodes);
}
public dynamic NodesById(params object[] Ids)
{
return NodesById(Ids.ToList());
}
public dynamic MediaById(DynamicNull Id)
{
return new DynamicNull();
}
public dynamic MediaById(int Id)
{
var ebm = ExamineBackedMedia.GetUmbracoMedia(Id);
if (ebm != null && ebm.Id == 0)
{
return new DynamicNull();
}
return new DynamicMedia(new DynamicBackingItem(ebm));
}
public dynamic MediaById(string Id)
{
int mediaId = 0;
if (int.TryParse(Id, out mediaId))
{
return MediaById(mediaId);
}
return new DynamicNull();
}
public dynamic MediaById(object Id)
{
if (Id.GetType() == typeof(DynamicNull))
{
return new DynamicNull();
}
int mediaId = 0;
if (int.TryParse(string.Format("{0}", Id), out mediaId))
{
return MediaById(mediaId);
}
return null;
}
public dynamic MediaById(List<object> Ids)
{
List<DynamicNode> nodes = new List<DynamicNode>();
foreach (object eachId in Ids)
nodes.Add(MediaById(eachId));
return new DynamicNodeList(nodes);
}
public dynamic MediaById(List<int> Ids)
{
List<DynamicNode> nodes = new List<DynamicNode>();
foreach (int eachId in Ids)
nodes.Add(MediaById(eachId));
return new DynamicNodeList(nodes);
}
public dynamic MediaById(params object[] Ids)
{
return MediaById(Ids.ToList());
}
public dynamic Search(string term, bool useWildCards = true, string searchProvider = null)
{
//wraps the functionality in UmbracoHelper but still returns the legacy DynamicNodeList
var nodes = ((DynamicPublishedContentList)_umbracoHelper.Search(term, useWildCards, searchProvider))
.Select(x => x.ConvertToNode());
return new DynamicNodeList(nodes);
}
public dynamic Search(Examine.SearchCriteria.ISearchCriteria criteria, Examine.Providers.BaseSearchProvider searchProvider = null)
{
//wraps the functionality in UmbracoHelper but still returns the legacy DynamicNodeList
var nodes = ((DynamicPublishedContentList) _umbracoHelper.Search(criteria, searchProvider))
.Select(x => x.ConvertToNode());
return new DynamicNodeList(nodes);
}
public T As<T>() where T : class
{
return (this as T);
}
public dynamic ToDynamicXml(string xml)
{
return _umbracoHelper.ToDynamicXml(xml);
}
public dynamic ToDynamicXml(XElement xElement)
{
return _umbracoHelper.ToDynamicXml(xElement);
}
public dynamic ToDynamicXml(XPathNodeIterator xpni)
{
return _umbracoHelper.ToDynamicXml(xpni);
}
public string Coalesce(params object[] args)
{
return _umbracoHelper.Coalesce<DynamicNull>(args);
}
public string Concatenate(params object[] args)
{
return _umbracoHelper.Concatenate<DynamicNull>(args);
}
public string Join(string seperator, params object[] args)
{
return _umbracoHelper.Join<DynamicNull>(seperator, args);
}
public HtmlString If(bool test, string valueIfTrue, string valueIfFalse)
{
return _umbracoHelper.If(test, valueIfTrue, valueIfFalse);
}
public HtmlString If(bool test, string valueIfTrue)
{
return _umbracoHelper.If(test, valueIfTrue);
}
public Umbraco.Web.Mvc.HtmlTagWrapper Wrap(string tag, string innerText, params Umbraco.Web.Mvc.IHtmlTagWrapper[] children)
{
return _htmlHelper.Wrap(tag, innerText, children);
}
public Umbraco.Web.Mvc.HtmlTagWrapper Wrap(string tag, object inner, object anonymousAttributes, params Umbraco.Web.Mvc.IHtmlTagWrapper[] children)
{
return _htmlHelper.Wrap(tag, inner, anonymousAttributes, children);
}
public Umbraco.Web.Mvc.HtmlTagWrapper Wrap(string tag, object inner)
{
return _htmlHelper.Wrap(tag, inner);
}
public Umbraco.Web.Mvc.HtmlTagWrapper Wrap(string tag, string innerText, object anonymousAttributes, params Umbraco.Web.Mvc.IHtmlTagWrapper[] children)
{
return _htmlHelper.Wrap(tag, innerText, anonymousAttributes, children);
}
public Umbraco.Web.Mvc.HtmlTagWrapper Wrap(bool visible, string tag, string innerText, object anonymousAttributes, params Umbraco.Web.Mvc.IHtmlTagWrapper[] children)
{
return _htmlHelper.Wrap(visible, tag, innerText, anonymousAttributes, children);
}
public IHtmlString Truncate(IHtmlString html, int length)
{
return Truncate(html.ToHtmlString(), length, true, false);
}
public IHtmlString Truncate(IHtmlString html, int length, bool addElipsis)
{
return Truncate(html.ToHtmlString(), length, addElipsis, false);
}
public IHtmlString Truncate(IHtmlString html, int length, bool addElipsis, bool treatTagsAsContent)
{
return Truncate(html.ToHtmlString(), length, addElipsis, treatTagsAsContent);
}
public IHtmlString Truncate(DynamicNull html, int length)
{
return new HtmlString(string.Empty);
}
public IHtmlString Truncate(DynamicNull html, int length, bool addElipsis)
{
return new HtmlString(string.Empty);
}
public IHtmlString Truncate(DynamicNull html, int length, bool addElipsis, bool treatTagsAsContent)
{
return new HtmlString(string.Empty);
}
public IHtmlString Truncate(string html, int length)
{
return Truncate(html, length, true, false);
}
public IHtmlString Truncate(string html, int length, bool addElipsis)
{
return Truncate(html, length, addElipsis, false);
}
public IHtmlString Truncate(string html, int length, bool addElipsis, bool treatTagsAsContent)
{
return _umbracoHelper.Truncate(html, length, addElipsis, treatTagsAsContent);
}
public HtmlString StripHtml(IHtmlString html)
{
return _umbracoHelper.StripHtml(html);
}
public HtmlString StripHtml(DynamicNull html)
{
return new HtmlString(string.Empty);
}
public HtmlString StripHtml(string html)
{
return _umbracoHelper.StripHtml(html);
}
public HtmlString StripHtml(IHtmlString html, List<string> tags)
{
return _umbracoHelper.StripHtml(html, tags.ToArray());
}
public HtmlString StripHtml(DynamicNull html, List<string> tags)
{
return new HtmlString(string.Empty);
}
public HtmlString StripHtml(string html, List<string> tags)
{
return _umbracoHelper.StripHtml(html, tags.ToArray());
}
public HtmlString StripHtml(IHtmlString html, params string[] tags)
{
return _umbracoHelper.StripHtml(html, tags);
}
public HtmlString StripHtml(DynamicNull html, params string[] tags)
{
return new HtmlString(string.Empty);
}
public HtmlString StripHtml(string html, params string[] tags)
{
return _umbracoHelper.StripHtml(html, tags);
}
}
}