using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.FormControls;
using CMS.GlobalHelper;
public partial class CMSModules_PortalEngine_FormControls_PageTemplates_LevelTree : FormEngineUserControl
{
#region "Private variables"
private string mTreePath = string.Empty;
private int mLevel = 0;
private string mValue = string.Empty;
#endregion
#region "Public properties"
///
/// Gets or sets tree path - if set is created from TreePath.
///
public string TreePath
{
get
{
return mTreePath;
}
set
{
mTreePath = value;
}
}
///
/// Gets or sets Level, levels are rendered only if TreePath is not set.
///
public int Level
{
get
{
return mLevel;
}
set
{
mLevel = value;
}
}
///
/// Gets or sets value.
///
public override object Value
{
get
{
if (treeElem.Nodes.Count > 0)
{
mValue = "";
TreeNode currentNode = treeElem.Nodes[0];
while (currentNode != null)
{
if (currentNode.Checked)
{
mValue += "/{" + currentNode.Value + "}";
}
if (currentNode.ChildNodes.Count == 0)
{
break;
}
currentNode = currentNode.ChildNodes[0];
}
}
return mValue;
}
set
{
mValue = ValidationHelper.GetString(value, string.Empty);
}
}
#endregion
#region "Methods and events"
protected void Page_Load(object sender, EventArgs e)
{
// Check culture
if (CultureHelper.IsUICultureRTL())
{
treeElem.LineImagesFolder = GetImageUrl("RTL/Design/Controls/Tree", IsLiveSite, true);
}
else
{
treeElem.LineImagesFolder = GetImageUrl("Design/Controls/Tree", IsLiveSite, true);
}
// Set tree elements
treeElem.ToolTip = string.Empty;
treeElem.ExpandImageToolTip = string.Empty;
treeElem.ImageSet = TreeViewImageSet.Custom;
treeElem.ExpandImageToolTip = GetString("ContentTree.Expand");
treeElem.CollapseImageToolTip = GetString("ContentTree.Collapse");
// Fill tree and select data
if (!RequestHelper.IsPostBack())
{
FillTree();
Select();
}
}
///
/// Creates tree content.
///
public void FillTree()
{
treeElem.Nodes.Clear();
if (string.IsNullOrEmpty(ValidationHelper.GetString(TreePath, string.Empty)) && (Level == 0))
{
return;
}
// Create tree with Level0 to LevelN
else if (string.IsNullOrEmpty(TreePath))
{
CreateLevelTree();
}
// Split leafs in tree path
string[] levels = TreePath.Split('/');
if (levels.Length > 0)
{
string rootName = GetString("InheritLevels.RootName");
// Own user ID
if (levels.Length > 1)
{
// Begin from index 1, first item is empty string
if (!string.IsNullOrEmpty(levels[1]))
{
rootName = levels[1];
}
}
TreeNode root = new TreeNode("" + HTMLHelper.HTMLEncode(rootName) + "", "0");
root.ToolTip = rootName;
root.ImageToolTip = string.Empty;
TreeNode LastNode = root;
// Insert other nodes
for (int i = 2; i < levels.Length; i++)
{
string currentLevel = levels[i];
if (ValidationHelper.GetString(currentLevel, "") != "")
{
TreeNode currentNode = new TreeNode("" + HTMLHelper.HTMLEncode(currentLevel) + "", (i - 1).ToString());
currentNode.ToolTip = currentLevel;
currentNode.ImageToolTip = "";
LastNode.ChildNodes.Add(currentNode);
LastNode = currentNode;
}
}
treeElem.Nodes.Add(root);
treeElem.ExpandAll();
}
}
///
/// Select specified documents.
///
public void Select()
{
// Get value
string selected = ValidationHelper.GetString(mValue, string.Empty);
if (string.IsNullOrEmpty(selected))
{
return;
}
// Split value
string[] levels = selected.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
if (levels.Length == 0)
{
return;
}
foreach (string currentLevel in levels)
{
int numberLevel = ValidationHelper.GetInteger(currentLevel.Replace("{", "").Replace("}", ""), -1);
if (numberLevel >= 0)
{
TreeNode currentNode = treeElem.Nodes[0];
while (currentNode != null)
{
if (currentNode.Value == numberLevel.ToString())
{
currentNode.Checked = true;
break;
}
else
{
if (currentNode.ChildNodes.Count == 0)
{
break;
}
currentNode = currentNode.ChildNodes[0];
}
}
}
}
}
///
/// Creates path to level tree.
///
public void CreateLevelTree()
{
string levelName = GetString("inheritlevels.levelname");
string tmpTree = "/" + levelName + "0";
for (int i = 1; i < Level; i++)
{
tmpTree += "/" + levelName + i.ToString();
}
TreePath = tmpTree;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
// Hide tooltips of checkboxes in the treeview
ltlScript.Text += ScriptHelper.GetScript("hideCheckBoxToolTips('" + treeElem.ClientID + "');");
FillTree();
Select();
}
#endregion
}