using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace umbraco.uicontrols { /// /// This class will generate the URLs for iframe tree pages. /// Generally used to get the a tree picker url. /// /// /// This was created in 4.1 so that this helper class can be exposed to other assemblies since /// it only existed in the presentation assembly in previous versions /// public class TreeUrlGenerator { public const string TREE_URL = "tree.aspx"; public const string INIT_URL = "treeinit.aspx"; public const string PICKER_URL = "treepicker.aspx"; private int? m_startNodeID; private string m_treeType; private bool? m_showContextMenu; private bool? m_isDialog; private string m_app; private string m_nodeKey; private string m_functionToCall; #region Public Properties public string FunctionToCall { get { return m_functionToCall; } set { m_functionToCall = value; } } public string NodeKey { get { return m_nodeKey; } set { m_nodeKey = value; } } public int StartNodeID { get { return m_startNodeID ?? -1; } set { m_startNodeID = value; } } public string TreeType { get { return m_treeType; } set { m_treeType = value; } } public bool ShowContextMenu { get { return m_showContextMenu ?? true; } set { m_showContextMenu = value; } } public bool IsDialog { get { return m_isDialog ?? false; } set { m_isDialog = value; } } public string App { get { return m_app; } set { m_app = value; } } #endregion /// /// Returns the url for servicing the xml tree request based on the parameters specified on this class. /// /// Tree service url as a string public string GetServiceUrl() { return umbraco.IO.IOHelper.ResolveUrl(umbraco.IO.SystemDirectories.Umbraco) + "/" + GetUrl(TREE_URL); } /// /// Static method to return the tree service url with the specified parameters /// /// /// /// /// /// /// /// /// public static string GetServiceUrl(int? startNodeID, string treeType, bool? showContextMenu, bool? isDialog, string app, string nodeKey, string functionToCall) { TreeUrlGenerator treeSvc = new TreeUrlGenerator() { StartNodeID = startNodeID ?? -1, TreeType = treeType, ShowContextMenu = showContextMenu ?? true, IsDialog = isDialog ?? false, App = app, NodeKey = nodeKey, FunctionToCall = functionToCall }; return treeSvc.GetServiceUrl(); } /// /// Returns the url for initializing the tree based on the parameters specified on this class /// /// public string GetInitUrl() { return umbraco.IO.IOHelper.ResolveUrl(umbraco.IO.SystemDirectories.Umbraco) + "/" + GetUrl(INIT_URL); } /// /// static method to return the tree init url with the specified parameters /// /// /// /// /// /// /// /// /// public static string GetInitUrl(int? startNodeID, string treeType, bool? showContextMenu, bool? isDialog, string app, string nodeKey, string functionToCall) { TreeUrlGenerator treeSvc = new TreeUrlGenerator() { StartNodeID = startNodeID ?? -1, TreeType = treeType, ShowContextMenu = showContextMenu ?? true, IsDialog = isDialog ?? false, App = app, NodeKey = nodeKey, FunctionToCall = functionToCall }; return treeSvc.GetInitUrl(); } /// /// Returns the url for the tree picker (used on modal windows) based on the parameters specified on this class /// public static string GetPickerUrl(string app, string treeType) { TreeUrlGenerator treeSvc = new TreeUrlGenerator(); treeSvc.App = app; treeSvc.TreeType = treeType; return treeSvc.GetPickerUrl(); } /// /// Returns the url for the tree picker (used on modal windows) based on the parameters specified on this class /// public string GetPickerUrl() { return umbraco.IO.IOHelper.ResolveUrl(umbraco.IO.SystemDirectories.Umbraco) + "/dialogs/" + GetUrl(PICKER_URL); } [Obsolete("No longer used as useSubModal no longer has any relavence")] public static string GetPickerUrl(bool useSubModal, string app, string treeType) { return GetPickerUrl(app, treeType); } [Obsolete("No longer used as useSubModal no longer has any relavence")] public string GetPickerUrl(bool useSubModal) { return GetPickerUrl(); } /// /// Generates the URL parameters for the tree service. /// /// the base url (i.e. tree.aspx) /// protected virtual string GetUrl(string pageUrl) { StringBuilder sb = new StringBuilder(); sb.Append(pageUrl); //insert random sb.Append(string.Format("?rnd={0}", Guid.NewGuid().ToString("N"))); sb.Append(string.Format("&id={0}", this.StartNodeID.ToString())); if (!string.IsNullOrEmpty(this.TreeType)) sb.Append(string.Format("&treeType={0}", this.TreeType)); if (!string.IsNullOrEmpty(this.NodeKey)) sb.Append(string.Format("&nodeKey={0}", this.NodeKey)); sb.Append(string.Format("&contextMenu={0}", this.ShowContextMenu.ToString().ToLower())); sb.Append(string.Format("&isDialog={0}", this.IsDialog.ToString().ToLower())); if (!string.IsNullOrEmpty(this.App)) sb.Append(string.Format("&app={0}", this.App)); return sb.ToString(); } } }