private static int CreateTabFromTemplate(string templateName, int parentTabId) { var virtualPath = string.Format("~/desktopmodules/hotcakes/core/content/pagetemplates/{0}.page.template", templateName); var path = HostingEnvironment.MapPath(virtualPath); if (File.Exists(path)) { var portalSettings = DnnGlobal.Instance.GetCurrentPortalSettings(); var doc = new XmlDocument(); doc.Load(path); var tabNode = doc.SelectSingleNode("portal/tab"); var tabName = tabNode.SelectSingleNode("name").InnerText; var tabController = new TabController(); var tab = tabController.GetTabByName(tabName, portalSettings.PortalId, parentTabId); tab = TabController.DeserializeTab(tabNode, tab, portalSettings.PortalId, PortalTemplateModuleAction.Merge); return(tab.TabID); } return(-1); }
protected void OnImportClick(object sender, EventArgs e) { try { if (cboTemplate.SelectedItem == null || cboTemplate.SelectedValue == "None_Specified") { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("SpecifyFile", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); return; } if (optMode.SelectedIndex == -1) { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("SpecifyMode", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); return; } var xmlDoc = new XmlDocument(); xmlDoc.Load(PortalSettings.HomeDirectoryMapPath + cboFolders.SelectedValue + cboTemplate.SelectedValue); XmlNode nodeTab = xmlDoc.SelectSingleNode("//portal/tabs/tab"); TabInfo objTab; if (optMode.SelectedValue == "ADD") { if (string.IsNullOrEmpty(txtTabName.Text)) { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("SpecifyName", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); return; } //New Tab objTab = new TabInfo { PortalID = PortalId, TabName = txtTabName.Text, IsVisible = true }; if (cboParentTab.SelectedItem != null) { objTab.ParentId = Int32.Parse(cboParentTab.SelectedItem.Value); } objTab.TabPath = Globals.GenerateTabPath(objTab.ParentId, objTab.TabName); int tabID = TabController.GetTabByTabPath(objTab.PortalID, objTab.TabPath, Null.NullString); var objTabs = new TabController(); //Check if tab exists if (tabID != Null.NullInteger) { TabInfo existingTab = objTabs.GetTab(tabID, PortalId, false); if (existingTab != null && existingTab.IsDeleted) { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("TabRecycled", LocalResourceFile), ModuleMessage.ModuleMessageType.YellowWarning); } else { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("TabExists", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); } return; } int positionTabID = Int32.Parse(cboPositionTab.SelectedItem.Value); var objEventLog = new EventLogController(); if (rbInsertPosition.SelectedValue == "After" && positionTabID > Null.NullInteger) { objTab.TabID = objTabs.AddTabAfter(objTab, positionTabID); } else if (rbInsertPosition.SelectedValue == "Before" && positionTabID > Null.NullInteger) { objTab.TabID = objTabs.AddTabBefore(objTab, positionTabID); } else { objTab.TabID = objTabs.AddTab(objTab); } objEventLog.AddLog(objTab, PortalSettings, UserId, "", EventLogController.EventLogType.TAB_CREATED); //Update Tab properties from template objTab = TabController.DeserializeTab(nodeTab, objTab, PortalId, PortalTemplateModuleAction.Replace); } else { //Replace Existing Tab objTab = TabController.DeserializeTab(nodeTab, Tab, PortalId, PortalTemplateModuleAction.Replace); } switch (optRedirect.SelectedValue) { case "VIEW": Response.Redirect(Globals.NavigateURL(objTab.TabID), true); break; default: Response.Redirect(Globals.NavigateURL(objTab.TabID, "Tab", "action=edit"), true); break; } } catch (Exception exc) { Exceptions.ProcessModuleLoadException(this, exc); } }
protected void OnImportClick(object sender, EventArgs e) { try { if (cboTemplate.SelectedItem == null || cboTemplate.SelectedValue == "None_Specified") { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("SpecifyFile", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); return; } if (optMode.SelectedIndex == -1) { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("SpecifyMode", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); return; } if (cboFolders.SelectedItem == null) { return; } var selectedFolder = FolderManager.Instance.GetFolder(cboFolders.SelectedItemValueAsInt); if (selectedFolder == null) { return; } var selectedFile = Services.FileSystem.FileManager.Instance.GetFile(Convert.ToInt32(cboTemplate.SelectedValue)); var xmlDoc = new XmlDocument { XmlResolver = null }; using (var content = Services.FileSystem.FileManager.Instance.GetFileContent(selectedFile)) { xmlDoc.Load(content); } var tabNodes = new List <XmlNode>(); var selectSingleNode = xmlDoc.SelectSingleNode("//portal/tabs"); if (selectSingleNode != null) { tabNodes.AddRange(selectSingleNode.ChildNodes.Cast <XmlNode>()); } if (tabNodes.Count == 0) { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("NoTabsInTemplate", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); return; } TabInfo objTab; if (optMode.SelectedValue == "ADD") { //Check for invalid string invalidType; if (!TabController.IsValidTabName(txtTabName.Text, out invalidType)) { var warningMessage = string.Format(Localization.GetString(invalidType, LocalResourceFile), txtTabName.Text); UI.Skins.Skin.AddModuleMessage(this, warningMessage, ModuleMessage.ModuleMessageType.RedError); return; } //New Tab objTab = new TabInfo { PortalID = PortalId, TabName = txtTabName.Text, IsVisible = true }; var parentId = cboParentTab.SelectedItemValueAsInt; if (parentId != Null.NullInteger) { objTab.ParentId = parentId; } objTab.TabPath = Globals.GenerateTabPath(objTab.ParentId, objTab.TabName); var tabId = TabController.GetTabByTabPath(objTab.PortalID, objTab.TabPath, Null.NullString); //Check if tab exists if (tabId != Null.NullInteger) { TabInfo existingTab = TabController.Instance.GetTab(tabId, PortalId, false); if (existingTab != null && existingTab.IsDeleted) { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("TabRecycled", LocalResourceFile), ModuleMessage.ModuleMessageType.YellowWarning); } else { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("TabExists", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); } return; } var positionTabId = Int32.Parse(cboPositionTab.SelectedItem.Value); if (rbInsertPosition.SelectedValue == "After" && positionTabId > Null.NullInteger) { objTab.TabID = TabController.Instance.AddTabAfter(objTab, positionTabId); } else if (rbInsertPosition.SelectedValue == "Before" && positionTabId > Null.NullInteger) { objTab.TabID = TabController.Instance.AddTabBefore(objTab, positionTabId); } else { objTab.TabID = TabController.Instance.AddTab(objTab); } EventLogController.Instance.AddLog(objTab, PortalSettings, UserId, "", EventLogController.EventLogType.TAB_CREATED); objTab = TabController.DeserializeTab(tabNodes[0], objTab, PortalId, PortalTemplateModuleAction.Replace); var exceptions = string.Empty; //Create second tabs onwards. For firs tab, we like to use tab details from text box, for rest it'll come from template for (var tab = 1; tab < tabNodes.Count; tab++) { try { TabController.DeserializeTab(tabNodes[tab], null, PortalId, PortalTemplateModuleAction.Replace); } catch (Exception ex) { Exceptions.LogException(ex); exceptions += string.Format("Template Tab # {0}. Error {1}<br/>", tab + 1, ex.Message); } } if (!string.IsNullOrEmpty(exceptions)) { UI.Skins.Skin.AddModuleMessage(this, exceptions, ModuleMessage.ModuleMessageType.RedError); return; } } else { //Replace Existing Tab objTab = TabController.DeserializeTab(tabNodes[0], Tab, PortalId, PortalTemplateModuleAction.Replace); } switch (optRedirect.SelectedValue) { case "VIEW": Response.Redirect(_navigationManager.NavigateURL(objTab.TabID), true); break; default: Response.Redirect(_navigationManager.NavigateURL(objTab.TabID, "Tab", "action=edit"), true); break; } } catch (Exception exc) { Exceptions.ProcessModuleLoadException(this, exc); } }
protected void OnImportClick(object sender, EventArgs e) { try { if (cboTemplate.SelectedItem == null || cboTemplate.SelectedValue == "None_Specified") { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("SpecifyFile", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); return; } if (optMode.SelectedIndex == -1) { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("SpecifyMode", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); return; } if (cboFolders.SelectedItem == null) { return; } var selectedFolder = FolderManager.Instance.GetFolder(cboFolders.SelectedItemValueAsInt); if (selectedFolder == null) { return; } var xmlDoc = new XmlDocument(); xmlDoc.Load(PortalSettings.HomeDirectoryMapPath + selectedFolder.FolderPath + cboTemplate.SelectedValue); var tabNodes = new List <XmlNode>(); var selectSingleNode = xmlDoc.SelectSingleNode("//portal/tabs"); if (selectSingleNode != null) { tabNodes.AddRange(selectSingleNode.ChildNodes.Cast <XmlNode>()); } if (tabNodes.Count == 0) { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("NoTabsInTemplate", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); return; } TabInfo objTab; if (optMode.SelectedValue == "ADD") { if (string.IsNullOrEmpty(txtTabName.Text)) { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("SpecifyName", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); return; } //New Tab objTab = new TabInfo { PortalID = PortalId, TabName = txtTabName.Text, IsVisible = true }; var parentId = cboParentTab.SelectedItemValueAsInt; if (parentId != Null.NullInteger) { objTab.ParentId = parentId; } objTab.TabPath = Globals.GenerateTabPath(objTab.ParentId, objTab.TabName); var tabId = TabController.GetTabByTabPath(objTab.PortalID, objTab.TabPath, Null.NullString); var objTabs = new TabController(); //Check if tab exists if (tabId != Null.NullInteger) { TabInfo existingTab = objTabs.GetTab(tabId, PortalId, false); if (existingTab != null && existingTab.IsDeleted) { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("TabRecycled", LocalResourceFile), ModuleMessage.ModuleMessageType.YellowWarning); } else { UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("TabExists", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError); } return; } var positionTabId = Int32.Parse(cboPositionTab.SelectedItem.Value); //var pc = new PermissionController(); //var permission = pc.GetPermissionByCodeAndKey("SYSTEM_TAB", "VIEW"); //if (permission.Count > 0) //{ // var pid = ((PermissionInfo)permission[0]).PermissionID; // objTab.TabPermissions.Add(new TabPermissionInfo { PermissionID = pid, AllowAccess = true, RoleID = 0 }); //} //permission = pc.GetPermissionByCodeAndKey("SYSTEM_TAB", "EDIT"); //if (permission.Count > 0) //{ // var pid = ((PermissionInfo)permission[0]).PermissionID; // objTab.TabPermissions.Add(new TabPermissionInfo { PermissionID = pid, AllowAccess = true, RoleID = 0 }); //} var objEventLog = new EventLogController(); if (rbInsertPosition.SelectedValue == "After" && positionTabId > Null.NullInteger) { objTab.TabID = objTabs.AddTabAfter(objTab, positionTabId); } else if (rbInsertPosition.SelectedValue == "Before" && positionTabId > Null.NullInteger) { objTab.TabID = objTabs.AddTabBefore(objTab, positionTabId); } else { objTab.TabID = objTabs.AddTab(objTab); } objEventLog.AddLog(objTab, PortalSettings, UserId, "", EventLogController.EventLogType.TAB_CREATED); objTab = TabController.DeserializeTab(tabNodes[0], objTab, PortalId, PortalTemplateModuleAction.Replace); var exceptions = string.Empty; //Create second tabs onwards. For firs tab, we like to use tab details from text box, for rest it'll come from template for (var tab = 1; tab < tabNodes.Count; tab++) { try { TabController.DeserializeTab(tabNodes[tab], null, PortalId, PortalTemplateModuleAction.Replace); } catch (Exception ex) { Exceptions.LogException(ex); exceptions += string.Format("Template Tab # {0}. Error {1}<br/>", tab + 1, ex.Message); } } if (!string.IsNullOrEmpty(exceptions)) { UI.Skins.Skin.AddModuleMessage(this, exceptions, ModuleMessage.ModuleMessageType.RedError); return; } } else { //Replace Existing Tab objTab = TabController.DeserializeTab(tabNodes[0], Tab, PortalId, PortalTemplateModuleAction.Replace); } switch (optRedirect.SelectedValue) { case "VIEW": Response.Redirect(Globals.NavigateURL(objTab.TabID), true); break; default: Response.Redirect(Globals.NavigateURL(objTab.TabID, "Tab", "action=edit"), true); break; } } catch (Exception exc) { Exceptions.ProcessModuleLoadException(this, exc); } }
public void CreatePageFromTemplate(int templateId, TabInfo tab, int portalId) { // create the page from a template if (templateId != Null.NullInteger) { var xmlDoc = new XmlDocument { XmlResolver = null }; try { // open the XML file var fileId = Convert.ToInt32(templateId); var templateFile = FileManager.Instance.GetFile(fileId); xmlDoc.Load(FileManager.Instance.GetFileContent(templateFile)); } catch (Exception ex) { DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); throw new PageException(Localization.GetString("BadTemplate")); } TabController.DeserializePanes(xmlDoc.SelectSingleNode("//portal/tabs/tab/panes"), tab.PortalID, tab.TabID, PortalTemplateModuleAction.Ignore, new Hashtable()); //save tab permissions RibbonBarManager.DeserializeTabPermissions(xmlDoc.SelectNodes("//portal/tabs/tab/tabpermissions/permission"), tab); var tabIndex = 0; var exceptions = string.Empty; // ReSharper disable once PossibleNullReferenceException foreach (XmlNode tabNode in xmlDoc.SelectSingleNode("//portal/tabs").ChildNodes) { //Create second tab onward tabs. Note first tab is already created above. if (tabIndex > 0) { try { TabController.DeserializeTab(tabNode, null, portalId, PortalTemplateModuleAction.Replace); } catch (Exception ex) { DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); exceptions += string.Format("Template Tab # {0}. Error {1}<br/>", tabIndex + 1, ex.Message); } } else { if (string.IsNullOrEmpty(tab.SkinSrc) && !String.IsNullOrEmpty(XmlUtils.GetNodeValue(tabNode, "skinsrc", ""))) { tab.SkinSrc = XmlUtils.GetNodeValue(tabNode, "skinsrc", ""); } if (string.IsNullOrEmpty(tab.ContainerSrc) && !String.IsNullOrEmpty(XmlUtils.GetNodeValue(tabNode, "containersrc", ""))) { tab.ContainerSrc = XmlUtils.GetNodeValue(tabNode, "containersrc", ""); } bool isSecure; if (bool.TryParse(XmlUtils.GetNodeValue(tabNode, "issecure", ""), out isSecure)) { tab.IsSecure = isSecure; } TabController.Instance.UpdateTab(tab); } tabIndex++; } if (!string.IsNullOrEmpty(exceptions)) { throw new PageException(exceptions); } } }