/// <summary> /// 获取所有已经启用的皮肤 /// </summary> /// <returns></returns> public static SkinCollection GetEnabledSkins() { SkinCollection enabledSkins = s_EnabledSkins; CacheDependency skinsWatcher = s_SkinsWatcher; if (enabledSkins == null || skinsWatcher == null || skinsWatcher.HasChanged) { enabledSkins = new SkinCollection(); foreach (Skin skin in GetAllSkins()) { if (skin.Enabled) { enabledSkins.Add(skin); } } s_EnabledSkins = enabledSkins; } return(enabledSkins); }
public static SkinCollection GetAllSkins() { SkinCollection allSkins = s_AllSkins;//new SkinCollection(); CacheDependency skinsWatcher = s_SkinsWatcher; if (allSkins == null || skinsWatcher == null || skinsWatcher.HasChanged) { lock (s_LoadSkinLocker) { allSkins = s_AllSkins; skinsWatcher = s_SkinsWatcher; if (allSkins == null || skinsWatcher == null || skinsWatcher.HasChanged) { allSkins = new SkinCollection(); //SkinCollection enabledSkins = new SkinCollection(); string skinsPath = Globals.GetPath(SystemDirecotry.Skins); //获得保存主题的目录实体 DirectoryInfo skinsDirectory = new DirectoryInfo(skinsPath); //所有主题的目录集合 DirectoryInfo[] skinDirectorys = skinsDirectory.GetDirectories(); List<string> watcher = new List<string>(); //string[] tempFileNames = new string[skinDirectorys.Length]; //int index = 0; //遍历所有主题的目录集合,把存在Theme.Config文件的主题添加到主题列表中 foreach (DirectoryInfo skinDirectory in skinDirectorys) { string file = IOUtil.JoinPath(skinDirectory.FullName, MaxLabs.bbsMax.Consts.SkinConfigFile); if (File.Exists(file) == true) { Skin skin = new Skin(); skin.SkinID = skinDirectory.Name; skin.Name = skin.SkinID; //读取_skin.config配置文件 XmlDocument doc = new XmlDocument(); try { doc.Load(file); #region 循环取 Skin 的属性 foreach (XmlNode configNode in doc.DocumentElement.ChildNodes) { if (configNode.NodeType != XmlNodeType.Comment) { switch (configNode.Name.ToLower()) { case "name": skin.Name = configNode.InnerText.Trim(); break; case "version": skin.Version = configNode.InnerText.Trim(); break; case "publishdate": try { skin.PublishDate = DateTime.Parse(configNode.InnerText.Trim()); } catch { skin.PublishDate = DateTime.MinValue; } break; case "author": skin.Author = configNode.InnerText.Trim(); break; case "website": skin.WebSite = configNode.InnerText.Trim(); break; case "description": skin.Description = configNode.InnerText.Trim(); break; case "skinbase": skin.SkinBase = configNode.InnerText.Trim(); break; } } } #endregion } catch { } allSkins.Add(skin); //if (skin.Enabled) // enabledSkins.Add(skin); watcher.Add(file); //tempFileNames[index] = file; //index++; } else watcher.Add(skinDirectory.FullName); } watcher.Add(skinsPath); s_AllSkins = allSkins; s_EnabledSkins = null; s_SkinsWatcher = new CacheDependency(watcher.ToArray()); } } } if (allSkins == null || allSkins.Count == 0 || allSkins.ContainsKey(MaxLabs.bbsMax.Consts.DefaultSkinID) == false) { throw new Exception("载入默认模板失败。默认模板位于“max-templates/default”目录下,该目录不能删除。"); } return allSkins; }
/// <summary> /// 获取所有已经启用的皮肤 /// </summary> /// <returns></returns> public static SkinCollection GetEnabledSkins() { SkinCollection enabledSkins = s_EnabledSkins; CacheDependency skinsWatcher = s_SkinsWatcher; if (enabledSkins == null || skinsWatcher == null || skinsWatcher.HasChanged) { enabledSkins = new SkinCollection(); foreach (Skin skin in GetAllSkins()) { if (skin.Enabled) enabledSkins.Add(skin); } s_EnabledSkins = enabledSkins; } return enabledSkins; }
public static SkinCollection GetAllSkins() { SkinCollection allSkins = s_AllSkins;//new SkinCollection(); CacheDependency skinsWatcher = s_SkinsWatcher; if (allSkins == null || skinsWatcher == null || skinsWatcher.HasChanged) { lock (s_LoadSkinLocker) { allSkins = s_AllSkins; skinsWatcher = s_SkinsWatcher; if (allSkins == null || skinsWatcher == null || skinsWatcher.HasChanged) { allSkins = new SkinCollection(); //SkinCollection enabledSkins = new SkinCollection(); string skinsPath = Globals.GetPath(SystemDirecotry.Skins); //获得保存主题的目录实体 DirectoryInfo skinsDirectory = new DirectoryInfo(skinsPath); //所有主题的目录集合 DirectoryInfo[] skinDirectorys = skinsDirectory.GetDirectories(); List <string> watcher = new List <string>(); //string[] tempFileNames = new string[skinDirectorys.Length]; //int index = 0; //遍历所有主题的目录集合,把存在Theme.Config文件的主题添加到主题列表中 foreach (DirectoryInfo skinDirectory in skinDirectorys) { string file = IOUtil.JoinPath(skinDirectory.FullName, MaxLabs.bbsMax.Consts.SkinConfigFile); if (File.Exists(file) == true) { Skin skin = new Skin(); skin.SkinID = skinDirectory.Name; skin.Name = skin.SkinID; //读取_skin.config配置文件 XmlDocument doc = new XmlDocument(); try { doc.Load(file); #region 循环取 Skin 的属性 foreach (XmlNode configNode in doc.DocumentElement.ChildNodes) { if (configNode.NodeType != XmlNodeType.Comment) { switch (configNode.Name.ToLower()) { case "name": skin.Name = configNode.InnerText.Trim(); break; case "version": skin.Version = configNode.InnerText.Trim(); break; case "publishdate": try { skin.PublishDate = DateTime.Parse(configNode.InnerText.Trim()); } catch { skin.PublishDate = DateTime.MinValue; } break; case "author": skin.Author = configNode.InnerText.Trim(); break; case "website": skin.WebSite = configNode.InnerText.Trim(); break; case "description": skin.Description = configNode.InnerText.Trim(); break; case "skinbase": skin.SkinBase = configNode.InnerText.Trim(); break; } } } #endregion } catch { } allSkins.Add(skin); //if (skin.Enabled) // enabledSkins.Add(skin); watcher.Add(file); //tempFileNames[index] = file; //index++; } else { watcher.Add(skinDirectory.FullName); } } watcher.Add(skinsPath); s_AllSkins = allSkins; s_EnabledSkins = null; s_SkinsWatcher = new CacheDependency(watcher.ToArray()); } } } if (allSkins == null || allSkins.Count == 0 || allSkins.ContainsKey(MaxLabs.bbsMax.Consts.DefaultSkinID) == false) { throw new Exception("载入默认模板失败。默认模板位于“max-templates/default”目录下,该目录不能删除。"); } return(allSkins); }