This example is about how to create tabs through code, set permission of tabs and embed an existing desktop module to that tab, set permission of desktop module, clear module cache, tab cache, portal cache.
using System; using System.Collections; using System.Configuration; using System.Data; using System.Collections.Generic; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using DotNetNuke; using DotNetNuke.Entities.Modules; using DotNetNuke.Entities.Modules.Definitions; using DotNetNuke.Entities.Portals; using DotNetNuke.Entities.Tabs; using DotNetNuke.Security.Permissions; using DotNetNuke.Common; using System.Data.SqlClient; public partial class CreateTabWithModuleClass : PortalModuleBase { protected void Page_Load(object sender, EventArgs e) { CreateTabWithModule(); } protected void CreateTabWithModule() { //Create Tab PortalSettings portalSettings = new PortalSettings(); int portalId = portalSettings.PortalId; TabController tabController = new TabController(); TabInfo parentTab = tabController.GetTabByName("Questionnaires", portalId); TabInfo tab = new TabInfo(); tab.PortalID = portalId; tab.TabName = "qqq_" + txtQuestionnaireName.Text; tab.Title = txtQuestionnaireName.Text; tab.Description = "qqq_" + txtQuestionnaireName.Text; tab.KeyWords = "qqq_" + txtQuestionnaireName.Text; //works for include in menu option. if true, will be shown in menus, else will not be shown, we have to redirect internally tab.IsVisible = false; tab.DisableLink = false; //if this tab has any parents provide parent tab id, so that it will be shown in parent tab menus sub menu list, else is NULL //and will be in main menu list tab.ParentId = parentTab.TabID; tab.IsDeleted = false; tab.Url = ""; tab.IsSuperTab = false;//if true, it has no parents, else false tab.SkinSrc = "[G]Skins/WP-DEFAULT/wp_member_default.ascx";//provide skin src, else will take default skin int tabId = tabController.AddTab(tab, true);//true to load defalut modules //Set Tab Permission TabPermissionController objTPC = new TabPermissionController(); TabPermissionInfo tpi = new TabPermissionInfo(); tpi.TabID = tabId; tpi.PermissionID = 3;//for view tpi.PermissionKey = "VIEW"; tpi.PermissionName = "View Tab"; tpi.AllowAccess = true; tpi.RoleID = 0; //Role ID of administrator objTPC.AddTabPermission(tpi); TabPermissionInfo tpi1 = new TabPermissionInfo(); tpi1.TabID = tabId; tpi1.PermissionID = 4;//for edit tpi1.PermissionKey = "EDIT"; tpi1.PermissionName = "Edit Tab"; tpi1.AllowAccess = true; tpi1.RoleID = 0; //Role ID of administrator objTPC.AddTabPermission(tpi1); TabPermissionInfo tpi2 = new TabPermissionInfo(); tpi2.TabID = tabId; tpi2.PermissionID = 3; tpi2.PermissionKey = "VIEW"; tpi2.PermissionName = "View Tab"; tpi2.AllowAccess = true; tpi2.RoleID = 4; //Role ID of specified user objTPC.AddTabPermission(tpi2); TabPermissionInfo tpi3 = new TabPermissionInfo(); tpi3.TabID = tabId; tpi3.PermissionID = 4; tpi3.PermissionKey = "EDIT"; tpi3.PermissionName = "Edit Tab"; tpi3.AllowAccess = true; tpi3.RoleID = 4; //Role ID of specified user objTPC.AddTabPermission(tpi3); TabPermissionInfo tpi4 = new TabPermissionInfo(); tpi4.TabID = tabId; tpi4.PermissionID = 3; tpi4.PermissionKey = "VIEW"; tpi4.PermissionName = "View Tab"; tpi4.AllowAccess = true; tpi4.RoleID = 1; //Role ID of Registered users tpi4.RoleName = "Registered Users"; tpi4.PermissionCode = "SYSTEM_TAB"; objTPC.AddTabPermission(tpi4); //Add Module DesktopModuleController objDMC = new DesktopModuleController(); DesktopModuleInfo desktopModuleInfo = objDMC.GetDesktopModuleByName("Dynamic Forms"); ModuleDefinitionInfo moduleDefinitionInfo = new ModuleDefinitionInfo(); ModuleInfo moduleInfo = new ModuleInfo(); moduleInfo.PortalID = portalId; moduleInfo.TabID = tabId; moduleInfo.ModuleOrder = 1; moduleInfo.ModuleTitle = "Dynamic Forms"; moduleInfo.PaneName = "Dynamic Forms"; moduleInfo.ModuleDefID = 169; moduleInfo.CacheTime = moduleDefinitionInfo.DefaultCacheTime;//Default Cache Time is 0 moduleInfo.InheritViewPermissions = true;//Inherit View Permissions from Tab moduleInfo.AllTabs = false; moduleInfo.Alignment = "Top"; ModuleController moduleController = new ModuleController(); int moduleId = moduleController.AddModule(moduleInfo); //Set Module Permission ModulePermissionController objMPC = new ModulePermissionController(); ModulePermissionInfo mpi1 = new ModulePermissionInfo(); mpi1.ModuleID = moduleId; mpi1.PermissionID = 1;//View Permission mpi1.AllowAccess = true; mpi1.RoleID = 0;//Role ID of Administrator objMPC.AddModulePermission(mpi1); ModulePermissionInfo mpi2 = new ModulePermissionInfo(); mpi2.ModuleID = moduleId; mpi2.PermissionID = 2;//Edit Permission mpi2.AllowAccess = true; mpi2.RoleID = 0;//Role ID of Administrator objMPC.AddModulePermission(mpi2); ModulePermissionInfo mpi3 = new ModulePermissionInfo(); mpi3.ModuleID = moduleId; mpi3.PermissionID = 1;//View Permission mpi3.AllowAccess = true; mpi3.RoleID = 4;//Role ID of Specified User objMPC.AddModulePermission(mpi3); ModulePermissionInfo mpi4 = new ModulePermissionInfo(); mpi4.ModuleID = moduleId; mpi4.PermissionID = 2;//Edit Permission mpi4.AllowAccess = true; mpi4.RoleID = 4;//Role ID of Specified User objMPC.AddModulePermission(mpi4); ModulePermissionInfo mpi5 = new ModulePermissionInfo(); mpi5.ModuleID = moduleId; mpi5.PermissionID = 1;//View Permission mpi5.AllowAccess = true; mpi5.RoleID = 1;//Role ID of Registered User objMPC.AddModulePermission(mpi5); //Clear Cache DotNetNuke.Common.Utilities.DataCache.ClearModuleCache(tab.TabID); DotNetNuke.Common.Utilities.DataCache.ClearTabsCache(PortalId); DotNetNuke.Common.Utilities.DataCache.ClearPortalCache(PortalId, false); } }