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);
}
}