public static void CreatePortalFolder(DotNetNuke.Entities.Portals.PortalSettings PortalSettings, string FolderName) { bool blnCreated = false; //try normal test (doesn;t work on medium trust, but avoids waiting for GetFolder.) try { blnCreated = System.IO.Directory.Exists(PortalSettings.HomeDirectoryMapPath + FolderName); } catch (Exception ex) { blnCreated = false; } if (!blnCreated) { FolderManager.Instance.Synchronize(PortalSettings.PortalId, PortalSettings.HomeDirectory, true, true); var folderInfo = FolderManager.Instance.GetFolder(PortalSettings.PortalId, FolderName); if (folderInfo == null & !string.IsNullOrEmpty(FolderName)) { //add folder and permissions try { FolderManager.Instance.AddFolder(PortalSettings.PortalId, FolderName); } catch (Exception ex) { } folderInfo = FolderManager.Instance.GetFolder(PortalSettings.PortalId, FolderName); if ((folderInfo != null)) { int folderid = folderInfo.FolderID; DotNetNuke.Security.Permissions.PermissionController objPermissionController = new DotNetNuke.Security.Permissions.PermissionController(); var arr = objPermissionController.GetPermissionByCodeAndKey("SYSTEM_FOLDER", ""); foreach (DotNetNuke.Security.Permissions.PermissionInfo objpermission in arr) { if (objpermission.PermissionKey == "WRITE") { // add READ permissions to the All Users Role FolderManager.Instance.SetFolderPermission(folderInfo, objpermission.PermissionID, int.Parse(DotNetNuke.Common.Globals.glbRoleAllUsers)); } } } } } }
public HttpResponseMessage SaveModule(DTO.ModuleDetails module) { var apiResponse = new DTO.ApiResponse <int>(); try { int iPosition = -1; switch (module.Position.ToUpper()) { case "TOP": iPosition = 0; break; case "ABOVE": if (string.IsNullOrEmpty(module.ModuleInstance) == false) { iPosition = int.Parse(module.ModuleInstance) - 1; } break; case "BELOW": if (string.IsNullOrEmpty(module.ModuleInstance) == false) { iPosition = int.Parse(module.ModuleInstance) + 1; } break; case "BOTTOM": iPosition = -1; break; } if (module.CreateAs == "copy") { if (module.Container == "-1") { module.Container = string.Empty; } Common.AddModuleCopy(module.ModuleId, module.PageId, iPosition, module.Location, module.Container); apiResponse.Success = true; } else if (module.CreateAs == "link") { if (module.Container == "-1") { module.Container = string.Empty; } Common.AddExistingModule(module.ModuleId, module.PageId, module.Location, iPosition, "", module.Container); apiResponse.Success = true; } else { List <int> lstNewModules = new List <int>(); var objTabPermissions = PortalSettings.ActiveTab.TabPermissions; var objPermissionController = new DotNetNuke.Security.Permissions.PermissionController(); var objModules = new DotNetNuke.Entities.Modules.ModuleController(); var objEventLog = new DotNetNuke.Services.Log.EventLog.EventLogController(); int j = 0; try { DotNetNuke.Entities.Modules.DesktopModuleInfo desktopModule = null; if (!DotNetNuke.Entities.Modules.DesktopModuleController.GetDesktopModules(PortalSettings.PortalId).TryGetValue(module.Module, out desktopModule)) { apiResponse.Message = "desktopModuleId"; return(Request.CreateResponse(HttpStatusCode.OK, apiResponse)); } } catch (Exception ex) { //LogException(ex); } int UserId = UserInfo.UserID; foreach (var objModuleDefinition in DotNetNuke.Entities.Modules.Definitions.ModuleDefinitionController.GetModuleDefinitionsByDesktopModuleID(module.Module).Values) { var objModule = new DotNetNuke.Entities.Modules.ModuleInfo(); objModule.Initialize(PortalSettings.PortalId); objModule.PortalID = PortalSettings.PortalId; objModule.TabID = PortalSettings.ActiveTab.TabID; objModule.ModuleOrder = iPosition; if (string.IsNullOrEmpty(module.Title) == true) { objModule.ModuleTitle = objModuleDefinition.FriendlyName; } else { objModule.ModuleTitle = module.Title; } if (!string.IsNullOrEmpty(module.Container) && module.Container != "-1") { objModule.ContainerSrc = module.Container; } objModule.PaneName = module.Location; objModule.ModuleDefID = objModuleDefinition.ModuleDefID; if (objModuleDefinition.DefaultCacheTime > 0) { objModule.CacheTime = objModuleDefinition.DefaultCacheTime; if (PortalSettings.DefaultModuleId > Null.NullInteger && PortalSettings.DefaultTabId > Null.NullInteger) { var defaultModule = objModules.GetModule(PortalSettings.DefaultModuleId, PortalSettings.DefaultTabId, true); if ((defaultModule != null)) { objModule.CacheTime = defaultModule.CacheTime; } } } switch (module.Visibility) { case 0: objModule.InheritViewPermissions = true; break; case 1: objModule.InheritViewPermissions = false; break; case 2: objModule.InheritViewPermissions = false; break; case 3: objModule.InheritViewPermissions = false; break; case 4: objModule.InheritViewPermissions = false; break; } // get the default module view permissions var arrSystemModuleViewPermissions = objPermissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "VIEW"); // get the permissions from the page foreach (DotNetNuke.Security.Permissions.TabPermissionInfo objTabPermission in objTabPermissions) { if (objTabPermission.PermissionKey == "VIEW" && module.Visibility == 0) { //Don't need to explicitly add View permisisons if "Same As Page" continue; } // get the system module permissions for the permissionkey var arrSystemModulePermissions = objPermissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", objTabPermission.PermissionKey); // loop through the system module permissions for (j = 0; j <= arrSystemModulePermissions.Count - 1; j++) { // create the module permission DotNetNuke.Security.Permissions.PermissionInfo objSystemModulePermission = null; objSystemModulePermission = (DotNetNuke.Security.Permissions.PermissionInfo)arrSystemModulePermissions[j]; if (objSystemModulePermission.PermissionKey == "VIEW" && module.Visibility == 1 && objTabPermission.PermissionKey != "EDIT") { //Only Page Editors get View permissions if "Page Editors Only" continue; } var objModulePermission = Common.AddModulePermission(objModule, objSystemModulePermission, objTabPermission.RoleID, objTabPermission.UserID, objTabPermission.AllowAccess); // ensure that every EDIT permission which allows access also provides VIEW permission if (objModulePermission.PermissionKey == "EDIT" & objModulePermission.AllowAccess) { var objModuleViewperm = Common.AddModulePermission(objModule, (DotNetNuke.Security.Permissions.PermissionInfo)arrSystemModuleViewPermissions[0], objModulePermission.RoleID, objModulePermission.UserID, true); } } //Get the custom Module Permissions, Assume that roles with Edit Tab Permissions //are automatically assigned to the Custom Module Permissions if (objTabPermission.PermissionKey == "EDIT") { var arrCustomModulePermissions = objPermissionController.GetPermissionsByModuleDefID(objModule.ModuleDefID); // loop through the custom module permissions for (j = 0; j <= arrCustomModulePermissions.Count - 1; j++) { // create the module permission DotNetNuke.Security.Permissions.PermissionInfo objCustomModulePermission = null; objCustomModulePermission = (DotNetNuke.Security.Permissions.PermissionInfo)arrCustomModulePermissions[j]; Common.AddModulePermission(objModule, objCustomModulePermission, objTabPermission.RoleID, objTabPermission.UserID, objTabPermission.AllowAccess); } } } objModule.AllTabs = false; //objModule.Alignment = align; apiResponse.CustomObject = objModules.AddModule(objModule); apiResponse.Success = true; } } } catch (Exception err) { apiResponse.Success = false; apiResponse.Message = err.Message; Exceptions.LogException(err); } return(Request.CreateResponse(HttpStatusCode.OK, apiResponse)); }