Files
Umbraco-CMS/components/editorControls/MultiNodeTreePicker/XmlTreeNodeExtensions.cs

79 lines
2.8 KiB
C#
Raw Normal View History

2012-04-28 13:57:04 -01:00
using System.Linq;
using System.Xml.Linq;
using System.Xml.XPath;
using umbraco.cms.presentation.Trees;
namespace umbraco.editorControls.MultiNodeTreePicker
{
/// <summary>
/// XmlTreeNode extensions for the MultiNodeTreePicker.
/// </summary>
2012-04-28 13:57:04 -01:00
public static class XmlTreeNodeExtensions
{
//public static void DetermineSelected(this XmlTreeNode node)
//{
//}
/// <summary>
/// Determines if the node should be clickable based on the xpath given
/// </summary>
/// <param name="node">The node.</param>
/// <param name="xpath">The xpath.</param>
/// <param name="type">The type.</param>
/// <param name="xml">The XML.</param>
public static void DetermineClickable(this XmlTreeNode node, string xpath, XPathFilterType type, XElement xml)
{
if (!string.IsNullOrEmpty(xpath))
{
try
{
var matched = xml.XPathSelectElements(xpath);
if (matched.Count() > 0)
{
if (type == XPathFilterType.Disable)
{
//add the non-clickable color to the node
node.Style.AddCustom("uc-treenode-noclick");
}
else
{
//add the non-clickable color to the node
node.Style.AddCustom("uc-treenode-click");
}
}
else
{
if (type == XPathFilterType.Disable)
{
//ensure the individual node is the correct color
node.Style.AddCustom("uc-treenode-click");
}
else
{
//ensure the individual node is the correct color
node.Style.AddCustom("uc-treenode-noclick");
}
2012-04-28 13:57:04 -01:00
}
}
catch (XPathException)
{
node.Text = "umbraco.editorControls: MNTP: XPath Error!";
2012-04-28 13:57:04 -01:00
}
}
else
{
if (type == XPathFilterType.Disable)
{
//ensure the individual node is the correct color
node.Style.AddCustom("uc-treenode-click");
}
else
{
//ensure the individual node is the correct color
node.Style.AddCustom("uc-treenode-noclick");
}
2012-04-28 13:57:04 -01:00
}
}
}
}