private static void EnsureEditScriptControlIsRegistered(int moduleDefId)
 {
     if (ModuleControlController.GetModuleControlByControlKey("EditRazorScript", moduleDefId) != null) return;
     var m = new ModuleControlInfo
                 {
                     ControlKey = "EditRazorScript",
                     ControlSrc = "DesktopModules/RazorModules/RazorHost/EditScript.ascx",
                     ControlTitle = "Edit Script",
                     ControlType = SecurityAccessLevel.Host,
                     ModuleDefID = moduleDefId
                 };
     ModuleControlController.UpdateModuleControl(m);
 }
Exemplo n.º 2
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// SaveModuleControl updates a Module Control in the database.
        /// </summary>
        /// <param name="moduleControl">The Module Control to save.</param>
        /// <param name="clearCache">A flag that determines whether to clear the host cache.</param>
        /// <returns></returns>
        /// -----------------------------------------------------------------------------
        public static int SaveModuleControl(ModuleControlInfo moduleControl, bool clearCache)
        {
            int moduleControlID = moduleControl.ModuleControlID;

            if (moduleControlID == Null.NullInteger)
            {
                // Add new Module Definition
                moduleControlID = dataProvider.AddModuleControl(
                    moduleControl.ModuleDefID,
                    moduleControl.ControlKey,
                    moduleControl.ControlTitle,
                    moduleControl.ControlSrc,
                    moduleControl.IconFile,
                    Convert.ToInt32(moduleControl.ControlType),
                    moduleControl.ViewOrder,
                    moduleControl.HelpURL,
                    moduleControl.SupportsPartialRendering,
                    moduleControl.SupportsPopUps,
                    UserController.Instance.GetCurrentUserInfo().UserID);
            }
            else
            {
                // Upgrade Module Control
                dataProvider.UpdateModuleControl(
                    moduleControl.ModuleControlID,
                    moduleControl.ModuleDefID,
                    moduleControl.ControlKey,
                    moduleControl.ControlTitle,
                    moduleControl.ControlSrc,
                    moduleControl.IconFile,
                    Convert.ToInt32(moduleControl.ControlType),
                    moduleControl.ViewOrder,
                    moduleControl.HelpURL,
                    moduleControl.SupportsPartialRendering,
                    moduleControl.SupportsPopUps,
                    UserController.Instance.GetCurrentUserInfo().UserID);
            }

            if (clearCache)
            {
                DataCache.ClearHostCache(true);
            }

            return(moduleControlID);
        }
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// SaveModuleControl updates a Module Control in the database
        /// </summary>
        /// <param name="moduleControl">The Module Control to save</param>
        /// <param name="clearCache">A flag that determines whether to clear the host cache</param>
        /// <history>
        /// 	[cnurse]	01/11/2008   Documented
        /// </history>
        /// -----------------------------------------------------------------------------
        public static int SaveModuleControl(ModuleControlInfo moduleControl, bool clearCache)
        {
            int moduleControlID = moduleControl.ModuleControlID;
            if (moduleControlID == Null.NullInteger)
            {
				//Add new Module Definition
                moduleControlID = dataProvider.AddModuleControl(moduleControl.ModuleDefID,
                                                                moduleControl.ControlKey,
                                                                moduleControl.ControlTitle,
                                                                moduleControl.ControlSrc,
                                                                moduleControl.IconFile,
                                                                Convert.ToInt32(moduleControl.ControlType),
                                                                moduleControl.ViewOrder,
                                                                moduleControl.HelpURL,
                                                                moduleControl.SupportsPartialRendering,
                                                                moduleControl.SupportsPopUps,
                                                                UserController.GetCurrentUserInfo().UserID);
            }
            else
            {
				//Upgrade Module Control
                dataProvider.UpdateModuleControl(moduleControl.ModuleControlID,
                                                 moduleControl.ModuleDefID,
                                                 moduleControl.ControlKey,
                                                 moduleControl.ControlTitle,
                                                 moduleControl.ControlSrc,
                                                 moduleControl.IconFile,
                                                 Convert.ToInt32(moduleControl.ControlType),
                                                 moduleControl.ViewOrder,
                                                 moduleControl.HelpURL,
                                                 moduleControl.SupportsPartialRendering,
                                                 moduleControl.SupportsPopUps,
                                                 UserController.GetCurrentUserInfo().UserID);
            }
            if (clearCache)
            {
                DataCache.ClearHostCache(true);
            }
            return moduleControlID;
        }
Exemplo n.º 4
0
 /// -----------------------------------------------------------------------------
 /// <summary>
 /// UpdateModuleControl updates a Module Control in the database
 /// </summary>
 /// <param name="objModuleControl">The Module Control to save</param>
 /// -----------------------------------------------------------------------------
 public static void UpdateModuleControl(ModuleControlInfo objModuleControl)
 {
     SaveModuleControl(objModuleControl, true);
 }
 private void cmdUpdate_Click(object sender, EventArgs e)
 {
     try
     {
         if (Page.IsValid)
         {
             if (cboSource.SelectedIndex != 0 || !String.IsNullOrEmpty(txtSource.Text))
             {
                 //check whether have a same control key in the module definition
                 var controlKey = !String.IsNullOrEmpty(txtKey.Text) ? txtKey.Text : Null.NullString;
                 var moduleControls = ModuleControlController.GetModuleControlsByModuleDefinitionID(ModuleDefId).Values;
                 var keyExists = moduleControls.Any(c => c.ControlKey.Equals(controlKey, StringComparison.InvariantCultureIgnoreCase)
                                                     && c.ModuleControlID != ModuleControlId);
                 if(keyExists)
                 {
                     UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("DuplicateKey.ErrorMessage", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError);
                     return;
                 }
                 var moduleControl = new ModuleControlInfo
                                         {
                                             ModuleControlID = ModuleControlId,
                                             ModuleDefID = ModuleDefId,
                                             ControlKey = controlKey,
                                             ControlTitle = !String.IsNullOrEmpty(txtTitle.Text) ? txtTitle.Text : Null.NullString,
                                             ControlSrc = !String.IsNullOrEmpty(txtSource.Text) ? txtSource.Text : cboSource.SelectedItem.Text,
                                             ControlType = (SecurityAccessLevel) Enum.Parse(typeof (SecurityAccessLevel), cboType.SelectedItem.Value),
                                             ViewOrder = !String.IsNullOrEmpty(txtViewOrder.Text) ? int.Parse(txtViewOrder.Text) : Null.NullInteger,
                                             IconFile = cboIcon.SelectedIndex > 0 ? cboIcon.SelectedItem.Text : Null.NullString,
                                             HelpURL = !String.IsNullOrEmpty(txtHelpURL.Text) ? txtHelpURL.Text : Null.NullString,
                                             SupportsPartialRendering = chkSupportsPartialRendering.Checked,
                                             SupportsPopUps = supportsModalPopUpsCheckBox.Checked
                                         };
                 try
                 {
                     ModuleControlController.SaveModuleControl(moduleControl, true);
                 }
                 catch
                 {
                     UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("AddControl.ErrorMessage", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError);
                     return;
                 }
                 Response.Redirect(ReturnURL, true);
             }
             else
             {
                 UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("MissingSource.ErrorMessage", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError);
             }
         }
     }
     catch (Exception exc)
     {
         Exceptions.ProcessModuleLoadException(this, exc);
     }
 }
        private string CreateModuleControl()
        {
            var objModuleControl = ModuleControlController.GetModuleControl(ModuleControlId);
            var objModuleDefinition = ModuleDefinitionController.GetModuleDefinitionByID(objModuleControl.ModuleDefID);
            var objDesktopModule = DesktopModuleController.GetDesktopModule(objModuleDefinition.DesktopModuleID, PortalId);
            var objPackage = PackageController.Instance.GetExtensionPackage(Null.NullInteger, p => p.PackageID ==objDesktopModule.PackageID);

            var moduleTemplatePath = Server.MapPath(ModulePath) + "Templates\\" + optLanguage.SelectedValue + "\\" + cboTemplate.SelectedValue + "\\";


            EventLogController.Instance.AddLog("Processing Template Folder", moduleTemplatePath, PortalSettings, -1, EventLogController.EventLogType.HOST_ALERT);


            var controlName = Null.NullString;
            var fileName = Null.NullString;
            var modulePath = Null.NullString;
            var sourceCode = Null.NullString;

            //iterate through files in template folder
            string[] fileList = Directory.GetFiles(moduleTemplatePath);
            foreach (string filePath in fileList)
            {
                modulePath = Server.MapPath("DesktopModules/" + objDesktopModule.FolderName + "/");

                //open file
                TextReader tr = new StreamReader(filePath);
                sourceCode = tr.ReadToEnd();
                tr.Close();

                //replace tokens
                sourceCode = sourceCode.Replace("[OWNER]", objPackage.Owner.Replace(" ", ""));
                sourceCode = sourceCode.Replace("[MODULE]", objDesktopModule.FriendlyName.Replace(" ", ""));
                sourceCode = sourceCode.Replace("[CONTROL]", GetControl());
                sourceCode = sourceCode.Replace("[YEAR]", DateTime.Now.Year.ToString());

                //get filename 
                fileName = Path.GetFileName(filePath);
                fileName = fileName.Replace("template", GetControl());

                switch (Path.GetExtension(filePath).ToLower())
                {
                    case ".ascx":
                        controlName = fileName;
                        break;
                    case ".vbhtml":
                        controlName = fileName;
                        break;
                    case ".cshtml":
                        controlName = fileName;
                        break;
                    case ".resx":
                        modulePath = modulePath + "\\App_LocalResources\\";
                        break;
                    case ".vb":
                        if (filePath.ToLower().IndexOf(".ascx") == -1)
                        {
                            modulePath = modulePath.Replace("DesktopModules", "App_Code");
                        }
                        break;
                    case ".cs":
                        if (filePath.ToLower().IndexOf(".ascx") == -1)
                        {
                            modulePath = modulePath.Replace("DesktopModules", "App_Code");
                        }
                        break;
                    case ".js":
                        modulePath = modulePath + "\\js\\";
                        break;
                }

                //check if folder exists
                if (!Directory.Exists(modulePath))
                {
                    Directory.CreateDirectory(modulePath);
                }

                //check if file already exists
                if (!File.Exists(modulePath + fileName))
                {
                    //create file
                    TextWriter tw = new StreamWriter(modulePath + fileName);
                    tw.WriteLine(sourceCode);
                    tw.Close();

                    EventLogController.Instance.AddLog("Created File", modulePath + fileName, PortalSettings, -1, EventLogController.EventLogType.HOST_ALERT);

                }
            }

            //Create module control
            if (controlName != Null.NullString)
            {
                try
                {
                    objModuleControl = new ModuleControlInfo();
                    objModuleControl.ModuleControlID = Null.NullInteger;
                    objModuleControl.ModuleDefID = objModuleDefinition.ModuleDefID;
                    objModuleControl.ControlKey = GetControl();
                    objModuleControl.ControlSrc = "DesktopModules/" + objDesktopModule.FolderName + "/" + controlName;
                    objModuleControl.ControlTitle = txtControl.Text;
                    objModuleControl.ControlType = (SecurityAccessLevel)Enum.Parse(typeof(SecurityAccessLevel), cboType.SelectedItem.Value);
                    objModuleControl.HelpURL = "";
                    objModuleControl.IconFile = "";
                    objModuleControl.ViewOrder = 0;
                    objModuleControl.SupportsPartialRendering = true;
                    objModuleControl.SupportsPopUps = true;
                    ModuleControlController.AddModuleControl(objModuleControl);
                    controlName = objModuleControl.ControlSrc;
                }
                catch
                {
                    //Suppress error
                }
            }

            UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("ControlCreated", LocalResourceFile), ModuleMessage.ModuleMessageType.GreenSuccess);

            return controlName;
        }
        /// <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;
            }
        }
        public override PaFolderCollection ReadDnn()
        {
            //This is a very long subroutine and should probably be broken down
            //into a couple of smaller routines.  That would make it easier to
            //maintain.
            InstallerInfo.Log.StartJob(DNN_Reading);

            //Determine if XML conforms to designated schema
            ArrayList DnnErrors = ValidateDnn();
            if (DnnErrors.Count == 0)
            {
                InstallerInfo.Log.AddInfo(DNN_ValidSkinObject);

                PaFolderCollection Folders = new PaFolderCollection();

                XmlDocument doc = new XmlDocument();
                MemoryStream buffer = new MemoryStream(InstallerInfo.DnnFile.Buffer, false);
                doc.Load(buffer);
                InstallerInfo.Log.AddInfo(XML_Loaded);

                XmlNode dnnRoot = doc.DocumentElement;

                int TempModuleDefinitionID = 0;

                XmlElement FolderElement;
                foreach (XmlElement tempLoopVar_FolderElement in dnnRoot.SelectNodes("folders/folder"))
                {
                    FolderElement = tempLoopVar_FolderElement;
                    //We will process each folder individually.  So we don't need to keep
                    //as much in memory.

                    //As we loop through each folder, we will save the data
                    PaFolder Folder = new PaFolder();

                    //The folder/name node is a required node.  If empty, this will throw
                    //an exception.
                    try
                    {
                        Folder.Name = FolderElement.SelectSingleNode("name").InnerText.Trim();
                    }
                    catch (Exception)
                    {
                        throw (new Exception(EXCEPTION_FolderName));
                    }

                    // in V2 the FriendlyName/FolderName/ModuleName attributes were not supported in the *.dnn file,
                    // so set them to the Folder Name
                    Folder.FriendlyName = Folder.Name;
                    Folder.FolderName = Folder.Name;
                    Folder.ModuleName = Folder.Name;

                    XmlElement resourcefileElement = (XmlElement)FolderElement.SelectSingleNode("resourcefile");
                    if (resourcefileElement != null)
                    {
                        if (resourcefileElement.InnerText.Trim() != "")
                        {
                            Folder.ResourceFile = resourcefileElement.InnerText.Trim();
                            PaFile paRF = (PaFile)InstallerInfo.FileTable[Folder.ResourceFile.ToLower()];
                            if (paRF == null)
                            {
                                InstallerInfo.Log.AddFailure(EXCEPTION_MissingResource + Folder.ResourceFile);
                            }
                            else
                            {
                                paRF.Path = Folder.ResourceFile;
                            }
                        }
                    }

                    // loading files
                    InstallerInfo.Log.AddInfo(FILES_Loading);
                    XmlElement file;
                    foreach (XmlElement tempLoopVar_file in FolderElement.SelectNodes("files/file"))
                    {
                        file = tempLoopVar_file;
                        //The file/name node is a required node.  If empty, this will throw
                        //an exception.
                        string name;
                        try
                        {
                            name = file.SelectSingleNode("name").InnerText.Trim();
                        }
                        catch (Exception)
                        {
                            throw (new Exception(EXCEPTION_FileName));
                        }
                        PaFile paf = (PaFile)InstallerInfo.FileTable[name.ToLower()];
                        if (paf == null)
                        {
                            InstallerInfo.Log.AddFailure(FILE_NotFound + name);
                        }
                        else
                        {
                            //A file path may or may not exist
                            XmlElement pathElement = (XmlElement)file.SelectSingleNode("path");
                            if (!(pathElement == null))
                            {
                                string filepath = pathElement.InnerText.Trim();
                                InstallerInfo.Log.AddInfo(string.Format(FILE_Found, filepath, name));
                                paf.Path = filepath;
                            }
                            Folder.Files.Add(paf);
                        }
                    }

                    // add dnn file to collection ( if it does not exist already )
                    if (Folder.Files.Contains(InstallerInfo.DnnFile) == false)
                    {
                        Folder.Files.Add(InstallerInfo.DnnFile);
                    }

                    InstallerInfo.Log.AddInfo(MODULES_Loading);
                    XmlElement DNNModule;
                    foreach (XmlElement tempLoopVar_DNNModule in FolderElement.SelectNodes("modules/module"))
                    {
                        DNNModule = tempLoopVar_DNNModule;

                        ModuleDefinitionInfo ModuleDef = new ModuleDefinitionInfo();

                        ModuleDef.TempModuleID = TempModuleDefinitionID;
                        //We need to ensure that admin order is null for "User" modules

                        TempModuleDefinitionID++;

                        Folder.Modules.Add(ModuleDef);

                        InstallerInfo.Log.AddInfo(string.Format(MODULES_ControlInfo, ModuleDef.FriendlyName));
                        XmlElement ModuleControl;
                        foreach (XmlElement tempLoopVar_ModuleControl in DNNModule.SelectNodes("controls/control"))
                        {
                            ModuleControl = tempLoopVar_ModuleControl;
                            ModuleControlInfo ModuleControlDef = new ModuleControlInfo();

                            XmlElement keyElement = (XmlElement)ModuleControl.SelectSingleNode("key");
                            if (keyElement != null)
                            {
                                ModuleControlDef.ControlKey = keyElement.InnerText.Trim();
                            }

                            XmlElement titleElement = (XmlElement)ModuleControl.SelectSingleNode("title");
                            if (titleElement != null)
                            {
                                ModuleControlDef.ControlTitle = titleElement.InnerText.Trim();
                            }

                            try
                            {
                                ModuleControlDef.ControlSrc = Path.Combine("DesktopModules", Path.Combine(Folder.Name, ModuleControl.SelectSingleNode("src").InnerText.Trim()).Replace('\\', '/')).Replace(@"\", "/");
                            }
                            catch (Exception)
                            {
                                throw (new Exception(EXCEPTION_Src));
                            }

                            XmlElement iconFileElement = (XmlElement)ModuleControl.SelectSingleNode("iconfile");
                            if (iconFileElement != null)
                            {
                                ModuleControlDef.IconFile = iconFileElement.InnerText.Trim();
                            }

                            try
                            {
                                ModuleControlDef.ControlType = (SecurityAccessLevel)TypeDescriptor.GetConverter(typeof(SecurityAccessLevel)).ConvertFromString(ModuleControl.SelectSingleNode("type").InnerText.Trim());
                                //ModuleControlDef.ControlType = CType(ModuleControl.SelectSingleNode("type").InnerText.Trim, SecurityAccessLevel)
                            }
                            catch (Exception)
                            {
                                throw (new Exception(EXCEPTION_Type));
                            }

                            XmlElement orderElement = (XmlElement)ModuleControl.SelectSingleNode("vieworder");
                            if (orderElement != null)
                            {
                                ModuleControlDef.ViewOrder = Convert.ToInt32(orderElement.InnerText.Trim());
                            }
                            else
                            {
                                ModuleControlDef.ViewOrder = Null.NullInteger;
                            }

                            //This is a temporary relationship since the ModuleDef has not been saved to the db
                            //it does not have a valid ModuleDefID.  Once it is saved then we can update the
                            //ModuleControlDef with the correct value.
                            ModuleControlDef.ModuleDefID = ModuleDef.TempModuleID;

                            Folder.Controls.Add(ModuleControlDef);
                        }
                    }

                    Folders.Add(Folder);
                }

                if (!InstallerInfo.Log.Valid)
                {
                    throw (new Exception(EXCEPTION_LoadFailed));
                }
                InstallerInfo.Log.EndJob(DNN_Success);

                return Folders;
            }
            else
            {
                string err;
                foreach (string tempLoopVar_err in DnnErrors)
                {
                    err = tempLoopVar_err;
                    InstallerInfo.Log.AddFailure(err);
                }
                throw (new Exception(EXCEPTION_Format));
            }
        }
		/// <summary>
		/// </summary>
		/// <remarks>
		/// Loads the cboSource control list with locations of controls.
		/// </remarks>
		/// <history>
		/// </history>
		private ModuleDefinitionInfo ImportControl(string controlSrc)
		{
			ModuleDefinitionInfo moduleDefinition = null;
			try
			{
				string folder = PathUtils.Instance.RemoveTrailingSlash(GetSourceFolder());
				string friendlyName = txtName.Text;
				string name = GetClassName();
				string moduleControl = "DesktopModules/" + folder + "/" + controlSrc;

                var packageInfo = PackageController.GetPackages().FirstOrDefault(p => p.Name == name || p.FriendlyName == friendlyName);
                if (packageInfo != null)
                {
                    UI.Skins.Skin.AddModuleMessage(this, String.Format(Localization.GetString("NonuniqueNameModule", LocalResourceFile), packageInfo.FriendlyName), ModuleMessage.ModuleMessageType.RedError);
                }
                else
                {
                    var package = new PackageInfo();
                    package.Name = name;
                    package.FriendlyName = friendlyName;
                    package.Description = txtDescription.Text;
                    package.Version = new Version(1, 0, 0);
                    package.PackageType = "Module";
                    package.License = Util.PACKAGE_NoLicense;

                    //Save Package
                    PackageController.SavePackage(package);

                    var objDesktopModules = new DesktopModuleController();
                    var objDesktopModule = new DesktopModuleInfo();

                    objDesktopModule.DesktopModuleID = Null.NullInteger;
                    objDesktopModule.ModuleName = name;
                    objDesktopModule.FolderName = folder;
                    objDesktopModule.FriendlyName = friendlyName;
                    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 = package.PackageID;

#pragma warning disable 612,618
                    objDesktopModule.DesktopModuleID = objDesktopModules.AddDesktopModule(objDesktopModule);
#pragma warning restore 612,618

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

                    //Save module definition
                    moduleDefinition = new ModuleDefinitionInfo();

                    moduleDefinition.ModuleDefID = Null.NullInteger;
                    moduleDefinition.DesktopModuleID = objDesktopModule.DesktopModuleID;
                    moduleDefinition.FriendlyName = friendlyName;
                    moduleDefinition.DefaultCacheTime = 0;

                    moduleDefinition.ModuleDefID = ModuleDefinitionController.SaveModuleDefinition(moduleDefinition, false, true);

                    //Save module control
                    var objModuleControl = new ModuleControlInfo();

                    objModuleControl.ModuleControlID = Null.NullInteger;
                    objModuleControl.ModuleDefID = moduleDefinition.ModuleDefID;
                    objModuleControl.ControlKey = "";
                    objModuleControl.ControlSrc = moduleControl;
                    objModuleControl.ControlTitle = "";
                    objModuleControl.ControlType = SecurityAccessLevel.View;
                    objModuleControl.HelpURL = "";
                    objModuleControl.IconFile = "";
                    objModuleControl.ViewOrder = 0;
                    objModuleControl.SupportsPartialRendering = false;

                    ModuleControlController.AddModuleControl(objModuleControl);
                }
			}
			catch (Exception exc)
			{
				Exceptions.LogException(exc);
				UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("ImportControl.ErrorMessage", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError);
			}
			return moduleDefinition;
		}
Exemplo n.º 10
0
 /// -----------------------------------------------------------------------------
 /// <summary>
 /// AddModuleControl adds a new Module Control to the database
 /// </summary>
 /// <param name="objModuleControl">The Module Control to save</param>
 /// <history>
 /// 	[cnurse]	01/11/2008   Documented
 /// </history>
 /// -----------------------------------------------------------------------------
 public static void AddModuleControl(ModuleControlInfo objModuleControl)
 {
     SaveModuleControl(objModuleControl, true);
 }
Exemplo n.º 11
0
        protected virtual ModuleControlInfo GetModuleControlFromNode(string Foldername, int TempModuleID, XmlElement ModuleControl)
        {
            ModuleControlInfo ModuleControlDef = new ModuleControlInfo();

            XmlElement keyElement = (XmlElement)ModuleControl.SelectSingleNode("key");
            if (keyElement != null)
            {
                ModuleControlDef.ControlKey = keyElement.InnerText.Trim();
            }

            XmlElement titleElement = (XmlElement)ModuleControl.SelectSingleNode("title");
            if (titleElement != null)
            {
                ModuleControlDef.ControlTitle = titleElement.InnerText.Trim();
            }

            try
            {
                string ControlSrc = ModuleControl.SelectSingleNode("src").InnerText.Trim();
                if (ControlSrc.ToLower().StartsWith("desktopmodules"))
                {
                    // this code allows a developer to reference an ASCX file in a different folder than the module folder ( good for ASCX files shared between modules where you want only a single copy )
                    ModuleControlDef.ControlSrc = ControlSrc;
                }
                else
                {
                    ModuleControlDef.ControlSrc = Path.Combine("DesktopModules", Path.Combine(Foldername, ControlSrc));
                }
                ModuleControlDef.ControlSrc = ModuleControlDef.ControlSrc.Replace(@"\", "/");
            }
            catch (Exception)
            {
                throw (new Exception(EXCEPTION_Src));
            }

            XmlElement iconFileElement = (XmlElement)ModuleControl.SelectSingleNode("iconfile");
            if (iconFileElement != null)
            {
                ModuleControlDef.IconFile = iconFileElement.InnerText.Trim();
            }

            try
            {
                ModuleControlDef.ControlType = (SecurityAccessLevel)TypeDescriptor.GetConverter(typeof(SecurityAccessLevel)).ConvertFromString(ModuleControl.SelectSingleNode("type").InnerText.Trim());
            }
            catch (Exception)
            {
                throw (new Exception(EXCEPTION_Type));
            }

            XmlElement orderElement = (XmlElement)ModuleControl.SelectSingleNode("vieworder");
            if (orderElement != null)
            {
                ModuleControlDef.ViewOrder = Convert.ToInt32(orderElement.InnerText.Trim());
            }
            else
            {
                ModuleControlDef.ViewOrder = Null.NullInteger;
            }

            //This is a temporary relationship since the ModuleDef has not been saved to the db
            //it does not have a valid ModuleDefID.  Once it is saved then we can update the
            //ModuleControlDef with the correct value.
            ModuleControlDef.ModuleDefID = TempModuleID;

            return ModuleControlDef;
        }
Exemplo n.º 12
0
        private static void ProcessControls(XPathNavigator controlNav, string moduleFolder, ModuleDefinitionInfo definition)
        {
            var moduleControl = new ModuleControlInfo();

            moduleControl.ControlKey = Util.ReadElement(controlNav, "key");
            moduleControl.ControlTitle = Util.ReadElement(controlNav, "title");

            //Write controlSrc
            string controlSrc = Util.ReadElement(controlNav, "src");
            if (!(controlSrc.ToLower().StartsWith("desktopmodules") || !controlSrc.ToLower().EndsWith(".ascx")))
            {
				//this code allows a developer to reference an ASCX file in a different folder than the module folder ( good for ASCX files shared between modules where you want only a single copy )
                //or it allows the developer to use webcontrols rather than usercontrols

                controlSrc = Path.Combine("DesktopModules", Path.Combine(moduleFolder, controlSrc));
            }
            controlSrc = controlSrc.Replace('\\', '/');
            moduleControl.ControlSrc = controlSrc;

            moduleControl.IconFile = Util.ReadElement(controlNav, "iconfile");

            string controlType = Util.ReadElement(controlNav, "type");
            if (!string.IsNullOrEmpty(controlType))
            {
                try
                {
                    moduleControl.ControlType = (SecurityAccessLevel) TypeDescriptor.GetConverter(typeof (SecurityAccessLevel)).ConvertFromString(controlType);
                }
                catch (Exception exc)
                {
                    Logger.Error(exc);

                    throw new Exception(Util.EXCEPTION_Type);
                }
            }
            string viewOrder = Util.ReadElement(controlNav, "vieworder");
            if (!string.IsNullOrEmpty(viewOrder))
            {
                moduleControl.ViewOrder = int.Parse(viewOrder);
            }
            moduleControl.HelpURL = Util.ReadElement(controlNav, "helpurl");
            string supportsPartialRendering = Util.ReadElement(controlNav, "supportspartialrendering");
            if (!string.IsNullOrEmpty(supportsPartialRendering))
            {
                moduleControl.SupportsPartialRendering = bool.Parse(supportsPartialRendering);
            }
            string supportsPopUps = Util.ReadElement(controlNav, "supportspopups");
            if (!string.IsNullOrEmpty(supportsPopUps))
            {
                moduleControl.SupportsPartialRendering = bool.Parse(supportsPopUps);
            }

            definition.ModuleControls[moduleControl.ControlKey] = moduleControl;
        }
Exemplo n.º 13
0
 public void UpdateModuleControl(ModuleControlInfo objModuleControl)
 {
     DataProvider.Instance().UpdateModuleControl(objModuleControl.ModuleControlID, objModuleControl.ModuleDefID, objModuleControl.ControlKey, objModuleControl.ControlTitle, objModuleControl.ControlSrc, objModuleControl.IconFile, Convert.ToInt32(objModuleControl.ControlType), objModuleControl.ViewOrder, objModuleControl.HelpURL);
 }
Exemplo n.º 14
0
        /// <summary>
        /// AddModuleControl adds a new Module Control to the system
        /// </summary>
        /// <remarks>
        /// </remarks>
        ///	<param name="ModuleDefId">The Module Definition Id</param>
        ///	<param name="ControlKey">The key for this control in the Definition</param>
        ///	<param name="ControlTitle">The title of this control</param>
        ///	<param name="ControlSrc">Te source of ths control</param>
        ///	<param name="IconFile">The icon file</param>
        ///	<param name="ControlType">The type of control</param>
        ///	<param name="ViewOrder">The vieworder for this module</param>
        ///	<param name="HelpURL">The Help Url</param>
        private static void AddModuleControl(int ModuleDefId, string ControlKey, string ControlTitle, string ControlSrc, string IconFile, SecurityAccessLevel ControlType, int ViewOrder, string HelpURL)
        {
            ModuleControlController objModuleControls = new ModuleControlController();

            // check if module control exists
            ModuleControlInfo objModuleControl = objModuleControls.GetModuleControlByKeyAndSrc(ModuleDefId, ControlKey, ControlSrc);
            if (objModuleControl == null)
            {
                objModuleControl = new ModuleControlInfo();

                objModuleControl.ModuleControlID = Null.NullInteger;
                objModuleControl.ModuleDefID = ModuleDefId;
                objModuleControl.ControlKey = ControlKey;
                objModuleControl.ControlTitle = ControlTitle;
                objModuleControl.ControlSrc = ControlSrc;
                objModuleControl.ControlType = ControlType;
                objModuleControl.ViewOrder = ViewOrder;
                objModuleControl.IconFile = IconFile;
                objModuleControl.HelpURL = HelpURL;

                objModuleControls.AddModuleControl(objModuleControl);
            }
        }
 public void UpdateModuleControl(ModuleControlInfo objModuleControl)
 {
     DataProvider.Instance().UpdateModuleControl(objModuleControl.ModuleControlID, objModuleControl.ModuleDefID, objModuleControl.ControlKey, objModuleControl.ControlTitle, objModuleControl.ControlSrc, objModuleControl.IconFile, Convert.ToInt32(objModuleControl.ControlType), objModuleControl.ViewOrder, objModuleControl.HelpURL);
 }
        /// <summary>
        /// cmdUpdate_Click runs when the Update Button is clicked
        /// </summary>
        /// <returns></returns>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// 	[cnurse]	9/28/2004	Updated to reflect design changes for Help, 508 support
        ///                       and localisation
        /// </history>
        protected void cmdUpdate_Click( object sender, EventArgs e )
        {
            try
            {
                if( Page.IsValid )
                {
                    ModuleControlInfo objModuleControl = new ModuleControlInfo();

                    objModuleControl.ModuleControlID = ModuleControlId;
                    objModuleControl.ModuleDefID = ModuleDefId;
                    if( !String.IsNullOrEmpty(txtKey.Text) )
                    {
                        objModuleControl.ControlKey = txtKey.Text;
                    }
                    else
                    {
                        objModuleControl.ControlKey = Null.NullString;
                    }
                    if( !String.IsNullOrEmpty(txtTitle.Text) )
                    {
                        objModuleControl.ControlTitle = txtTitle.Text;
                    }
                    else
                    {
                        objModuleControl.ControlTitle = Null.NullString;
                    }
                    objModuleControl.ControlSrc = cboSource.SelectedItem.Text;
                    objModuleControl.ControlType = (SecurityAccessLevel)Enum.Parse(typeof(SecurityAccessLevel), cboType.SelectedItem.Value);
                    if( !String.IsNullOrEmpty(txtViewOrder.Text) )
                    {
                        objModuleControl.ViewOrder = int.Parse( txtViewOrder.Text );
                    }
                    else
                    {
                        objModuleControl.ViewOrder = Null.NullInteger;
                    }
                    if( cboIcon.SelectedIndex > 0 )
                    {
                        objModuleControl.IconFile = cboIcon.SelectedItem.Text;
                    }
                    else
                    {
                        objModuleControl.IconFile = Null.NullString;
                    }

                    if( !String.IsNullOrEmpty(txtHelpURL.Text) )
                    {
                        objModuleControl.HelpURL = txtHelpURL.Text;
                    }
                    else
                    {
                        objModuleControl.HelpURL = Null.NullString;
                    }

                    ModuleControlController objModuleControls = new ModuleControlController();

                    if( Null.IsNull( ModuleControlId ) )
                    {
                        try
                        {
                            objModuleControls.AddModuleControl( objModuleControl );
                        }
                        catch
                        {
                            UI.Skins.Skin.AddModuleMessage( this, Localization.GetString( "AddControl.ErrorMessage", this.LocalResourceFile ), ModuleMessageType.RedError );
                            return;
                        }
                    }
                    else
                    {
                        objModuleControls.UpdateModuleControl( objModuleControl );
                    }

                    if( DesktopModuleId == - 1 )
                    {
                        DesktopModuleId = - 2;
                    }
                    Response.Redirect( EditUrl( "desktopmoduleid", DesktopModuleId.ToString() ), true );
                }
            }
            catch( Exception exc ) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException( this, exc );
            }
        }
        /// <remarks>
        /// Loads the cboSource control list with locations of controls.
        /// </remarks>
        private void InstallManifest( string strManifest )
        {
            XmlDocument doc = new XmlDocument();

            try
            {
                doc.Load( strManifest );

                XmlNode dnnRoot = doc.DocumentElement;
                foreach( XmlElement FolderElement in dnnRoot.SelectNodes( "folders/folder" ) )
                {
                    DesktopModuleController objDesktopModules = new DesktopModuleController();
                    DesktopModuleInfo objDesktopModule = new DesktopModuleInfo();

                    objDesktopModule.DesktopModuleID = Null.NullInteger;
                    objDesktopModule.ModuleName = XmlUtils.GetNodeValue( FolderElement, "modulename", "" );
                    objDesktopModule.FolderName = XmlUtils.GetNodeValue( FolderElement, "foldername", "" );
                    objDesktopModule.FriendlyName = XmlUtils.GetNodeValue( FolderElement, "friendlyname", "" );
                    if( objDesktopModule.FolderName == "" )
                    {
                        objDesktopModule.FolderName = objDesktopModule.ModuleName;
                    }
                    objDesktopModule.Description = XmlUtils.GetNodeValue( FolderElement, "description", "" );
                    objDesktopModule.IsPremium = false;
                    objDesktopModule.IsAdmin = false;
                    objDesktopModule.Version = XmlUtils.GetNodeValue( FolderElement, "version", "" );
                    objDesktopModule.BusinessControllerClass = XmlUtils.GetNodeValue( FolderElement, "businesscontrollerclass", "" );
                    objDesktopModule.CompatibleVersions = XmlUtils.GetNodeValue( FolderElement, "compatibleversions", "" );
                    objDesktopModule.DesktopModuleID = objDesktopModules.AddDesktopModule( objDesktopModule );

                    foreach( XmlElement ModuleElement in FolderElement.SelectNodes( "modules/module" ) )
                    {
                        ModuleDefinitionController objModuleDefinitions = new ModuleDefinitionController();
                        ModuleDefinitionInfo objModuleDefinition = new ModuleDefinitionInfo();

                        objModuleDefinition.ModuleDefID = Null.NullInteger;
                        objModuleDefinition.DesktopModuleID = objDesktopModule.DesktopModuleID;
                        objModuleDefinition.FriendlyName = XmlUtils.GetNodeValue( ModuleElement, "friendlyname", "" );
                        objModuleDefinition.DefaultCacheTime = XmlUtils.GetNodeValueInt( ModuleElement, "cachetime", 0 );

                        objModuleDefinition.ModuleDefID = objModuleDefinitions.AddModuleDefinition( objModuleDefinition );

                        foreach( XmlElement ControlElement in ModuleElement.SelectNodes( "controls/control" ) )
                        {
                            ModuleControlController objModuleControls = new ModuleControlController();
                            ModuleControlInfo objModuleControl = new ModuleControlInfo();

                            objModuleControl.ModuleControlID = Null.NullInteger;
                            objModuleControl.ModuleDefID = objModuleDefinition.ModuleDefID;
                            objModuleControl.ControlKey = XmlUtils.GetNodeValue( ControlElement, "key", "" );
                            objModuleControl.ControlSrc = XmlUtils.GetNodeValue( ControlElement, "src", "" );
                            objModuleControl.ControlTitle = XmlUtils.GetNodeValue( ControlElement, "title", "" );
                            switch( XmlUtils.GetNodeValue( ControlElement, "type", "" ) )
                            {
                                case "Anonymous":

                                    objModuleControl.ControlType = SecurityAccessLevel.Anonymous;
                                    break;
                                case "View":

                                    objModuleControl.ControlType = SecurityAccessLevel.View;
                                    break;
                                case "Edit":

                                    objModuleControl.ControlType = SecurityAccessLevel.Edit;
                                    break;
                                case "Admin":

                                    objModuleControl.ControlType = SecurityAccessLevel.Admin;
                                    break;
                                case "Host":

                                    objModuleControl.ControlType = SecurityAccessLevel.Host;
                                    break;
                            }
                            objModuleControl.HelpURL = XmlUtils.GetNodeValue( ControlElement, "helpurl", "" );
                            objModuleControl.IconFile = XmlUtils.GetNodeValue( ControlElement, "iconfile", "" );
                            objModuleControl.ViewOrder = XmlUtils.GetNodeValueInt( ControlElement, "vieworder", 0 );

                            objModuleControls.AddModuleControl( objModuleControl );
                        }
                    }
                    // update interfaces
                    UpdateModuleInterfaces( objDesktopModule.BusinessControllerClass );
                }

                Response.Redirect( Globals.NavigateURL(), true );
            }
            catch
            {
                // can not open manifest
                UI.Skins.Skin.AddModuleMessage( this, Localization.GetString( "InstallManifest.ErrorMessage", this.LocalResourceFile ), ModuleMessageType.RedError );
            }
        }
 private void cmdUpdate_Click(object sender, EventArgs e)
 {
     try
     {
         if (Page.IsValid)
         {
             if (cboSource.SelectedIndex != 0 || !String.IsNullOrEmpty(txtSource.Text))
             {
                 var moduleControl = new ModuleControlInfo
                                         {
                                             ModuleControlID = ModuleControlId,
                                             ModuleDefID = ModuleDefId,
                                             ControlKey = !String.IsNullOrEmpty(txtKey.Text) ? txtKey.Text : Null.NullString,
                                             ControlTitle = !String.IsNullOrEmpty(txtTitle.Text) ? txtTitle.Text : Null.NullString,
                                             ControlSrc = !String.IsNullOrEmpty(txtSource.Text) ? txtSource.Text : cboSource.SelectedItem.Text,
                                             ControlType = (SecurityAccessLevel) Enum.Parse(typeof (SecurityAccessLevel), cboType.SelectedItem.Value),
                                             ViewOrder = !String.IsNullOrEmpty(txtViewOrder.Text) ? int.Parse(txtViewOrder.Text) : Null.NullInteger,
                                             IconFile = cboIcon.SelectedIndex > 0 ? cboIcon.SelectedItem.Text : Null.NullString,
                                             HelpURL = !String.IsNullOrEmpty(txtHelpURL.Text) ? txtHelpURL.Text : Null.NullString,
                                             SupportsPartialRendering = chkSupportsPartialRendering.Checked,
                                             SupportsPopUps = supportsModalPopUpsCheckBox.Checked
                                         };
                 try
                 {
                     ModuleControlController.SaveModuleControl(moduleControl, true);
                 }
                 catch
                 {
                     UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("AddControl.ErrorMessage", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError);
                     return;
                 }
                 Response.Redirect(ReturnURL, true);
             }
             else
             {
                 UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("MissingSource.ErrorMessage", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError);
             }
         }
     }
     catch (Exception exc)
     {
         Exceptions.ProcessModuleLoadException(this, exc);
     }
 }
Exemplo n.º 19
0
        private static void AddModuleControl(int moduleDefId, string controlKey, string controlTitle, string controlSrc, string iconFile, SecurityAccessLevel controlType, int viewOrder, string helpURL, bool supportsPartialRendering)
        {
            DnnInstallLogger.InstallLogInfo(Localization.Localization.GetString("LogStart", Localization.Localization.GlobalResourceFile) + "AddModuleControl:" + moduleDefId);
            // check if module control exists
            var moduleControl = ModuleControlController.GetModuleControlByControlKey(controlKey, moduleDefId);
            if (moduleControl == null)
            {
                moduleControl = new ModuleControlInfo
                                       {
                                           ModuleControlID = Null.NullInteger,
                                           ModuleDefID = moduleDefId,
                                           ControlKey = controlKey,
                                           ControlTitle = controlTitle,
                                           ControlSrc = controlSrc,
                                           ControlType = controlType,
                                           ViewOrder = viewOrder,
                                           IconFile = iconFile,
                                           HelpURL = helpURL,
                                           SupportsPartialRendering = supportsPartialRendering
                                       };

                ModuleControlController.AddModuleControl(moduleControl);
            }
        }
Exemplo n.º 20
0
        private static void AddModuleControl(int moduleDefId, string controlKey, string controlTitle, string controlSrc, string iconFile, SecurityAccessLevel controlType, int viewOrder, string helpURL, bool supportsPartialRendering)
        {
            // check if module control exists
            var moduleControl = ModuleControlController.GetModuleControlByControlKey(controlKey, moduleDefId);
            if (moduleControl == null)
            {
                moduleControl = new ModuleControlInfo
                                       {
                                           ModuleControlID = Null.NullInteger,
                                           ModuleDefID = moduleDefId,
                                           ControlKey = controlKey,
                                           ControlTitle = controlTitle,
                                           ControlSrc = controlSrc,
                                           ControlType = controlType,
                                           ViewOrder = viewOrder,
                                           IconFile = iconFile,
                                           HelpURL = helpURL,
                                           SupportsPartialRendering = supportsPartialRendering
                                       };

                ModuleControlController.AddModuleControl(moduleControl);
            }
        }