From 36f14f331bb58fa476b0ae34267e5255359add65 Mon Sep 17 00:00:00 2001 From: Daniel Valadas Date: Sun, 18 Oct 2020 00:35:56 -0400 Subject: [PATCH] Removed Module Creator from distribution - Removes the Module Creator admin module from the distribution as per it's move to https://github.com/DNNCommunity/Dnn.ModuleCreator/releases/tag/v9.8.1 - Also reduces build warnings by about 46 --- .../Components/BusinessController.cs | 1 - .../Dnn.Modules.ModuleCreator/08.00.00.txt | 2 - .../App_LocalResources/CreateModule.ascx.resx | 180 ------ .../App_LocalResources/ViewSource.ascx.resx | 222 -------- .../Components/BusinessController.cs | 42 -- .../CreateModule.ascx | 41 -- .../CreateModule.ascx.cs | 436 --------------- .../CreateModule.ascx.designer.cs | 154 ----- .../Dnn.Modules.ModuleCreator.csproj | 265 --------- .../Dnn.Modules.ModuleCreator/Module.build | 47 -- .../Properties/AssemblyInfo.cs | 21 - .../Templates/C#/Class File/readme.txt | 10 - .../Templates/C#/Class File/template.cs | 18 - .../Templates/C#/DAL2/01.00.00.sql | 35 -- .../Templates/C#/DAL2/readme.txt | 13 - .../Templates/C#/DAL2/templateController.cs | 67 --- .../Templates/C#/DAL2/templateInfo.cs | 30 - .../Templates/C#/DAL2/uninstall.sql | 12 - .../C#/Module - Inline Script/readme.txt | 8 - .../C#/Module - Inline Script/template.ascx | 74 --- .../Module - Inline Script/template.ascx.resx | 9 - .../C#/Module - Razor/_template.cshtml | 24 - .../Templates/C#/Module - Razor/readme.txt | 8 - .../Module - User Control/_CONTROL_.ascx.cs | 52 -- .../C#/Module - User Control/readme.txt | 9 - .../C#/Module - User Control/template.ascx | 28 - .../Module - User Control/template.ascx.resx | 9 - .../Templates/C#/Scheduled Job/readme.txt | 10 - .../Templates/C#/Scheduled Job/templateJob.cs | 41 -- .../C#/Settings - User Control/Settings.ascx | 20 - .../Settings - User Control/Settings.ascx.cs | 53 -- .../Settings.ascx.resx | 9 - .../C#/Settings - User Control/readme.txt | 10 - .../Templates/C#/Web Service API/readme.txt | 11 - .../Web Service API/templateAPIController.cs | 26 - .../C#/Web Service API/templateRouteMapper.cs | 20 - .../Templates/VB/Class File/readme.txt | 10 - .../Templates/VB/Class File/template.vb | 20 - .../Templates/VB/DAL2/01.00.00.sql | 35 -- .../Templates/VB/DAL2/readme.txt | 13 - .../Templates/VB/DAL2/templateController.vb | 60 -- .../Templates/VB/DAL2/templateInfo.vb | 89 --- .../Templates/VB/DAL2/uninstall.sql | 12 - .../VB/Module - Inline Script/readme.txt | 8 - .../VB/Module - Inline Script/template.ascx | 70 --- .../Module - Inline Script/template.ascx.resx | 9 - .../VB/Module - Razor/_template.vbhtml | 24 - .../Templates/VB/Module - Razor/readme.txt | 8 - .../Module - User Control/_CONTROL_.ascx.vb | 49 -- .../VB/Module - User Control/readme.txt | 9 - .../VB/Module - User Control/template.ascx | 28 - .../Module - User Control/template.ascx.resx | 9 - .../Templates/VB/Scheduled Job/readme.txt | 10 - .../Templates/VB/Scheduled Job/templateJob.vb | 45 -- .../VB/Settings - User Control/Settings.ascx | 20 - .../Settings.ascx.resx | 9 - .../Settings - User Control/Settings.ascx.vb | 49 -- .../VB/Settings - User Control/readme.txt | 10 - .../Templates/VB/Web Service API/readme.txt | 11 - .../VB/Web Service API/templateController.vb | 29 - .../VB/Web Service API/templateRouteMapper.vb | 23 - .../Templates/Web/HTML Document/readme.txt | 8 - .../Templates/Web/HTML Document/template.html | 0 .../Templates/Web/JavaScript/readme.txt | 8 - .../Templates/Web/JavaScript/template.js | 0 .../Templates/Web/Module - HTML/readme.txt | 9 - .../Templates/Web/Module - HTML/template.ascx | 57 -- .../Templates/Web/Module - HTML/template.html | 20 - .../Templates/Web/Style Sheet/Module.css | 0 .../Templates/Web/Style Sheet/readme.txt | 8 - .../Templates/Web/XML Document/readme.txt | 8 - .../Templates/Web/XML Document/template.xml | 0 .../dnn_ModuleCreator.dnn | 82 --- .../Dnn.Modules.ModuleCreator/icon.png | Bin 1992 -> 0 bytes .../js/ModuleCreator.js | 15 - .../Dnn.Modules.ModuleCreator/license.txt | 23 - .../Dnn.Modules.ModuleCreator/logo.png | Bin 79760 -> 0 bytes .../Dnn.Modules.ModuleCreator/module.css | 9 - .../Dnn.Modules.ModuleCreator/packages.config | 6 - .../releaseNotes.txt | 14 - .../Dnn.Modules.ModuleCreator/viewsource.ascx | 150 ----- .../viewsource.ascx.cs | 526 ------------------ .../viewsource.ascx.designer.cs | 199 ------- .../Dnn.Modules.ModuleCreator/web.config | 11 - DNN_Platform.sln | 25 - 85 files changed, 3854 deletions(-) delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/08.00.00.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/App_LocalResources/CreateModule.ascx.resx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/App_LocalResources/ViewSource.ascx.resx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Components/BusinessController.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx.designer.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Dnn.Modules.ModuleCreator.csproj delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Module.build delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Properties/AssemblyInfo.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Class File/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Class File/template.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/01.00.00.sql delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/templateController.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/templateInfo.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/uninstall.sql delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/template.ascx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/template.ascx.resx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Razor/_template.cshtml delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Razor/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/_CONTROL_.ascx.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/template.ascx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/template.ascx.resx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Scheduled Job/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Scheduled Job/templateJob.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx.resx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/templateAPIController.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/templateRouteMapper.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Class File/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Class File/template.vb delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/01.00.00.sql delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/templateController.vb delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/templateInfo.vb delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/uninstall.sql delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/template.ascx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/template.ascx.resx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Razor/_template.vbhtml delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Razor/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/_CONTROL_.ascx.vb delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/template.ascx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/template.ascx.resx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Scheduled Job/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Scheduled Job/templateJob.vb delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx.resx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx.vb delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/templateController.vb delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/templateRouteMapper.vb delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/HTML Document/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/HTML Document/template.html delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/JavaScript/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/JavaScript/template.js delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/template.ascx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/template.html delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Style Sheet/Module.css delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Style Sheet/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/XML Document/readme.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/XML Document/template.xml delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/dnn_ModuleCreator.dnn delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/icon.png delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/js/ModuleCreator.js delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/license.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/logo.png delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/module.css delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/packages.config delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/releaseNotes.txt delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx.designer.cs delete mode 100644 DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/web.config diff --git a/DNN Platform/Admin Modules/Dnn.Modules.Console/Components/BusinessController.cs b/DNN Platform/Admin Modules/Dnn.Modules.Console/Components/BusinessController.cs index f88a0ce01fb..338be8d95c3 100644 --- a/DNN Platform/Admin Modules/Dnn.Modules.Console/Components/BusinessController.cs +++ b/DNN Platform/Admin Modules/Dnn.Modules.Console/Components/BusinessController.cs @@ -9,7 +9,6 @@ namespace Dnn.Modules.Console.Components using DotNetNuke.Entities.Modules; /// Implements the module's business controller interface(s). - public class BusinessController : IUpgradeable { /// diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/08.00.00.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/08.00.00.txt deleted file mode 100644 index 4c2a0e77258..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/08.00.00.txt +++ /dev/null @@ -1,2 +0,0 @@ -DesktopModules/Admin/ModuleCreator/CreateModule.ascx.cs -DesktopModules/Admin/ModuleCreator/ViewSource.ascx.cs \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/App_LocalResources/CreateModule.ascx.resx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/App_LocalResources/CreateModule.ascx.resx deleted file mode 100644 index 03383c99763..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/App_LocalResources/CreateModule.ascx.resx +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Module Builder - - - Owner Name: - - - Developers are encouraged to use a unique namespace for their modules to avoid potential clashes with other developers. Specify the name of your organization or company and it will be used as a prefix. - - - Module Name: - - - A unique name for the module. - - - Description: - - - Optionally provide a description for the module. - - - Language: - - - Select your preferred language for developing the module. - - - C# - - - Visual Basic - - - Template: - - - Select your preferred module development template. Module development templates are stored in the Modules subfolder within the Host Root folder. - - - Control Name: - - - Enter a unique name for the module control. - - - Create Module - - - You must provide the Owner Name and Module Name and select a Module Template. - - - You must be a Super User to create new modules. - - - A module already exists with the name specified. - - - An error occurred when reading the selected module template files. - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/App_LocalResources/ViewSource.ascx.resx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/App_LocalResources/ViewSource.ascx.resx deleted file mode 100644 index 6666649d085..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/App_LocalResources/ViewSource.ascx.resx +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Update - - - View Source - - - You can view the file's contents in the text box below. If you are running on a local machine then you can also edit and modify the source. - - - Location: - - - Source File - {0} - - - Select a file whose source you want to view. - - - Select File: - - - You must select a File Type to edit before clicking the Update button. - - - Language: - - - Select your preferred language for developing the module. - - - C# - - - Visual Basic - - - Template: - - - Select your preferred module development template. Module development templates are stored in the Templates subfolder within the Module Creator module folder. - - - Control Name: - - - A unique name for the module control. - - - Control Type: - - - Select the type of control. - - - Create - - - The file was successfully created. - - - The file was updated successfully. - - - The Folder Name identified for this module does not exist. Please review the settings for this module in Host - Extensions. - - - You must select a module template and provide a control name. - - - Create Package - - - Configure - - - Add - - - Edit - - - Add File - - - Edit File - - - Code Snippets - - - Save - - - Save As - - - Delete Snippet? - - - View - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Components/BusinessController.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Components/BusinessController.cs deleted file mode 100644 index 412c85bde46..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Components/BusinessController.cs +++ /dev/null @@ -1,42 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information - -namespace Dnn.Modules.ModuleCreator.Components -{ - using System; - - using DotNetNuke.Entities.Modules; - using DotNetNuke.Entities.Modules.Definitions; - using DotNetNuke.Services.Upgrade; - - /// - /// - /// - public class BusinessController : IUpgradeable - { - /// - /// - /// - /// - /// - public string UpgradeModule(string version) - { - try - { - switch (version) - { - case "08.00.00": - - break; - } - - return "Success"; - } - catch (Exception) - { - return "Failed"; - } - } - } -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx deleted file mode 100644 index 2791381c399..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx +++ /dev/null @@ -1,41 +0,0 @@ -<%@ Control Language="C#" AutoEventWireup="false" Inherits="Dnn.Module.ModuleCreator.CreateModule" Codebehind="CreateModule.ascx.cs" %> -<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %> -<%@ Register TagPrefix="dnn" Assembly="DotNetNuke" Namespace="DotNetNuke.UI.WebControls" %> - -
- -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
    -
  • -
-
- -
-
-
- diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx.cs deleted file mode 100644 index de7fb703e0c..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx.cs +++ /dev/null @@ -1,436 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information -namespace Dnn.Module.ModuleCreator -{ - using System; - using System.Collections.Generic; - using System.IO; - using System.Web.UI.WebControls; - - using DotNetNuke.Abstractions; - using DotNetNuke.Common; - using DotNetNuke.Common.Utilities; - using DotNetNuke.Entities.Content.Taxonomy; - using DotNetNuke.Entities.Controllers; - using DotNetNuke.Entities.Modules; - using DotNetNuke.Entities.Modules.Definitions; - using DotNetNuke.Security; - using DotNetNuke.Services.Exceptions; - using DotNetNuke.Services.Installer.Packages; - using DotNetNuke.Services.Localization; - using DotNetNuke.Services.Log.EventLog; - using DotNetNuke.UI.Skins.Controls; - using Microsoft.Extensions.DependencyInjection; - - public partial class CreateModule : PortalModuleBase - { - private readonly INavigationManager _navigationManager; - - public CreateModule() - { - this._navigationManager = this.DependencyProvider.GetRequiredService(); - } - - protected override void OnInit(EventArgs e) - { - base.OnInit(e); - - this.optLanguage.SelectedIndexChanged += this.optLanguage_SelectedIndexChanged; - this.cboTemplate.SelectedIndexChanged += this.cboTemplate_SelectedIndexChanged; - this.cmdCreate.Click += this.cmdCreate_Click; - } - - protected override void OnLoad(EventArgs e) - { - base.OnLoad(e); - if (this.UserInfo.IsSuperUser) - { - if (!this.Page.IsPostBack) - { - Dictionary HostSettings = HostController.Instance.GetSettingsDictionary(); - if (HostSettings.ContainsKey("Owner")) - { - this.txtOwner.Text = HostSettings["Owner"]; - } - - this.LoadLanguages(); - this.LoadModuleTemplates(); - this.txtControl.Text = "View"; - } - } - else - { - DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("SuperUser.ErrorMessage", this.LocalResourceFile), ModuleMessage.ModuleMessageType.YellowWarning); - this.createForm.Visible = false; - } - } - - protected void optLanguage_SelectedIndexChanged(object sender, EventArgs e) - { - this.LoadModuleTemplates(); - } - - protected void cboTemplate_SelectedIndexChanged(object sender, EventArgs e) - { - this.LoadReadMe(); - } - - protected void cmdCreate_Click(object sender, EventArgs e) - { - if (this.UserInfo.IsSuperUser) - { - if (!string.IsNullOrEmpty(this.txtOwner.Text) && !string.IsNullOrEmpty(this.txtModule.Text) && this.cboTemplate.SelectedIndex > 0 && !string.IsNullOrEmpty(this.txtControl.Text)) - { - HostController.Instance.Update("Owner", this.txtOwner.Text, false); - if (this.CreateModuleDefinition()) - { - this.Response.Redirect(this._navigationManager.NavigateURL(), true); - } - } - else - { - DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("InputValidation.ErrorMessage", this.LocalResourceFile), ModuleMessage.ModuleMessageType.YellowWarning); - } - } - } - - private void LoadReadMe() - { - var readMePath = this.Server.MapPath(this.ControlPath) + "Templates\\" + this.optLanguage.SelectedValue + "\\" + this.cboTemplate.SelectedItem.Value + "\\readme.txt"; - if (File.Exists(readMePath)) - { - var readMe = Null.NullString; - using (TextReader tr = new StreamReader(readMePath)) - { - readMe = tr.ReadToEnd(); - tr.Close(); - this.lblDescription.Text = readMe.Replace("\n", "
"); - } - } - else - { - this.lblDescription.Text = string.Empty; - } - } - - private void LoadLanguages() - { - this.optLanguage.Items.Clear(); - var moduleTemplatePath = this.Server.MapPath(this.ControlPath) + "Templates"; - string[] folderList = Directory.GetDirectories(moduleTemplatePath); - foreach (string folderPath in folderList) - { - this.optLanguage.Items.Add(new ListItem(Path.GetFileName(folderPath))); - } - - this.optLanguage.SelectedIndex = 0; - } - - private void LoadModuleTemplates() - { - this.cboTemplate.Items.Clear(); - var moduleTemplatePath = this.Server.MapPath(this.ControlPath) + "Templates\\" + this.optLanguage.SelectedValue; - string[] folderList = Directory.GetDirectories(moduleTemplatePath); - foreach (string folderPath in folderList) - { - if (Path.GetFileName(folderPath).ToLowerInvariant().StartsWith("module")) - { - this.cboTemplate.Items.Add(new ListItem(Path.GetFileName(folderPath))); - } - } - - this.cboTemplate.Items.Insert(0, new ListItem("<" + Localization.GetString("Not_Specified", Localization.SharedResourceFile) + ">", string.Empty)); - if (this.cboTemplate.Items.FindByText("Module - User Control") != null) - { - this.cboTemplate.Items.FindByText("Module - User Control").Selected = true; - } - else - { - this.cboTemplate.SelectedIndex = 0; - } - - this.LoadReadMe(); - } - - private void CreateModuleFolder() - { - var moduleFolderPath = Globals.ApplicationMapPath + "\\DesktopModules\\" + this.GetFolderName().Replace("/", "\\"); - - if (!Directory.Exists(moduleFolderPath)) - { - Directory.CreateDirectory(moduleFolderPath); - } - } - - private string CreateModuleControl() - { - var moduleTemplatePath = this.Server.MapPath(this.ControlPath) + "Templates\\" + this.optLanguage.SelectedValue + "\\" + this.cboTemplate.SelectedValue + "\\"; - - EventLogController.Instance.AddLog("Processing Template Folder", moduleTemplatePath, this.PortalSettings, -1, EventLogController.EventLogType.HOST_ALERT); - - var controlName = Null.NullString; - var fileName = Null.NullString; - var modulePath = string.Empty; - var sourceCode = Null.NullString; - - // iterate through files in template folder - string[] fileList = Directory.GetFiles(moduleTemplatePath); - foreach (string filePath in fileList) - { - modulePath = this.Server.MapPath("DesktopModules/" + this.GetFolderName() + "/"); - - // open file - using (TextReader tr = new StreamReader(filePath)) - { - sourceCode = tr.ReadToEnd(); - tr.Close(); - } - - // replace tokens - sourceCode = sourceCode.Replace("_OWNER_", this.GetOwner()); - sourceCode = sourceCode.Replace("_MODULE_", this.GetModule()); - sourceCode = sourceCode.Replace("_CONTROL_", this.GetControl()); - sourceCode = sourceCode.Replace("_YEAR_", DateTime.Now.Year.ToString()); - - // get filename - fileName = Path.GetFileName(filePath); - fileName = fileName.Replace("template", this.GetControl()); - fileName = fileName.Replace("_OWNER_", this.GetOwner()); - fileName = fileName.Replace("_MODULE_", this.GetModule()); - fileName = fileName.Replace("_CONTROL_", this.GetControl()); - - switch (Path.GetExtension(filePath).ToLowerInvariant()) - { - 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.ToLowerInvariant().IndexOf(".ascx") == -1) - { - modulePath = modulePath.Replace("DesktopModules", "App_Code"); - } - - break; - case ".cs": - if (filePath.ToLowerInvariant().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 - using (TextWriter tw = new StreamWriter(modulePath + fileName)) - { - tw.WriteLine(sourceCode); - tw.Close(); - } - - EventLogController.Instance.AddLog("Created File", modulePath + fileName, this.PortalSettings, -1, EventLogController.EventLogType.HOST_ALERT); - } - } - - return controlName; - } - - private string GetOwner() - { - return this.txtOwner.Text.Replace(" ", string.Empty); - } - - private string GetModule() - { - return this.txtModule.Text.Replace(" ", string.Empty); - } - - private string GetControl() - { - return this.txtControl.Text.Replace(" ", string.Empty); - } - - private string GetFolderName() - { - var strFolder = Null.NullString; - strFolder += this.txtOwner.Text + "/" + this.txtModule.Text; - - // return folder and remove any spaces that might appear in folder structure - return strFolder.Replace(" ", string.Empty); - } - - private string GetClassName() - { - var strClass = Null.NullString; - strClass += this.txtOwner.Text + "." + this.txtModule.Text; - - // return class and remove any spaces that might appear in class name - return strClass.Replace(" ", string.Empty); - } - - /// - /// - /// - /// - private bool CreateModuleDefinition() - { - try - { - if (PackageController.Instance.GetExtensionPackage(Null.NullInteger, p => p.Name == this.GetClassName()) == null) - { - var controlName = Null.NullString; - - // Create module folder - this.CreateModuleFolder(); - - // Create module control - controlName = this.CreateModuleControl(); - if (controlName != string.Empty) - { - // Create package - var objPackage = new PackageInfo(); - objPackage.Name = this.GetClassName(); - objPackage.FriendlyName = this.txtModule.Text; - objPackage.Description = this.txtDescription.Text; - objPackage.Version = new Version(1, 0, 0); - objPackage.PackageType = "Module"; - objPackage.License = string.Empty; - objPackage.Owner = this.txtOwner.Text; - objPackage.Organization = this.txtOwner.Text; - objPackage.FolderName = "DesktopModules/" + this.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 objDesktopModule = new DesktopModuleInfo(); - objDesktopModule.DesktopModuleID = Null.NullInteger; - objDesktopModule.ModuleName = this.GetClassName(); - objDesktopModule.FolderName = this.GetFolderName(); - objDesktopModule.FriendlyName = this.txtModule.Text; - objDesktopModule.Description = this.txtDescription.Text; - objDesktopModule.IsPremium = false; - objDesktopModule.IsAdmin = false; - objDesktopModule.Version = "01.00.00"; - objDesktopModule.BusinessControllerClass = string.Empty; - objDesktopModule.CompatibleVersions = string.Empty; - objDesktopModule.AdminPage = string.Empty; - objDesktopModule.HostPage = string.Empty; - objDesktopModule.Dependencies = string.Empty; - objDesktopModule.Permissions = string.Empty; - objDesktopModule.PackageID = objPackage.PackageID; - objDesktopModule.DesktopModuleID = DesktopModuleController.SaveDesktopModule(objDesktopModule, false, true); - objDesktopModule = DesktopModuleController.GetDesktopModule(objDesktopModule.DesktopModuleID, Null.NullInteger); - - // 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 == this.txtOwner.Text) - { - termId = term.TermId; - } - } - - if (termId == -1) - { - termId = objTermController.AddTerm(new Term(vocabularyId) { Name = this.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 = this.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 = string.Empty; - objModuleControl.ControlSrc = "DesktopModules/" + this.GetFolderName() + "/" + controlName; - objModuleControl.ControlTitle = string.Empty; - objModuleControl.ControlType = SecurityAccessLevel.View; - objModuleControl.HelpURL = string.Empty; - objModuleControl.IconFile = string.Empty; - objModuleControl.ViewOrder = 0; - objModuleControl.SupportsPartialRendering = false; - objModuleControl.SupportsPopUps = false; - ModuleControlController.AddModuleControl(objModuleControl); - - // Update current module to reference new moduledefinition - var objModule = ModuleController.Instance.GetModule(this.ModuleId, this.TabId, false); - objModule.ModuleDefID = objModuleDefinition.ModuleDefID; - objModule.ModuleTitle = this.txtModule.Text; - - // HACK - need core enhancement to be able to update ModuleDefID - using (DotNetNuke.Data.DataProvider.Instance().ExecuteSQL( - "UPDATE {databaseOwner}{objectQualifier}Modules SET ModuleDefID=" + objModule.ModuleDefID + " WHERE ModuleID=" + this.ModuleId)) - { - } - - ModuleController.Instance.UpdateModule(objModule); - - return true; - } - else - { - DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("TemplateProblem.ErrorMessage", this.LocalResourceFile), ModuleMessage.ModuleMessageType.YellowWarning); - return false; - } - } - else - { - DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("AlreadyExists.ErrorMessage", this.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; - } - } - } -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx.designer.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx.designer.cs deleted file mode 100644 index e6c46ed3df3..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/CreateModule.ascx.designer.cs +++ /dev/null @@ -1,154 +0,0 @@ -// -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT License. See LICENSE file in the project root for full license information. -// -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Dnn.Module.ModuleCreator { - - - public partial class CreateModule { - - /// - /// createForm control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.PlaceHolder createForm; - - /// - /// plOwner control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plOwner; - - /// - /// txtOwner control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtOwner; - - /// - /// plModule control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plModule; - - /// - /// txtModule control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtModule; - - /// - /// plDescription control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plDescription; - - /// - /// txtDescription control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtDescription; - - /// - /// plLanguage control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plLanguage; - - /// - /// optLanguage control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.RadioButtonList optLanguage; - - /// - /// plTemplate control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plTemplate; - - /// - /// cboTemplate control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.DropDownList cboTemplate; - - /// - /// plControl control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plControl; - - /// - /// txtControl control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtControl; - - /// - /// cmdCreate control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.LinkButton cmdCreate; - - /// - /// lblDescription control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Label lblDescription; - } -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Dnn.Modules.ModuleCreator.csproj b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Dnn.Modules.ModuleCreator.csproj deleted file mode 100644 index 6d94c1368af..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Dnn.Modules.ModuleCreator.csproj +++ /dev/null @@ -1,265 +0,0 @@ - - - - - Debug - AnyCPU - - - 2.0 - {BD519B8A-169C-4328-BF67-62CD278435BC} - {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - Library - Properties - Dnn.Modules.ModuleCreator - Dnn.Modules.ModuleCreator - v4.7.2 - true - - - - - - - - - true - full - false - bin\ - DEBUG;TRACE - prompt - 4 - bin\Dnn.Modules.ModuleCreator.XML - 1591 - 7 - - - pdbonly - true - bin\ - TRACE - prompt - 4 - bin\Dnn.Modules.ModuleCreator.XML - 1591,1573 - 7 - - - - False - ..\..\DotNetNuke.WebUtility\bin\DotNetNuke.WebUtility.dll - - - - ..\..\..\packages\Microsoft.Extensions.DependencyInjection.2.1.1\lib\net461\Microsoft.Extensions.DependencyInjection.dll - - - ..\..\..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.2.1.1\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll - - - - - - - - - - - - - - - - - - - - - SolutionInfo.cs - - - - - CreateModule.ascx - ASPXCodeBehind - - - CreateModule.ascx - - - - - - ASPXCodeBehind - - - - Settings.ascx - - - - - viewsource.ascx - ASPXCodeBehind - - - viewsource.ascx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ASPXCodeBehind - - - - - - - ASPXCodeBehind - - - - - - - - - - - - - - - - - - - - - - - - - {6928A9B1-F88A-4581-A132-D3EB38669BB0} - DotNetNuke.Abstractions - - - {0fca217a-5f9a-4f5b-a31b-86d64ae65198} - DotNetNuke.DependencyInjection - - - {3cd5f6b8-8360-4862-80b6-f402892db7dd} - DotNetNuke.Instrumentation - - - {03e3afa5-ddc9-48fb-a839-ad4282ce237e} - DotNetNuke.Web.Client - - - {ee1329fe-fd88-4e1a-968c-345e394ef080} - DotNetNuke.Web - - - {6b29aded-7b56-4484-bea5-c0e09079535b} - DotNetNuke.Library - - - - - - - - Designer - - - - - - - - - - Settings.ascx.cs - - - Designer - - - - - - - - - - - - - - stylecop.json - - - - - - - - - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - - - - - - True - True - 56695 - / - http://localhost:56695/ - False - False - - - False - - - - - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Module.build b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Module.build deleted file mode 100644 index cfd56e7fc5c..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Module.build +++ /dev/null @@ -1,47 +0,0 @@ - - - - $(MSBuildProjectDirectory)\..\..\.. - - - - zip - dnn_ModuleCreator - DNNCE_ModuleCreator - $(WebsitePath)\DesktopModules\Admin\ModuleCreator - $(WebsiteInstallPath)\Module - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Properties/AssemblyInfo.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Properties/AssemblyInfo.cs deleted file mode 100644 index 1edae01b10f..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Dnn.Modules.ModuleCreator")] -[assembly: AssemblyDescription("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("151DE947-22E1-449E-8BAA-050AFE397E7C")] diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Class File/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Class File/readme.txt deleted file mode 100644 index 328e05c21bc..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Class File/readme.txt +++ /dev/null @@ -1,10 +0,0 @@ -Template Name : Class File -Compatible With: DNN 6.x, 7.x - -A Class File that will be created in App_Code - -template.cs - -*NOTE: When you create a Class File there will be a momentary delay while the DNN application restarts - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Class File/template.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Class File/template.cs deleted file mode 100644 index 793fcd6538c..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Class File/template.cs +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT License. See LICENSE file in the project root for full license information. -// -#region Using Statements - -using DotNetNuke.Entities.Modules; - -#endregion - -namespace _OWNER_._MODULE_ -{ - - public class _CONTROL_ - { - - } -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/01.00.00.sql b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/01.00.00.sql deleted file mode 100644 index 1528308519d..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/01.00.00.sql +++ /dev/null @@ -1,35 +0,0 @@ -/* - SQL Database Install Script - for _MODULE_ Module - Copyright (c) _YEAR_ - by _OWNER_ -*/ - -CREATE TABLE [dbo]._OWNER___MODULE_s -( - _MODULE_ID int IDENTITY(1,1) NOT NULL, - ModuleID int NOT NULL, - Title nvarchar(50) NOT NULL, - Description nvarchar(max) NOT NULL, - IsActive [bit] NOT NULL, - CreatedOnDate [datetime] NOT NULL, - CreatedByUserID [int] NOT NULL, - CONSTRAINT [PK__OWNER___MODULE_s] - PRIMARY KEY CLUSTERED ( [_MODULE_ID] ASC ) -) - - -GO - -ALTER TABLE [dbo]._OWNER___MODULE_s - ADD CONSTRAINT - FK__OWNER___MODULE_s_Modules FOREIGN KEY - ( - ModuleID - ) REFERENCES dbo.Modules - ( - ModuleID - ) ON UPDATE NO ACTION - ON DELETE CASCADE - NOT FOR REPLICATION -GO diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/readme.txt deleted file mode 100644 index 7783a206015..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Template Name : DAL2 -Compatible With: DNN 7.x - -A business object class, a controller class with data access methods, and a SQL installation and uninstallation script - -01.00.00.sql -templateInfo.cs -templateController.cs -uninstall.sql - -*NOTE: When you add this module template there will be a momentary delay while the DNN application restarts - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/templateController.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/templateController.cs deleted file mode 100644 index 9d7e3a546d7..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/templateController.cs +++ /dev/null @@ -1,67 +0,0 @@ -// -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT License. See LICENSE file in the project root for full license information. -// -#region Using Statements - -using System.Collections.Generic; -using DotNetNuke.Data; - -#endregion - -namespace _OWNER_._MODULE_ -{ - public class _CONTROL_Controller - { - public void Add_CONTROL_(_CONTROL_Info _CONTROL_) - { - using (IDataContext ctx = DataContext.Instance()) - { - var rep = ctx.GetRepository<_CONTROL_Info>(); - rep.Insert(_CONTROL_); - } - } - - public void Delete_CONTROL_(_CONTROL_Info _CONTROL_) - { - using (IDataContext ctx = DataContext.Instance()) - { - var rep = ctx.GetRepository<_CONTROL_Info>(); - rep.Delete(_CONTROL_); - } - } - - public IEnumerable<_CONTROL_Info> Get_CONTROL_s(int moduleId) - { - IEnumerable<_CONTROL_Info> _CONTROL_s; - - using (IDataContext ctx = DataContext.Instance()) - { - var rep = ctx.GetRepository<_CONTROL_Info>(); - _CONTROL_s = rep.Get(moduleId); - } - return _CONTROL_s; - } - - public _CONTROL_Info Get_CONTROL_(int _CONTROL_Id, int moduleId) - { - _CONTROL_Info _CONTROL_; - - using (IDataContext ctx = DataContext.Instance()) - { - var rep = ctx.GetRepository<_CONTROL_Info>(); - _CONTROL_ = rep.GetById(_CONTROL_Id, moduleId); - } - return _CONTROL_; - } - - public void Update_CONTROL_(_CONTROL_Info _CONTROL_) - { - using (IDataContext ctx = DataContext.Instance()) - { - var rep = ctx.GetRepository<_CONTROL_Info>(); - rep.Update(_CONTROL_); - } - } - } -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/templateInfo.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/templateInfo.cs deleted file mode 100644 index b1d2e7ca0f1..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/templateInfo.cs +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT License. See LICENSE file in the project root for full license information. -// -#region Using Statements - -using System; -using System.Web.Caching; -using DotNetNuke.ComponentModel.DataAnnotations; - -#endregion - -namespace _OWNER_._MODULE_ -{ - - [TableName("_OWNER___CONTROL_s")] - [PrimaryKey("_CONTROL_ID")] - [Scope("ModuleID")] - [Cacheable("_CONTROL_s", CacheItemPriority.Default, 20)] - public class _CONTROL_Info - { - public int _CONTROL_ID { get; set; } - public int ModuleID { get; set; } - public string Title { get; set; } - public string Description { get; set; } - public bool IsActive { get; set; } - public DateTime CreatedOnDate { get; set; } - public int CreatedByUserID { get; set; } - } -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/uninstall.sql b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/uninstall.sql deleted file mode 100644 index 3c17691d38b..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/DAL2/uninstall.sql +++ /dev/null @@ -1,12 +0,0 @@ -/* - SQL Database Uninstall Script - for _MODULE_ Module - Copyright (c) _YEAR_ - by _OWNER_ -*/ - -ALTER TABLE [dbo]._OWNER___MODULE_s DROP CONSTRAINT [FK__OWNER___MODULE_s_Modules] -GO - -DROP TABLE [dbo]._OWNER___MODULE_s -GO diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/readme.txt deleted file mode 100644 index 2c468cb3f9f..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -Template Name : Module - Inline Script -Compatible With: DNN 6.x, 7.x - -An Inline Script module has both the user interface and code as part of the same file - -template.ascx - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/template.ascx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/template.ascx deleted file mode 100644 index 292e8c0f25b..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/template.ascx +++ /dev/null @@ -1,74 +0,0 @@ -<%@ Control Language="C#" ClassName="_OWNER_._MODULE_._CONTROL_" Inherits="DotNetNuke.Entities.Modules.PortalModuleBase" %> - -<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %> -<%@ Import Namespace="System" %> -<%@ Import Namespace="DotNetNuke.Entities.Modules" %> - - - - -
- -
- -
- - - - - -
- -
- -
    - -
  • - -
  • - -
- -
- diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/template.ascx.resx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/template.ascx.resx deleted file mode 100644 index 9c50628d7a0..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Inline Script/template.ascx.resx +++ /dev/null @@ -1,9 +0,0 @@ - - - - Field: - - - Field level help. - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Razor/_template.cshtml b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Razor/_template.cshtml deleted file mode 100644 index fa534747762..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Razor/_template.cshtml +++ /dev/null @@ -1,24 +0,0 @@ -@using DotNetNuke.Common; - -@*Copyright (c) _YEAR_ by _OWNER_ *@ - -
- -
- -
- -
- - -
- -
- - -
- - diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Razor/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Razor/readme.txt deleted file mode 100644 index be8d36ac98a..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - Razor/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -Template Name : Module - Razor -Compatible With: DNN 7.x - -A Razor module utilizes the ASP.NET Razor scripting engine and stores markup and code in the same file - -_template.cshtml - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/_CONTROL_.ascx.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/_CONTROL_.ascx.cs deleted file mode 100644 index 9e3c475b233..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/_CONTROL_.ascx.cs +++ /dev/null @@ -1,52 +0,0 @@ -// -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT License. See LICENSE file in the project root for full license information. -// -#region Using Statements - -using System; -using DotNetNuke.Entities.Modules; - -#endregion - -namespace _OWNER_._MODULE_ -{ - - public partial class _CONTROL_ : PortalModuleBase - { - - #region Event Handlers - - protected override void OnInit(EventArgs e) - { - base.OnInit(e); - - cmdSave.Click += cmdSave_Click; - cmdCancel.Click += cmdCancel_Click; - } - - protected override void OnLoad(EventArgs e) - { - base.OnLoad(e); - - if (!Page.IsPostBack) - { - txtField.Text = (string)Settings["field"]; - } - } - - protected void cmdSave_Click(object sender, EventArgs e) - { - ModuleController.Instance.UpdateModuleSetting(ModuleId, "field", txtField.Text); - DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "Update Successful", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.GreenSuccess); - } - - - protected void cmdCancel_Click(object sender, EventArgs e) - { - } - - #endregion - - } -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/readme.txt deleted file mode 100644 index 295336e0a7e..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/readme.txt +++ /dev/null @@ -1,9 +0,0 @@ -Template Name : Module - User Control -Compatible With: DNN 6.x, 7.x - -A User Control module utilizes the ASP.NET Code File model where the user interface is stored in a file separate from the code. - -template.ascx -template.ascx.cs - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/template.ascx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/template.ascx deleted file mode 100644 index d386fc7a96e..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/template.ascx +++ /dev/null @@ -1,28 +0,0 @@ -<%@ Control Language="C#" AutoEventWireup="false" Inherits="_OWNER_._MODULE_._CONTROL_" CodeFile="_CONTROL_.ascx.cs" %> - -<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %> - -
- -
- -
- - - - - -
- -
- -
    - -
  • - -
  • - -
- -
- diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/template.ascx.resx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/template.ascx.resx deleted file mode 100644 index 9c50628d7a0..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Module - User Control/template.ascx.resx +++ /dev/null @@ -1,9 +0,0 @@ - - - - Field: - - - Field level help. - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Scheduled Job/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Scheduled Job/readme.txt deleted file mode 100644 index 695ac1c1981..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Scheduled Job/readme.txt +++ /dev/null @@ -1,10 +0,0 @@ -Template Name : Scheduled Job -Compatible With: DNN 6.x, 7.x - -A Scheduled Job class file that will be created in App_Code - -templateJob.cs - -*NOTE: When you create a Class File there will be a momentary delay while the DNN application restarts - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Scheduled Job/templateJob.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Scheduled Job/templateJob.cs deleted file mode 100644 index aeb1e7650a1..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Scheduled Job/templateJob.cs +++ /dev/null @@ -1,41 +0,0 @@ -// -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT License. See LICENSE file in the project root for full license information. -// -using System; -using DotNetNuke; - -namespace _OWNER_._MODULE_ -{ - - public class _MODULE_Job : DotNetNuke.Services.Scheduling.SchedulerClient - { - - public _MODULE_Job(DotNetNuke.Services.Scheduling.ScheduleHistoryItem objScheduleHistoryItem) : base() - { - this.ScheduleHistoryItem = objScheduleHistoryItem; - } - - public override void DoWork() - { - try { - this.Progressing(); - string strMessage = Processing(); - this.ScheduleHistoryItem.Succeeded = true; - this.ScheduleHistoryItem.AddLogNote("_MODULE_ Succeeded"); - } catch (Exception exc) { - this.ScheduleHistoryItem.Succeeded = false; - this.ScheduleHistoryItem.AddLogNote("_MODULE_ Failed"); - this.Errored(ref exc); - } - } - - public string Processing() - { - string Message = ""; - return Message; - } - - } - -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx deleted file mode 100644 index b32879f6ab7..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx +++ /dev/null @@ -1,20 +0,0 @@ -<%@ Control Language="C#" AutoEventWireup="false" Inherits="_OWNER_._MODULE_.Settings" CodeFile="Settings.ascx.cs" %> - -<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %> - -
- -
- -
- - - - - -
- -
- -
- diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx.cs deleted file mode 100644 index c7046ef80be..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx.cs +++ /dev/null @@ -1,53 +0,0 @@ -// -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT License. See LICENSE file in the project root for full license information. -// -#region Using Statements - -using System; -using DotNetNuke.Entities.Modules; -using DotNetNuke.Services.Exceptions; - -#endregion - -namespace _OWNER_._MODULE_ -{ - - public partial class Settings : ModuleSettingsBase - { - - #region Base Method Implementations - - public override void LoadSettings() - { - try - { - if (!Page.IsPostBack) - { - txtField.Text = (string)TabModuleSettings["field"]; - } - } - catch (Exception exc) // Module failed to load - { - Exceptions.ProcessModuleLoadException(this, exc); - } - } - - public override void UpdateSettings() - { - try - { - ModuleController.Instance.UpdateTabModuleSetting(TabModuleId, "field", txtField.Text); - } - catch (Exception exc) // Module failed to load - { - Exceptions.ProcessModuleLoadException(this, exc); - } - } - - #endregion - - } - -} - diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx.resx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx.resx deleted file mode 100644 index 9c50628d7a0..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/Settings.ascx.resx +++ /dev/null @@ -1,9 +0,0 @@ - - - - Field: - - - Field level help. - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/readme.txt deleted file mode 100644 index 0f38c099961..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Settings - User Control/readme.txt +++ /dev/null @@ -1,10 +0,0 @@ -Template Name : Settings - User Control -Compatible With: DNN 6.x, 7.x - -A Settings user control which can be accessed as a tab within the Module Settings user interface - -Settings.ascx -Settings.ascx.cs -Settings.ascx.resx - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/readme.txt deleted file mode 100644 index 3eff865a8c8..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/readme.txt +++ /dev/null @@ -1,11 +0,0 @@ -Template Name : Web Service API -Compatible With: DNN 7.x - -A Web Service Controller utilizing Web API that will be created in App_Code - -templateAPIController.cs -templateRouteMapper.cs - -*NOTE: When you create a Class File there will be a momentary delay while the DNN application restarts - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/templateAPIController.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/templateAPIController.cs deleted file mode 100644 index c3f2d9fb9bb..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/templateAPIController.cs +++ /dev/null @@ -1,26 +0,0 @@ -// -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT License. See LICENSE file in the project root for full license information. -// -#region Using Statements - -using System; -using System.Net; -using System.Net.Http; -using System.Web.Http; -using DotNetNuke.Web.Api; - -#endregion - -namespace _OWNER_._MODULE_ -{ - public class _MODULE_APIController : DnnApiController - { - [HttpGet] - [AllowAnonymous] - public HttpResponseMessage MyResponse() - { - return Request.CreateResponse(HttpStatusCode.OK, "Hello World!"); - } - } -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/templateRouteMapper.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/templateRouteMapper.cs deleted file mode 100644 index 04a03539a48..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/C#/Web Service API/templateRouteMapper.cs +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT License. See LICENSE file in the project root for full license information. -// -#region Using Statements - -using DotNetNuke.Web.Api; - -#endregion - -namespace _OWNER_._MODULE_ -{ - public class _MODULE_RouteMapper : IServiceRouteMapper - { - public void RegisterRoutes(IMapRoute mapRouteManager) - { - mapRouteManager.MapHttpRoute("_OWNER_._MODULE_", "default", "{controller}/{action}", new[] {"_OWNER_._MODULE_"}); - } - } -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Class File/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Class File/readme.txt deleted file mode 100644 index 81eaaaa3c6f..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Class File/readme.txt +++ /dev/null @@ -1,10 +0,0 @@ -Template Name : Class File -Compatible With: DNN 6.x, 7.x - -A Class File that will be created in App_Code - -template.vb - -*NOTE: When you create a Class File there will be a momentary delay while the DNN application restarts - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Class File/template.vb b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Class File/template.vb deleted file mode 100644 index 13ea2810364..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Class File/template.vb +++ /dev/null @@ -1,20 +0,0 @@ -#Region "Copyright" - -' -' Copyright (c) _YEAR_ -' by _OWNER_ -' - -#End Region - -#Region "Using Statements" - -#End Region - -Namespace _OWNER_._MODULE_ - - Public Class _MODULE_Controller - - End Class - -End Namespace diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/01.00.00.sql b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/01.00.00.sql deleted file mode 100644 index 1528308519d..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/01.00.00.sql +++ /dev/null @@ -1,35 +0,0 @@ -/* - SQL Database Install Script - for _MODULE_ Module - Copyright (c) _YEAR_ - by _OWNER_ -*/ - -CREATE TABLE [dbo]._OWNER___MODULE_s -( - _MODULE_ID int IDENTITY(1,1) NOT NULL, - ModuleID int NOT NULL, - Title nvarchar(50) NOT NULL, - Description nvarchar(max) NOT NULL, - IsActive [bit] NOT NULL, - CreatedOnDate [datetime] NOT NULL, - CreatedByUserID [int] NOT NULL, - CONSTRAINT [PK__OWNER___MODULE_s] - PRIMARY KEY CLUSTERED ( [_MODULE_ID] ASC ) -) - - -GO - -ALTER TABLE [dbo]._OWNER___MODULE_s - ADD CONSTRAINT - FK__OWNER___MODULE_s_Modules FOREIGN KEY - ( - ModuleID - ) REFERENCES dbo.Modules - ( - ModuleID - ) ON UPDATE NO ACTION - ON DELETE CASCADE - NOT FOR REPLICATION -GO diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/readme.txt deleted file mode 100644 index 8ede99ab934..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Template Name : DAL2 -Compatible With: DNN 7.x - -A business object class, a controller class with data access methods, and a SQL installation and uninstallation script - -01.00.00.sql -templateInfo.vb -templateController.vb -uninstall.sql - -*NOTE: When you add this module template there will be a momentary delay while the DNN application restarts - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/templateController.vb b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/templateController.vb deleted file mode 100644 index 1a98ea432cc..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/templateController.vb +++ /dev/null @@ -1,60 +0,0 @@ -#Region "Copyright" - -' -' Copyright (c) _YEAR_ -' by _OWNER_ -' - -#End Region - -#Region "Using Statements" - -Imports System.Collections.Generic -Imports DotNetNuke.Data - -#End Region - -Namespace _OWNER_._MODULE_ - Public Class _MODULE_Controller - Public Sub Add_MODULE_(_MODULE_ As _MODULE_Info) - Using ctx As IDataContext = DataContext.Instance() - Dim rep = ctx.GetRepository(Of _MODULE_Info)() - rep.Insert(_MODULE_) - End Using - End Sub - - Public Sub Delete_MODULE_(_MODULE_ As _MODULE_Info) - Using ctx As IDataContext = DataContext.Instance() - Dim rep = ctx.GetRepository(Of _MODULE_Info)() - rep.Delete(_MODULE_) - End Using - End Sub - - Public Function Get_MODULE_s(moduleId As Integer) As IEnumerable(Of _MODULE_Info) - Dim _MODULE_s As IEnumerable(Of _MODULE_Info) - - Using ctx As IDataContext = DataContext.Instance() - Dim rep = ctx.GetRepository(Of _MODULE_Info)() - _MODULE_s = rep.[Get](moduleId) - End Using - Return _MODULE_s - End Function - - Public Function Get_MODULE_(_MODULE_Id As Integer, moduleId As Integer) As _MODULE_Info - Dim _MODULE_ As _MODULE_Info - - Using ctx As IDataContext = DataContext.Instance() - Dim rep = ctx.GetRepository(Of _MODULE_Info)() - _MODULE_ = rep.GetById(_MODULE_Id, moduleId) - End Using - Return _MODULE_ - End Function - - Public Sub Update_MODULE_(_MODULE_ As _MODULE_Info) - Using ctx As IDataContext = DataContext.Instance() - Dim rep = ctx.GetRepository(Of _MODULE_Info)() - rep.Update(_MODULE_) - End Using - End Sub - End Class -End Namespace diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/templateInfo.vb b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/templateInfo.vb deleted file mode 100644 index 3974fc92c86..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/templateInfo.vb +++ /dev/null @@ -1,89 +0,0 @@ -#Region "Copyright" - -' -' Copyright (c) _YEAR_ -' by _OWNER_ -' - -#End Region - -#Region "Using Statements" - -Imports System -Imports System.Web.Caching -Imports DotNetNuke.ComponentModel.DataAnnotations - -#End Region - -Namespace _OWNER_._MODULE_ - - _ - _ - _ - _ - Public Class _MODULE_Info - Public Property _MODULE_ID() As Integer - Get - Return m__MODULE_ID - End Get - Set - m__MODULE_ID = Value - End Set - End Property - Private m__MODULE_ID As Integer - Public Property ModuleID() As Integer - Get - Return m_ModuleID - End Get - Set - m_ModuleID = Value - End Set - End Property - Private m_ModuleID As Integer - Public Property Title() As String - Get - Return m_Title - End Get - Set - m_Title = Value - End Set - End Property - Private m_Title As String - Public Property Description() As String - Get - Return m_Description - End Get - Set - m_Description = Value - End Set - End Property - Private m_Description As String - Public Property IsActive() As Boolean - Get - Return m_IsActive - End Get - Set - m_IsActive = Value - End Set - End Property - Private m_IsActive As Boolean - Public Property CreatedOnDate() As DateTime - Get - Return m_CreatedOnDate - End Get - Set - m_CreatedOnDate = Value - End Set - End Property - Private m_CreatedOnDate As DateTime - Public Property CreatedByUserID() As Integer - Get - Return m_CreatedByUserID - End Get - Set - m_CreatedByUserID = Value - End Set - End Property - Private m_CreatedByUserID As Integer - End Class -End Namespace diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/uninstall.sql b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/uninstall.sql deleted file mode 100644 index 3c17691d38b..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/DAL2/uninstall.sql +++ /dev/null @@ -1,12 +0,0 @@ -/* - SQL Database Uninstall Script - for _MODULE_ Module - Copyright (c) _YEAR_ - by _OWNER_ -*/ - -ALTER TABLE [dbo]._OWNER___MODULE_s DROP CONSTRAINT [FK__OWNER___MODULE_s_Modules] -GO - -DROP TABLE [dbo]._OWNER___MODULE_s -GO diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/readme.txt deleted file mode 100644 index 6b26ee9a890..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -Template Name : Module - Inline Script -Compatible With: DNN 6.x, 7.x - -An Inline Script module has both the user interface and code as part of the same file - -template.ascx - -(Include any special instructions for this Module Template in this area) diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/template.ascx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/template.ascx deleted file mode 100644 index 5f45f30a62d..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/template.ascx +++ /dev/null @@ -1,70 +0,0 @@ -<%@ Control Language="VB" ClassName="_OWNER_._MODULE_._CONTROL_" Inherits="DotNetNuke.Entities.Modules.PortalModuleBase" %> - -<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %> -<%@ Import Namespace="System" %> -<%@ Import Namespace="DotNetNuke.Entities.Modules" %> - - - - -
- -
- -
- - - - - -
- -
- -
    - -
  • - -
  • - -
- -
- diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/template.ascx.resx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/template.ascx.resx deleted file mode 100644 index 9c50628d7a0..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Inline Script/template.ascx.resx +++ /dev/null @@ -1,9 +0,0 @@ - - - - Field: - - - Field level help. - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Razor/_template.vbhtml b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Razor/_template.vbhtml deleted file mode 100644 index 204492f858c..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Razor/_template.vbhtml +++ /dev/null @@ -1,24 +0,0 @@ -@Imports DotNetNuke.Common - -@*Copyright (c) _YEAR_ by _OWNER_ *@ - -
- -
- -
- -
- - -
- -
- - -
- - diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Razor/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Razor/readme.txt deleted file mode 100644 index 86004751bb8..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - Razor/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -Template Name : Module - Razor -Compatible With: DNN 7.x - -A Razor module utilizes the ASP.NET Razor scripting engine and stores markup and code in the same file - -_template.vbhtml - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/_CONTROL_.ascx.vb b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/_CONTROL_.ascx.vb deleted file mode 100644 index 7620c1dbd30..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/_CONTROL_.ascx.vb +++ /dev/null @@ -1,49 +0,0 @@ -#Region "Copyright" - -' -' Copyright (c) _YEAR_ -' by _OWNER_ -' - -#End Region - -#Region "Using Statements" - -Imports System -Imports DotNetNuke.Entities.Modules - -#End Region - -Namespace _OWNER_._MODULE_ - - Partial Public Class _CONTROL_ - Inherits PortalModuleBase - -#Region "Event Handlers" - - Protected Overrides Sub OnInit(e As EventArgs) - MyBase.OnInit(e) - End Sub - - Protected Overrides Sub OnLoad(e As EventArgs) - MyBase.OnLoad(e) - - If Not Page.IsPostBack Then - txtField.Text = DirectCast(Settings("field"), String) - End If - End Sub - - Protected Sub cmdSave_Click(sender As Object, e As EventArgs) Handles cmdSave.Click - ModuleController.Instance.UpdateModuleSetting(ModuleId, "field", txtField.Text) - Skins.Skin.AddModuleMessage(Me, "Update Successful", Skins.Controls.ModuleMessage.ModuleMessageType.GreenSuccess) - End Sub - - Protected Sub cmdCancel_Click(sender As Object, e As EventArgs) Handles cmdCancel.Click - - End Sub - -#End Region - - End Class - -End Namespace diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/readme.txt deleted file mode 100644 index a722b95c91b..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/readme.txt +++ /dev/null @@ -1,9 +0,0 @@ -Template Name : Module - User Control -Compatible With: DNN 6.x, 7.x - -A User Control module utilizes the ASP.NET Code File model where the user interface is stored in a file separate from the code. - -template.ascx -template.ascx.vb - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/template.ascx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/template.ascx deleted file mode 100644 index c489560c268..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/template.ascx +++ /dev/null @@ -1,28 +0,0 @@ -<%@ Control Language="VB" AutoEventWireup="false" Inherits="_OWNER_._MODULE_._CONTROL_" CodeFile="_CONTROL_.ascx.vb" %> - -<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %> - -
- -
- -
- - - - - -
- -
- -
    - -
  • - -
  • - -
- -
- diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/template.ascx.resx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/template.ascx.resx deleted file mode 100644 index 9c50628d7a0..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Module - User Control/template.ascx.resx +++ /dev/null @@ -1,9 +0,0 @@ - - - - Field: - - - Field level help. - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Scheduled Job/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Scheduled Job/readme.txt deleted file mode 100644 index 8fbffbbc1dd..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Scheduled Job/readme.txt +++ /dev/null @@ -1,10 +0,0 @@ -Template Name : Scheduled Job -Compatible With: DNN 6.x, 7.x - -A Scheduled Job class file that will be created in App_Code - -templateJob.vb - -*NOTE: When you create a Class File there will be a momentary delay while the DNN application restarts - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Scheduled Job/templateJob.vb b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Scheduled Job/templateJob.vb deleted file mode 100644 index 1274ba127a7..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Scheduled Job/templateJob.vb +++ /dev/null @@ -1,45 +0,0 @@ -#Region "Copyright" - -' -' Copyright (c) _YEAR_ -' by _OWNER_ -' - -#End Region - -Imports System -Imports DotNetNuke - -Namespace _OWNER_._MODULE_ - - Public Class _MODULE_Job - - Inherits DotNetNuke.Services.Scheduling.SchedulerClient - - Public Sub New(ByVal objScheduleHistoryItem As DotNetNuke.Services.Scheduling.ScheduleHistoryItem) - MyBase.New() - Me.ScheduleHistoryItem = objScheduleHistoryItem - End Sub - - Public Overrides Sub DoWork() - Try - Me.Progressing() - Dim strMessage As String = Processing() - Me.ScheduleHistoryItem.Succeeded = True - Me.ScheduleHistoryItem.AddLogNote("_MODULE_ Succeeded") - Catch exc As Exception - Me.ScheduleHistoryItem.Succeeded = False - Me.ScheduleHistoryItem.AddLogNote("_MODULE_ Failed") - Me.Errored(exc) - End Try - End Sub - - Public Function Processing() As String - Dim Message As String = "" - Return Message - End Function - - End Class - -End Namespace - diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx deleted file mode 100644 index 17863c88c0f..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx +++ /dev/null @@ -1,20 +0,0 @@ -<%@ Control Language="VB" AutoEventWireup="false" Inherits="_OWNER_._MODULE_.Settings" CodeFile="Settings.ascx.vb" %> - -<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %> - -
- -
- -
- - - - - -
- -
- -
- diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx.resx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx.resx deleted file mode 100644 index 9c50628d7a0..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx.resx +++ /dev/null @@ -1,9 +0,0 @@ - - - - Field: - - - Field level help. - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx.vb b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx.vb deleted file mode 100644 index 380a2abb8e3..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/Settings.ascx.vb +++ /dev/null @@ -1,49 +0,0 @@ -#Region "Copyright" - -' -' Copyright (c) _YEAR_ -' by _OWNER_ -' - -#End Region - -#Region "Using Statements" - -Imports System -Imports DotNetNuke.Entities.Modules -Imports DotNetNuke.Services.Exceptions - -#End Region - -Namespace _OWNER_._MODULE_ - - Partial Public Class Settings - Inherits ModuleSettingsBase - -#Region "Base Method Implementations" - - Public Overrides Sub LoadSettings() - Try - If Not Page.IsPostBack Then - txtField.Text = DirectCast(TabModuleSettings("field"), String) - End If - Catch exc As Exception - ' Module failed to load - Exceptions.ProcessModuleLoadException(Me, exc) - End Try - End Sub - - Public Overrides Sub UpdateSettings() - Try - ModuleController.Instance.UpdateTabModuleSetting(TabModuleId, "field", txtField.Text) - Catch exc As Exception - ' Module failed to load - Exceptions.ProcessModuleLoadException(Me, exc) - End Try - End Sub - -#End Region - - End Class - -End Namespace diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/readme.txt deleted file mode 100644 index b6569289f80..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Settings - User Control/readme.txt +++ /dev/null @@ -1,10 +0,0 @@ -Template Name : Settings - User Control -Compatible With: DNN 6.x, 7.x - -A Settings user control which can be accessed as a tab within the Module Settings user interface - -Settings.ascx -Settings.ascx.vb -Settings.ascx.resx - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/readme.txt deleted file mode 100644 index 0f07a9721d3..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/readme.txt +++ /dev/null @@ -1,11 +0,0 @@ -Template Name : Web Service API -Compatible With: DNN 7.x - -A Web Service Controller utilizing Web API that will be created in App_Code - -templateController.vb -templateRouteMapper.vb - -*NOTE: When you create a Class File there will be a momentary delay while the DNN application restarts - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/templateController.vb b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/templateController.vb deleted file mode 100644 index c1190097f52..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/templateController.vb +++ /dev/null @@ -1,29 +0,0 @@ -#Region "Copyright" - -' -' Copyright (c) _YEAR_ -' by _OWNER_ -' - -#End Region - -#Region "Using Statements" - -Imports System -Imports System.Net -Imports System.Net.Http -Imports System.Web.Http -Imports DotNetNuke.Web.Api - -#End Region - -Namespace _OWNER_._MODULE_ - _ - Public Class _MODULE_Controller - Inherits DnnApiController - _ - Public Function MyResponse() As HttpResponseMessage - Return Request.CreateResponse(HttpStatusCode.OK, "Hello World!") - End Function - End Class -End Namespace diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/templateRouteMapper.vb b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/templateRouteMapper.vb deleted file mode 100644 index 4db8741b6f5..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/VB/Web Service API/templateRouteMapper.vb +++ /dev/null @@ -1,23 +0,0 @@ -#Region "Copyright" - -' -' Copyright (c) _YEAR_ -' by _OWNER_ -' - -#End Region - -#Region "Using Statements" - -Imports DotNetNuke.Web.Api - -#End Region - -Namespace _OWNER_._MODULE_ - Public Class _MODULE_RouteMapper - Implements IServiceRouteMapper - Public Sub RegisterRoutes(mapRouteManager As IMapRoute) - mapRouteManager.MapHttpRoute("_OWNER_._MODULE_", "default", "{controller}/{action}", New () {"_OWNER_._MODULE_"}) - End Sub - End Class -End Namespace diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/HTML Document/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/HTML Document/readme.txt deleted file mode 100644 index f2c3fd45fa8..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/HTML Document/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -Template Name : HTML Document -Compatible With: DNN 6.x, 7.x - -An HTML Document - -template.html - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/HTML Document/template.html b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/HTML Document/template.html deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/JavaScript/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/JavaScript/readme.txt deleted file mode 100644 index 867c9ec39bc..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/JavaScript/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -Template Name : JavaScript -Compatible With: DNN 6.x, 7.x - -A JavaScript file - -template.js - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/JavaScript/template.js b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/JavaScript/template.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/readme.txt deleted file mode 100644 index 16fd3951b82..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/readme.txt +++ /dev/null @@ -1,9 +0,0 @@ -Template Name : Module - HTML -Compatible With: DNN 6.x, 7.x - -An HTML Module - -template.html - user interface -template.ascx - user control wrapper - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/template.ascx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/template.ascx deleted file mode 100644 index 7b9f29f4ee7..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/template.ascx +++ /dev/null @@ -1,57 +0,0 @@ - - -<%@ Control Language="C#" ClassName="_OWNER_._MODULE_._CONTROL_" Inherits="DotNetNuke.Entities.Modules.PortalModuleBase" %> - -<%@ Import Namespace="System.IO" %> - - - - - diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/template.html b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/template.html deleted file mode 100644 index 0471f638893..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Module - HTML/template.html +++ /dev/null @@ -1,20 +0,0 @@ -
- Just a placeholder -
- - diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Style Sheet/Module.css b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Style Sheet/Module.css deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Style Sheet/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Style Sheet/readme.txt deleted file mode 100644 index 96aa1e7d5b7..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/Style Sheet/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -Template Name : Style Sheet -Compatible With: DNN 6.x, 7.x - -A module style sheet - -Module.css - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/XML Document/readme.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/XML Document/readme.txt deleted file mode 100644 index c738b139251..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/XML Document/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -Template Name : XML Document -Compatible With: DNN 6.x, 7.x - -An XML file - -template.xml - -(Include any special instructions for this Module Template in this area) \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/XML Document/template.xml b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/Templates/Web/XML Document/template.xml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/dnn_ModuleCreator.dnn b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/dnn_ModuleCreator.dnn deleted file mode 100644 index d8b71cb3d3e..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/dnn_ModuleCreator.dnn +++ /dev/null @@ -1,82 +0,0 @@ - - - - Module Creator - Development of modules. - ~/Icons/Sigma/ModuleCreator_32x32.png - - DNN - .NET Foundation - https://dnncommunity.org - info@dnncommunity.org - - - - true - - - - ModuleCreator - Admin/ModuleCreator - Dnn.Modules.ModuleCreator.Components.BusinessController - - - - - - Module Creator - - - - DesktopModules/Admin/ModuleCreator/CreateModule.ascx - - Host - - - 0 - False - False - - - - - - - DotNetNuke.Entities.Modules.EventMessageProcessor, DotNetNuke - UpgradeModule - - Dnn.Modules.ModuleCreator.Components.BusinessController - [DESKTOPMODULEID] - 08.00.00 - - - - - - - bin - Dnn.Modules.ModuleCreator.dll - - - - - - DesktopModules/Admin/ModuleCreator - - Resources.zip - - - - - - - DesktopModules\Admin\ModuleCreator - - 08.00.00.txt - - - - - - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/icon.png b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/icon.png deleted file mode 100644 index 050e02b9e69586e83360a568bb7dfe7c3296fd22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1992 zcmV;(2RHbMP)Zm zlubqUO$gvtW=?Gx3x$F#+PWZBL6)c$Wmn58Ek#<9IwPDeQ!RF}$Q)U6=la}hpt_1q@$+~G4E78&)(+t;s|!C)j&L=<0z zzzUX)b#ZHJ^T-!pcEI@y=e{>JHBHBLQvy!y(W4?j)_n8~42tX>xsUm-?huo(4~}ML z4zW277x13d3=w>xEqUXOm6-*Fd4p|jEpWS|4O);)aq8$`y&L1y+xV=h9W_+?3um#9w(*>b~`h9Be?9Q&gcNwnW?gSPfos1#QW*xK3@ zP!W(dbv3oQaTtj~2fhFzC=vn}mkAPzF9J8$)@J+ze=VnMTxMXP|IfVq+$U}A<0M+! zn&HslgSV;km1h<a+2Kg9@^2+ zQ2(&E_a4;NRgdv_PM2_PBl>)Fe%jv;e^+|(0+f}PVgyv6$vX;TktnIU zzrPPiByQYng!+bBxb^u>XlSg1YuB#=A%RIbpz*p!EbiBo$suD`H(}A&Jzc|(e;t6Y zy1#^+ynJa6Ohy7pB#4s1!qSQyp(Fa6=*kl>QATlbD=#m9(AWP!O5#p;7j$&ALsRqT z6p1Rh{FxYz<>mZ@2`i#PNx)6Edbk%)fd8w%7rJ{o$717Rn&S5*{yQKzq>s&Y`q_LF z3${4%AUZx_&}XOrck9i}uThCPX&Sn^x~T~Kw6E_0baizia6Jmqr%#JNEgGtCKoZqR z;))nfe0==zGUl>0e8yqhc8_!4+`BU(1@A-fyPab}A%UdytkGG-m6VkHtvB2CZg^|c zcy(ZjCMKsm!+W9A^xwgOb2emGa5I~;<*bg5&S6{&z;Zl#`pn6}dg?gDmnuj({(-sD zbGNs968z5H&e4EC{|Y(c!_?K&KX1e4z&dkFAYx_5=5*pZN1i6EK-Z;8O?5(;R;^x@ zU3ffy=)l4KuqQMWl0=Ds;4lgPP3P!Nf4?%K1#*(i_$_PJ*96>(WeZlDtUK|@x6Za{ zZCI+qY;ujr2A9NAI3;eJ1plhLL*n7NwVDXp3}U0TkfEK*9)vag1n}?)f*syokdm4_iaAk1iI|eY|H*VTml_;#jyd^jR94+2 z_*w+l=R|{{{cd1!Js>tV8jhbRfQrhpF)y#}Rn(WN{8jK3+RN8uxWt`#5|ce0+`w)Z zn6Y;Z`R??UoGmT_>?KmMsuY(?f`S4X@pguXu&JZc== z!S4r^Ika>q9{2jysw)zr8B!8gq$D6BGQ17n_Nc*1QBgl*(2;IA#LF9Iw3e@B6}qQXjHMRdnglnJf=7ZbD-gkhep8>%NRu;=${GzN);&5V z@(yX|4L2r8h@q^alyuTZOO`C&FZ&UiNT9$k?Xn~+{jxmpCmLFdkC18kC6ibU6L0&z z#P}Z4#v74DZCwrOMBz`TPJc3(lbihzN%~GzOme|mYrE|_KO$dZVD=Y6dU2j@I5|g={nI>DFB$I94wB%Kpxr-#^ z%MpA?b1^fEbi!BE5<32m2zn>&P#;cM!vcZx`LOWN4xB9pX|y?^^5mKGSp^CMEP>S&p1M_3 -
-Copyright (c) .NET Foundation and Contributors
-
-All Rights Reserved
-
-Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE.
diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/logo.png b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/logo.png deleted file mode 100644 index 781c4537eb4e9ca276b5d9dba091bee161aedac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79760 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

fctJYCWTGrmf%f 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%0D>c1 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 Z9p3z%-OTyQGw^L7>dIP5l?te!{{gK< - - - - - \ No newline at end of file diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/releaseNotes.txt b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/releaseNotes.txt deleted file mode 100644 index efb2c71d6e1..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/releaseNotes.txt +++ /dev/null @@ -1,14 +0,0 @@ -

Module Creator

-
-

About Module Creator

-

- Version 8.0

-

-

This is the initial release of the Module Creator Module

- -

Bug Fixes

-
    -
  • None
  • -
- -
diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx deleted file mode 100644 index 0002a672307..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx +++ /dev/null @@ -1,150 +0,0 @@ -<%@ Control Language="C#" AutoEventWireup="false" Inherits="Dnn.Module.ModuleCreator.ViewSource" Codebehind="viewsource.ascx.cs" %> - -<%@ Register Assembly="DotnetNuke" Namespace="DotNetNuke.UI.WebControls" TagPrefix="dnn" %> - -<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %> - -<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.Client.ClientResourceManagement" Assembly="DotNetNuke.Web.Client" %> -<%@ Register TagPrefix="dnnweb" Namespace="DotNetNuke.Web.UI.WebControls" Assembly="DotNetNuke.Web" %> - -<%-- Custom CSS Registration --%> - - -<%-- Custom JavaScript Registration --%> - - - - - - - - - -
- - -
-
- -
- - - - - -
- -
- - - -
-
- - -
- -
- -
    - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
- -
-
-
- -
- - - - - -
-
- - - - -
-
- - - - - -
- -
- - - -
- - - - -
-
- -
- -
    - -
  • -
  • - -
  • -
  • - -
- -
- - -
-
-
- diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx.cs deleted file mode 100644 index 40605360f02..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx.cs +++ /dev/null @@ -1,526 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information -namespace Dnn.Module.ModuleCreator -{ - using System; - using System.IO; - using System.Web.UI.WebControls; - - using DotNetNuke.Abstractions; - using DotNetNuke.Common; - using DotNetNuke.Common.Utilities; - using DotNetNuke.Entities.Controllers; - using DotNetNuke.Entities.Modules; - using DotNetNuke.Entities.Modules.Definitions; - using DotNetNuke.Framework; - using DotNetNuke.Security; - using DotNetNuke.Services.Exceptions; - using DotNetNuke.Services.Installer.Packages; - using DotNetNuke.Services.Localization; - using DotNetNuke.Services.Log.EventLog; - using DotNetNuke.UI.Skins.Controls; - using Microsoft.Extensions.DependencyInjection; - - public partial class ViewSource : PortalModuleBase - { - private readonly INavigationManager _navigationManager; - - public ViewSource() - { - this._navigationManager = this.DependencyProvider.GetRequiredService(); - } - - protected int ModuleControlId - { - get - { - var moduleControlId = Null.NullInteger; - if (this.Request.QueryString["ctlid"] != null) - { - moduleControlId = int.Parse(this.Request.QueryString["ctlid"]); - } - - return moduleControlId; - } - } - - private string ReturnURL - { - get - { - return UrlUtils.ValidReturnUrl(this.Request.Params["ReturnURL"]) ?? this._navigationManager.NavigateURL(); - } - } - - protected override void OnLoad(EventArgs e) - { - base.OnLoad(e); - ServicesFramework.Instance.RequestAjaxAntiForgerySupport(); - - this.cboFile.SelectedIndexChanged += this.OnFileIndexChanged; - this.optLanguage.SelectedIndexChanged += this.OnLanguageSelectedIndexChanged; - this.cboTemplate.SelectedIndexChanged += this.cboTemplate_SelectedIndexChanged; - this.cmdUpdate.Click += this.OnUpdateClick; - this.cmdPackage.Click += this.OnPackageClick; - this.cmdConfigure.Click += this.OnConfigureClick; - this.cmdCreate.Click += this.OnCreateClick; - - if (this.Page.IsPostBack == false) - { - this.cmdCancel1.NavigateUrl = this.ReturnURL; - this.cmdCancel2.NavigateUrl = this.ReturnURL; - - var objModuleControl = ModuleControlController.GetModuleControl(this.ModuleControlId); - if (objModuleControl != null) - { - this.BindFiles(objModuleControl.ControlSrc); - this.LoadFile(); - } - - if (this.Request.UrlReferrer != null) - { - this.ViewState["UrlReferrer"] = Convert.ToString(this.Request.UrlReferrer); - } - else - { - this.ViewState["UrlReferrer"] = string.Empty; - } - - this.LoadLanguages(); - this.LoadModuleTemplates(); - if (this.cboTemplate.Items.FindByText("Module - User Control") != null) - { - this.cboTemplate.Items.FindByText("Module - User Control").Selected = true; - } - - this.LoadReadMe(); - } - } - - protected void OnFileIndexChanged(object sender, EventArgs e) - { - this.LoadFile(); - } - - protected void OnLanguageSelectedIndexChanged(object sender, EventArgs e) - { - this.LoadModuleTemplates(); - } - - protected void cboTemplate_SelectedIndexChanged(object sender, EventArgs e) - { - this.LoadReadMe(); - } - - private void BindFiles(string controlSrc) - { - string[] fileList; - this.cboFile.Items.Clear(); - - var objModuleControl = ModuleControlController.GetModuleControl(this.ModuleControlId); - var objModuleDefinition = ModuleDefinitionController.GetModuleDefinitionByID(objModuleControl.ModuleDefID); - var objDesktopModule = DesktopModuleController.GetDesktopModule(objModuleDefinition.DesktopModuleID, this.PortalId); - - var relativePath = $"DesktopModules/{(objModuleControl.ControlSrc.EndsWith(".mvc") ? "MVC/" : string.Empty)}{objDesktopModule.FolderName}/"; - var modulePath = this.Server.MapPath(relativePath); - - if (Directory.Exists(modulePath)) - { - // iterate through files in desktopmodules folder - fileList = Directory.GetFiles(modulePath, "*", SearchOption.AllDirectories); - foreach (string filePath in fileList) - { - switch (Path.GetExtension(filePath).ToLowerInvariant()) - { - case ".ascx": - this.cboFile.Items.Add(new ListItem(filePath.Substring(modulePath.Length), filePath)); - var resxPath = filePath.Replace(Path.GetFileName(filePath), "App_LocalResources\\" + Path.GetFileName(filePath)) + ".resx"; - if (File.Exists(resxPath)) - { - this.cboFile.Items.Add(new ListItem(filePath.Substring(modulePath.Length), resxPath)); - } - - break; - case ".vb": - case ".cs": - case ".vbhtml": - case ".cshtml": - case ".css": - case ".js": - case ".txt": - case ".html": - case ".xml": - case ".xslt": - case ".sql": - case ".sqldataprovider": - this.cboFile.Items.Add(new ListItem(filePath.Substring(modulePath.Length), filePath)); - break; - } - } - } - else - { - DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("FolderNameInvalid", this.LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); - } - - // iterate through files in app_code folder - modulePath = Globals.ApplicationMapPath + "\\App_Code\\" + objDesktopModule.FolderName.Replace("/", "\\") + "\\"; - if (Directory.Exists(modulePath)) - { - fileList = Directory.GetFiles(modulePath); - foreach (string filePath in fileList) - { - switch (Path.GetExtension(filePath).ToLowerInvariant()) - { - case ".vb": - this.cboFile.Items.Add(new ListItem(Path.GetFileName(filePath), filePath)); - break; - case ".cs": - this.cboFile.Items.Add(new ListItem(Path.GetFileName(filePath), filePath)); - break; - } - } - } - - // select file - if (this.cboFile.Items.FindByValue(Globals.ApplicationMapPath + "\\" + controlSrc.Replace("/", "\\")) != null) - { - this.cboFile.Items.FindByValue(Globals.ApplicationMapPath + "\\" + controlSrc.Replace("/", "\\")).Selected = true; - } - } - - private void LoadFile() - { - this.lblPath.Text = this.cboFile.SelectedValue; - var objStreamReader = File.OpenText(this.lblPath.Text); - this.txtSource.Text = objStreamReader.ReadToEnd(); - objStreamReader.Close(); - - this.SetFileType(this.lblPath.Text); - } - - private void SetFileType(string filePath) - { - string mimeType; - switch (Path.GetExtension(filePath).ToLowerInvariant()) - { - case ".vb": - mimeType = "text/x-vb"; - break; - case ".cs": - mimeType = "text/x-csharp"; - break; - case ".css": - mimeType = "text/css"; - break; - case ".js": - mimeType = "text/javascript"; - break; - case ".xml": - case ".xslt": - mimeType = "application/xml"; - break; - case ".sql": - case ".sqldataprovider": - mimeType = "text/x-sql"; - break; - default: - mimeType = "text/html"; - break; - } - - DotNetNuke.UI.Utilities.ClientAPI.RegisterClientVariable(this.Page, "mimeType", mimeType, true); - } - - private void SaveFile() - { - try - { - File.SetAttributes(this.cboFile.SelectedValue, FileAttributes.Normal); - var objStream = File.CreateText(this.cboFile.SelectedValue); - objStream.WriteLine(this.txtSource.Text); - objStream.Close(); - DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("ControlUpdated", this.LocalResourceFile), ModuleMessage.ModuleMessageType.GreenSuccess); - } - catch (Exception exc) - { - Exceptions.ProcessModuleLoadException(this, exc); - } - } - - private void LoadLanguages() - { - this.optLanguage.Items.Clear(); - var moduleTemplatePath = this.Server.MapPath(this.ControlPath) + "Templates"; - string[] folderList = Directory.GetDirectories(moduleTemplatePath); - foreach (string folderPath in folderList) - { - this.optLanguage.Items.Add(new ListItem(Path.GetFileName(folderPath))); - } - - var language = string.Empty; - foreach (ListItem objFile in this.cboFile.Items) - { - if (objFile.Text.EndsWith(".vb")) - { - language = "VB"; - } - - if (objFile.Text.EndsWith(".cs")) - { - language = "C#"; - } - } - - if (language == string.Empty) - { - this.optLanguage.SelectedIndex = 0; - } - else - { - this.optLanguage.Items.FindByValue(language).Selected = true; - } - } - - private void LoadModuleTemplates() - { - this.cboTemplate.Items.Clear(); - var moduleTemplatePath = this.Server.MapPath(this.ControlPath) + "Templates\\" + this.optLanguage.SelectedValue; - string[] folderList = Directory.GetDirectories(moduleTemplatePath); - foreach (string folderPath in folderList) - { - this.cboTemplate.Items.Add(new ListItem(Path.GetFileName(folderPath))); - } - - this.cboTemplate.Items.Insert(0, new ListItem("<" + Localization.GetString("Not_Specified", Localization.SharedResourceFile) + ">", string.Empty)); - } - - private void LoadReadMe() - { - var templatePath = this.Server.MapPath(this.ControlPath) + "Templates\\" + this.optLanguage.SelectedValue + "\\" + this.cboTemplate.SelectedItem.Value; - if (File.Exists(templatePath + "\\readme.txt")) - { - var readMe = Null.NullString; - using (TextReader tr = new StreamReader(templatePath + "\\readme.txt")) - { - readMe = tr.ReadToEnd(); - tr.Close(); - } - - this.lblDescription.Text = readMe.Replace("\n", "
"); - } - else - { - this.lblDescription.Text = string.Empty; - } - - // Determine if Control Name is required - var controlNameRequired = false; - var controlName = ""; - string[] fileList = Directory.GetFiles(templatePath); - foreach (string filePath in fileList) - { - if (Path.GetFileName(filePath).ToLowerInvariant().IndexOf("template") > -1) - { - controlNameRequired = true; - controlName = "Edit"; - } - else - { - if (Path.GetFileName(filePath).EndsWith(".ascx")) - { - controlName = Path.GetFileNameWithoutExtension(filePath); - } - } - } - - this.txtControl.Text = controlName; - this.txtControl.Enabled = controlNameRequired; - if (this.txtControl.Enabled) - { - if (!this.cboTemplate.SelectedItem.Value.ToLowerInvariant().StartsWith("module")) - { - var objModuleControl = ModuleControlController.GetModuleControl(this.ModuleControlId); - var objModuleDefinition = ModuleDefinitionController.GetModuleDefinitionByID(objModuleControl.ModuleDefID); - var objDesktopModule = DesktopModuleController.GetDesktopModule(objModuleDefinition.DesktopModuleID, this.PortalId); - this.txtControl.Text = objDesktopModule.FriendlyName; - } - } - } - - private string CreateModuleControl() - { - var objModuleControl = ModuleControlController.GetModuleControl(this.ModuleControlId); - var objModuleDefinition = ModuleDefinitionController.GetModuleDefinitionByID(objModuleControl.ModuleDefID); - var objDesktopModule = DesktopModuleController.GetDesktopModule(objModuleDefinition.DesktopModuleID, this.PortalId); - var objPackage = PackageController.Instance.GetExtensionPackage(Null.NullInteger, p => p.PackageID == objDesktopModule.PackageID); - - var moduleTemplatePath = this.Server.MapPath(this.ControlPath) + "Templates\\" + this.optLanguage.SelectedValue + "\\" + this.cboTemplate.SelectedValue + "\\"; - - EventLogController.Instance.AddLog("Processing Template Folder", moduleTemplatePath, this.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 = this.Server.MapPath("DesktopModules/" + objDesktopModule.FolderName + "/"); - - // open file - using (TextReader tr = new StreamReader(filePath)) - { - sourceCode = tr.ReadToEnd(); - tr.Close(); - } - - // replace tokens - var owner = objPackage.Owner.Replace(" ", string.Empty); - if (string.IsNullOrEmpty(owner)) - { - owner = "DNN"; - } - - sourceCode = sourceCode.Replace("_OWNER_", owner); - sourceCode = sourceCode.Replace("_MODULE_", objDesktopModule.FriendlyName.Replace(" ", string.Empty)); - sourceCode = sourceCode.Replace("_CONTROL_", this.GetControl()); - sourceCode = sourceCode.Replace("_YEAR_", DateTime.Now.Year.ToString()); - - // get filename - fileName = Path.GetFileName(filePath); - fileName = fileName.Replace("template", this.GetControl()); - fileName = fileName.Replace("_OWNER_", objPackage.Owner.Replace(" ", string.Empty)); - fileName = fileName.Replace("_MODULE_", objDesktopModule.FriendlyName.Replace(" ", string.Empty)); - fileName = fileName.Replace("_CONTROL_", this.GetControl()); - - switch (Path.GetExtension(filePath).ToLowerInvariant()) - { - 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.ToLowerInvariant().IndexOf(".ascx") == -1) - { - modulePath = modulePath.Replace("DesktopModules", "App_Code"); - } - - break; - case ".cs": - if (filePath.ToLowerInvariant().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 - using (TextWriter tw = new StreamWriter(modulePath + fileName)) - { - tw.WriteLine(sourceCode); - tw.Close(); - } - - EventLogController.Instance.AddLog("Created File", modulePath + fileName, this.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 = this.GetControl(); - objModuleControl.ControlSrc = "DesktopModules/" + objDesktopModule.FolderName + "/" + controlName; - objModuleControl.ControlTitle = this.txtControl.Text; - objModuleControl.ControlType = (SecurityAccessLevel)Enum.Parse(typeof(SecurityAccessLevel), this.cboType.SelectedItem.Value); - objModuleControl.HelpURL = string.Empty; - objModuleControl.IconFile = string.Empty; - objModuleControl.ViewOrder = 0; - objModuleControl.SupportsPartialRendering = true; - objModuleControl.SupportsPopUps = true; - ModuleControlController.AddModuleControl(objModuleControl); - controlName = objModuleControl.ControlSrc; - } - catch - { - // Suppress error - } - } - - DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("ControlCreated", this.LocalResourceFile), ModuleMessage.ModuleMessageType.GreenSuccess); - - return controlName; - } - - private string GetControl() - { - return this.txtControl.Text.Replace(" ", string.Empty); - } - - private void OnUpdateClick(object sender, EventArgs e) - { - this.SaveFile(); - } - - private void OnPackageClick(object sender, EventArgs e) - { - var objModuleControl = ModuleControlController.GetModuleControl(this.ModuleControlId); - var objModuleDefinition = ModuleDefinitionController.GetModuleDefinitionByID(objModuleControl.ModuleDefID); - var objDesktopModule = DesktopModuleController.GetDesktopModule(objModuleDefinition.DesktopModuleID, this.PortalId); - ModuleInfo objModule = ModuleController.Instance.GetModuleByDefinition(-1, "Extensions"); - this.Response.Redirect(this._navigationManager.NavigateURL(objModule.TabID, "PackageWriter", "rtab=" + this.TabId.ToString(), "packageId=" + objDesktopModule.PackageID.ToString(), "mid=" + objModule.ModuleID.ToString()) + "?popUp=true", true); - } - - private void OnConfigureClick(object sender, EventArgs e) - { - var objModuleControl = ModuleControlController.GetModuleControl(this.ModuleControlId); - var objModuleDefinition = ModuleDefinitionController.GetModuleDefinitionByID(objModuleControl.ModuleDefID); - var objDesktopModule = DesktopModuleController.GetDesktopModule(objModuleDefinition.DesktopModuleID, this.PortalId); - ModuleInfo objModule = ModuleController.Instance.GetModuleByDefinition(-1, "Extensions"); - this.Response.Redirect(this._navigationManager.NavigateURL(objModule.TabID, "Edit", "mid=" + objModule.ModuleID.ToString(), "PackageID=" + objDesktopModule.PackageID.ToString()) + "?popUp=true", true); - } - - private void OnCreateClick(object sender, EventArgs e) - { - if (this.cboTemplate.SelectedIndex > 0 && this.txtControl.Text != string.Empty) - { - var controlSrc = this.CreateModuleControl(); - this.BindFiles(controlSrc); - this.LoadFile(); - } - else - { - DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("AddControlError", this.LocalResourceFile), ModuleMessage.ModuleMessageType.YellowWarning); - } - } - } -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx.designer.cs b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx.designer.cs deleted file mode 100644 index 79331274980..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/viewsource.ascx.designer.cs +++ /dev/null @@ -1,199 +0,0 @@ -// -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT License. See LICENSE file in the project root for full license information. -// -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Dnn.Module.ModuleCreator { - - - public partial class ViewSource { - - /// - /// plFile control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plFile; - - /// - /// cboFile control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.DropDownList cboFile; - - /// - /// plSource control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plSource; - - /// - /// lblPath control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Label lblPath; - - /// - /// txtSource control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtSource; - - /// - /// cmdUpdate control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.LinkButton cmdUpdate; - - /// - /// cmdConfigure control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.LinkButton cmdConfigure; - - /// - /// cmdPackage control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.LinkButton cmdPackage; - - /// - /// cmdCancel1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.HyperLink cmdCancel1; - - /// - /// plLanguage control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plLanguage; - - /// - /// optLanguage control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.RadioButtonList optLanguage; - - /// - /// plTemplate control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plTemplate; - - /// - /// cboTemplate control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.DropDownList cboTemplate; - - /// - /// plControl control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plControl; - - /// - /// txtControl control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtControl; - - /// - /// plType control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UserControl plType; - - /// - /// cboType control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.RadioButtonList cboType; - - /// - /// cmdCreate control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.LinkButton cmdCreate; - - /// - /// cmdCancel2 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.HyperLink cmdCancel2; - - /// - /// lblDescription control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Label lblDescription; - } -} diff --git a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/web.config b/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/web.config deleted file mode 100644 index 1b3cf4537a7..00000000000 --- a/DNN Platform/Admin Modules/Dnn.Modules.ModuleCreator/web.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/DNN_Platform.sln b/DNN_Platform.sln index 2b5ee8c5659..cfed2a58a17 100644 --- a/DNN_Platform.sln +++ b/DNN_Platform.sln @@ -234,8 +234,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetNuke.Website", "DNN P {EE1329FE-FD88-4E1A-968C-345E394EF080} = {EE1329FE-FD88-4E1A-968C-345E394EF080} EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dnn.Modules.ModuleCreator", "DNN Platform\Admin Modules\Dnn.Modules.ModuleCreator\Dnn.Modules.ModuleCreator.csproj", "{BD519B8A-169C-4328-BF67-62CD278435BC}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetNuke.Web.Deprecated", "DNN Platform\DotNetNuke.Web.Deprecated\DotNetNuke.Web.Deprecated.csproj", "{9BA59B3D-9FFB-4A9E-BD7D-8B58D08B3A33}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dnn.AuthServices.Jwt", "DNN Platform\Dnn.AuthServices.Jwt\Dnn.AuthServices.Jwt.csproj", "{3B2FA1D9-EC7D-4CEC-8FF5-A7700CF5CB40}" @@ -1329,28 +1327,6 @@ Global {7F680294-37DA-4901-A19B-AF09794F73D7}.Release-Net45|Any CPU.Build.0 = Release|Any CPU {7F680294-37DA-4901-A19B-AF09794F73D7}.Release-Net45|x86.ActiveCfg = Release|Any CPU {7F680294-37DA-4901-A19B-AF09794F73D7}.Release-Net45|x86.Build.0 = Release|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Cloud_Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Cloud_Debug|Any CPU.Build.0 = Debug|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Cloud_Debug|x86.ActiveCfg = Debug|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Cloud_Debug|x86.Build.0 = Debug|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Cloud_Release|Any CPU.ActiveCfg = Release|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Cloud_Release|Any CPU.Build.0 = Release|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Cloud_Release|x86.ActiveCfg = Release|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Cloud_Release|x86.Build.0 = Release|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Debug|x86.ActiveCfg = Debug|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Debug-Net45|Any CPU.ActiveCfg = Debug|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Debug-Net45|Any CPU.Build.0 = Debug|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Debug-Net45|x86.ActiveCfg = Debug|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Debug-Net45|x86.Build.0 = Debug|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Release|Any CPU.Build.0 = Release|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Release|x86.ActiveCfg = Release|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Release-Net45|Any CPU.ActiveCfg = Release|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Release-Net45|Any CPU.Build.0 = Release|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Release-Net45|x86.ActiveCfg = Release|Any CPU - {BD519B8A-169C-4328-BF67-62CD278435BC}.Release-Net45|x86.Build.0 = Release|Any CPU {9BA59B3D-9FFB-4A9E-BD7D-8B58D08B3A33}.Cloud_Debug|Any CPU.ActiveCfg = Debug|Any CPU {9BA59B3D-9FFB-4A9E-BD7D-8B58D08B3A33}.Cloud_Debug|Any CPU.Build.0 = Debug|Any CPU {9BA59B3D-9FFB-4A9E-BD7D-8B58D08B3A33}.Cloud_Debug|x86.ActiveCfg = Debug|x86 @@ -2029,7 +2005,6 @@ Global {AF3A5042-B67B-4F84-9E40-BE06B1105337} = {88E649D7-1379-430F-B794-1F3B9B442C80} {2E2CA195-01E2-4754-8F3C-1598B894C2C9} = {29273BE6-1AA8-4970-98A0-41BFFEEDA67B} {04F77171-0634-46E0-A95E-D7477C88712E} = {1DFA65CE-5978-49F9-83BA-CFBD0C7A1814} - {BD519B8A-169C-4328-BF67-62CD278435BC} = {2E2CA195-01E2-4754-8F3C-1598B894C2C9} {9BA59B3D-9FFB-4A9E-BD7D-8B58D08B3A33} = {FDDC95FE-3341-4AED-A93E-7A5DF85A55C2} {3B2FA1D9-EC7D-4CEC-8FF5-A7700CF5CB40} = {8978D97A-03F5-4BFA-A0A6-BC6E93804C88} {FAEC4667-B1E7-403A-92EC-CEFA85542D8B} = {FBD3B3FB-C9A6-43D2-8FE7-6A0A19DF0D0C}