public override void ReadManifest(XPathNavigator manifestNav)
        {
            DesktopModule = CBO.DeserializeObject <DesktopModuleInfo>(new StringReader(manifestNav.InnerXml));
            DesktopModule.FriendlyName = Package.FriendlyName;
            DesktopModule.Description  = Package.Description;
            DesktopModule.Version      = Globals.FormatVersion(Package.Version);
            //DesktopModule.IsPremium = false;
            //DesktopModule.IsAdmin = false;
            DesktopModule.CompatibleVersions = Null.NullString;
            DesktopModule.Dependencies       = Null.NullString;
            DesktopModule.Permissions        = Null.NullString;
            if (string.IsNullOrEmpty(DesktopModule.BusinessControllerClass))
            {
                DesktopModule.SupportedFeatures = 0;
            }
            XPathNavigator eventMessageNav = manifestNav.SelectSingleNode("eventMessage");

            if (eventMessageNav != null)
            {
                EventMessage                  = new EventQueue.EventMessage();
                EventMessage.Priority         = MessagePriority.High;
                EventMessage.ExpirationDate   = DateTime.Now.AddYears(-1);
                EventMessage.SentDate         = System.DateTime.Now;
                EventMessage.Body             = "";
                EventMessage.ProcessorType    = Util.ReadElement(eventMessageNav, "processorType", Log, Util.EVENTMESSAGE_TypeMissing);
                EventMessage.ProcessorCommand = Util.ReadElement(eventMessageNav, "processorCommand", Log, Util.EVENTMESSAGE_CommandMissing);
                foreach (XPathNavigator attributeNav in eventMessageNav.Select("attributes/*"))
                {
                    EventMessage.Attributes.Add(attributeNav.Name, attributeNav.Value);
                }
            }
            foreach (XPathNavigator moduleDefinitionNav in manifestNav.Select("desktopModule/moduleDefinitions/moduleDefinition"))
            {
                string friendlyName = Util.ReadElement(moduleDefinitionNav, "friendlyName");
                foreach (XPathNavigator permissionNav in moduleDefinitionNav.Select("permissions/permission"))
                {
                    PermissionInfo permission = new PermissionInfo();
                    permission.PermissionCode = Util.ReadAttribute(permissionNav, "code");
                    permission.PermissionKey  = Util.ReadAttribute(permissionNav, "key");
                    permission.PermissionName = Util.ReadAttribute(permissionNav, "name");
                    ModuleDefinitionInfo moduleDefinition = DesktopModule.ModuleDefinitions[friendlyName];
                    if (moduleDefinition != null)
                    {
                        moduleDefinition.Permissions.Add(permission.PermissionKey, permission);
                    }
                }
            }
            if (Log.Valid)
            {
                Log.AddInfo(Util.MODULE_ReadSuccess);
            }
        }
Exemple #2
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// The ReadManifest method reads the manifest file for the Module compoent.
        /// </summary>
        /// -----------------------------------------------------------------------------
        public override void ReadManifest(XPathNavigator manifestNav)
        {
            // Load the Desktop Module from the manifest
            this._desktopModule = CBO.DeserializeObject <DesktopModuleInfo>(new StringReader(manifestNav.InnerXml));

            // Allow a <component type="Module"> (i.e. a DesktopModule) to have its own friendlyname / description.
            // This allows multiple DesktopModules in one Package, allowing large MVC packages which share one assembly
            // but have many functions.
            if (this._desktopModule.FriendlyName == null || this._desktopModule.FriendlyName.Trim().Length == 0)
            {
                this._desktopModule.FriendlyName = this.Package.FriendlyName;
            }

            if (this._desktopModule.Description == null || this._desktopModule.Description.Trim().Length == 0)
            {
                this._desktopModule.Description = this.Package.Description;
            }

            this._desktopModule.Version            = Globals.FormatVersion(this.Package.Version, "00", 4, ".");
            this._desktopModule.CompatibleVersions = Null.NullString;
            this._desktopModule.Dependencies       = Null.NullString;
            this._desktopModule.Permissions        = Null.NullString;
            if (string.IsNullOrEmpty(this._desktopModule.BusinessControllerClass))
            {
                this._desktopModule.SupportedFeatures = 0;
            }

            this._eventMessage = this.ReadEventMessageNode(manifestNav);

            // Load permissions (to add)
            foreach (XPathNavigator moduleDefinitionNav in manifestNav.Select("desktopModule/moduleDefinitions/moduleDefinition"))
            {
                string friendlyName = Util.ReadElement(moduleDefinitionNav, "friendlyName");
                foreach (XPathNavigator permissionNav in moduleDefinitionNav.Select("permissions/permission"))
                {
                    var permission = new PermissionInfo();
                    permission.PermissionCode = Util.ReadAttribute(permissionNav, "code");
                    permission.PermissionKey  = Util.ReadAttribute(permissionNav, "key");
                    permission.PermissionName = Util.ReadAttribute(permissionNav, "name");
                    ModuleDefinitionInfo moduleDefinition = this._desktopModule.ModuleDefinitions[friendlyName];
                    if (moduleDefinition != null)
                    {
                        moduleDefinition.Permissions.Add(permission.PermissionKey, permission);
                    }
                }
            }

            if (this.Log.Valid)
            {
                this.Log.AddInfo(Util.MODULE_ReadSuccess);
            }
        }
        /// <summary>
        /// 绑定模块
        /// </summary>
        private void BindModules()
        {
            DesktopModuleInfo objDesktopModuleInfo = DesktopModuleController.GetDesktopModuleByModuleName("DNNGo.DNNGalleryPro", PortalId);


            if ((objDesktopModuleInfo != null))
            {
                TabController objTabController = new TabController();
                ArrayList     objTabs          = objTabController.GetTabsByPortal(PortalId).ToArrayList();
                foreach (DotNetNuke.Entities.Tabs.TabInfo objTab in objTabs)
                {
                    if ((objTab != null))
                    {
                        if ((objTab.IsDeleted == false))
                        {
                            ModuleController objModules = new ModuleController();
                            foreach (KeyValuePair <int, ModuleInfo> pair in objModules.GetTabModules(objTab.TabID))
                            {
                                ModuleInfo objModule = pair.Value;
                                if ((objModule.IsDeleted == false))
                                {
                                    if ((objModule.DesktopModuleID == objDesktopModuleInfo.DesktopModuleID))
                                    {
                                        if (ModulePermissionController.CanEditModuleContent(objModule) & objModule.IsDeleted == false)
                                        {
                                            string  strPath        = objTab.TabName;
                                            TabInfo objTabSelected = objTab;
                                            while (objTabSelected.ParentId != Null.NullInteger)
                                            {
                                                objTabSelected = objTabController.GetTab(objTabSelected.ParentId, objTab.PortalID, false);
                                                if ((objTabSelected == null))
                                                {
                                                    break; // TODO: might not be correct. Was : Exit While
                                                }
                                                strPath = objTabSelected.TabName + " -> " + strPath;
                                            }

                                            ListItem objListItem = new ListItem();

                                            objListItem.Value = objModule.TabID.ToString() + "-" + objModule.ModuleID.ToString();
                                            objListItem.Text  = strPath + " -> " + objModule.ModuleTitle;

                                            ddlModule.Items.Add(objListItem);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        public ModulePackageWriter(DesktopModuleInfo desktopModule, XPathNavigator manifestNav, PackageInfo package) : base(package)
        {
            DesktopModule = desktopModule;

            Initialize(desktopModule.FolderName);
            if (manifestNav != null)
            {
                ReadLegacyManifest(manifestNav.SelectSingleNode("folders/folder"), false);
            }
            string physicalFolderPath = Path.Combine(Globals.ApplicationMapPath, BasePath);

            ProcessModuleFolders(physicalFolderPath, physicalFolderPath);
        }
Exemple #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Version"></param>
        /// <returns></returns>
        /// <remarks>This is not localizing Page Name or description.</remarks>
        public string UpgradeModule(string Version)
        {
            try
            {
                switch (Version)
                {
                case "06.00.00":
                    string resourceFile    = ModuleFolder + "/App_LocalResources/ProviderConfig.ascx.resx";
                    string pageName        = Localization.GetString("HTMLEditorPageName", resourceFile);
                    string pageDescription = Localization.GetString("HTMLEditorPageDescription", resourceFile);

                    //Create Rad Editor Config Page (or get existing one)
                    TabInfo newPage = Upgrade.AddHostPage(pageName, pageDescription, ModuleFolder + "/images/radeditor_config_small.png", ModuleFolder + "/images/radeditor_config_large.png", true);

                    //Add Module To Page
                    int moduleDefId = GetModuleDefinitionID();
                    Upgrade.AddModuleToPage(newPage, moduleDefId, pageName, ModuleFolder + "/images/radeditor_config_large.png", true);

                    foreach (var item in DesktopModuleController.GetDesktopModules(Null.NullInteger))
                    {
                        DesktopModuleInfo moduleInfo = item.Value;

                        if (moduleInfo.ModuleName == "DotNetNuke.RadEditorProvider")
                        {
                            moduleInfo.Category = "Host";
                            DesktopModuleController.SaveDesktopModule(moduleInfo, false, false);
                        }
                    }
                    break;

                case "07.00.06":
                    UpdateConfigOfLinksType();
                    break;

                case "07.03.00":
                    UpdateConfigFilesName();
                    UpdateToolsFilesName();
                    break;
                }
            }
            catch (Exception ex)
            {
                ExceptionLogController xlc = new ExceptionLogController();
                xlc.AddLog(ex);

                return("Failed");
            }

            return("Success");
        }
Exemple #6
0
        protected bool ValidateVersion(PaFolder Folder)
        {
            // check if desktop module exists
            DesktopModuleInfo objDesktopModule = GetDesktopModule(Folder);

            if (objDesktopModule != null)
            {
                if (String.Compare(objDesktopModule.Version, Folder.Version, false) > 0)
                {
                    return(false);
                }
            }
            return(true);
        }
        private void CreateModulePackage(DesktopModuleInfo desktopModule, bool createZip)
        {
            PackageInfo modulePackage = PackageController.Instance.GetExtensionPackage(Null.NullInteger, p => p.PackageID == desktopModule.PackageID);

            var Package = new PackageInfo();

            Package.Name         = modulePackage.Name;
            Package.FriendlyName = modulePackage.Name;
            Package.Version      = modulePackage.Version;
            Package.License      = Util.PACKAGE_NoLicense;

            string fileName = Path.Combine(BasePath, "ResourcePack." + Package.Name);

            CreatePackage(Package, modulePackage.PackageID, Path.Combine("DesktopModules\\", desktopModule.FolderName), fileName, createZip);
        }
Exemple #8
0
        private ModuleDefinitionInfo ImportManifest(string manifest)
        {
            ModuleDefinitionInfo moduleDefinition = null;

            try
            {
                var _Installer = new Installer(manifest, Request.MapPath("."), true);

                if (_Installer.IsValid)
                {
                    //Reset Log
                    _Installer.InstallerInfo.Log.Logs.Clear();

                    //Install
                    _Installer.Install();

                    if (_Installer.IsValid)
                    {
                        DesktopModuleInfo desktopModule = DesktopModuleController.GetDesktopModuleByPackageID(_Installer.InstallerInfo.PackageID);
                        if (desktopModule != null && desktopModule.ModuleDefinitions.Count > 0)
                        {
                            foreach (KeyValuePair <string, ModuleDefinitionInfo> kvp in desktopModule.ModuleDefinitions)
                            {
                                moduleDefinition = kvp.Value;
                                break;
                            }
                        }
                    }
                    else
                    {
                        UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("InstallError.Text", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError);
                        phInstallLogs.Controls.Add(_Installer.InstallerInfo.Log.GetLogsTable());
                    }
                }
                else
                {
                    UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("InstallError.Text", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError);
                    phInstallLogs.Controls.Add(_Installer.InstallerInfo.Log.GetLogsTable());
                }
            }
            catch (Exception exc)
            {
                Exceptions.LogException(exc);
                UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("ImportControl.ErrorMessage", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError);
            }

            return(moduleDefinition);
        }
Exemple #9
0
        private int GetModuleDefID(string ModuleName)
        {
            try
            {
                DesktopModuleInfo    desktopInfo = DesktopModuleController.GetDesktopModuleByModuleName(ModuleName, PortalController.GetCurrentPortalSettings().PortalId);
                ModuleDefinitionInfo modDefInfo  = ModuleDefinitionController.GetModuleDefinitionByFriendlyName(ModuleName, desktopInfo.DesktopModuleID);

                return(modDefInfo.ModuleDefID);
            }
            catch
            {
                // WStrohl:
                // do nothing - an expected nullreference exception should happen here if the module is not going through the expected upgrade
                return(Null.NullInteger);
            }
        }
 public ModulePackageWriter(XPathNavigator manifestNav, InstallerInfo installer)
 {
     _DesktopModule = new DesktopModuleInfo();
     Package        = new PackageInfo(installer);
     ReadLegacyManifest(manifestNav, true);
     Package.Name         = DesktopModule.ModuleName;
     Package.FriendlyName = DesktopModule.FriendlyName;
     Package.Description  = DesktopModule.Description;
     if (!string.IsNullOrEmpty(DesktopModule.Version))
     {
         Package.Version = new Version(DesktopModule.Version);
     }
     Package.PackageType = "Module";
     LegacyUtil.ParsePackageName(Package);
     Initialize(DesktopModule.FolderName);
 }
Exemple #11
0
        private void AddModulesToList(List <PackageInfo> packages)
        {
            Dictionary <int, PortalDesktopModuleInfo> portalModules = DesktopModuleController.GetPortalDesktopModulesByPortalID(ModuleContext.PortalId);

            foreach (PackageInfo modulePackage in PackageController.GetPackagesByType(Null.NullInteger, "Module"))
            {
                DesktopModuleInfo desktopModule = DesktopModuleController.GetDesktopModuleByPackageID(modulePackage.PackageID);
                foreach (PortalDesktopModuleInfo portalModule in portalModules.Values)
                {
                    if (desktopModule != null && portalModule.DesktopModuleID == desktopModule.DesktopModuleID)
                    {
                        packages.Add(modulePackage);
                    }
                }
            }
        }
Exemple #12
0
        public bool CreateModulePackage(string cultureCode, DesktopModuleInfo desktopModule, bool createZip)
        {
            var modulePackage = PackageController.Instance.GetExtensionPackage(Null.NullInteger, p => p.PackageID == desktopModule.PackageID);

            var package = new PackageInfo
            {
                Name         = modulePackage.Name,
                FriendlyName = modulePackage.FriendlyName,
                Version      = modulePackage.Version,
                License      = Util.PACKAGE_NoLicense
            };

            var fileName = Path.Combine(this.BasePath, "ResourcePack." + package.Name);

            return(this.CreatePackage(cultureCode, package, modulePackage.PackageID, Path.Combine("DesktopModules\\", desktopModule.FolderName), fileName, createZip));
        }
Exemple #13
0
        protected override string UpgradeModule(DesktopModuleInfo ModuleInfo)
        {
            if (!String.IsNullOrEmpty(ModuleInfo.BusinessControllerClass))
            {
                string UpgradeVersionsList = "";

                if (UpgradeVersions.Count > 0)
                {
                    foreach (string Version in UpgradeVersions)
                    {
                        UpgradeVersionsList = UpgradeVersionsList + Version + ",";
                        DeleteFiles(ModuleInfo.FolderName, Version);
                    }
                    if (UpgradeVersionsList.EndsWith(","))
                    {
                        UpgradeVersionsList = UpgradeVersionsList.Remove(UpgradeVersionsList.Length - 1, 1);
                    }
                }
                else
                {
                    UpgradeVersionsList = ModuleInfo.Version;
                }

                //this cannot be done directly at this time because
                //the module may not be loaded into the app domain yet
                //So send an EventMessage that will process the update
                //after the App recycles
                EventMessage oAppStartMessage = new EventMessage();
                oAppStartMessage.ProcessorType = "DotNetNuke.Entities.Modules.EventMessageProcessor, DotNetNuke";
                oAppStartMessage.Attributes.Add("ProcessCommand", "UpgradeModule");
                oAppStartMessage.Attributes.Add("BusinessControllerClass", ModuleInfo.BusinessControllerClass);
                oAppStartMessage.Attributes.Add("DesktopModuleId", ModuleInfo.DesktopModuleID.ToString());
                oAppStartMessage.Attributes.Add("UpgradeVersionsList", UpgradeVersionsList);
                oAppStartMessage.Priority = MessagePriority.High;
                oAppStartMessage.SentDate = DateTime.Now;
                //make it expire as soon as it's processed
                oAppStartMessage.ExpirationDate = DateTime.Now.AddYears(-1);
                //send it
                EventQueueController oEventQueueController = new EventQueueController();
                oEventQueueController.SendMessage(oAppStartMessage, "Application_Start");
            }
            //TODO: Need to implement a feedback loop to display the results of the upgrade.

            return("");
        }
        /// <summary>Called when a module is upgraded.</summary>
        /// <param name="version">The version.</param>
        /// <returns>Success if all goes well, otherwise, Failed</returns>
        public string UpgradeModule(string version)
        {
            try
            {
                switch (version)
                {
                case "07.04.00":
                    const string ResourceFile    = ModuleFolder + "/App_LocalResources/ProviderConfiguration.ascx.resx";
                    string       pageName        = Localization.GetString("HTMLEditorPageName", ResourceFile);
                    string       pageDescription = Localization.GetString("HTMLEditorPageDescription", ResourceFile);

                    // Create HTML Editor Config Page (or get existing one)
                    TabInfo editorPage = Upgrade.AddHostPage(pageName, pageDescription, ModuleFolder + "/images/HtmlEditorManager_Standard_16x16.png", ModuleFolder + "/images/HtmlEditorManager_Standard_32x32.png", true);

                    // Find the RadEditor control and remove it
                    Upgrade.RemoveModule("RadEditor Manager", editorPage.TabName, editorPage.ParentId, false);

                    // Add Module To Page
                    int moduleDefId = this.GetModuleDefinitionID("DotNetNuke.HtmlEditorManager", "Html Editor Management");
                    Upgrade.AddModuleToPage(editorPage, moduleDefId, pageName, ModuleFolder + "/images/HtmlEditorManager_Standard_32x32.png", true);

                    foreach (var item in DesktopModuleController.GetDesktopModules(Null.NullInteger))
                    {
                        DesktopModuleInfo moduleInfo = item.Value;

                        if (moduleInfo.ModuleName == "DotNetNuke.HtmlEditorManager")
                        {
                            moduleInfo.Category = "Host";
                            DesktopModuleController.SaveDesktopModule(moduleInfo, false, false);
                        }
                    }

                    break;
                }
            }
            catch (Exception ex)
            {
                var xlc = new ExceptionLogController();
                xlc.AddLog(ex);

                return("Failed");
            }

            return("Success");
        }
        protected void cmdDeleteDefinition_Click(object sender, EventArgs e)
        {
            var objModuleDefinitions = new ModuleDefinitionController();

            objModuleDefinitions.DeleteModuleDefinition(ModuleDefinitionID);

            //Force Definitions list to refresh by rebinding DesktopModule
            ModuleDefinitionID = Null.NullInteger;
            _ModuleDefinition  = null;
            _DesktopModule     = null;

            //empty definition form's content
            definitionsEditor.Items.ForEach(i =>
            {
                i.Value = null;
            });
            BindDesktopModule(true);
        }
        public void DeleteExtensionPackage(PackageInfo package)
        {
            switch (package.PackageType)
            {
            case "Auth_System":
                AuthenticationInfo authSystem = AuthenticationController.GetAuthenticationServiceByPackageID(package.PackageID);
                if (authSystem != null)
                {
                    AuthenticationController.DeleteAuthentication(authSystem);
                }

                break;

            case "CoreLanguagePack":
                LanguagePackInfo languagePack = LanguagePackController.GetLanguagePackByPackage(package.PackageID);
                if (languagePack != null)
                {
                    LanguagePackController.DeleteLanguagePack(languagePack);
                }

                break;

            case "Module":
                var controller = new DesktopModuleController();
                DesktopModuleInfo desktopModule = DesktopModuleController.GetDesktopModuleByPackageID(package.PackageID);
                if (desktopModule != null)
                {
                    controller.DeleteDesktopModule(desktopModule);
                }

                break;

            case "SkinObject":
                SkinControlInfo skinControl = SkinControlController.GetSkinControlByPackageID(package.PackageID);
                if (skinControl != null)
                {
                    SkinControlController.DeleteSkinControl(skinControl);
                }

                break;
            }

            DeletePackageInternal(package);
        }
        public ModulePackageDetailDto(int portalId, PackageInfo package, DesktopModuleInfo desktopModule) : base(portalId, package)
        {
            DesktopModuleId    = desktopModule.DesktopModuleID;
            ModuleName         = desktopModule.ModuleName;
            FolderName         = desktopModule.FolderName;
            BusinessController = desktopModule.BusinessControllerClass;
            Category           = desktopModule.Category;
            Dependencies       = desktopModule.Dependencies;
            HostPermissions    = desktopModule.Permissions;
            Portable           = desktopModule.IsPortable;
            Searchable         = desktopModule.IsSearchable;
            Upgradeable        = desktopModule.IsUpgradeable;
            PremiumModule      = desktopModule.IsPremium;
            Shareable          = desktopModule.Shareable;

            if (!desktopModule.IsAdmin)
            {
                var portalDesktopModules =
                    DesktopModuleController.GetPortalDesktopModulesByDesktopModuleID(desktopModule.DesktopModuleID);
                foreach (var portalDesktopModuleInfo in portalDesktopModules)
                {
                    var value = portalDesktopModuleInfo.Value;
                    AssignedPortals.Add(new ListItemDto {
                        Id = value.PortalID, Name = value.PortalName
                    });
                }

                var assignedIds = AssignedPortals.Select(p => p.Id).ToArray();
                var allPortals  = PortalController.Instance.GetPortals().OfType <PortalInfo>().Where(p => !assignedIds.Contains(p.PortalID));

                foreach (var portalInfo in allPortals)
                {
                    UnassignedPortals.Add(new ListItemDto {
                        Id = portalInfo.PortalID, Name = portalInfo.PortalName
                    });
                }
            }

            foreach (var moduleDefinition in desktopModule.ModuleDefinitions.Values)
            {
                ModuleDefinitions.Add(new ModuleDefinitionDto(moduleDefinition));
            }
        }
Exemple #18
0
        private int GetModuleDefinitionID()
        {
            // get desktop module
            DesktopModuleInfo desktopModule = DesktopModuleController.GetDesktopModuleByModuleName("DotNetNuke.RadEditorProvider", Null.NullInteger);

            if (desktopModule == null)
            {
                return(-1);
            }

            //get module definition
            ModuleDefinitionInfo moduleDefinition = ModuleDefinitionController.GetModuleDefinitionByFriendlyName("RadEditor Manager", desktopModule.DesktopModuleID);

            if (moduleDefinition == null)
            {
                return(-1);
            }

            return(moduleDefinition.ModuleDefID);
        }
Exemple #19
0
        protected override DesktopModuleInfo GetDesktopModuleSettings(DesktopModuleInfo objDesktopModule, PaFolder Folder)
        {
            // call the V2 implementation to load the values
            objDesktopModule = base.GetDesktopModuleSettings(objDesktopModule, Folder);

            // V3 .dnn file format adds the optional businesscontrollerclass node to the folder node element
            objDesktopModule.BusinessControllerClass = Folder.BusinessControllerClass;

            // V4.3.6 .dnn file format adds the optional compatibleversions node to the folder node element
            objDesktopModule.CompatibleVersions = Folder.CompatibleVersions;

            //V3.1 adds the IsSearchable/IsPortable properties - set them to false
            objDesktopModule.IsSearchable = false;
            objDesktopModule.IsPortable   = false;

            //Create an instance of the business controller and determine the values of IsSearchable and
            //IsPortable by Reflection
            try
            {
                if (!String.IsNullOrEmpty(objDesktopModule.BusinessControllerClass))
                {
                    object objController = Reflection.CreateObject(objDesktopModule.BusinessControllerClass, objDesktopModule.BusinessControllerClass);
                    if (objController is ISearchable)
                    {
                        objDesktopModule.IsSearchable = true;
                    }
                    if (objController is IPortable)
                    {
                        objDesktopModule.IsPortable = true;
                    }
                }
            }
            catch
            {
                //this code may not work because the module may have just been upgraded and did not have
                //the BusinessControllerClass in the version that is currently in the Application Domain
                //if this is the case, then the updating of thos features will be handled after the application is restarted
            }

            return(objDesktopModule);
        }
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// The ReadManifest method reads the manifest file for the Module compoent.
        /// </summary>
        /// -----------------------------------------------------------------------------
        public override void ReadManifest(XPathNavigator manifestNav)
        {
            // Load the Desktop Module from the manifest
            this._desktopModule = CBO.DeserializeObject <DesktopModuleInfo>(new StringReader(manifestNav.InnerXml));

            this._desktopModule.FriendlyName       = this.Package.FriendlyName;
            this._desktopModule.Description        = this.Package.Description;
            this._desktopModule.Version            = Globals.FormatVersion(this.Package.Version, "00", 4, ".");
            this._desktopModule.CompatibleVersions = Null.NullString;
            this._desktopModule.Dependencies       = Null.NullString;
            this._desktopModule.Permissions        = Null.NullString;
            if (string.IsNullOrEmpty(this._desktopModule.BusinessControllerClass))
            {
                this._desktopModule.SupportedFeatures = 0;
            }

            this._eventMessage = this.ReadEventMessageNode(manifestNav);

            // Load permissions (to add)
            foreach (XPathNavigator moduleDefinitionNav in manifestNav.Select("desktopModule/moduleDefinitions/moduleDefinition"))
            {
                string friendlyName = Util.ReadElement(moduleDefinitionNav, "friendlyName");
                foreach (XPathNavigator permissionNav in moduleDefinitionNav.Select("permissions/permission"))
                {
                    var permission = new PermissionInfo();
                    permission.PermissionCode = Util.ReadAttribute(permissionNav, "code");
                    permission.PermissionKey  = Util.ReadAttribute(permissionNav, "key");
                    permission.PermissionName = Util.ReadAttribute(permissionNav, "name");
                    ModuleDefinitionInfo moduleDefinition = this._desktopModule.ModuleDefinitions[friendlyName];
                    if (moduleDefinition != null)
                    {
                        moduleDefinition.Permissions.Add(permission.PermissionKey, permission);
                    }
                }
            }

            if (this.Log.Valid)
            {
                this.Log.AddInfo(Util.MODULE_ReadSuccess);
            }
        }
 private void DeleteModule()
 {
     try
     {
         DesktopModuleInfo tempDesktopModule = DesktopModuleController.GetDesktopModuleByPackageID(Package.PackageID);
         if (tempDesktopModule != null)
         {
             if ((DesktopModule != null) && (!string.IsNullOrEmpty(DesktopModule.CodeSubDirectory)))
             {
                 Config.RemoveCodeSubDirectory(DesktopModule.CodeSubDirectory);
             }
             DesktopModuleController controller = new DesktopModuleController();
             controller.DeleteDesktopModule(tempDesktopModule);
         }
         Log.AddInfo(string.Format(Util.MODULE_UnRegistered, tempDesktopModule.ModuleName));
     }
     catch (Exception ex)
     {
         Log.AddFailure(ex);
     }
 }
 public override void Install()
 {
     try
     {
         InstalledDesktopModule = DesktopModuleController.GetDesktopModuleByModuleName(DesktopModule.ModuleName, Package.InstallerInfo.PortalID);
         if (InstalledDesktopModule != null)
         {
             DesktopModule.DesktopModuleID = InstalledDesktopModule.DesktopModuleID;
         }
         DataCache.RemoveCache(DataCache.ModuleDefinitionCacheKey);
         DataCache.RemoveCache(DataCache.ModuleControlsCacheKey);
         DesktopModule.PackageID       = Package.PackageID;
         DesktopModule.DesktopModuleID = DesktopModuleController.SaveDesktopModule(DesktopModule, true, false);
         Completed = true;
         Log.AddInfo(string.Format(Util.MODULE_Registered, DesktopModule.ModuleName));
     }
     catch (Exception ex)
     {
         Log.AddFailure(ex);
     }
 }
Exemple #23
0
        private ModuleApplication GetModuleApplication(DesktopModuleInfo desktopModule, RouteData defaultRouteData)
        {
            ModuleApplication moduleApplication = null;

            // Check if the MVC Module overrides the base ModuleApplication class.
            var businessControllerClass = desktopModule.BusinessControllerClass;

            if (!string.IsNullOrEmpty(businessControllerClass))
            {
                var moduleApplicationType = Reflection.CreateType(businessControllerClass);
                if (moduleApplicationType != null)
                {
                    moduleApplication = Reflection.CreateInstance(moduleApplicationType) as ModuleApplication;
                    if (moduleApplication != null)
                    {
                        defaultRouteData.Values["controller"]     = moduleApplication.DefaultControllerName;
                        defaultRouteData.Values["action"]         = moduleApplication.DefaultActionName;
                        defaultRouteData.DataTokens["namespaces"] = moduleApplication.DefaultNamespaces;
                    }
                }
            }

            if (moduleApplication == null)
            {
                var defaultControllerName = (string)defaultRouteData.Values["controller"];
                var defaultActionName     = (string)defaultRouteData.Values["action"];
                var defaultNamespaces     = (string[])defaultRouteData.DataTokens["namespaces"];

                moduleApplication = new ModuleApplication
                {
                    DefaultActionName     = defaultControllerName,
                    DefaultControllerName = defaultActionName,
                    DefaultNamespaces     = defaultNamespaces,
                    ModuleName            = desktopModule.ModuleName,
                    FolderPath            = desktopModule.FolderName,
                };
            }

            return(moduleApplication);
        }
        /// <summary>Gets the module definition identifier.</summary>
        /// <param name="moduleName">Name of the module.</param>
        /// <param name="moduleDefinitionName">Name of the module definition.</param>
        /// <returns>The Module Id for the HTML Editor Management module</returns>
        private int GetModuleDefinitionID(string moduleName, string moduleDefinitionName)
        {
            // get desktop module
            DesktopModuleInfo desktopModule = DesktopModuleController.GetDesktopModuleByModuleName(moduleName, Null.NullInteger);

            if (desktopModule == null)
            {
                return(-1);
            }

            // get module definition
            ModuleDefinitionInfo moduleDefinition = ModuleDefinitionController.GetModuleDefinitionByDefinitionName(
                moduleDefinitionName,
                desktopModule.DesktopModuleID);

            if (moduleDefinition == null)
            {
                return(-1);
            }

            return(moduleDefinition.ModuleDefID);
        }
        private void DeleteProvider()
        {
            try
            {
                //Attempt to get the Desktop Module
                //Attempt to get the Desktop Module
                DesktopModuleInfo desktopModule = DesktopModuleController.GetDesktopModuleByPackageID(Package.PackageID);

                ExtensionUrlProviderInfo tempUrlProvider = ExtensionUrlProviderController.GetProviders(Null.NullInteger)
                                                           .SingleOrDefault(p => p.DesktopModuleId == desktopModule.DesktopModuleID);
                if (tempUrlProvider != null)
                {
                    ExtensionUrlProviderController.DeleteProvider(tempUrlProvider);

                    Log.AddInfo(string.Format(Util.URLPROVIDER_UnRegistered, tempUrlProvider.ProviderName));
                }
            }
            catch (Exception ex)
            {
                Log.AddFailure(ex);
            }
        }
Exemple #26
0
    /// <summary>
    /// Check if the module has been activated somewhere
    /// </summary>
    /// <param name="dmi"></param>
    /// <returns></returns>
    public bool IsInPage(DesktopModuleInfo dmi)
    {
        PortalSettings portalSettings = new PortalSettings();
        int            portalId       = portalSettings.PortalId;
        TabController  TC             = new TabController();

        foreach (TabInfo ti in TC.GetTabsByPortal(portalId).Values)
        {
            //We don't look for deleted pages
            if (!ti.IsDeleted)
            {
                foreach (ModuleInfo mi in ti.ChildModules.Values)
                {
                    if (mi.FriendlyName == dmi.FriendlyName && mi.DesktopModuleID == dmi.DesktopModuleID && !mi.IsDeleted /*The module is not activated if it is deleted*/)
                    {
                        return(true);
                    }
                }
            }
        }
        return(false);
    }
        public string UpgradeModule(string Version)
        {
            try
            {
                switch (Version)
                {
                case "01.00.00":
                    ModuleDefinitionInfo moduleDefinition = ModuleDefinitionController.GetModuleDefinitionByFriendlyName("Taxonomy Manager");

                    if (moduleDefinition != null)
                    {
                        //Add Module to Admin Page for all Portals
                        Upgrade.AddAdminPages("Taxonomy",
                                              "Manage the Taxonomy for your Site",
                                              "~/images/icon_tag_16px.gif",
                                              "~/images/icon_tag_32px.gif",
                                              true,
                                              moduleDefinition.ModuleDefID,
                                              "Taxonomy Manager",
                                              "~/images/icon_tag_32px.gif",
                                              true);
                    }
                    break;

                case "06.00.00":
                    DesktopModuleInfo desktopModule = DesktopModuleController.GetDesktopModuleByModuleName("DotNetNuke.Taxonomy", Null.NullInteger);
                    desktopModule.Category = "Admin";
                    DesktopModuleController.SaveDesktopModule(desktopModule, false, false);
                    break;
                }
                return("Success");
            }
            catch (Exception exc)
            {
                Logger.Error(exc);

                return("Failed");
            }
        }
Exemple #28
0
        private static void AddClientResourceAdminHostPage()
        {
            DesktopModuleInfo    desktopModule    = DesktopModuleController.GetDesktopModuleByModuleName(Constants.ModuleName, Null.NullInteger);
            ModuleDefinitionInfo moduleDefinition = desktopModule.ModuleDefinitions[Constants.ModuleDefinitionName];

            // Remove the page if it already exists to ensure the page can be added.
            // Handles cases where the page has been removed by the user.
            try
            {
                Upgrade.RemoveHostPage(Localization.GetString("PageName", ResourceFileRelativePath));
            }
            catch
            {
                // Do nothing.
            }

            TabInfo hostPage = Upgrade.AddHostPage(Localization.GetString("PageName", ResourceFileRelativePath),
                                                   Localization.GetString("PageDescription", ResourceFileRelativePath),
                                                   Constants.ConfigIconFileThumbNail,
                                                   Constants.ConfigIconFileLarge, true);

            Upgrade.AddModuleToPage(hostPage, moduleDefinition.ModuleDefID, Localization.GetString("ModuleTitle", ResourceFileRelativePath), Constants.ConfigIconFileLarge, true);
        }
        /// <summary>
        /// 添加新的模块
        /// </summary>
        public Int32 AddNewModule(TabInfo CurrentTab)
        {
            //找到HTML模块的编号
            int desktopModuleId          = 0;
            int ModuleId                 = 0;
            DesktopModuleInfo deskModule = DesktopModuleController.GetDesktopModuleByModuleName("DNNGo.ThemePlugin", BSkin.PortalSettings.PortalId);

            if (deskModule != null && deskModule.DesktopModuleID > 0)
            {
                desktopModuleId = deskModule.DesktopModuleID;



                var list = TabModulesController.Instance.GetTabModules(new TabInfo()
                {
                    TabID = CurrentTab.TabID
                }).Cast <ModuleInfo>().ToList();
                if (list != null && list.Count > 0)
                {
                    ModuleInfo mInfo = list.Find(r => BSkin.ModuleProperty(r, "ModuleName") == "DNNGo.ThemePlugin");

                    if (!(mInfo != null && mInfo.ModuleID > 0))
                    {
                        ModuleId = AddNewModule("DNNGo ThemePlugin", desktopModuleId, CurrentTab, "ContentPane", -1, ViewPermissionType.View, "");
                    }
                    else
                    {
                        ModuleId = mInfo.ModuleID;
                    }
                }
                else
                {
                    ModuleId = AddNewModule("DNNGo ThemePlugin", desktopModuleId, CurrentTab, "ContentPane", -1, ViewPermissionType.View, "");
                }
            }
            return(ModuleId);
        }
        private static bool GetIsPortable(string moduleID, string tabID)
        {
            bool isPortable = false;
            int  parsedModuleID;
            int  parsedTabID;

            bool validModuleID = int.TryParse(moduleID, out parsedModuleID);
            bool validTabID    = int.TryParse(tabID, out parsedTabID);

            if (validModuleID && validTabID)
            {
                ModuleInfo moduleInfo = ModuleController.Instance.GetModule(parsedModuleID, parsedTabID, false);
                if (moduleInfo != null)
                {
                    DesktopModuleInfo moduleDesktopInfo = moduleInfo.DesktopModule;
                    if (moduleDesktopInfo != null)
                    {
                        isPortable = moduleDesktopInfo.IsPortable;
                    }
                }
            }

            return(isPortable);
        }