Example #1
0
        private static void UpdateSupportedFeatures(object objController, int desktopModuleId)
        {
            try
            {
                DesktopModuleInfo desktopModule = DesktopModuleController.GetDesktopModule(desktopModuleId, Null.NullInteger);
                if ((desktopModule != null))
                {
                    //Initialise the SupportedFeatures
                    desktopModule.SupportedFeatures = 0;

                    //Test the interfaces
                    desktopModule.IsPortable = (objController is IPortable);
#pragma warning disable 0618
                    desktopModule.IsSearchable = (objController is ModuleSearchBase);
#pragma warning restore 0618
                    desktopModule.IsUpgradeable = (objController is IUpgradeable);
                    DesktopModuleController.SaveDesktopModule(desktopModule, false, false, false);

                    foreach (PortalInfo portal in PortalController.Instance.GetPortals())
                    {
                        DataCache.RemoveCache(String.Format(DataCache.DesktopModuleCacheKey, portal.PortalID));
                        DataCache.RemoveCache(String.Format(DataCache.PortalDesktopModuleCacheKey, portal.PortalID));
                    }
                }
            }
            catch (Exception exc)
            {
                Exceptions.LogException(exc);
            }
        }
Example #2
0
        private void UpdateSupportedFeatures(object oObject, int desktopModuleId)
        {
            int SupportedFeatures = 0;

            if (oObject is IPortable)
            {
                SupportedFeatures = SupportedFeatures + (int)DesktopModuleSupportedFeature.IsPortable;
            }

            if (oObject is ISearchable)
            {
                SupportedFeatures = SupportedFeatures + (int)DesktopModuleSupportedFeature.IsSearchable;
            }

            if (oObject is IUpgradeable)
            {
                SupportedFeatures = SupportedFeatures + (int)DesktopModuleSupportedFeature.IsUpgradeable;
            }

            DesktopModuleController oDesktopModuleController = new DesktopModuleController();
            DesktopModuleInfo       oDesktopModule           = oDesktopModuleController.GetDesktopModule(desktopModuleId);

            oDesktopModule.SupportedFeatures = SupportedFeatures;
            oDesktopModuleController.UpdateDesktopModule(oDesktopModule);
        }
        /// <summary>
        /// Page_Load runs when the control is loaded.
        /// </summary>
        /// <history>
        /// 	[cnurse]	1/14/2005	created
        /// </history>
        protected void Page_Load( Object sender, EventArgs e )
        {
            if (!Page.IsPostBack)
            {
                if (Request.QueryString["desktopmoduleid"] != null)
                {
                    DesktopModuleController objDesktopModules = new DesktopModuleController();
                    DesktopModuleInfo objDesktopModule = objDesktopModules.GetDesktopModule(Int32.Parse(Request.QueryString["desktopmoduleid"]));
                    if (objDesktopModule != null)
                    {
                        txtFileName.Text = objDesktopModule.ModuleName + ".zip";

                        if (!objDesktopModule.IsAdmin)
                        {
                            //Create the DirectoryInfo object for the folder
                            DirectoryInfo folder = new DirectoryInfo(Globals.ApplicationMapPath + "\\DesktopModules\\" + objDesktopModule.FolderName);
                            if (folder.Exists)
                            {
                                //Determine Visibility of Source check box
                                rowSource.Visible = (folder.GetFiles("*.??proj").Length > 0);
                            }
                        }
                    }
                }
            }
        }
Example #4
0
        private static void UpgradeModule(EventMessage message)
        {
            try
            {
                int desktopModuleId = Convert.ToInt32(message.Attributes["DesktopModuleId"]);
                var desktopModule   = DesktopModuleController.GetDesktopModule(desktopModuleId, Null.NullInteger);

                string BusinessControllerClass = message.Attributes["BusinessControllerClass"];
                object controller = Reflection.CreateObject(BusinessControllerClass, string.Empty);
                if (controller is IUpgradeable)
                {
                    // get the list of applicable versions
                    string[] UpgradeVersions = message.Attributes["UpgradeVersionsList"].Split(',');
                    foreach (string Version in UpgradeVersions)
                    {
                        // call the IUpgradeable interface for the module/version
                        string Results = ((IUpgradeable)controller).UpgradeModule(Version);

                        // log the upgrade results
                        var log = new LogInfo {
                            LogTypeKey = EventLogController.EventLogType.MODULE_UPDATED.ToString()
                        };
                        log.AddProperty("Module Upgraded", BusinessControllerClass);
                        log.AddProperty("Version", Version);
                        if (!string.IsNullOrEmpty(Results))
                        {
                            log.AddProperty("Results", Results);
                        }

                        LogController.Instance.AddLog(log);
                    }
                }

                UpdateSupportedFeatures(controller, Convert.ToInt32(message.Attributes["DesktopModuleId"]));
            }
            catch (Exception exc)
            {
                Exceptions.LogException(exc);
            }
        }
        private void UpdateSupportedFeatures( object oObject, int desktopModuleId )
        {
            int SupportedFeatures = 0;

            if( oObject is IPortable )
            {
                SupportedFeatures = SupportedFeatures + (int)DesktopModuleSupportedFeature.IsPortable;
            }

            if( oObject is ISearchable )
            {
                SupportedFeatures = SupportedFeatures + (int)DesktopModuleSupportedFeature.IsSearchable;
            }

            if( oObject is IUpgradeable )
            {
                SupportedFeatures = SupportedFeatures + (int)DesktopModuleSupportedFeature.IsUpgradeable;
            }

            DesktopModuleController oDesktopModuleController = new DesktopModuleController();
            DesktopModuleInfo oDesktopModule = oDesktopModuleController.GetDesktopModule( desktopModuleId );
            oDesktopModule.SupportedFeatures = SupportedFeatures;
            oDesktopModuleController.UpdateDesktopModule( oDesktopModule );
        }
Example #6
0
        public string CreatePrivateAssembly(int DesktopModuleId)
        {
            string Result = "";

            //Get the Module Definition File for this Module
            DesktopModuleController objDesktopModuleController = new DesktopModuleController();
            DesktopModuleInfo       objModule = objDesktopModuleController.GetDesktopModule(DesktopModuleId);

            _Folder        = Globals.ApplicationMapPath + "\\DesktopModules\\" + objModule.FolderName;
            _AppCodeFolder = Globals.ApplicationMapPath + "\\App_Code\\" + objModule.FolderName;

            if (IncludeSource)
            {
                _ResourceFileName = objModule.ModuleName + "_Source.zip";
                CreateResourceFile();
            }

            //Create File List
            CreateFileList();

            if (CreateManifest)
            {
                ProgressLog.StartJob(string.Format(Localization.GetString("LOG.PAWriter.CreateManifest"), objModule.FriendlyName));
                CreateDnnManifest(objModule);
                ProgressLog.EndJob((string.Format(Localization.GetString("LOG.PAWriter.CreateManifest"), objModule.FriendlyName)));
            }

            //Always add Manifest file to file list
            AddFile(new PaFileInfo(objModule.ModuleName + ".dnn", "", Folder), true);

            ProgressLog.StartJob(string.Format(Localization.GetString("LOG.PAWriter.CreateZipFile"), objModule.FriendlyName));
            CreateZipFile();
            ProgressLog.EndJob((string.Format(Localization.GetString("LOG.PAWriter.CreateZipFile"), objModule.FriendlyName)));

            return(Result);
        }
        /// <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>
        /// </summary>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// </history>
        private bool CreateModuleDefinition()
        {
            try
            {
                if (PackageController.Instance.GetExtensionPackage(Null.NullInteger, p => p.Name == GetClassName()) == null)
                {
                    var controlName = Null.NullString;

                    //Create module folder
                    CreateModuleFolder();

                    //Create module control
                    controlName = CreateModuleControl();
                    if (controlName != "")
                    {
                        //Create package
                        var objPackage = new PackageInfo();
                        objPackage.Name = GetClassName();
                        objPackage.FriendlyName = txtModule.Text;
                        objPackage.Description = txtDescription.Text;
                        objPackage.Version = new Version(1, 0, 0);
                        objPackage.PackageType = "Module";
                        objPackage.License = "";
                        objPackage.Owner = txtOwner.Text;
                        objPackage.Organization = txtOwner.Text;
                        objPackage.FolderName = "DesktopModules/" + GetFolderName();
                        objPackage.License = "The license for this package is not currently included within the installation file, please check with the vendor for full license details.";
                        objPackage.ReleaseNotes = "This package has no Release Notes.";
                        PackageController.Instance.SaveExtensionPackage(objPackage);

                        //Create desktopmodule
                        var objDesktopModules = new DesktopModuleController();
                        var objDesktopModule = new DesktopModuleInfo();
                        objDesktopModule.DesktopModuleID = Null.NullInteger;
                        objDesktopModule.ModuleName = GetClassName();
                        objDesktopModule.FolderName = GetFolderName();
                        objDesktopModule.FriendlyName = txtModule.Text;
                        objDesktopModule.Description = txtDescription.Text;
                        objDesktopModule.IsPremium = false;
                        objDesktopModule.IsAdmin = false;
                        objDesktopModule.Version = "01.00.00";
                        objDesktopModule.BusinessControllerClass = "";
                        objDesktopModule.CompatibleVersions = "";
                        objDesktopModule.Dependencies = "";
                        objDesktopModule.Permissions = "";
                        objDesktopModule.PackageID = objPackage.PackageID;
                        objDesktopModule.DesktopModuleID = objDesktopModules.AddDesktopModule(objDesktopModule);
                        objDesktopModule = objDesktopModules.GetDesktopModule(objDesktopModule.DesktopModuleID);

                        //Add OwnerName to the DesktopModule taxonomy and associate it with this module
                        var vocabularyId = -1;
                        var termId = -1;
                        var objTermController = DotNetNuke.Entities.Content.Common.Util.GetTermController();
                        var objTerms = objTermController.GetTermsByVocabulary("Module_Categories");
                        foreach (Term term in objTerms)
                        {
                            vocabularyId = term.VocabularyId;
                            if (term.Name == txtOwner.Text)
                            {
                                termId = term.TermId;
                            }
                        }
                        if (termId == -1)
                        {
                            termId = objTermController.AddTerm(new Term(vocabularyId) { Name = txtOwner.Text });
                        }
                        var objTerm = objTermController.GetTerm(termId);
                        var objContentController = DotNetNuke.Entities.Content.Common.Util.GetContentController();
                        var objContent = objContentController.GetContentItem(objDesktopModule.ContentItemId);
                        objTermController.AddTermToContent(objTerm, objContent);

                        //Add desktopmodule to all portals
                        DesktopModuleController.AddDesktopModuleToPortals(objDesktopModule.DesktopModuleID);

                        //Create module definition
                        var objModuleDefinition = new ModuleDefinitionInfo();
                        objModuleDefinition.ModuleDefID = Null.NullInteger;
                        objModuleDefinition.DesktopModuleID = objDesktopModule.DesktopModuleID;
                        // need core enhancement to have a unique DefinitionName  
                        objModuleDefinition.FriendlyName = GetClassName();
                        //objModuleDefinition.FriendlyName = txtModule.Text;
                        //objModuleDefinition.DefinitionName = GetClassName();
                        objModuleDefinition.DefaultCacheTime = 0;
                        objModuleDefinition.ModuleDefID = ModuleDefinitionController.SaveModuleDefinition(objModuleDefinition, false, true);

                        //Create modulecontrol
                        var objModuleControl = new ModuleControlInfo();
                        objModuleControl.ModuleControlID = Null.NullInteger;
                        objModuleControl.ModuleDefID = objModuleDefinition.ModuleDefID;
                        objModuleControl.ControlKey = "";
                        objModuleControl.ControlSrc = "DesktopModules/" + GetFolderName() + "/" + controlName;
                        objModuleControl.ControlTitle = "";
                        objModuleControl.ControlType = SecurityAccessLevel.View;
                        objModuleControl.HelpURL = "";
                        objModuleControl.IconFile = "";
                        objModuleControl.ViewOrder = 0;
                        objModuleControl.SupportsPartialRendering = false;
                        objModuleControl.SupportsPopUps = false;
                        ModuleControlController.AddModuleControl(objModuleControl);

                        //Update current module to reference new moduledefinition
                        var objModules = new ModuleController();
                        var objModule = objModules.GetModule(ModuleId, TabId, false);
                        objModule.ModuleDefID = objModuleDefinition.ModuleDefID;
                        objModule.ModuleTitle = txtModule.Text;

                        //HACK - need core enhancement to be able to update ModuleDefID
                        DotNetNuke.Data.DataProvider.Instance().ExecuteSQL("Update dbo.Modules set ModuleDefID = " + objModule.ModuleDefID.ToString() + " where ModuleID = " + ModuleId.ToString());

                        objModules.UpdateModule(objModule);

                        return true;
                    }
                    else
                    {
                        DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("TemplateProblem.ErrorMessage", LocalResourceFile), ModuleMessage.ModuleMessageType.YellowWarning);
                        return false;
                    }
                }
                else
                {
                    DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("AlreadyExists.ErrorMessage", LocalResourceFile), ModuleMessage.ModuleMessageType.YellowWarning);
                    return false;
                }
            }
            catch (Exception exc)
            {
                Exceptions.LogException(exc);
                DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, exc.ToString(), ModuleMessage.ModuleMessageType.RedError);
                return false;
            }
        }
Example #9
0
        /// <summary>
        /// cmdHelpShow_Click runs when the Hide Help Button is clicked
        /// </summary>
        /// <history>
        /// 	[cnurse]	10/06/2004	Updated to reflect design changes for Help, 508 support
        ///                       and localisation
        /// </history>
        protected void cmdHelpShow_Click( object sender, ImageClickEventArgs e )
        {
            try
            {
                DesktopModuleController objDesktopModules = new DesktopModuleController();
                DesktopModuleInfo objDesktopModule;

                objDesktopModule = objDesktopModules.GetDesktopModule( int.Parse( cboDesktopModules.SelectedItem.Value ) );
                if( objDesktopModule != null )
                {
                    lblDescription.Text = "<br>" + objDesktopModule.Description + "<br>";
                }

                cmdHelpShow.Visible = false;
                cmdHelpHide.Visible = true;
            }
            catch( Exception exc ) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException( this, exc );
            }
        }
Example #10
0
        public string CreatePrivateAssembly(int DesktopModuleId)
        {

            string Result = "";

            //Get the Module Definition File for this Module
            DesktopModuleController objDesktopModuleController = new DesktopModuleController();
            DesktopModuleInfo objModule = objDesktopModuleController.GetDesktopModule(DesktopModuleId);
            _Folder = Globals.ApplicationMapPath + "\\DesktopModules\\" + objModule.FolderName;
            _AppCodeFolder = Globals.ApplicationMapPath + "\\App_Code\\" + objModule.FolderName;

            if (IncludeSource)
            {
                _ResourceFileName = objModule.ModuleName + "_Source.zip";
                CreateResourceFile();
            }

            //Create File List
            CreateFileList();

            if (CreateManifest)
            {
                ProgressLog.StartJob(string.Format(Localization.GetString("LOG.PAWriter.CreateManifest"), objModule.FriendlyName));
                CreateDnnManifest(objModule);
                ProgressLog.EndJob((string.Format(Localization.GetString("LOG.PAWriter.CreateManifest"), objModule.FriendlyName)));
            }

            //Always add Manifest file to file list
            AddFile(new PaFileInfo(objModule.ModuleName + ".dnn", "", Folder), true);

            ProgressLog.StartJob(string.Format(Localization.GetString("LOG.PAWriter.CreateZipFile"), objModule.FriendlyName));
            CreateZipFile();
            ProgressLog.EndJob((string.Format(Localization.GetString("LOG.PAWriter.CreateZipFile"), objModule.FriendlyName)));

            return Result;
        }
        /// <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>
        /// 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>
        /// Page_Load runs when the control is loaded.
        /// </summary>
        /// <history>
        /// 	[cnurse]	9/28/2004	Updated to reflect design changes for Help, 508 support
        ///                       and localisation
        ///     [vmasanas]  31/10/2004  Populate Premium list when we are adding
        /// </history>
        protected void Page_Load( Object sender, EventArgs e )
        {
            try
            {
                DesktopModuleController objDesktopModules = new DesktopModuleController();

                if( ( Request.QueryString["desktopmoduleid"] != null ) )
                {
                    DesktopModuleId = int.Parse( Request.QueryString["desktopmoduleid"] );
                }
                else
                {
                    DesktopModuleId = Null.NullInteger;
                }

                if( Page.IsPostBack == false )
                {
                    //Localize Grid
                    Localization.LocalizeDataGrid(ref grdControls, this.LocalResourceFile);

                    ClientAPI.AddButtonConfirm( cmdDelete, Localization.GetString( "DeleteItem" ) );
                    ClientAPI.AddButtonConfirm( cmdDeleteDefinition, Localization.GetString( "DeleteItem" ) );

                    if( Null.IsNull( DesktopModuleId ) )
                    {
                        //Enable ReadOnly Controls for Add Mode only
                        tabManifest.Visible = true;
                        BindManifestList( "DesktopModules", true );
                        cboManifest.Items.Insert( 0, new ListItem( "<" + Localization.GetString( "None_Specified" ) + ">", "" ) );
                        txtModuleName.Enabled = true;
                        txtFolderName.Enabled = true;
                        txtVersion.Enabled = true;
                        txtVersion.Text = "01.00.00";
                        txtBusinessClass.Enabled = true;
                        txtCompatibleVersions.Enabled = true;

                        cmdDelete.Visible = false;
                        chkDelete.Visible = false;
                        tabDefinitions.Visible = false;
                        tabCache.Visible = false;
                        tabControls.Visible = false;
                    }
                    else
                    {
                        DesktopModuleInfo objDesktopModule;

                        if( DesktopModuleId == - 2 )
                        {
                            objDesktopModule = new DesktopModuleInfo();
                            objDesktopModule.ModuleName = Localization.GetString( "SkinObjects" );
                            objDesktopModule.FolderName = Localization.GetString( "SkinObjects" );
                            objDesktopModule.FriendlyName = Localization.GetString( "SkinObjects" );
                            objDesktopModule.Description = Localization.GetString( "SkinObjectsDescription" );
                            objDesktopModule.IsPremium = false;
                            objDesktopModule.Version = "";

                            cmdUpdate.Visible = false;
                            cmdDelete.Visible = false;
                            chkDelete.Visible = false;
                            tabDefinitions.Visible = false;
                            tabCache.Visible = false;
                            txtDescription.Enabled = false;
                            chkPremium.Enabled = false;

                            LoadControls( Null.NullInteger );
                        }
                        else
                        {
                            if (Request.IsLocal)
                            {
                                txtModuleName.Enabled = true;
                                txtFolderName.Enabled = true;
                                txtVersion.Enabled = true;
                                txtBusinessClass.Enabled = true;
                                txtCompatibleVersions.Enabled = true;
                                chkDelete.Checked = false;
                            }
                            else
                            {
                                chkDelete.Checked = true;
                            }
                            objDesktopModule = objDesktopModules.GetDesktopModule( DesktopModuleId );

                            LoadDefinitions();
                        }

                        tabManifest.Visible = false;

                        if( objDesktopModule != null )
                        {
                            txtModuleName.Text = objDesktopModule.ModuleName;
                            txtFolderName.Text = objDesktopModule.FolderName;
                            txtFriendlyName.Text = objDesktopModule.FriendlyName;
                            txtDescription.Text = objDesktopModule.Description;
                            txtVersion.Text = objDesktopModule.Version;
                            txtCompatibleVersions.Text = objDesktopModule.CompatibleVersions;
                            txtBusinessClass.Text = objDesktopModule.BusinessControllerClass;
                            chkUpgradeable.Checked = objDesktopModule.IsUpgradeable;
                            chkPortable.Checked = objDesktopModule.IsPortable;
                            chkSearchable.Checked = objDesktopModule.IsSearchable;
                            chkPremium.Checked = objDesktopModule.IsPremium;
                        }
                    }

                    PortalController objPortals = new PortalController();
                    ArrayList arrPortals = objPortals.GetPortals();
                    ArrayList arrPortalDesktopModules = objDesktopModules.GetPortalDesktopModules( Null.NullInteger, DesktopModuleId );
                                        
                    foreach( PortalDesktopModuleInfo objPortalDesktopModule in arrPortalDesktopModules )
                    {                        
                        foreach( PortalInfo objPortal in arrPortals )
                        {                            
                            if( objPortal.PortalID == objPortalDesktopModule.PortalID )
                            {
                                arrPortals.Remove( objPortal );
                                break;
                            }
                        }                                                
                    }

                    ctlPortals.Available = arrPortals;
                    ctlPortals.Assigned = arrPortalDesktopModules;
                    ctlPortals.Visible = chkPremium.Checked;
                }
            }
            catch( Exception exc ) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException( this, exc );
            }
        }