/// <summary> /// Checks if the node can be created. /// </summary> /// <param name="node">Tree node</param> protected bool treeElem_BeforeCreateNode(ObjectTypeTreeNode node) { string objectType = node.ObjectType; if (string.IsNullOrEmpty(objectType)) { return(true); } return(Settings.IsIncluded(objectType, node.Site)); }
public TreeNode CreateNode(ObjectTypeTreeNode source) { // Create new node TreeNode newNode = new TreeNode(); newNode.Expanded = source.Expand; // Get the image string objectType = source.ObjectType ?? source.Group; if (!UsePostback) { newNode.NavigateUrl = "#"; } string template = NodeTextTemplate; // Site int siteId = 0; if (source.Site) { siteId = SiteID; } // Title string name = GetString("ObjectTasks." + objectType.Replace(".", "_").Replace("#", "_")); // Image string imageUrl = GetObjectIconUrl(objectType, "list.png"); string imageTag = "<img src=\"" + imageUrl + "\" alt=\"\" style=\"border:0px;vertical-align:middle;\" onclick=\"return false;\"/>"; if ((objectType == String.Empty) || (objectType == CMSObjectHelper.GROUP_OBJECTS)) { imageUrl = GetImageUrl("General/DefaultRoot.png"); imageTag = "<img src=\"" + imageUrl + "\" alt=\"\" style=\"border:none;height:10px;width:1px;\" onclick=\"return false;\"/>"; template = imageTag + SelectedNodeTextTemplate; siteId = -1; name = GetString("ObjectTasks.Root"); } if (source.Main) { name = "<strong>" + name + "</strong>"; } newNode.Text = template.Replace("##ICON##", imageTag).Replace("##NODENAME##", name).Replace("##SITEID##", siteId.ToString()).Replace("##OBJECTTYPE##", HttpUtility.UrlEncode(objectType)); if (ValueTextTemplate != null) { newNode.Value = ValueTextTemplate.Replace("##SITEID##", siteId.ToString()).Replace("##OBJECTTYPE##", objectType); } // Add image to the node if (UseImages && (imageUrl != "")) { newNode.ImageUrl = imageUrl; } // Disable if not active node if (UsePostback && !source.Active) { newNode.SelectAction = TreeNodeSelectAction.None; } if (source.Group != null && !source.Active) { newNode.SelectAction = TreeNodeSelectAction.Expand; } // Add child nodes if (source.ChildNodes.Count > 0) { foreach (ObjectTypeTreeNode child in source.ChildNodes) { if ((SiteID > 0) || !child.Site) { if ((OnBeforeCreateNode == null) || OnBeforeCreateNode(child)) { // Create child node TreeNode childNode = CreateNode(child); if ((child.ObjectType != null) || (childNode.ChildNodes.Count > 0)) { newNode.ChildNodes.Add(childNode); // Preselect node if ((child.ObjectType == PreselectObjectType) && (child.Site == IsPreselectedObjectTypeSiteObject)) { childNode.Selected = true; } } } } } } return newNode; }
/// <summary> /// Checks if the node can be created. /// </summary> /// <param name="node">Tree node</param> protected bool treeElem_BeforeCreateNode(ObjectTypeTreeNode node) { string objectType = node.ObjectType; if (string.IsNullOrEmpty(objectType)) { return true; } return Settings.IsIncluded(objectType, node.Site); }
/// <summary> /// Create tree node from supplied data /// </summary> /// <param name="source">Tree node data</param> /// <returns>TreeNode</returns> public TreeNode CreateNode(ObjectTypeTreeNode source) { // Create new node TreeNode newNode = new TreeNode(); // Get the image string type = source.ObjectType ?? source.Group; if (!UsePostback) { newNode.NavigateUrl = "#"; } string template = NodeTextTemplate; // Site int siteId = 0; if (source.Site) { siteId = SiteID; } // Title var name = GetNodeName(type); if ((type == String.Empty) || (type == ObjectHelper.GROUP_OBJECTS)) { template = SelectedNodeTextTemplate; siteId = -1; name = GetString("ObjectTasks.Root"); } if (source.Main) { name = "<strong>" + name + "</strong>"; } newNode.Text = template.Replace("##NODENAME##", name).Replace("##SITEID##", siteId.ToString()).Replace("##OBJECTTYPE##", HttpUtility.UrlEncode(type)); if (ValueTextTemplate != null) { newNode.Value = ValueTextTemplate.Replace("##SITEID##", siteId.ToString()).Replace("##OBJECTTYPE##", type); } // Disable if not active node if (UsePostback && !source.Active) { newNode.SelectAction = TreeNodeSelectAction.None; } if (source.Group != null && !source.Active) { newNode.SelectAction = TreeNodeSelectAction.Expand; } // Add child nodes if (source.ChildNodes.Count > 0) { IEnumerable <ObjectTypeTreeNode> children = source.ChildNodes; if (source.SortChildren) { children = children.OrderBy(n => GetNodeName(n.ObjectType ?? n.Group)); } foreach (var child in children) { if ((SiteID > 0) || !child.Site) { if ((OnBeforeCreateNode == null) || OnBeforeCreateNode(child)) { // Create child node TreeNode childNode = CreateNode(child); if ((child.ObjectType != null) || (childNode.ChildNodes.Count > 0)) { newNode.ChildNodes.Add(childNode); // Preselect node if ((child.ObjectType == PreselectObjectType) && (child.Site == IsPreselectedObjectTypeSiteObject)) { childNode.Selected = true; } } } } } } newNode.Expanded = source.Expand; return(newNode); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); // Check 'Manage objects tasks' permission if (!CurrentUser.IsAuthorizedPerResource("cms.staging", "ManageObjectsTasks")) { RedirectToAccessDenied("cms.staging", "ManageObjectsTasks"); } CurrentMaster.DisplaySiteSelectorPanel = true; // Check enabled servers var isCallback = RequestHelper.IsCallback(); if (!isCallback && !ServerInfoProvider.IsEnabledServer(SiteContext.CurrentSiteID)) { ShowInformation(GetString("ObjectStaging.NoEnabledServer")); CurrentMaster.PanelHeader.Visible = false; plcContent.Visible = false; pnlFooter.Visible = false; return; } // Register script for pendingCallbacks repair ScriptHelper.FixPendingCallbacks(Page); // Setup server dropdown selectorElem.DropDownList.AutoPostBack = true; selectorElem.UniSelector.OnSelectionChanged += UniSelector_OnSelectionChanged; // Set server ID SelectedServerID = ValidationHelper.GetInteger(selectorElem.Value, QueryHelper.GetInteger("serverId", 0)); // All servers if (SelectedServerID == UniSelector.US_ALL_RECORDS) { SelectedServerID = 0; selectorElem.Value = UniSelector.US_ALL_RECORDS; } else { selectorElem.Value = SelectedServerID.ToString(); } ltlScript.Text += ScriptHelper.GetScript("var currentServerId = " + SelectedServerID + ";"); HeaderActions.ActionPerformed += HeaderActions_ActionPerformed; if (!isCallback) { // Check 'Manage object tasks' permission if (!CurrentUser.IsAuthorizedPerResource("cms.staging", "ManageObjectsTasks")) { RedirectToAccessDenied("cms.staging", "ManageObjectsTasks"); } synchronizedSiteId = QueryHelper.GetInteger("siteid", 0); CurrentSiteID = SiteContext.CurrentSiteID; ucDisabledModule.TestSettingKeys = "CMSStagingLogObjectChanges"; ucDisabledModule.ParentPanel = pnlNotLogged; if (synchronizedSiteId == -1) { ucDisabledModule.InfoText = GetString("objectstaging.globalandsitenotlogged"); ucDisabledModule.KeyScope = DisabledModuleScope.CurrentSiteAndGlobal; ucDisabledModule.GlobalButtonText = GetString("objectstaging.enableglobalandsiteobjects"); } else if (synchronizedSiteId == 0) { ucDisabledModule.InfoText = GetString("objectstaging.globalnotlogged"); ucDisabledModule.KeyScope = DisabledModuleScope.Global; ucDisabledModule.GlobalButtonText = GetString("objectstaging.enableglobalobjects"); } else { ucDisabledModule.InfoText = GetString("ObjectStaging.SiteNotLogged"); ucDisabledModule.KeyScope = DisabledModuleScope.Site; ucDisabledModule.SiteButtonText = GetString("objectstaging.enablesiteobjects"); } // Check logging if (!ucDisabledModule.Check()) { CurrentMaster.PanelHeader.Visible = false; plcContent.Visible = false; return; } // Get object type objectType = QueryHelper.GetString("objecttype", string.Empty); // Create "synchronize current" header action for tree root, nodes or objects with database representation if (String.IsNullOrEmpty(objectType) || objectType.StartsWith("##", StringComparison.Ordinal) || (ModuleManager.GetReadOnlyObject(objectType) != null)) { HeaderActions.AddAction(new HeaderAction { Text = GetString("ObjectTasks.SyncCurrent"), EventName = SYNCHRONIZE_CURRENT }); } // Add CSS class to panels wrapper in order it could be stacked CurrentMaster.PanelHeader.AddCssClass("header-container-multiple-panels"); // Setup title ctlAsyncLog.TitleText = GetString("Synchronization.Title"); // Get the selected types ObjectTypeTreeNode selectedNode = StagingTaskInfoProvider.ObjectTree.FindNode(objectType, (synchronizedSiteId > 0)); objectType = (selectedNode != null) ? selectedNode.GetObjectTypes(true) : string.Empty; if (!ControlsHelper.CausedPostBack(HeaderActions, btnSyncSelected, btnSyncAll)) { // Register the dialog script ScriptHelper.RegisterDialogScript(this); plcContent.Visible = true; // Initialize buttons btnDeleteAll.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("Tasks.ConfirmDeleteAll")) + ");"; btnDeleteSelected.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("general.confirmdelete")) + ");"; btnSyncSelected.OnClientClick = "return !" + gridTasks.GetCheckSelectionScript(); // Initialize grid gridTasks.ZeroRowsText = GetString("Tasks.NoTasks"); gridTasks.OnDataReload += gridTasks_OnDataReload; gridTasks.ShowActionsMenu = true; gridTasks.Columns = "TaskID, TaskSiteID, TaskDocumentID, TaskNodeAliasPath, TaskTitle, TaskTime, TaskType, TaskObjectType, TaskObjectID, TaskRunning, (SELECT COUNT(*) FROM Staging_Synchronization WHERE SynchronizationTaskID = TaskID AND SynchronizationErrorMessage IS NOT NULL AND (SynchronizationServerID = @ServerID OR (@ServerID = 0 AND (@TaskSiteID = 0 OR SynchronizationServerID IN (SELECT ServerID FROM Staging_Server WHERE ServerSiteID = @TaskSiteID AND ServerEnabled=1))))) AS FailedCount"; StagingTaskInfo ti = new StagingTaskInfo(); gridTasks.AllColumns = SqlHelper.MergeColumns(ti.ColumnNames); pnlLog.Visible = false; TaskTypeCategories = TaskHelper.TASK_TYPE_CATEGORY_GENERAL + ";" + TaskHelper.TASK_TYPE_CATEGORY_OBJECTS + ";" + TaskHelper.TASK_TYPE_CATEGORY_DATA; } } }
protected void Page_Load(object sender, EventArgs e) { // Register script for pendingCallbacks repair ScriptHelper.FixPendingCallbacks(Page); // Initialize current user for the async actions currentUser = MembershipContext.AuthenticatedUser; HeaderActions.ActionPerformed += HeaderActions_ActionPerformed; if (!RequestHelper.IsCallback()) { // Check 'Manage object tasks' permission if (!currentUser.IsAuthorizedPerResource("cms.staging", "ManageObjectsTasks")) { RedirectToAccessDenied("cms.staging", "ManageObjectsTasks"); } siteId = QueryHelper.GetInteger("siteid", 0); currentSiteId = SiteContext.CurrentSiteID; currentSiteName = SiteContext.CurrentSiteName; serverId = QueryHelper.GetInteger("serverid", 0); ucDisabledModule.SettingsKeys = "CMSStagingLogObjectChanges"; ucDisabledModule.InfoTexts.Add(GetString("StagingChanges.NotLogged") + "<br/>"); ucDisabledModule.ParentPanel = pnlNotLogged; if (siteId == -1) { ucDisabledModule.InfoTexts.Add(GetString("objectstaging.globalandsitenotlogged")); ucDisabledModule.SiteObjects = "CMSStagingLogObjectChanges"; ucDisabledModule.GlobalObjects = "CMSStagingLogObjectChanges"; } else if (siteId == 0) { ucDisabledModule.InfoTexts.Add(GetString("objectstaging.globalnotlogged")); ucDisabledModule.GlobalObjects = "CMSStagingLogObjectChanges"; } else { ucDisabledModule.InfoTexts.Add(GetString("ObjectStaging.SiteNotLogged")); ucDisabledModule.SiteObjects = "CMSStagingLogObjectChanges"; } // Check logging if (!ucDisabledModule.Check()) { plcContent.Visible = false; return; } // Get object type objectType = QueryHelper.GetString("objecttype", string.Empty); // Create "synchronize current" header action only for objects with database representation if (ModuleManager.GetReadOnlyObject(objectType) != null) { HeaderActions.AddAction(new HeaderAction { Text = GetString("ObjectTasks.SyncCurrent"), EventName = SYNCHRONIZE_CURRENT }); } // Setup title titleElem.TitleText = GetString("Synchronization.Title"); // Get the selected types ObjectTypeTreeNode selectedNode = StagingTaskInfoProvider.ObjectTree.FindNode(objectType, (siteId > 0)); objectType = (selectedNode != null) ? selectedNode.GetObjectTypes(true) : string.Empty; if (!ControlsHelper.CausedPostBack(HeaderActions, btnSyncSelected, btnSyncAll)) { // Register the dialog script ScriptHelper.RegisterDialogScript(this); plcContent.Visible = true; // Initialize buttons btnCancel.Attributes.Add("onclick", ctlAsync.GetCancelScript(true) + "return false;"); btnCancel.Text = GetString("General.Cancel"); btnDeleteAll.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("Tasks.ConfirmDeleteAll")) + ");"; btnDeleteSelected.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("general.confirmdelete")) + ");"; btnSyncSelected.OnClientClick = "return !" + gridTasks.GetCheckSelectionScript(); // Initialize grid gridTasks.ZeroRowsText = GetString("Tasks.NoTasks"); gridTasks.OnAction += gridTasks_OnAction; gridTasks.OnDataReload += gridTasks_OnDataReload; gridTasks.OnExternalDataBound += gridTasks_OnExternalDataBound; gridTasks.ShowActionsMenu = true; gridTasks.Columns = "TaskID, TaskSiteID, TaskDocumentID, TaskNodeAliasPath, TaskTitle, TaskTime, TaskType, TaskObjectType, TaskObjectID, TaskRunning, (SELECT COUNT(*) FROM Staging_Synchronization WHERE SynchronizationTaskID = TaskID AND SynchronizationErrorMessage IS NOT NULL AND (SynchronizationServerID = @ServerID OR (@ServerID = 0 AND (@TaskSiteID = 0 OR SynchronizationServerID IN (SELECT ServerID FROM Staging_Server WHERE ServerSiteID = @TaskSiteID AND ServerEnabled=1))))) AS FailedCount"; StagingTaskInfo ti = new StagingTaskInfo(); gridTasks.AllColumns = SqlHelper.MergeColumns(ti.ColumnNames); pnlLog.Visible = false; } } ctlAsync.OnFinished += ctlAsync_OnFinished; ctlAsync.OnError += ctlAsync_OnError; ctlAsync.OnRequestLog += ctlAsync_OnRequestLog; ctlAsync.OnCancel += ctlAsync_OnCancel; }
public TreeNode CreateNode(ObjectTypeTreeNode source) { // Create new node TreeNode newNode = new TreeNode(); newNode.Expanded = source.Expand; // Get the image string objectType = source.ObjectType ?? source.Group; if (!UsePostback) { newNode.NavigateUrl = "#"; } string template = NodeTextTemplate; // Site int siteId = 0; if (source.Site) { siteId = SiteID; } // Title string name = GetString("ObjectTasks." + objectType.Replace(".", "_").Replace("#", "_")); // Image string imageUrl = GetObjectIconUrl(objectType, "list.png"); string imageTag = "<img src=\"" + imageUrl + "\" alt=\"\" style=\"border:0px;vertical-align:middle;\" onclick=\"return false;\"/>"; if ((objectType == String.Empty) || (objectType == CMSObjectHelper.GROUP_OBJECTS)) { imageUrl = GetImageUrl("General/DefaultRoot.png"); imageTag = "<img src=\"" + imageUrl + "\" alt=\"\" style=\"border:none;height:10px;width:1px;\" onclick=\"return false;\"/>"; template = imageTag + SelectedNodeTextTemplate; siteId = -1; name = GetString("ObjectTasks.Root"); } if (source.Main) { name = "<strong>" + name + "</strong>"; } newNode.Text = template.Replace("##ICON##", imageTag).Replace("##NODENAME##", name).Replace("##SITEID##", siteId.ToString()).Replace("##OBJECTTYPE##", HttpUtility.UrlEncode(objectType)); if (ValueTextTemplate != null) { newNode.Value = ValueTextTemplate.Replace("##SITEID##", siteId.ToString()).Replace("##OBJECTTYPE##", objectType); } // Add image to the node if (UseImages && (imageUrl != "")) { newNode.ImageUrl = imageUrl; } // Disable if not active node if (UsePostback && !source.Active) { newNode.SelectAction = TreeNodeSelectAction.None; } if (source.Group != null && !source.Active) { newNode.SelectAction = TreeNodeSelectAction.Expand; } // Add child nodes if (source.ChildNodes.Count > 0) { foreach (ObjectTypeTreeNode child in source.ChildNodes) { if ((SiteID > 0) || !child.Site) { if ((OnBeforeCreateNode == null) || OnBeforeCreateNode(child)) { // Create child node TreeNode childNode = CreateNode(child); if ((child.ObjectType != null) || (childNode.ChildNodes.Count > 0)) { newNode.ChildNodes.Add(childNode); // Preselect node if ((child.ObjectType == PreselectObjectType) && (child.Site == IsPreselectedObjectTypeSiteObject)) { childNode.Selected = true; } } } } } } return(newNode); }
protected void Page_Load(object sender, EventArgs e) { // Register script for pendingCallbacks repair ScriptHelper.FixPendingCallbacks(Page); // Initialize current user for the async actions currentUser = CMSContext.CurrentUser; if (!RequestHelper.IsCallback()) { // Check 'Manage object tasks' permission if (!currentUser.IsAuthorizedPerResource("cms.staging", "ManageObjectsTasks")) { RedirectToAccessDenied("cms.staging", "ManageObjectsTasks"); } siteId = QueryHelper.GetInteger("siteid", 0); currentSiteId = CMSContext.CurrentSiteID; currentSiteName = CMSContext.CurrentSiteName; // Check logging if (siteId > 0) { if (!ValidationHelper.GetBoolean(SettingsKeyProvider.GetBoolValue(currentSiteName + ".CMSStagingLogObjectChanges"), false)) { plcTasks.Visible = false; pnlNotLogged.Visible = true; lblNotLogged.Text = GetString("ObjectStaging.SiteNotLogged"); return; } } else if (siteId == 0) { if (!ValidationHelper.GetBoolean(SettingsKeyProvider.GetBoolValue("CMSStagingLogObjectChanges"), false)) { plcTasks.Visible = false; pnlNotLogged.Visible = true; lblNotLogged.Text = GetString("ObjectStaging.GlobalNotLogged"); return; } } serverId = QueryHelper.GetInteger("serverid", 0); // Get object type objectType = QueryHelper.GetString("objecttype", string.Empty); if ((objectType == string.Empty) || (objectType == PredefinedObjectType.MEDIAFOLDER)) { pnlMenu.Visible = false; } // Setup title titleElem.TitleText = GetString("Synchronization.Title"); titleElem.TitleImage = GetImageUrl("/CMSModules/CMS_Staging/synchronization.png"); // Get the selected types ObjectTypeTreeNode selectedNode = TaskInfoProvider.ObjectTree.FindNode(objectType, (siteId > 0)); objectType = (selectedNode != null) ? selectedNode.GetObjectTypes(true) : string.Empty; if (!RequestHelper.CausedPostback(btnCurrent, btnSyncSelected, btnSyncAll)) { // Register the dialog script ScriptHelper.RegisterDialogScript(this); // Initialize images viewImage = GetImageUrl("Design/Controls/UniGrid/Actions/View.png"); deleteImage = GetImageUrl("Design/Controls/UniGrid/Actions/Delete.png"); syncImage = GetImageUrl("Design/Controls/UniGrid/Actions/Synchronize.png"); imgCurrent.ImageUrl = GetImageUrl("CMSModules/CMS_Staging/syncsubtree.png"); // Initialize tooltips syncTooltip = GetString("general.synchronize"); deleteTooltip = GetString("general.delete"); viewTooltip = GetString("general.view"); syncCurrent = GetString("ObjectTasks.SyncCurrent"); plcContent.Visible = true; // Initialize buttons btnCancel.Attributes.Add("onclick", ctlAsync.GetCancelScript(true) + "return false;"); btnCancel.Text = GetString("General.Cancel"); btnDeleteAll.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("Tasks.ConfirmDeleteAll")) + ");"; btnDeleteSelected.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("general.confirmdelete")) + ");"; btnSyncSelected.OnClientClick = "return !" + gridTasks.GetCheckSelectionScript(); // Initialize grid gridTasks.ZeroRowsText = GetString("Tasks.NoTasks"); gridTasks.OnAction += gridTasks_OnAction; gridTasks.OnDataReload += gridTasks_OnDataReload; gridTasks.OnExternalDataBound += gridTasks_OnExternalDataBound; gridTasks.ShowActionsMenu = true; gridTasks.Columns = "TaskID, TaskSiteID, TaskDocumentID, TaskNodeAliasPath, TaskTitle, TaskTime, TaskType, TaskObjectType, TaskObjectID, TaskRunning, (SELECT COUNT(*) FROM Staging_Synchronization WHERE SynchronizationTaskID = TaskID AND SynchronizationErrorMessage IS NOT NULL AND (SynchronizationServerID = @ServerID OR (@ServerID = 0 AND (@TaskSiteID = 0 OR SynchronizationServerID IN (SELECT ServerID FROM Staging_Server WHERE ServerSiteID = @TaskSiteID AND ServerEnabled=1))))) AS FailedCount"; TaskInfo ti = new TaskInfo(); gridTasks.AllColumns = SqlHelperClass.MergeColumns(ti.ColumnNames.ToArray()); pnlLog.Visible = false; } } ctlAsync.OnFinished += ctlAsync_OnFinished; ctlAsync.OnError += ctlAsync_OnError; ctlAsync.OnRequestLog += ctlAsync_OnRequestLog; ctlAsync.OnCancel += ctlAsync_OnCancel; }
internal void Setup(String invokeActionName, String invokeActionName2, EventHandler invokeDelegate, EventHandler invokeDelegate2, TreeNode node, Object obj, MemberInfo memberInfo, ParameterInfo[] parameters) { // We are already all set if (_node == node) { return; } Clear(); _node = node; // Add the parameters of the method or property indexers if (parameters != null) { for (int i = 0; i < parameters.Length; i++) { ParameterInfo param = parameters[i]; Object propIndexValue = null; // See if the current object value of the node is // set to something, and if so, put the index // value in the index parameter if (memberInfo is PropertyInfo) { ObjectTypeTreeNode otNode = (ObjectTypeTreeNode)node; if (otNode.CurrentPropIndexValues != null) { propIndexValue = otNode.CurrentPropIndexValues[i]; } } ParamControlInfo pci = AddParam(propIndexValue, param.ParameterType, param.Name, param, !FIELD_PROP_VALUE); if (memberInfo is PropertyInfo) { pci._propertyIndexer = true; } } } // String class is a special case for a type node; if (node is TypeTreeNode) { Type type = ((TypeTreeNode)node).Type; if (type.Equals(typeof(String))) { AddParam(null, typeof(String), "value", null, FIELD_PROP_VALUE); } } // Handle the field/property value "parameters" if (memberInfo != null) { if (!SetupFieldPropValues(node, obj, memberInfo, parameters)) { return; } } ArrayList paramList = new ArrayList(); foreach (ParamControlInfo param in _paramInfos) { paramList.Add(param); } // Supress set button on indexed properties, which // is always the 2nd button if (memberInfo is PropertyInfo) { PropertyInfo propInfo = (PropertyInfo)memberInfo; if (ParamControlInfo.IsUnhandledStruct(propInfo.PropertyType)) { invokeActionName2 = null; } } // Calc tab offset to make up for the buttons below int tabOffset = 0; if (invokeActionName != null) { tabOffset++; } if (invokeActionName2 != null) { tabOffset++; } Utils.AddHasControls(this, paramList, tabOffset); if (invokeActionName != null || invokeActionName2 != null) { Panel bp = new Panel(); bp.Dock = DockStyle.Top; bp.Height = Utils.BUTTON_HEIGHT; bp.Width = Width; Button b; if (invokeActionName != null) { b = Utils.MakeButton(invokeActionName); b.Dock = DockStyle.Right; b.Click += invokeDelegate; bp.Controls.Add(b); bp.TabIndex = --tabOffset; } if (invokeActionName2 != null) { b = Utils.MakeButton(invokeActionName2); b.Dock = DockStyle.Right; b.Click += invokeDelegate2; bp.Controls.Add(b); bp.TabIndex = --tabOffset; } Controls.Add(bp); } }
// Returns true if processing should continue, false otherwise internal bool SetupFieldPropValues(TreeNode node, Object obj, MemberInfo memberInfo, ParameterInfo[] parameters) { if (memberInfo is PropertyInfo) { if (((PropertyInfo)memberInfo).CanWrite) { PropertyInfo pi = (PropertyInfo)memberInfo; // If not indexed, a struct property is treated like // a struct field; nothing is done in the param panel. // If indexed, we need to show the index if (ParamControlInfo.IsUnhandledStruct(pi.PropertyType)) { if (parameters.Length > 0) { return(true); } return(false); } if (obj == null) { AddParam(null, pi.PropertyType, "value", null, FIELD_PROP_VALUE); } else { ObjectTypeTreeNode otNode = (ObjectTypeTreeNode)node; Object value = null; try { value = pi.GetValue(obj, otNode.CurrentPropIndexValues); } catch (Exception ex) { TraceUtil.WriteLineInfo (this, "Exception in getting property " + "value for " + pi + ": " + ex); // Use the value from ObjectInfo, this is // necessary for the property that can only // be set, we want to show the last value we // set it to, if possible value = otNode.ObjectInfo.Obj; } AddParam(value, pi.PropertyType, "value", null, FIELD_PROP_VALUE); } } else { // Not indexed, nothing to invoke, if index, if (parameters == null || parameters.Length == 0) { AddMessage("Property is read only"); return(false); } } } else if (memberInfo is FieldInfo) { if (!((FieldInfo)memberInfo).IsLiteral) { FieldInfo fi = (FieldInfo)memberInfo; // Structs are handled by expanding their members if (ParamControlInfo.IsUnhandledStruct(fi.FieldType)) { return(false); } if (obj == null) { AddParam(null, fi.FieldType, "value", null, FIELD_PROP_VALUE); } else { Object value = null; try { value = fi.GetValue(obj); } catch (Exception ex) { TraceUtil.WriteLineInfo (this, "Exception in getting field " + "value for " + fi + ": " + ex); // Just ignore it } AddParam(value, fi.FieldType, "value", null, FIELD_PROP_VALUE); } } else { AddMessage("Constant; cannot be changed"); return(false); } } else if (memberInfo is EventInfo) { return(false); } return(true); }
/// <summary> /// Create tree node from supplied data /// </summary> /// <param name="source">Tree node data</param> /// <returns>TreeNode</returns> public TreeNode CreateNode(ObjectTypeTreeNode source) { // Create new node TreeNode newNode = new TreeNode(); // Get the image string type = source.ObjectType ?? source.Group; if (!UsePostback) { newNode.NavigateUrl = "#"; } string template = NodeTextTemplate; // Site int siteId = 0; if (source.Site) { siteId = SiteID; } // Title var name = GetNodeName(type); if ((type == String.Empty) || (type == ObjectHelper.GROUP_OBJECTS)) { template = SelectedNodeTextTemplate; siteId = -1; name = GetString("ObjectTasks.Root"); } if (source.Main) { name = "<strong>" + name + "</strong>"; } newNode.Text = template.Replace("##NODENAME##", name).Replace("##SITEID##", siteId.ToString()).Replace("##OBJECTTYPE##", HttpUtility.UrlEncode(type)); if (ValueTextTemplate != null) { newNode.Value = ValueTextTemplate.Replace("##SITEID##", siteId.ToString()).Replace("##OBJECTTYPE##", type); } // Disable if not active node if (UsePostback && !source.Active) { newNode.SelectAction = TreeNodeSelectAction.None; } if (source.Group != null && !source.Active) { newNode.SelectAction = TreeNodeSelectAction.Expand; } // Add child nodes if (source.ChildNodes.Count > 0) { IEnumerable<ObjectTypeTreeNode> children = source.ChildNodes; if (source.SortChildren) { children = children.OrderBy(n => GetNodeName(n.ObjectType ?? n.Group)); } foreach (var child in children) { if ((SiteID > 0) || !child.Site) { if ((OnBeforeCreateNode == null) || OnBeforeCreateNode(child)) { // Create child node TreeNode childNode = CreateNode(child); if ((child.ObjectType != null) || (childNode.ChildNodes.Count > 0)) { newNode.ChildNodes.Add(childNode); // Preselect node if ((child.ObjectType == PreselectObjectType) && (child.Site == IsPreselectedObjectTypeSiteObject)) { childNode.Selected = true; } } } } } } newNode.Expanded = source.Expand; return newNode; }