private string GetSkin() { //attempt to find and load a skin from the assigned skinned source var tabController = new TabController(); var skinSource = PortalSettings.DefaultPortalSkin; var tab = tabController.GetTab(TabId, PortalId, false); if (!string.IsNullOrEmpty(tab.SkinSrc)) { skinSource = tab.SkinSrc; } else { skinSource = SkinController.FormatSkinPath(skinSource) + "groups.ascx"; var physicalSkinFile = SkinController.FormatSkinSrc(skinSource, PortalSettings); if (!File.Exists(HttpContext.Current.Server.MapPath(physicalSkinFile))) { skinSource = ""; //this will load the default skin } } return(skinSource); }
public void ConfigureTab_Formats_Tab_ContainerSrc_If_Neccessary() { //Arrange var controller = new PortalSettingsController(); var settings = new PortalSettings { PortalId = ValidPortalId, DefaultPortalContainer = DefaultContainer, CultureCode = Null.NullString }; var validTab = new TabInfo { TabID = ValidTabId, PortalID = ValidPortalId, ContainerSrc = GlobalTabContainer }; settings.ActiveTab = validTab; settings.ActiveTab.SkinSrc = TabSkin; var mockLocaleController = new Mock <ILocaleController>(); mockLocaleController.Setup(c => c.GetLocales(It.IsAny <int>())).Returns(new Dictionary <string, Locale>()); LocaleController.RegisterInstance(mockLocaleController.Object); var mockTabController = new Mock <ITabController>(); mockTabController.Setup(c => c.GetTabsByPortal(ValidPortalId)).Returns(new TabCollection(new List <TabInfo> { validTab })); mockTabController.Setup(c => c.GetTabsByPortal(HostPortalId)).Returns(new TabCollection()); TabController.SetTestableInstance(mockTabController.Object); //Act controller.ConfigureActiveTab(settings); //Assert Assert.AreEqual(SkinController.FormatSkinSrc(GlobalTabContainer, settings), settings.ActiveTab.ContainerSrc); }
protected virtual void UpdateSkinSettings(TabInfo activeTab, PortalSettings portalSettings) { if (Globals.IsAdminSkin()) { //DNN-6170 ensure skin value is culture specific activeTab.SkinSrc = String.IsNullOrEmpty(PortalController.GetPortalSetting("DefaultAdminSkin", portalSettings.PortalId, Host.Host.DefaultAdminSkin, portalSettings.CultureCode)) ? portalSettings.DefaultAdminSkin : PortalController.GetPortalSetting("DefaultAdminSkin", portalSettings.PortalId, Host.Host.DefaultAdminSkin, portalSettings.CultureCode); } else if (String.IsNullOrEmpty(activeTab.SkinSrc)) { //DNN-6170 ensure skin value is culture specific activeTab.SkinSrc = String.IsNullOrEmpty(PortalController.GetPortalSetting("DefaultPortalSkin", portalSettings.PortalId, Host.Host.DefaultPortalSkin, portalSettings.CultureCode)) ? portalSettings.DefaultPortalSkin : PortalController.GetPortalSetting("DefaultPortalSkin", portalSettings.PortalId, Host.Host.DefaultPortalSkin, portalSettings.CultureCode); } activeTab.SkinSrc = SkinController.FormatSkinSrc(activeTab.SkinSrc, portalSettings); activeTab.SkinPath = SkinController.FormatSkinPath(activeTab.SkinSrc); if (Globals.IsAdminSkin()) { activeTab.ContainerSrc = String.IsNullOrEmpty(PortalController.GetPortalSetting("DefaultAdminContainer", portalSettings.PortalId, Host.Host.DefaultAdminContainer, portalSettings.CultureCode)) ? portalSettings.DefaultAdminContainer : PortalController.GetPortalSetting("DefaultAdminContainer", portalSettings.PortalId, Host.Host.DefaultAdminContainer, portalSettings.CultureCode); } else if (String.IsNullOrEmpty(activeTab.ContainerSrc)) { activeTab.ContainerSrc = String.IsNullOrEmpty(PortalController.GetPortalSetting("DefaultPortalContainer", portalSettings.PortalId, Host.Host.DefaultPortalContainer, portalSettings.CultureCode)) ? portalSettings.DefaultPortalContainer : PortalController.GetPortalSetting("DefaultPortalContainer", portalSettings.PortalId, Host.Host.DefaultPortalContainer, portalSettings.CultureCode); } activeTab.ContainerSrc = SkinController.FormatSkinSrc(activeTab.ContainerSrc, portalSettings); activeTab.ContainerPath = SkinController.FormatSkinPath(activeTab.ContainerSrc); }
protected virtual void UpdateSkinSettings(TabInfo activeTab, PortalSettings portalSettings) { if (Globals.IsAdminSkin()) { activeTab.SkinSrc = portalSettings.DefaultAdminSkin; } else if (String.IsNullOrEmpty(activeTab.SkinSrc)) { activeTab.SkinSrc = portalSettings.DefaultPortalSkin; } activeTab.SkinSrc = SkinController.FormatSkinSrc(activeTab.SkinSrc, portalSettings); activeTab.SkinPath = SkinController.FormatSkinPath(activeTab.SkinSrc); if (Globals.IsAdminSkin()) { activeTab.ContainerSrc = portalSettings.DefaultAdminContainer; } else if (String.IsNullOrEmpty(activeTab.ContainerSrc)) { activeTab.ContainerSrc = portalSettings.DefaultPortalContainer; } activeTab.ContainerSrc = SkinController.FormatSkinSrc(activeTab.ContainerSrc, portalSettings); activeTab.ContainerPath = SkinController.FormatSkinPath(activeTab.ContainerSrc); }
public static string GetSkinTemplateFolder(PortalSettings portalSettings, string moduleSubDir) { var SkinPath = portalSettings.ActiveTab.SkinPath; if (string.IsNullOrEmpty(SkinPath)) { var SkinSrc = SkinController.FormatSkinSrc(!string.IsNullOrEmpty(portalSettings.ActiveTab.SkinSrc) ? portalSettings.ActiveTab.SkinSrc : portalSettings.DefaultPortalSkin, portalSettings); SkinPath = SkinController.FormatSkinPath(SkinSrc); //SkinPath = DotNetNuke.Entities.Tabs.TabController.Instance.GetTab(portalSettings.ActiveTab.TabID, portalSettings.PortalId).SkinPath; } return(SkinPath + moduleSubDir + "/Templates/"); }
protected void OnCommand(Object sender, CommandEventArgs e) { try { var strSrc = e.CommandArgument.ToString(); var redirectUrl = Globals.NavigateURL(TabId); switch (e.CommandName) { case "ApplyContainer": if (chkPortal.Checked) { SkinController.SetSkin(SkinController.RootContainer, PortalId, SkinType.Portal, strSrc); } if (chkAdmin.Checked) { SkinController.SetSkin(SkinController.RootContainer, PortalId, SkinType.Admin, strSrc); } break; case "ApplySkin": if (chkPortal.Checked) { SkinController.SetSkin(SkinController.RootSkin, PortalId, SkinType.Portal, strSrc); } if (chkAdmin.Checked) { SkinController.SetSkin(SkinController.RootSkin, PortalId, SkinType.Admin, strSrc); } DataCache.ClearPortalCache(PortalId, true); break; case "Delete": File.Delete(Request.MapPath(SkinController.FormatSkinSrc(strSrc, PortalSettings))); DataCache.ClearPortalCache(PortalId, true); var strType = "G"; if (strSrc.StartsWith("[L]")) { strType = "L"; } var strRoot = strSrc.Substring(3, strSrc.IndexOf("/") - 3); var strFolder = strSrc.Substring(strSrc.IndexOf("/") + 1, strSrc.LastIndexOf("/") - strSrc.IndexOf("/") - 2); redirectUrl = Globals.NavigateURL(TabId, "", "Type=" + strType, "Root=" + strRoot, "Name=" + strFolder); break; } Response.Redirect(redirectUrl, true); } catch (Exception exc) //Module failed to load { Exceptions.ProcessModuleLoadException(this, exc); } }
/// <summary> /// delete a skin or container. /// </summary> /// <param name="portalSettings"></param> /// <param name="themeFile"></param> public void DeleteTheme(PortalSettings portalSettings, ThemeFileInfo themeFile) { var themePath = SkinController.FormatSkinSrc(themeFile.Path, portalSettings); var user = UserController.Instance.GetCurrentUserInfo(); if (!user.IsSuperUser && themePath.IndexOf("\\portals\\_default\\", StringComparison.InvariantCultureIgnoreCase) != Null.NullInteger) { throw new SecurityException("NoPermission"); } File.Delete(Path.Combine(Globals.ApplicationMapPath, themePath)); DataCache.ClearPortalCache(portalSettings.PortalId, true); }
private string GetSkinPath() { var skin = HttpContext.Current?.Request.QueryString [SkinSrcParameter] ?? PortalSettings.Current.ActiveTab.SkinSrc; if (string.IsNullOrEmpty(skin)) { skin = PortalController.GetPortalSetting(DnnSettingDefaultPortalSkin, PortalSettings.Current.PortalId, Host.DefaultPortalSkin); } skin = SkinController.FormatSkinSrc(skin, PortalSettings.Current); return(skin.Substring(0, skin.LastIndexOf("/") + 1)); }
private static void ConfigureModule(ModuleInfo cloneModule, TabInfo tab) { if (Null.IsNull(cloneModule.StartDate)) { cloneModule.StartDate = DateTime.MinValue; } if (Null.IsNull(cloneModule.EndDate)) { cloneModule.EndDate = DateTime.MaxValue; } if (String.IsNullOrEmpty(cloneModule.ContainerSrc)) { cloneModule.ContainerSrc = tab.ContainerSrc; } cloneModule.ContainerSrc = SkinController.FormatSkinSrc(cloneModule.ContainerSrc, PortalSettings.Current); cloneModule.ContainerPath = SkinController.FormatSkinPath(cloneModule.ContainerSrc); }
/// <summary> /// Update Theme Attributes. /// </summary> /// <param name="portalSettings"></param> /// <param name="updateTheme"></param> public void UpdateTheme(PortalSettings portalSettings, UpdateThemeInfo updateTheme) { var themePath = SkinController.FormatSkinSrc(updateTheme.Path + ".ascx", portalSettings); themePath = Path.Combine(Globals.ApplicationMapPath, themePath.TrimStart('/')); var objStreamReader = File.OpenText(themePath); var strSkin = objStreamReader.ReadToEnd(); objStreamReader.Close(); var strTag = "<dnn:" + updateTheme.Token + " runat=\"server\" id=\"dnn" + updateTheme.Token + "\""; var intOpenTag = strSkin.IndexOf(strTag); if (intOpenTag != -1) { var intCloseTag = strSkin.IndexOf(" />", intOpenTag); var strAttribute = updateTheme.Setting; var intStartAttribute = strSkin.IndexOf(strAttribute, intOpenTag); string strValue = updateTheme.Value; if (intStartAttribute != -1 && intStartAttribute < intCloseTag) { //remove attribute var intEndAttribute = strSkin.IndexOf("\" ", intStartAttribute); strSkin = strSkin.Substring(0, intStartAttribute) + strSkin.Substring(intEndAttribute + 2); } //add attribute strSkin = strSkin.Insert(intOpenTag + strTag.Length, " " + strAttribute + "=\"" + strValue + "\""); File.SetAttributes(themePath, FileAttributes.Normal); var objStream = File.CreateText(themePath); objStream.WriteLine(strSkin); objStream.Close(); UpdateManifest(portalSettings, updateTheme); } }
private void GetPortalSettings(int tabID, PortalInfo portal) { ModuleController objModules = new ModuleController(); ModuleInfo objModule; this.PortalId = portal.PortalID; this.PortalName = portal.PortalName; this.LogoFile = portal.LogoFile; this.FooterText = portal.FooterText; this.ExpiryDate = portal.ExpiryDate; this.UserRegistration = portal.UserRegistration; this.BannerAdvertising = portal.BannerAdvertising; this.Currency = portal.Currency; this.AdministratorId = portal.AdministratorId; this.Email = portal.Email; this.HostFee = portal.HostFee; this.HostSpace = portal.HostSpace; this.PageQuota = portal.PageQuota; this.UserQuota = portal.UserQuota; this.AdministratorRoleId = portal.AdministratorRoleId; this.AdministratorRoleName = portal.AdministratorRoleName; this.RegisteredRoleId = portal.RegisteredRoleId; this.RegisteredRoleName = portal.RegisteredRoleName; this.Description = portal.Description; this.KeyWords = portal.KeyWords; this.BackgroundFile = portal.BackgroundFile; this.GUID = portal.GUID; this.SiteLogHistory = portal.SiteLogHistory; this.AdminTabId = portal.AdminTabId; this.SuperTabId = portal.SuperTabId; this.SplashTabId = portal.SplashTabId; this.HomeTabId = portal.HomeTabId; this.LoginTabId = portal.LoginTabId; this.RegisterTabId = portal.RegisterTabId; this.UserTabId = portal.UserTabId; this.DefaultLanguage = portal.DefaultLanguage; this.TimeZoneOffset = portal.TimeZoneOffset; this.HomeDirectory = portal.HomeDirectory; this.Pages = portal.Pages; this.Users = portal.Users; if (Null.IsNull(this.HostSpace)) { this.HostSpace = 0; } if (Null.IsNull(this.DefaultLanguage)) { this.DefaultLanguage = Localization.SystemLocale; } if (Null.IsNull(this.TimeZoneOffset)) { this.TimeZoneOffset = Localization.SystemTimeZoneOffset; } this.HomeDirectory = Common.Globals.ApplicationPath + "/" + portal.HomeDirectory + "/"; if (VerifyPortalTab(PortalId, tabID)) { if (this.ActiveTab != null) { if (Globals.IsAdminSkin()) { this.ActiveTab.SkinSrc = this.DefaultAdminSkin; } else { if (String.IsNullOrEmpty(this.ActiveTab.SkinSrc)) { this.ActiveTab.SkinSrc = this.DefaultPortalSkin; } } this.ActiveTab.SkinSrc = SkinController.FormatSkinSrc(this.ActiveTab.SkinSrc, this); this.ActiveTab.SkinPath = SkinController.FormatSkinPath(this.ActiveTab.SkinSrc); if (Globals.IsAdminSkin()) { this.ActiveTab.ContainerSrc = this.DefaultAdminContainer; } else { if (String.IsNullOrEmpty(this.ActiveTab.ContainerSrc)) { this.ActiveTab.ContainerSrc = this.DefaultPortalContainer; } } this.ActiveTab.ContainerSrc = SkinController.FormatSkinSrc(this.ActiveTab.ContainerSrc, this); this.ActiveTab.ContainerPath = SkinController.FormatSkinPath(this.ActiveTab.ContainerSrc); this.ActiveTab.Panes = new ArrayList(); this.ActiveTab.Modules = new ArrayList(); ArrayList crumbs = new ArrayList(); GetBreadCrumbsRecursively(ref crumbs, this.ActiveTab.TabID); this.ActiveTab.BreadCrumbs = crumbs; } } if (this.ActiveTab != null) { Dictionary <string, int> objPaneModules = new Dictionary <string, int>(); foreach (KeyValuePair <int, ModuleInfo> kvp in objModules.GetTabModules(this.ActiveTab.TabID)) { ModuleInfo cloneModule = kvp.Value.Clone(); if (Null.IsNull(cloneModule.StartDate)) { cloneModule.StartDate = System.DateTime.MinValue; } if (Null.IsNull(cloneModule.EndDate)) { cloneModule.EndDate = System.DateTime.MaxValue; } if (String.IsNullOrEmpty(cloneModule.ContainerSrc)) { cloneModule.ContainerSrc = this.ActiveTab.ContainerSrc; } cloneModule.ContainerSrc = SkinController.FormatSkinSrc(cloneModule.ContainerSrc, this); cloneModule.ContainerPath = SkinController.FormatSkinPath(cloneModule.ContainerSrc); if (objPaneModules.ContainsKey(cloneModule.PaneName) == false) { objPaneModules.Add(cloneModule.PaneName, 0); } cloneModule.PaneModuleCount = 0; if (!cloneModule.IsDeleted) { objPaneModules[cloneModule.PaneName] = objPaneModules[cloneModule.PaneName] + 1; cloneModule.PaneModuleIndex = objPaneModules[cloneModule.PaneName] - 1; } this.ActiveTab.Modules.Add(cloneModule); } foreach (ModuleInfo module in this.ActiveTab.Modules) { module.PaneModuleCount = objPaneModules[module.PaneName]; } } }
protected void Page_Init(Object sender, EventArgs e) { InitializePage(); UserControl ctlSkin = null; if (Request.QueryString["SkinSrc"] != null) { PortalSettings.ActiveTab.SkinSrc = SkinController.FormatSkinSrc(Globals.QueryStringDecode(Request.QueryString["SkinSrc"]) + ".ascx", PortalSettings); ctlSkin = LoadSkin(PortalSettings.ActiveTab.SkinSrc); } // load user skin ( based on cookie ) if (ctlSkin == null) { if (Request.Cookies["_SkinSrc" + PortalSettings.PortalId] != null) { if (!String.IsNullOrEmpty(Request.Cookies["_SkinSrc" + PortalSettings.PortalId].Value)) { PortalSettings.ActiveTab.SkinSrc = SkinController.FormatSkinSrc(Request.Cookies["_SkinSrc" + PortalSettings.PortalId].Value + ".ascx", PortalSettings); ctlSkin = LoadSkin(PortalSettings.ActiveTab.SkinSrc); } } } // load assigned skin if (ctlSkin == null) { if (Globals.IsAdminSkin(PortalSettings.ActiveTab.IsAdminTab)) { SkinInfo objSkin = SkinController.GetSkin(SkinInfo.RootSkin, PortalSettings.PortalId, SkinType.Admin); if (objSkin != null) { PortalSettings.ActiveTab.SkinSrc = objSkin.SkinSrc; } else { PortalSettings.ActiveTab.SkinSrc = ""; } } if (!String.IsNullOrEmpty(PortalSettings.ActiveTab.SkinSrc)) { PortalSettings.ActiveTab.SkinSrc = SkinController.FormatSkinSrc(PortalSettings.ActiveTab.SkinSrc, PortalSettings); ctlSkin = LoadSkin(PortalSettings.ActiveTab.SkinSrc); } } // error loading skin - load default if (ctlSkin == null) { // could not load skin control - load default skin if (Globals.IsAdminSkin(PortalSettings.ActiveTab.IsAdminTab)) { PortalSettings.ActiveTab.SkinSrc = Globals.HostPath + SkinInfo.RootSkin + Globals.glbDefaultSkinFolder + Globals.glbDefaultAdminSkin; } else { PortalSettings.ActiveTab.SkinSrc = Globals.HostPath + SkinInfo.RootSkin + Globals.glbDefaultSkinFolder + Globals.glbDefaultSkin; } ctlSkin = LoadSkin(PortalSettings.ActiveTab.SkinSrc); } // set skin path PortalSettings.ActiveTab.SkinPath = SkinController.FormatSkinPath(PortalSettings.ActiveTab.SkinSrc); // set skin id to an explicit short name to reduce page payload and make it standards compliant ctlSkin.ID = "dnn"; // add CSS links ManageStyleSheets(false); // add skin to page SkinPlaceHolder.Controls.Add(ctlSkin); // add CSS links ManageStyleSheets(true); // ClientCallback Logic ClientAPI.HandleClientAPICallbackEvent(this); }
protected void Page_Load(Object sender, EventArgs e) { try { if (Page.IsPostBack == false) { ClientAPI.AddButtonConfirm(cmdDelete, Localization.GetString("DeleteItem")); LoadSkins(); LoadContainers(); if (Request.QueryString["action"] != null) { string strType = Request.QueryString["Type"]; string strRoot = Request.QueryString["Root"]; string strName = Request.QueryString["Name"]; string strSrc = "[" + strType + "]" + strRoot + "/" + strName + "/" + Request.QueryString["Src"]; switch (Request.QueryString["action"]) { case "apply": if (strRoot == SkinInfo.RootSkin) { if (chkPortal.Checked) { SkinController.SetSkin(SkinInfo.RootSkin, PortalId, SkinType.Portal, strSrc); } if (chkAdmin.Checked) { SkinController.SetSkin(SkinInfo.RootSkin, PortalId, SkinType.Admin, strSrc); } } if (strRoot == SkinInfo.RootContainer) { if (chkPortal.Checked) { SkinController.SetSkin(SkinInfo.RootContainer, PortalId, SkinType.Portal, strSrc); } if (chkAdmin.Checked) { SkinController.SetSkin(SkinInfo.RootContainer, PortalId, SkinType.Admin, strSrc); } } DataCache.ClearPortalCache(PortalId, true); Response.Redirect(Request.RawUrl.Replace("&action=apply", "")); break; case "delete": File.Delete(Request.MapPath(SkinController.FormatSkinSrc(strSrc, PortalSettings))); LoadSkins(); LoadContainers(); break; } } } if (PortalSettings.ActiveTab.IsSuperTab) { typeRow.Visible = false; } else { typeRow.Visible = true; } } catch (Exception exc) //Module failed to load { Exceptions.ProcessModuleLoadException(this, exc); } }
private void LoadSkins() { string strRoot; string strFolder; string[] arrFolders; string strName; string strSkin; cboSkins.Items.Clear(); cboSkins.Items.Add("<" + Localization.GetString("Not_Specified") + ">"); // load host skins if (chkHost.Checked) { strRoot = Request.MapPath(Globals.HostPath + SkinInfo.RootSkin); if (Directory.Exists(strRoot)) { arrFolders = Directory.GetDirectories(strRoot); foreach (string tempLoopVar_strFolder in arrFolders) { strFolder = tempLoopVar_strFolder; //strName = strFolder.Substring( strFolder.LastIndexOf( "\\" ) + 1 - 1 ); strName = strFolder.Substring(strFolder.LastIndexOf("\\") + 1 - 1); strSkin = strFolder.Replace(Globals.ApplicationMapPath, ""); if (strName != "_default") { cboSkins.Items.Add(new ListItem(strName, strSkin.ToLower())); } } } } // load portal skins if (chkSite.Checked) { strRoot = PortalSettings.HomeDirectoryMapPath + SkinInfo.RootSkin; if (Directory.Exists(strRoot)) { arrFolders = Directory.GetDirectories(strRoot); foreach (string tempLoopVar_strFolder in arrFolders) { strFolder = tempLoopVar_strFolder; strName = strFolder.Substring(strFolder.LastIndexOf("\\") + 1 - 1); strSkin = strFolder.Replace(Globals.ApplicationMapPath, ""); cboSkins.Items.Add(new ListItem(strName, strSkin.ToLower())); } } } if (!Page.IsPostBack) { string strURL; if (Request.QueryString["Name"] != null) { strURL = Request.MapPath(GetSkinPath(Convert.ToString(Request.QueryString["Type"]), SkinInfo.RootSkin, Convert.ToString(Request.QueryString["Name"]))); } else { //Get the current portal skin string skinSrc; SkinInfo objSkin = SkinController.GetSkin(SkinInfo.RootSkin, PortalSettings.PortalId, SkinType.Portal); if (objSkin != null) { skinSrc = objSkin.SkinSrc; } else { skinSrc = "[G]" + SkinInfo.RootSkin + Globals.glbDefaultSkinFolder + Globals.glbDefaultSkin; } strURL = Request.MapPath(SkinController.FormatSkinPath(SkinController.FormatSkinSrc(skinSrc, PortalSettings))); strURL = strURL.Substring(0, strURL.LastIndexOf("\\")); } strSkin = strURL.Replace(Globals.ApplicationMapPath, ""); if (cboSkins.Items.FindByValue(strSkin.ToLower()) != null) { cboSkins.Items.FindByValue(strSkin.ToLower()).Selected = true; ShowSkins(); } } }
public override void ExportData(ExportImportJob exportJob, ExportDto exportDto) { if (this.CheckCancelled(exportJob)) { return; } // Skip the export if all the folders have been processed already. if (this.CheckPoint.Stage >= 1) { return; } this.exportImportJob = exportJob; this.portalSettings = new PortalSettings(exportJob.PortalId); // Create Zip File to hold files var currentIndex = 0; var totalThemesExported = 0; try { var packagesZipFileFormat = $"{Globals.ApplicationMapPath}{Constants.ExportFolder}{{0}}\\{Constants.ExportZipThemes}"; var packagesZipFile = string.Format(packagesZipFileFormat, exportJob.Directory.TrimEnd('\\').TrimEnd('/')); if (this.CheckPoint.Stage == 0) { // export skin packages. var exportThemes = this.GetExportThemes(); var totalThemes = exportThemes.Count; // Update the total items count in the check points. This should be updated only once. this.CheckPoint.TotalItems = this.CheckPoint.TotalItems <= 0 ? totalThemes : this.CheckPoint.TotalItems; if (this.CheckPointStageCallback(this)) { return; } using (var archive = CompressionUtil.OpenCreate(packagesZipFile)) { foreach (var theme in exportThemes) { var filePath = SkinController.FormatSkinSrc(theme, this.portalSettings); var physicalPath = Path.Combine(Globals.ApplicationMapPath, filePath.TrimStart('/')); if (Directory.Exists(physicalPath)) { foreach (var file in Directory.GetFiles(physicalPath, "*.*", SearchOption.AllDirectories)) { var folderOffset = Path.Combine(Globals.ApplicationMapPath, "Portals").Length + 1; CompressionUtil.AddFileToArchive(archive, file, folderOffset); } totalThemesExported += 1; } this.CheckPoint.ProcessedItems++; this.CheckPoint.Progress = this.CheckPoint.ProcessedItems * 100.0 / totalThemes; currentIndex++; // After every 10 items, call the checkpoint stage. This is to avoid too many frequent updates to DB. if (currentIndex % 10 == 0 && this.CheckPointStageCallback(this)) { return; } } } this.CheckPoint.Stage++; this.CheckPoint.Completed = true; this.CheckPoint.Progress = 100; } } finally { this.CheckPointStageCallback(this); this.Result.AddSummary("Exported Themes", totalThemesExported.ToString()); } }
/// <summary> /// The GetPortalSettings method builds the site Settings /// </summary> /// <remarks> /// </remarks> /// <param name="TabId">The current tabs id</param> /// <param name="objPortalAliasInfo">The Portal Alias object</param> private void GetPortalSettings(int TabId, PortalAliasInfo objPortalAliasInfo) { PortalController objPortals = new PortalController(); PortalInfo objPortal = null; TabController objTabs = new TabController(); ModuleController objModules = new ModuleController(); ModuleInfo objModule = null; SkinInfo objSkin = null; PortalId = objPortalAliasInfo.PortalID; // get portal settings objPortal = objPortals.GetPortal(PortalId); if (objPortal != null) { this.PortalAlias = objPortalAliasInfo; this.PortalId = objPortal.PortalID; this.PortalName = objPortal.PortalName; this.LogoFile = objPortal.LogoFile; this.FooterText = objPortal.FooterText; this.ExpiryDate = objPortal.ExpiryDate; this.UserRegistration = objPortal.UserRegistration; this.BannerAdvertising = objPortal.BannerAdvertising; this.Currency = objPortal.Currency; this.AdministratorId = objPortal.AdministratorId; this.Email = objPortal.Email; this.HostFee = objPortal.HostFee; this.HostSpace = objPortal.HostSpace; this.PageQuota = objPortal.PageQuota; this.UserQuota = objPortal.UserQuota; this.AdministratorRoleId = objPortal.AdministratorRoleId; this.AdministratorRoleName = objPortal.AdministratorRoleName; this.RegisteredRoleId = objPortal.RegisteredRoleId; this.RegisteredRoleName = objPortal.RegisteredRoleName; this.Description = objPortal.Description; this.KeyWords = objPortal.KeyWords; this.BackgroundFile = objPortal.BackgroundFile; this.GUID = objPortal.GUID; this.SiteLogHistory = objPortal.SiteLogHistory; this.AdminTabId = objPortal.AdminTabId; this.SuperTabId = objPortal.SuperTabId; this.SplashTabId = objPortal.SplashTabId; this.HomeTabId = objPortal.HomeTabId; this.LoginTabId = objPortal.LoginTabId; this.UserTabId = objPortal.UserTabId; this.DefaultLanguage = objPortal.DefaultLanguage; this.TimeZoneOffset = objPortal.TimeZoneOffset; this.HomeDirectory = objPortal.HomeDirectory; this.Version = objPortal.Version; this.AdminSkin = SkinController.GetSkin(SkinInfo.RootSkin, PortalId, SkinType.Admin); this.PortalSkin = SkinController.GetSkin(SkinInfo.RootSkin, PortalId, SkinType.Portal); this.AdminContainer = SkinController.GetSkin(SkinInfo.RootContainer, PortalId, SkinType.Admin); this.PortalContainer = SkinController.GetSkin(SkinInfo.RootContainer, PortalId, SkinType.Portal); this.Pages = objPortal.Pages; this.Users = objPortal.Users; // set custom properties if (Null.IsNull(this.HostSpace)) { this.HostSpace = 0; } if (Null.IsNull(this.DefaultLanguage)) { this.DefaultLanguage = Localization.SystemLocale; } if (Null.IsNull(this.TimeZoneOffset)) { this.TimeZoneOffset = Localization.SystemTimeZoneOffset; } this.HomeDirectory = Globals.ApplicationPath + "/" + objPortal.HomeDirectory + "/"; // get application version Array arrVersion = Globals.glbAppVersion.Split(Convert.ToChar(".")); int intMajor = Convert.ToInt32(arrVersion.GetValue((0))); int intMinor = Convert.ToInt32(arrVersion.GetValue((1))); int intBuild = Convert.ToInt32(arrVersion.GetValue((2))); this.Version = string.Format("{0}.{1}.{2}", intMajor, intMinor, intBuild); } //Add each portal Tab to DekstopTabs TabInfo objPortalTab = null; foreach (KeyValuePair <int, TabInfo> tabPair in objTabs.GetTabsByPortal(this.PortalId)) { // clone the tab object ( to avoid creating an object reference to the data cache ) objPortalTab = tabPair.Value.Clone(); // set custom properties if (objPortalTab.TabOrder == 0) { objPortalTab.TabOrder = 999; } if (Null.IsNull(objPortalTab.StartDate)) { objPortalTab.StartDate = DateTime.MinValue; } if (Null.IsNull(objPortalTab.EndDate)) { objPortalTab.EndDate = DateTime.MaxValue; } objPortalTab.IsSuperTab = false; this.DesktopTabs.Add(objPortalTab); } //Add each host Tab to DesktopTabs TabInfo objHostTab = null; foreach (KeyValuePair <int, TabInfo> tabPair in objTabs.GetTabsByPortal(Null.NullInteger)) { // clone the tab object ( to avoid creating an object reference to the data cache ) objHostTab = tabPair.Value.Clone(); objHostTab.PortalID = this.PortalId; objHostTab.StartDate = DateTime.MinValue; objHostTab.EndDate = DateTime.MaxValue; objHostTab.IsSuperTab = true; this.DesktopTabs.Add(objHostTab); } //At this point the DesktopTabs Collection contains all the Tabs for the current portal //verify tab for portal. This assigns the Active Tab based on the Tab Id/PortalId if (VerifyPortalTab(PortalId, TabId)) { if (this.ActiveTab != null) { // skin if (this.ActiveTab.SkinSrc == "") { if (Globals.IsAdminSkin(this.ActiveTab.IsAdminTab)) { objSkin = this.AdminSkin; } else { objSkin = this.PortalSkin; } if (objSkin != null) { this.ActiveTab.SkinSrc = objSkin.SkinSrc; } } if (this.ActiveTab.SkinSrc == "") { if (Globals.IsAdminSkin(this.ActiveTab.IsAdminTab)) { this.ActiveTab.SkinSrc = "[G]" + SkinInfo.RootSkin + Globals.glbDefaultSkinFolder + Globals.glbDefaultAdminSkin; } else { this.ActiveTab.SkinSrc = "[G]" + SkinInfo.RootSkin + Globals.glbDefaultSkinFolder + Globals.glbDefaultSkin; } } this.ActiveTab.SkinSrc = SkinController.FormatSkinSrc(this.ActiveTab.SkinSrc, this); this.ActiveTab.SkinPath = SkinController.FormatSkinPath(this.ActiveTab.SkinSrc); // container if (this.ActiveTab.ContainerSrc == "") { if (Globals.IsAdminSkin(this.ActiveTab.IsAdminTab)) { objSkin = this.AdminContainer; } else { objSkin = this.PortalContainer; } if (objSkin != null) { this.ActiveTab.ContainerSrc = objSkin.SkinSrc; } } if (this.ActiveTab.ContainerSrc == "") { if (Globals.IsAdminSkin(this.ActiveTab.IsAdminTab)) { this.ActiveTab.ContainerSrc = "[G]" + SkinInfo.RootContainer + Globals.glbDefaultContainerFolder + Globals.glbDefaultAdminContainer; } else { this.ActiveTab.ContainerSrc = "[G]" + SkinInfo.RootContainer + Globals.glbDefaultContainerFolder + Globals.glbDefaultContainer; } } this.ActiveTab.ContainerSrc = SkinController.FormatSkinSrc(this.ActiveTab.ContainerSrc, this); this.ActiveTab.ContainerPath = SkinController.FormatSkinPath(this.ActiveTab.ContainerSrc); // initialize collections this.ActiveTab.BreadCrumbs = new ArrayList(); this.ActiveTab.Panes = new ArrayList(); this.ActiveTab.Modules = new ArrayList(); // get breadcrumbs for current tab GetBreadCrumbsRecursively(this.ActiveTab.BreadCrumbs, this.ActiveTab.TabID); } } Hashtable objPaneModules = new Hashtable(); // get current tab modules foreach (KeyValuePair <int, ModuleInfo> kvp in objModules.GetTabModules(this.ActiveTab.TabID)) { objModule = kvp.Value; // clone the module object ( to avoid creating an object reference to the data cache ) ModuleInfo cloneModule = objModule.Clone(); // set custom properties if (Null.IsNull(cloneModule.StartDate)) { cloneModule.StartDate = DateTime.MinValue; } if (Null.IsNull(cloneModule.EndDate)) { cloneModule.EndDate = DateTime.MaxValue; } // container if (cloneModule.ContainerSrc == "") { cloneModule.ContainerSrc = this.ActiveTab.ContainerSrc; } cloneModule.ContainerSrc = SkinController.FormatSkinSrc(cloneModule.ContainerSrc, this); cloneModule.ContainerPath = SkinController.FormatSkinPath(cloneModule.ContainerSrc); // process tab panes if (objPaneModules.ContainsKey(cloneModule.PaneName) == false) { objPaneModules.Add(cloneModule.PaneName, 0); } cloneModule.PaneModuleCount = 0; if (!cloneModule.IsDeleted) { objPaneModules[cloneModule.PaneName] = Convert.ToInt32(objPaneModules[cloneModule.PaneName]) + 1; cloneModule.PaneModuleIndex = Convert.ToInt32(objPaneModules[cloneModule.PaneName]) - 1; } this.ActiveTab.Modules.Add(cloneModule); } // set pane module count foreach (ModuleInfo objModuleWithinLoop in this.ActiveTab.Modules) { objModule = objModuleWithinLoop; objModuleWithinLoop.PaneModuleCount = Convert.ToInt32(objPaneModules[objModuleWithinLoop.PaneName]); } }
private void UpdateManifest(PortalSettings portalSettings, UpdateThemeInfo updateTheme) { var themePath = SkinController.FormatSkinSrc(updateTheme.Path, portalSettings); if (File.Exists(themePath.Replace(".ascx", ".htm"))) { var strFile = themePath.Replace(".ascx", ".xml"); if (File.Exists(strFile) == false) { strFile = strFile.Replace(Path.GetFileName(strFile), "skin.xml"); } XmlDocument xmlDoc = null; try { xmlDoc = new XmlDocument(); xmlDoc.Load(strFile); } catch { xmlDoc.InnerXml = "<Objects></Objects>"; } var xmlToken = xmlDoc.DocumentElement.SelectSingleNode("descendant::Object[Token='[" + updateTheme.Token + "]']"); if (xmlToken == null) { //add token string strToken = "<Token>[" + updateTheme.Token + "]</Token><Settings></Settings>"; xmlToken = xmlDoc.CreateElement("Object"); xmlToken.InnerXml = strToken; xmlDoc.SelectSingleNode("Objects").AppendChild(xmlToken); xmlToken = xmlDoc.DocumentElement.SelectSingleNode("descendant::Object[Token='[" + updateTheme.Token + "]']"); } var strValue = updateTheme.Value; var blnUpdate = false; foreach (XmlNode xmlSetting in xmlToken.SelectNodes(".//Settings/Setting")) { if (xmlSetting.SelectSingleNode("Name").InnerText == updateTheme.Setting) { xmlSetting.SelectSingleNode("Value").InnerText = strValue; blnUpdate = true; } } if (blnUpdate == false) { var strSetting = "<Name>" + updateTheme.Setting + "</Name><Value>" + strValue + "</Value>"; XmlNode xmlSetting = xmlDoc.CreateElement("Setting"); xmlSetting.InnerXml = strSetting; xmlToken.SelectSingleNode("Settings").AppendChild(xmlSetting); } try { if (File.Exists(strFile)) { File.SetAttributes(strFile, FileAttributes.Normal); } var objStream = File.CreateText(strFile); var strXML = xmlDoc.InnerXml; strXML = strXML.Replace("><", ">" + Environment.NewLine + "<"); objStream.WriteLine(strXML); objStream.Close(); } catch (Exception ex) { Logger.Error(ex); } } }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); chkHost.CheckedChanged += OnHostCheckChanged; chkSite.CheckedChanged += OnSiteCheckChanged; cmdDelete.Click += OnDeleteClick; cmdParse.Click += OnParseClick; cmdRestore.Click += OnRestoreClick; lblLegacy.Visible = false; string strSkin; var strContainer = Null.NullString; try { cmdDelete.Visible = true; if (Page.IsPostBack == false) { LoadCombos(); } typeRow.Visible = !PortalSettings.ActiveTab.IsSuperTab; if (!Page.IsPostBack) { string strURL; if (Request.QueryString["Name"] != null) { strURL = Request.MapPath(GetSkinPath(Convert.ToString(Request.QueryString["Type"]), Convert.ToString(Request.QueryString["Root"]), Convert.ToString(Request.QueryString["Name"]))); strSkin = strURL.Replace(Globals.ApplicationMapPath, "").ToLowerInvariant(); } else { //Get the current portal skin var skinSrc = !string.IsNullOrEmpty(PortalSettings.DefaultPortalSkin) ? PortalSettings.DefaultPortalSkin : SkinController.GetDefaultPortalSkin(); strURL = Request.MapPath(SkinController.FormatSkinPath(SkinController.FormatSkinSrc(skinSrc, PortalSettings))); strURL = strURL.Substring(0, strURL.LastIndexOf("\\")); strSkin = strURL.Replace(Globals.ApplicationMapPath, "").ToLowerInvariant(); } if (!string.IsNullOrEmpty(strSkin)) { strContainer = strSkin.Replace("\\" + SkinController.RootSkin.ToLowerInvariant() + "\\", "\\" + SkinController.RootContainer.ToLowerInvariant() + "\\"); } SetSkin(strSkin); SetContainer(strContainer); } else { strSkin = cboSkins.SelectedValue; strContainer = cboContainers.SelectedValue; if (strSkin != CurrentSkin) { strContainer = strSkin.Replace("\\" + SkinController.RootSkin.ToLowerInvariant() + "\\", "\\" + SkinController.RootContainer.ToLowerInvariant() + "\\"); SetSkin(strSkin); SetContainer(strContainer); } else if (strContainer != CurrentContainer) { SetSkin(_notSpecified); SetContainer(strContainer); } } ShowSkins(); ShowContainers(); } catch (Exception exc) //Module failed to load { Exceptions.ProcessModuleLoadException(this, exc); } }