public TabVersion RollBackVesion(int tabId, int createdByUserId, int version) { CheckVersioningEnabled(tabId); if (GetUnPublishedVersion(tabId) != null) { throw new InvalidOperationException(String.Format(Localization.GetString("TabVersionCannotBeRolledBack_UnpublishedVersionExists", Localization.ExceptionsResourceFile), tabId, version)); } var lastTabVersion = _tabVersionController.GetTabVersions(tabId).OrderByDescending(tv => tv.Version).FirstOrDefault(); if (lastTabVersion == null || lastTabVersion.Version == version) { throw new InvalidOperationException(String.Format(Localization.GetString("TabVersionCannotBeRolledBack_LastVersion", Localization.ExceptionsResourceFile), tabId, version)); } var publishedDetails = GetVersionModulesDetails(tabId, lastTabVersion.Version).ToArray(); var rollbackDetails = CopyVersionDetails(GetVersionModulesDetails(tabId, version)).ToArray(); var newVersion = CreateNewVersion(tabId, createdByUserId); //Save Reset detail _tabVersionDetailController.SaveTabVersionDetail(GetResetTabVersionDetail(newVersion), createdByUserId); foreach (var rollbackDetail in rollbackDetails) { rollbackDetail.TabVersionId = newVersion.TabVersionId; try { rollbackDetail.ModuleVersion = RollBackDetail(tabId, rollbackDetail); } catch (DnnTabVersionException e) { Logger.Error(string.Format("There was a problem making rollbak of the module {0}. Message: {1}.", rollbackDetail.ModuleId, e.Message)); continue; } _tabVersionDetailController.SaveTabVersionDetail(rollbackDetail, createdByUserId); //Check if restoring version contains modules to restore if (publishedDetails.All(tv => tv.ModuleId != rollbackDetail.ModuleId)) { RestoreModuleInfo(tabId, rollbackDetail); } else { UpdateModuleOrder(tabId, rollbackDetail); } } //Check if current version contains modules not existing in restoring version foreach (var publishedDetail in publishedDetails.Where(publishedDetail => rollbackDetails.All(tvd => tvd.ModuleId != publishedDetail.ModuleId))) { _moduleController.DeleteTabModule(tabId, publishedDetail.ModuleId, true); } // Publish Version return(PublishVersion(GetCurrentPortalId(), tabId, createdByUserId, newVersion)); }
public void DeleteTabModule(int pageId, int moduleId) { var portalSettings = PortalController.Instance.GetCurrentPortalSettings(); var tab = _tabController.GetTab(pageId, portalSettings.PortalId); if (tab == null) { throw new PageModuleNotFoundException(); } var tabModule = _moduleController.GetModule(moduleId, pageId, false); if (tabModule == null) { throw new PageModuleNotFoundException(); } if (!TabPermissionController.CanAddContentToPage(tab)) { throw new SecurityException("You do not have permission to delete module on this page"); } _moduleController.DeleteTabModule(pageId, moduleId, true); _moduleController.ClearCache(pageId); }
private void HardDeleteModule(ModuleInfo module) { try { _moduleController.DeleteTabModule(module.TabID, module.ModuleID, false); } catch (Exception exc) { Logger.Error(exc); } //hard-delete Tab Module Instance }
private void HardDeleteModule(ModuleInfo module, StringBuilder errors) { try { if (ModulePermissionController.CanDeleteModule(module) && module.IsDeleted) { _moduleController.DeleteTabModule(module.TabID, module.ModuleID, false); } else { errors.AppendFormat(!module.IsDeleted ? LocalizeString("ModuleNotSoftDeleted") : LocalizeString("CanNotDeleteModule"), module.ModuleID); } } catch (Exception exc) { Logger.Error(exc); } //hard-delete Tab Module Instance }