PageRenderTime 42ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/BlogEngine/DotNetSlave.BusinessLogic/Providers/XmlProvider/Settings.cs

#
C# | 81 lines | 49 code | 12 blank | 20 comment | 4 complexity | 17839942745d271bf9d141a67d5a5c8c MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0, BSD-3-Clause
  1. namespace BlogEngine.Core.Providers
  2. {
  3. using System;
  4. using System.Collections.Specialized;
  5. using System.Web;
  6. using System.Web.Configuration;
  7. using System.Xml;
  8. /// <summary>
  9. /// A storage provider for BlogEngine that uses XML files.
  10. /// <remarks>
  11. /// To build another provider, you can just copy and modify
  12. /// this one. Then add it to the web.config's BlogEngine section.
  13. /// </remarks>
  14. /// </summary>
  15. public partial class XmlBlogProvider : BlogProvider
  16. {
  17. #region Public Methods
  18. /// <summary>
  19. /// Loads the settings from the provider.
  20. /// </summary>
  21. /// <returns>A StringDictionary.</returns>
  22. public override StringDictionary LoadSettings()
  23. {
  24. var filename = HttpContext.Current.Server.MapPath(string.Format("{0}settings.xml", Blog.CurrentInstance.StorageLocation));
  25. var dic = new StringDictionary();
  26. var doc = new XmlDocument();
  27. doc.Load(filename);
  28. var settings = doc.SelectSingleNode("settings");
  29. if (settings != null)
  30. {
  31. foreach (XmlNode settingsNode in settings.ChildNodes)
  32. {
  33. var name = settingsNode.Name;
  34. var value = settingsNode.InnerText;
  35. dic.Add(name, value);
  36. }
  37. }
  38. return dic;
  39. }
  40. /// <summary>
  41. /// Saves the settings to the provider.
  42. /// </summary>
  43. /// <param name="settings">
  44. /// The settings.
  45. /// </param>
  46. public override void SaveSettings(StringDictionary settings)
  47. {
  48. if (settings == null)
  49. {
  50. throw new ArgumentNullException("settings");
  51. }
  52. var filename = string.Format("{0}settings.xml", this.Folder);
  53. var writerSettings = new XmlWriterSettings { Indent = true };
  54. // ------------------------------------------------------------
  55. // Create XML writer against file path
  56. // ------------------------------------------------------------
  57. using (var writer = XmlWriter.Create(filename, writerSettings))
  58. {
  59. writer.WriteStartElement("settings");
  60. foreach (string key in settings.Keys)
  61. {
  62. writer.WriteElementString(key, settings[key]);
  63. }
  64. writer.WriteEndElement();
  65. }
  66. }
  67. #endregion
  68. }
  69. }