public static TabInfo GetParentTab(TabInfo relativeToTab, TabRelativeLocation location) { if (((relativeToTab == null))) { return(null); } TabInfo parentTab = null; if ((location == TabRelativeLocation.CHILD)) { parentTab = relativeToTab; } else if (((relativeToTab != null) && relativeToTab.ParentId != Null.NullInteger)) { parentTab = TabController.Instance.GetTab(relativeToTab.ParentId, relativeToTab.PortalID, false); } return(parentTab); }
public static TabInfo InitTabInfoObject(TabInfo relativeToTab, TabRelativeLocation location) { if (((relativeToTab == null))) { if (((PortalSettings.Current != null) && (PortalSettings.Current.ActiveTab != null))) { relativeToTab = PortalSettings.Current.ActiveTab; } } var newTab = new TabInfo { TabID = Null.NullInteger, TabName = "", Title = "", IsVisible = false, DisableLink = false, IsDeleted = false, IsSecure = false, PermanentRedirect = false }; TabInfo parentTab = GetParentTab(relativeToTab, location); if (((parentTab != null))) { newTab.PortalID = parentTab.PortalID; newTab.ParentId = parentTab.TabID; newTab.Level = parentTab.Level + 1; if ((PortalSettings.Current.SSLEnabled)) { newTab.IsSecure = parentTab.IsSecure; //Inherit from parent } } else { newTab.PortalID = PortalSettings.Current.PortalId; newTab.ParentId = Null.NullInteger; newTab.Level = 0; } //Inherit permissions from parent newTab.TabPermissions.Clear(); if ((newTab.PortalID != Null.NullInteger && (parentTab != null))) { newTab.TabPermissions.AddRange(parentTab.TabPermissions); } else if ((newTab.PortalID != Null.NullInteger)) { //Give admin full permission ArrayList permissions = PermissionController.GetPermissionsByTab(); foreach (PermissionInfo permission in permissions) { TabPermissionInfo newTabPermission = new TabPermissionInfo(); newTabPermission.PermissionID = permission.PermissionID; newTabPermission.PermissionKey = permission.PermissionKey; newTabPermission.PermissionName = permission.PermissionName; newTabPermission.AllowAccess = true; newTabPermission.RoleID = PortalSettings.Current.AdministratorRoleId; newTab.TabPermissions.Add(newTabPermission); } } return(newTab); }
public static int SaveTabInfoObject(TabInfo tab, TabInfo relativeToTab, TabRelativeLocation location, string templateFileId) { //Validation: //Tab name is required //Tab name is invalid string invalidType; if (!TabController.IsValidTabName(tab.TabName, out invalidType)) { switch (invalidType) { case "EmptyTabName": throw new DotNetNukeException("Page name is required.", DotNetNukeErrorCode.PageNameRequired); case "InvalidTabName": throw new DotNetNukeException("Page name is invalid.", DotNetNukeErrorCode.PageNameInvalid); } } else if ((Validate_IsCircularReference(tab.PortalID, tab.TabID))) { throw new DotNetNukeException("Cannot move page to that location.", DotNetNukeErrorCode.PageCircularReference); } bool usingDefaultLanguage = (tab.CultureCode == PortalSettings.Current.DefaultLanguage) || tab.CultureCode == null; if (PortalSettings.Current.ContentLocalizationEnabled) { if ((!usingDefaultLanguage)) { TabInfo defaultLanguageSelectedTab = tab.DefaultLanguageTab; if ((defaultLanguageSelectedTab == null)) { //get the siblings from the selectedtab and iterate through until you find a sibbling with a corresponding defaultlanguagetab //if none are found get a list of all the tabs from the default language and then select the last one var selectedTabSibblings = TabController.Instance.GetTabsByPortal(tab.PortalID).WithCulture(tab.CultureCode, true).AsList(); foreach (TabInfo sibling in selectedTabSibblings) { TabInfo siblingDefaultTab = sibling.DefaultLanguageTab; if (((siblingDefaultTab != null))) { defaultLanguageSelectedTab = siblingDefaultTab; break; } } //still haven't found it if ((defaultLanguageSelectedTab == null)) { var defaultLanguageTabs = TabController.Instance.GetTabsByPortal(tab.PortalID).WithCulture(PortalSettings.Current.DefaultLanguage, true).AsList(); defaultLanguageSelectedTab = defaultLanguageTabs[defaultLanguageTabs.Count]; //get the last tab } } relativeToTab = defaultLanguageSelectedTab; } } if ((location != TabRelativeLocation.NOTSET)) { //Check Host tab - don't allow adding before or after if ((IsHostConsolePage(relativeToTab) && (location == TabRelativeLocation.AFTER || location == TabRelativeLocation.BEFORE))) { throw new DotNetNukeException("You cannot add or move pages before or after the Host tab.", DotNetNukeErrorCode.HostBeforeAfterError); } TabInfo parentTab = GetParentTab(relativeToTab, location); string permissionList = "ADD,COPY,EDIT,MANAGE"; //Check permissions for Page Editors when moving or inserting if ((!PortalSecurity.IsInRole("Administrators"))) { if (((parentTab == null) || !TabPermissionController.HasTabPermission(parentTab.TabPermissions, permissionList))) { throw new DotNetNukeException("You do not have permissions to add or move pages to this location. You can only add or move pages as children of pages you can edit.", DotNetNukeErrorCode.PageEditorPermissionError); } } if (((parentTab != null))) { tab.ParentId = parentTab.TabID; tab.Level = parentTab.Level + 1; } else { tab.ParentId = Null.NullInteger; tab.Level = 0; } } if ((tab.TabID > Null.NullInteger && tab.TabID == tab.ParentId)) { throw new DotNetNukeException("Parent page is invalid.", DotNetNukeErrorCode.ParentTabInvalid); } tab.TabPath = Globals.GenerateTabPath(tab.ParentId, tab.TabName); //check whether have conflict between tab path and portal alias. if (TabController.IsDuplicateWithPortalAlias(PortalSettings.Current.PortalId, tab.TabPath)) { throw new DotNetNukeException("The page path is duplicate with a site alias", DotNetNukeErrorCode.DuplicateWithAlias); } try { if ((tab.TabID < 0)) { if ((tab.TabPermissions.Count == 0 && tab.PortalID != Null.NullInteger)) { //Give admin full permission ArrayList permissions = PermissionController.GetPermissionsByTab(); foreach (PermissionInfo permission in permissions) { TabPermissionInfo newTabPermission = new TabPermissionInfo(); newTabPermission.PermissionID = permission.PermissionID; newTabPermission.PermissionKey = permission.PermissionKey; newTabPermission.PermissionName = permission.PermissionName; newTabPermission.AllowAccess = true; newTabPermission.RoleID = PortalSettings.Current.AdministratorRoleId; tab.TabPermissions.Add(newTabPermission); } } PortalSettings _PortalSettings = PortalController.Instance.GetCurrentPortalSettings(); if (_PortalSettings.ContentLocalizationEnabled) { Locale defaultLocale = LocaleController.Instance.GetDefaultLocale(tab.PortalID); tab.CultureCode = defaultLocale.Code; } else { tab.CultureCode = Null.NullString; } if ((location == TabRelativeLocation.AFTER && (relativeToTab != null))) { tab.TabID = TabController.Instance.AddTabAfter(tab, relativeToTab.TabID); } else if ((location == TabRelativeLocation.BEFORE && (relativeToTab != null))) { tab.TabID = TabController.Instance.AddTabBefore(tab, relativeToTab.TabID); } else { tab.TabID = TabController.Instance.AddTab(tab); } if (_PortalSettings.ContentLocalizationEnabled) { TabController.Instance.CreateLocalizedCopies(tab); } TabController.Instance.UpdateTabSetting(tab.TabID, "CacheProvider", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "CacheDuration", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "CacheIncludeExclude", "0"); TabController.Instance.UpdateTabSetting(tab.TabID, "IncludeVaryBy", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "ExcludeVaryBy", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "MaxVaryByCount", ""); } else { TabController.Instance.UpdateTab(tab); if ((location == TabRelativeLocation.AFTER && (relativeToTab != null))) { TabController.Instance.MoveTabAfter(tab, relativeToTab.TabID); } else if ((location == TabRelativeLocation.BEFORE && (relativeToTab != null))) { TabController.Instance.MoveTabBefore(tab, relativeToTab.TabID); } } } catch (Exception ex) { Logger.Error(ex); if (ex.Message.StartsWith("Page Exists")) { throw new DotNetNukeException(ex.Message, DotNetNukeErrorCode.PageExists); } } // create the page from a template if (!string.IsNullOrEmpty(templateFileId)) { XmlDocument xmlDoc = new XmlDocument { XmlResolver = null }; try { var templateFile = FileManager.Instance.GetFile(Convert.ToInt32(templateFileId)); xmlDoc.Load(FileManager.Instance.GetFileContent(templateFile)); TabController.DeserializePanes(xmlDoc.SelectSingleNode("//portal/tabs/tab/panes"), tab.PortalID, tab.TabID, PortalTemplateModuleAction.Ignore, new Hashtable()); //save tab permissions DeserializeTabPermissions(xmlDoc.SelectNodes("//portal/tabs/tab/tabpermissions/permission"), tab); } catch (Exception ex) { Exceptions.LogException(ex); throw new DotNetNukeException("Unable to process page template.", ex, DotNetNukeErrorCode.DeserializePanesFailed); } } //todo: reload tab from db or send back tabid instead? return(tab.TabID); }
protected void CmdUpdateClick(object sender, EventArgs e) { if (TabPermissionController.CanManagePage()) { TabInfo selectedTab = null; if (!string.IsNullOrEmpty(this.PageLst.SelectedValue)) { int selectedTabID = int.Parse(this.PageLst.SelectedValue); selectedTab = TabController.Instance.GetTab(selectedTabID, PortalSettings.ActiveTab.PortalID, false); } TabRelativeLocation tabLocation = TabRelativeLocation.NOTSET; if (!string.IsNullOrEmpty(this.LocationLst.SelectedValue)) { tabLocation = (TabRelativeLocation)Enum.Parse(typeof(TabRelativeLocation), this.LocationLst.SelectedValue); } TabInfo tab = this.CurrentTab; tab.TabName = this.Name.Text; tab.IsVisible = this.IncludeInMenu.Checked; tab.DisableLink = this.IsDisabled.Checked; tab.IsSecure = this.IsSecure.Checked; tab.SkinSrc = this.SkinLst.SelectedValue; string errMsg = string.Empty; try { RibbonBarManager.SaveTabInfoObject(tab, selectedTab, tabLocation, null); } catch (DotNetNukeException ex) { Exceptions.LogException(ex); errMsg = (ex.ErrorCode != DotNetNukeErrorCode.NotSet) ? this.GetString("Err." + ex.ErrorCode) : ex.Message; } catch (Exception ex) { Exceptions.LogException(ex); errMsg = ex.Message; } // Clear the Tab's Cached modules DataCache.ClearModuleCache(PortalSettings.ActiveTab.TabID); // Update Cached Tabs as TabPath may be needed before cache is cleared TabInfo tempTab; if (TabController.Instance.GetTabsByPortal(PortalSettings.ActiveTab.PortalID).TryGetValue(tab.TabID, out tempTab)) { tempTab.TabPath = tab.TabPath; } if (string.IsNullOrEmpty(errMsg)) { this.Response.Redirect(this._navigationManager.NavigateURL(tab.TabID)); } else { errMsg = string.Format("<p>{0}</p><p>{1}</p>", this.GetString("Err.Header"), errMsg); Web.UI.Utilities.RegisterAlertOnPageLoad(this, new MessageWindowParameters(errMsg) { Title = this.GetString("Err.Title") }); } } }
public static TabInfo InitTabInfoObject(TabInfo relativeToTab, TabRelativeLocation location) { if (((relativeToTab == null))) { if (((PortalSettings.Current != null) && (PortalSettings.Current.ActiveTab != null))) { relativeToTab = PortalSettings.Current.ActiveTab; } } var newTab = new TabInfo { TabID = Null.NullInteger, TabName = "", Title = "", IsVisible = false, DisableLink = false, IsDeleted = false, IsSecure = false, PermanentRedirect = false }; TabInfo parentTab = GetParentTab(relativeToTab, location); if (((parentTab != null))) { newTab.PortalID = parentTab.PortalID; newTab.ParentId = parentTab.TabID; newTab.Level = parentTab.Level + 1; if ((PortalSettings.Current.SSLEnabled)) { newTab.IsSecure = parentTab.IsSecure; //Inherit from parent } } else { newTab.PortalID = PortalSettings.Current.PortalId; newTab.ParentId = Null.NullInteger; newTab.Level = 0; } //Inherit permissions from parent newTab.TabPermissions.Clear(); if ((newTab.PortalID != Null.NullInteger && (parentTab != null))) { newTab.TabPermissions.AddRange(parentTab.TabPermissions); } else if ((newTab.PortalID != Null.NullInteger)) { //Give admin full permission ArrayList permissions = PermissionController.GetPermissionsByTab(); foreach (PermissionInfo permission in permissions) { TabPermissionInfo newTabPermission = new TabPermissionInfo(); newTabPermission.PermissionID = permission.PermissionID; newTabPermission.PermissionKey = permission.PermissionKey; newTabPermission.PermissionName = permission.PermissionName; newTabPermission.AllowAccess = true; newTabPermission.RoleID = PortalSettings.Current.AdministratorRoleId; newTab.TabPermissions.Add(newTabPermission); } } return newTab; }
public static int SaveTabInfoObject(TabInfo tab, TabInfo relativeToTab, TabRelativeLocation location, string templateMapPath) { //Validation: //Tab name is required //Tab name is invalid string invalidType; if (!TabController.IsValidTabName(tab.TabName, out invalidType)) { switch (invalidType) { case "EmptyTabName": throw new DotNetNukeException("Page name is required.", DotNetNukeErrorCode.PageNameRequired); case "InvalidTabName": throw new DotNetNukeException("Page name is invalid.", DotNetNukeErrorCode.PageNameInvalid); } } else if ((Validate_IsCircularReference(tab.PortalID, tab.TabID))) { throw new DotNetNukeException("Cannot move page to that location.", DotNetNukeErrorCode.PageCircularReference); } bool usingDefaultLanguage = (tab.CultureCode == PortalSettings.Current.DefaultLanguage) || tab.CultureCode == null; if (PortalSettings.Current.ContentLocalizationEnabled) { if ((!usingDefaultLanguage)) { TabInfo defaultLanguageSelectedTab = tab.DefaultLanguageTab; if ((defaultLanguageSelectedTab == null)) { //get the siblings from the selectedtab and iterate through until you find a sibbling with a corresponding defaultlanguagetab //if none are found get a list of all the tabs from the default language and then select the last one var selectedTabSibblings = TabController.Instance.GetTabsByPortal(tab.PortalID).WithCulture(tab.CultureCode, true).AsList(); foreach (TabInfo sibling in selectedTabSibblings) { TabInfo siblingDefaultTab = sibling.DefaultLanguageTab; if (((siblingDefaultTab != null))) { defaultLanguageSelectedTab = siblingDefaultTab; break; } } //still haven't found it if ((defaultLanguageSelectedTab == null)) { var defaultLanguageTabs = TabController.Instance.GetTabsByPortal(tab.PortalID).WithCulture(PortalSettings.Current.DefaultLanguage, true).AsList(); defaultLanguageSelectedTab = defaultLanguageTabs[defaultLanguageTabs.Count]; //get the last tab } } relativeToTab = defaultLanguageSelectedTab; } } if ((location != TabRelativeLocation.NOTSET)) { //Check Host tab - don't allow adding before or after if ((IsHostConsolePage(relativeToTab) && (location == TabRelativeLocation.AFTER || location == TabRelativeLocation.BEFORE))) { throw new DotNetNukeException("You cannot add or move pages before or after the Host tab.", DotNetNukeErrorCode.HostBeforeAfterError); } TabInfo parentTab = GetParentTab(relativeToTab, location); string permissionList = "ADD,COPY,EDIT,MANAGE"; //Check permissions for Page Editors when moving or inserting if ((!PortalSecurity.IsInRole("Administrators"))) { if (((parentTab == null) || !TabPermissionController.HasTabPermission(parentTab.TabPermissions, permissionList))) { throw new DotNetNukeException("You do not have permissions to add or move pages to this location. You can only add or move pages as children of pages you can edit.", DotNetNukeErrorCode.PageEditorPermissionError); } } if (((parentTab != null))) { tab.ParentId = parentTab.TabID; tab.Level = parentTab.Level + 1; } else { tab.ParentId = Null.NullInteger; tab.Level = 0; } } if ((tab.TabID > Null.NullInteger && tab.TabID == tab.ParentId)) { throw new DotNetNukeException("Parent page is invalid.", DotNetNukeErrorCode.ParentTabInvalid); } tab.TabPath = Globals.GenerateTabPath(tab.ParentId, tab.TabName); //check whether have conflict between tab path and portal alias. if(TabController.IsDuplicateWithPortalAlias(PortalSettings.Current.PortalId, tab.TabPath)) { throw new DotNetNukeException("The page path is duplicate with a site alias", DotNetNukeErrorCode.DuplicateWithAlias); } try { if ((tab.TabID < 0)) { if ((tab.TabPermissions.Count == 0 && tab.PortalID != Null.NullInteger)) { //Give admin full permission ArrayList permissions = PermissionController.GetPermissionsByTab(); foreach (PermissionInfo permission in permissions) { TabPermissionInfo newTabPermission = new TabPermissionInfo(); newTabPermission.PermissionID = permission.PermissionID; newTabPermission.PermissionKey = permission.PermissionKey; newTabPermission.PermissionName = permission.PermissionName; newTabPermission.AllowAccess = true; newTabPermission.RoleID = PortalSettings.Current.AdministratorRoleId; tab.TabPermissions.Add(newTabPermission); } } PortalSettings _PortalSettings = PortalController.Instance.GetCurrentPortalSettings(); if (_PortalSettings.ContentLocalizationEnabled) { Locale defaultLocale = LocaleController.Instance.GetDefaultLocale(tab.PortalID); tab.CultureCode = defaultLocale.Code; } else { tab.CultureCode = Null.NullString; } if ((location == TabRelativeLocation.AFTER && (relativeToTab != null))) { tab.TabID = TabController.Instance.AddTabAfter(tab, relativeToTab.TabID); } else if ((location == TabRelativeLocation.BEFORE && (relativeToTab != null))) { tab.TabID = TabController.Instance.AddTabBefore(tab, relativeToTab.TabID); } else { tab.TabID = TabController.Instance.AddTab(tab); } if (_PortalSettings.ContentLocalizationEnabled) { TabController.Instance.CreateLocalizedCopies(tab); } TabController.Instance.UpdateTabSetting(tab.TabID, "CacheProvider", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "CacheDuration", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "CacheIncludeExclude", "0"); TabController.Instance.UpdateTabSetting(tab.TabID, "IncludeVaryBy", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "ExcludeVaryBy", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "MaxVaryByCount", ""); } else { TabController.Instance.UpdateTab(tab); if ((location == TabRelativeLocation.AFTER && (relativeToTab != null))) { TabController.Instance.MoveTabAfter(tab, relativeToTab.TabID); } else if ((location == TabRelativeLocation.BEFORE && (relativeToTab != null))) { TabController.Instance.MoveTabBefore(tab, relativeToTab.TabID); } } } catch (Exception ex) { Logger.Error(ex); if (ex.Message.StartsWith("Page Exists")) { throw new DotNetNukeException(ex.Message, DotNetNukeErrorCode.PageExists); } } // create the page from a template if ((!string.IsNullOrEmpty(templateMapPath))) { XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(templateMapPath); TabController.DeserializePanes(xmlDoc.SelectSingleNode("//portal/tabs/tab/panes"), tab.PortalID, tab.TabID, PortalTemplateModuleAction.Ignore, new Hashtable()); //save tab permissions DeserializeTabPermissions(xmlDoc.SelectNodes("//portal/tabs/tab/tabpermissions/permission"), tab); } catch (Exception ex) { Exceptions.LogException(ex); throw new DotNetNukeException("Unable to process page template.", ex, DotNetNukeErrorCode.DeserializePanesFailed); } } //todo: reload tab from db or send back tabid instead? return tab.TabID; }
public static TabInfo GetParentTab(TabInfo relativeToTab, TabRelativeLocation location) { if (((relativeToTab == null))) { return null; } TabInfo parentTab = null; if ((location == TabRelativeLocation.CHILD)) { parentTab = relativeToTab; } else if (((relativeToTab != null) && relativeToTab.ParentId != Null.NullInteger)) { parentTab = TabController.Instance.GetTab(relativeToTab.ParentId, relativeToTab.PortalID, false); } return parentTab; }