/// <summary> /// Serializes all portal Tabs /// </summary> /// <param name="xmlTemplate">Reference to XmlDocument context</param> /// <param name="nodeTabs">Node to add the serialized objects</param> /// <param name="objportal">Portal to serialize</param> /// <param name="hRoles">A hastable with all serialized roles</param> /// <remarks> /// Only portal tabs will be exported to the template, Admin tabs are not exported. /// On each tab, all modules will also be exported. /// </remarks> /// <history> /// [VMasanas] 23/09/2004 Created /// </history> public void SerializeTabs( XmlDocument xmlTemplate, XmlNode nodeTabs, PortalInfo objportal, Hashtable hRoles ) { TabController objtabs = new TabController(); //supporting object to build the tab hierarchy Hashtable hTabs = new Hashtable(); XmlSerializer xserTabs = new XmlSerializer( typeof( TabInfo ) ); foreach( TabInfo objtab in objtabs.GetTabs( objportal.PortalID ) ) { //if not an admin tab & not deleted if( objtab.TabOrder < 10000 && ! objtab.IsDeleted ) { StringWriter sw = new StringWriter(); xserTabs.Serialize( sw, objtab ); XmlDocument xmlTab = new XmlDocument(); xmlTab.LoadXml( sw.GetStringBuilder().ToString() ); XmlNode nodeTab = xmlTab.SelectSingleNode( "tab" ); nodeTab.Attributes.Remove( nodeTab.Attributes["xmlns:xsd"] ); nodeTab.Attributes.Remove( nodeTab.Attributes["xmlns:xsi"] ); XmlNode newnode; if( objtab.TabID == objportal.SplashTabId ) { newnode = xmlTab.CreateElement( "tabtype" ); newnode.InnerXml = "splashtab"; nodeTab.AppendChild( newnode ); } else if( objtab.TabID == objportal.HomeTabId ) { newnode = xmlTab.CreateElement( "tabtype" ); newnode.InnerXml = "hometab"; nodeTab.AppendChild( newnode ); } else if( objtab.TabID == objportal.UserTabId ) { newnode = xmlTab.CreateElement( "tabtype" ); newnode.InnerXml = "usertab"; nodeTab.AppendChild( newnode ); } else if( objtab.TabID == objportal.LoginTabId ) { newnode = xmlTab.CreateElement( "tabtype" ); newnode.InnerXml = "logintab"; nodeTab.AppendChild( newnode ); } if( ! Null.IsNull( objtab.ParentId ) ) { newnode = xmlTab.CreateElement( "parent" ); newnode.InnerXml = Server.HtmlEncode( hTabs[objtab.ParentId].ToString() ); nodeTab.AppendChild( newnode ); // save tab as: ParentTabName/CurrentTabName hTabs.Add( objtab.TabID, hTabs[objtab.ParentId] + "/" + objtab.TabName ); } else { // save tab as: CurrentTabName hTabs.Add( objtab.TabID, objtab.TabName ); } // Serialize modules XmlNode nodePanes; nodePanes = nodeTab.AppendChild( xmlTab.CreateElement( "panes" ) ); ModuleController objmodules = new ModuleController(); DesktopModuleController objDesktopModules = new DesktopModuleController(); ModuleDefinitionController objModuleDefController = new ModuleDefinitionController(); XmlSerializer xserModules = new XmlSerializer( typeof( ModuleInfo ) ); Dictionary<int, ModuleInfo> dict = objmodules.GetTabModules(objtab.TabID); foreach( KeyValuePair<int, ModuleInfo> pair in dict ) { ModuleInfo objmodule = pair.Value; if (!objmodule.IsDeleted) { sw = new StringWriter(); xserModules.Serialize(sw, objmodule); XmlDocument xmlModule = new XmlDocument(); xmlModule.LoadXml(sw.GetStringBuilder().ToString()); XmlNode nodeModule = xmlModule.SelectSingleNode("module"); nodeModule.Attributes.Remove(nodeModule.Attributes["xmlns:xsd"]); nodeModule.Attributes.Remove(nodeModule.Attributes["xmlns:xsi"]); if (nodePanes.SelectSingleNode("descendant::pane[name='" + objmodule.PaneName + "']") == null) { // new pane found XmlNode nodePane = xmlModule.CreateElement("pane"); XmlNode nodeName = nodePane.AppendChild(xmlModule.CreateElement("name")); nodeName.InnerText = objmodule.PaneName; nodePane.AppendChild(xmlModule.CreateElement("modules")); nodePanes.AppendChild(xmlTab.ImportNode(nodePane, true)); } XmlNode nodeModules = nodePanes.SelectSingleNode("descendant::pane[name='" + objmodule.PaneName + "']/modules"); newnode = xmlModule.CreateElement("definition"); ModuleDefinitionInfo objModuleDef = objModuleDefController.GetModuleDefinition(objmodule.ModuleDefID); newnode.InnerText = objDesktopModules.GetDesktopModule(objModuleDef.DesktopModuleID).ModuleName; nodeModule.AppendChild(newnode); //Add Module Definition Info XmlNode nodeDefinition = xmlModule.CreateElement("moduledefinition"); nodeDefinition.InnerText = objModuleDef.FriendlyName; nodeModule.AppendChild(nodeDefinition); if (chkContent.Checked) { AddContent(nodeModule, objmodule); } nodeModules.AppendChild(xmlTab.ImportNode(nodeModule, true)); } } nodeTabs.AppendChild( xmlTemplate.ImportNode( nodeTab, true ) ); } } }
/// <summary> /// BindData loads the settings from the Database /// </summary> /// <history> /// [cnurse] 10/18/2004 documented /// </history> private void BindData() { // declare roles ArrayList arrAvailableAuthViewRoles = new ArrayList(); ArrayList arrAvailableAuthEditRoles = new ArrayList(); // add an entry of All Users for the View roles arrAvailableAuthViewRoles.Add( new ListItem( "All Users", Globals.glbRoleAllUsers ) ); // add an entry of Unauthenticated Users for the View roles arrAvailableAuthViewRoles.Add( new ListItem( "Unauthenticated Users", Globals.glbRoleUnauthUser ) ); // add an entry of All Users for the Edit roles arrAvailableAuthEditRoles.Add( new ListItem( "All Users", Globals.glbRoleAllUsers ) ); // process portal roles RoleController objRoles = new RoleController(); RoleInfo objRole; ArrayList arrRoleInfo = objRoles.GetPortalRoles( PortalId ); foreach( RoleInfo tempLoopVar_objRole in arrRoleInfo ) { objRole = tempLoopVar_objRole; arrAvailableAuthViewRoles.Add( new ListItem( objRole.RoleName, objRole.RoleID.ToString() ) ); } foreach( RoleInfo tempLoopVar_objRole in arrRoleInfo ) { objRole = tempLoopVar_objRole; arrAvailableAuthEditRoles.Add( new ListItem( objRole.RoleName, objRole.RoleID.ToString() ) ); } // get module ModuleController objModules = new ModuleController(); ModuleInfo objModule = objModules.GetModule( moduleId, TabId, false ); if( objModule != null ) { // configure grid DesktopModuleController objDeskMod = new DesktopModuleController(); DesktopModuleInfo desktopModule = objDeskMod.GetDesktopModule( objModule.DesktopModuleID ); dgPermissions.ResourceFile = Globals.ApplicationPath + "/DesktopModules/" + desktopModule.FolderName + "/" + Localization.LocalResourceDirectory + "/" + Localization.LocalSharedResourceFile; chkInheritPermissions.Checked = objModule.InheritViewPermissions; dgPermissions.InheritViewPermissionsFromTab = objModule.InheritViewPermissions; txtTitle.Text = objModule.ModuleTitle; ctlIcon.Url = objModule.IconFile; if( cboTab.Items.FindByValue( objModule.TabID.ToString() ) != null ) { cboTab.Items.FindByValue( objModule.TabID.ToString() ).Selected = true; } chkAllTabs.Checked = objModule.AllTabs; cboVisibility.SelectedIndex = (int)objModule.Visibility; ModuleDefinitionController objModuleDefController = new ModuleDefinitionController(); ModuleDefinitionInfo objModuleDef = objModuleDefController.GetModuleDefinition( objModule.ModuleDefID ); if( objModuleDef.DefaultCacheTime == Null.NullInteger ) { rowCache.Visible = false; } else { txtCacheTime.Text = objModule.CacheTime.ToString(); } txtCacheTime.Text = objModule.CacheTime.ToString(); // populate view roles ArrayList arrAssignedAuthViewRoles = new ArrayList(); Array arrAuthViewRoles = objModule.AuthorizedViewRoles.Split(new char[] { ';' }); foreach( string strRole in arrAuthViewRoles ) { if( !String.IsNullOrEmpty( strRole ) ) { foreach( ListItem objListItem in arrAvailableAuthViewRoles ) { if( objListItem.Value == strRole ) { arrAssignedAuthViewRoles.Add( objListItem ); arrAvailableAuthViewRoles.Remove( objListItem ); break; } } } } // populate edit roles ArrayList arrAssignedAuthEditRoles = new ArrayList(); Array arrAuthEditRoles = objModule.AuthorizedEditRoles.Split(new char[] { ';' }); foreach( string strRole in arrAuthEditRoles ) { if( !String.IsNullOrEmpty( strRole ) ) { foreach( ListItem objListItem in arrAvailableAuthEditRoles ) { if( objListItem.Value == strRole ) { arrAssignedAuthEditRoles.Add( objListItem ); arrAvailableAuthEditRoles.Remove( objListItem ); break; } } } } if( objModule.Alignment == "" ) { objModule.Alignment = "left"; } cboAlign.Items.FindByValue( objModule.Alignment ).Selected = true; cboTab.Items.FindByValue( Convert.ToString( TabId ) ).Selected = true; txtColor.Text = objModule.Color; txtBorder.Text = objModule.Border; txtHeader.Text = objModule.Header; txtFooter.Text = objModule.Footer; if( ! Null.IsNull( objModule.StartDate ) ) { txtStartDate.Text = objModule.StartDate.ToShortDateString(); } if( ! Null.IsNull( objModule.EndDate ) ) { txtEndDate.Text = objModule.EndDate.ToShortDateString(); } ctlModuleContainer.Width = "250px"; ctlModuleContainer.SkinRoot = SkinInfo.RootContainer; ctlModuleContainer.SkinSrc = objModule.ContainerSrc; chkDisplayTitle.Checked = objModule.DisplayTitle; chkDisplayPrint.Checked = objModule.DisplayPrint; chkDisplaySyndicate.Checked = objModule.DisplaySyndicate; } }
/// <summary> /// RemoveCoreModule removes a Core Module from the system /// </summary> /// <remarks> /// </remarks> /// <param name="DesktopModuleName">The Friendly Name of the Module to Remove</param> /// <param name="ParentTabName">The Name of the parent Tab/Page for this module</param> /// <param name="TabName">The Name to tab that contains the Module</param> /// <param name="TabRemove">A flag to determine whether to remove the Tab if it has no /// other modules</param> private static void RemoveCoreModule(string DesktopModuleName, string ParentTabName, string TabName, bool TabRemove) { TabController objTabs = new TabController(); ModuleController objModules = new ModuleController(); int intIndex; int intModuleDefId = 0; int intDesktopModuleId; //Find and remove the Module from the Tab switch (ParentTabName) { case "Host": //TODO - when we have a need to remove a Host Module break; case "Admin": PortalController objPortals = new PortalController(); ArrayList arrPortals = objPortals.GetPortals(); //Iterate through the Portals to remove the Module from the Tab for (int intPortal = 0; intPortal < arrPortals.Count; intPortal++) { PortalInfo objPortal = (PortalInfo)(arrPortals[intPortal]); int ParentId = objPortal.AdminTabId; TabInfo objTab = objTabs.GetTabByName(TabName, objPortal.PortalID, ParentId); int intCount = 0; //Get the Modules on the Tab foreach (KeyValuePair<int, ModuleInfo> kvp in objModules.GetTabModules(objTab.TabID)) { ModuleInfo objModule = kvp.Value; if (objModule.FriendlyName == DesktopModuleName) { //Delete the Module from the Modules list objModules.DeleteModule(objModule.ModuleID); intModuleDefId = objModule.ModuleDefID; } else { intCount += 1; } } //If Tab has no modules optionally remove tab if (intCount == 0 & TabRemove) { objTabs.DeleteTab(objTab.TabID, objTab.PortalID); } } break; } //Delete all the Module Controls for this Definition ModuleControlController objModuleControls = new ModuleControlController(); ArrayList arrModuleControls = objModuleControls.GetModuleControls(intModuleDefId); for (intIndex = 0; intIndex <= arrModuleControls.Count - 1; intIndex++) { ModuleControlInfo objModuleControl = (ModuleControlInfo)arrModuleControls[intIndex]; objModuleControls.DeleteModuleControl(objModuleControl.ModuleControlID); } //Get the Module Definition ModuleDefinitionController objModuleDefinitions = new ModuleDefinitionController(); ModuleDefinitionInfo objModuleDefinition; objModuleDefinition = objModuleDefinitions.GetModuleDefinition(intModuleDefId); intDesktopModuleId = objModuleDefinition.DesktopModuleID; //Delete the Module Definition objModuleDefinitions.DeleteModuleDefinition(intModuleDefId); //Delete the Desktop Module Control DesktopModuleController objDesktopModules = new DesktopModuleController(); objDesktopModules.DeleteDesktopModule(intDesktopModuleId); }
/// <summary> /// Page_Load runs when the control is loaded. /// </summary> /// <returns></returns> /// <remarks> /// </remarks> /// <history> /// [cnurse] 9/28/2004 Updated to reflect design changes for Help, 508 support /// and localisation /// </history> protected void Page_Load( Object sender, EventArgs e ) { try { if( ( Request.QueryString["desktopmoduleid"] != null ) ) { DesktopModuleId = int.Parse( Request.QueryString["desktopmoduleid"] ); if( DesktopModuleId == - 2 ) { DesktopModuleId = Null.NullInteger; } } else { DesktopModuleId = Null.NullInteger; } if( ( Request.QueryString["moduledefid"] != null ) ) { ModuleDefId = int.Parse( Request.QueryString["moduledefid"] ); } else { ModuleDefId = Null.NullInteger; } if( ( Request.QueryString["modulecontrolid"] != null ) ) { ModuleControlId = int.Parse( Request.QueryString["modulecontrolid"] ); } else { ModuleControlId = Null.NullInteger; } if( Page.IsPostBack == false ) { DesktopModuleController objDesktopModules = new DesktopModuleController(); DesktopModuleInfo objDesktopModule; objDesktopModule = objDesktopModules.GetDesktopModule( DesktopModuleId ); if( objDesktopModule != null ) { txtModule.Text = objDesktopModule.FriendlyName; } else { txtModule.Text = Localization.GetString( "SkinObjects" ); txtTitle.Enabled = false; cboType.Enabled = false; txtViewOrder.Enabled = false; cboIcon.Enabled = false; } ModuleDefinitionController objModuleDefinitions = new ModuleDefinitionController(); ModuleDefinitionInfo objModuleDefinition; objModuleDefinition = objModuleDefinitions.GetModuleDefinition( ModuleDefId ); if( objModuleDefinition != null ) { txtDefinition.Text = objModuleDefinition.FriendlyName; } ClientAPI.AddButtonConfirm( cmdDelete, Localization.GetString( "DeleteItem" ) ); ModuleControlController objModuleControls = new ModuleControlController(); ModuleControlInfo objModuleControl; objModuleControl = objModuleControls.GetModuleControl( ModuleControlId ); // Added to populate cboSource with desktop module or skin controls // Issue #586 BindControlList( "DesktopModules", true ); BindControlList( "Admin/Skins", false ); if( objDesktopModule == null ) // Add Container Controls { BindControlList( "Admin/Containers", false ); } if( ! Null.IsNull( ModuleControlId ) ) { if( objModuleControl != null ) { txtKey.Text = objModuleControl.ControlKey; txtTitle.Text = objModuleControl.ControlTitle; if( cboSource.Items.FindByValue( objModuleControl.ControlSrc.ToString().ToLower() ) != null ) { cboSource.Items.FindByValue( objModuleControl.ControlSrc.ToString().ToLower() ).Selected = true; LoadIcons(); } if( cboType.Items.FindByValue( Convert.ToInt32( objModuleControl.ControlType ).ToString() ) != null ) { cboType.Items.FindByValue( Convert.ToInt32( objModuleControl.ControlType ).ToString() ).Selected = true; } if( ! Null.IsNull( objModuleControl.ViewOrder ) ) { txtViewOrder.Text = objModuleControl.ViewOrder.ToString(); } if( cboIcon.Items.FindByValue( objModuleControl.IconFile.ToLower() ) != null ) { cboIcon.Items.FindByValue( objModuleControl.IconFile.ToLower() ).Selected = true; } if( ! Null.IsNull( objModuleControl.HelpURL ) ) { txtHelpURL.Text = objModuleControl.HelpURL; } } } } } catch( Exception exc ) //Module failed to load { Exceptions.ProcessModuleLoadException( this, exc ); } }
/// <summary> /// cmdUpdateCacheTime_Click runs when the Update Cache Time Button is clicked /// </summary> /// <history> /// [cnurse] 4/20/2005 Created /// </history> protected void cmdUpdateCacheTime_Click( object sender, EventArgs e ) { if( cboDefinitions.SelectedItem != null ) { int ModuleDefId = int.Parse( cboDefinitions.SelectedItem.Value ); ModuleDefinitionController objModuleDefinitions = new ModuleDefinitionController(); ModuleDefinitionInfo objModuleDefinition = objModuleDefinitions.GetModuleDefinition( ModuleDefId ); try { objModuleDefinition.DefaultCacheTime = int.Parse( txtCacheTime.Text ); objModuleDefinitions.UpdateModuleDefinition( objModuleDefinition ); } catch( Exception ) { UI.Skins.Skin.AddModuleMessage( this, Localization.GetString( "UpdateCache.ErrorMessage", this.LocalResourceFile ), ModuleMessageType.RedError ); } } else { UI.Skins.Skin.AddModuleMessage( this, Localization.GetString( "MissingDefinition.ErrorMessage", this.LocalResourceFile ), ModuleMessageType.RedError ); } }
/// <summary> /// LoadCacheProperties loads the Module Definitions Default Cache Time properties /// </summary> /// <history> /// [cnurse] 4/21/2005 created /// </history> private void LoadCacheProperties( int ModuleDefId ) { ModuleDefinitionController objModuleDefinitionController = new ModuleDefinitionController(); ModuleDefinitionInfo objModuleDefinition = objModuleDefinitionController.GetModuleDefinition( ModuleDefId ); txtCacheTime.Text = objModuleDefinition.DefaultCacheTime.ToString(); }