PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/BlogEngine/BlogEngine.NET/admin/Settings/Main.aspx.cs

#
C# | 205 lines | 154 code | 14 blank | 37 comment | 5 complexity | 63270b9f2803a3e22acaa7471c039249 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0, BSD-3-Clause
  1. namespace admin.Settings
  2. {
  3. using System;
  4. using System.IO;
  5. using System.Web;
  6. using System.Web.UI.WebControls;
  7. using System.Globalization;
  8. using System.Web.Services;
  9. using Resources;
  10. using BlogEngine.Core;
  11. using BlogEngine.Core.Json;
  12. using System.Web.Security;
  13. using System.Linq;
  14. using App_Code;
  15. using Page = System.Web.UI.Page;
  16. public partial class Main : Page
  17. {
  18. /// <summary>
  19. /// Raises the <see cref="E:System.Web.UI.Control.Init"/> event to initialize the page.
  20. /// </summary>
  21. /// <param name="e">An <see cref="T:System.EventArgs"/> that contains the event data.</param>
  22. protected override void OnInit(EventArgs e)
  23. {
  24. WebUtils.CheckRightsForAdminSettingsPage(false);
  25. BindCultures();
  26. BindRoles();
  27. BindSettings();
  28. Page.MaintainScrollPositionOnPostBack = true;
  29. Page.Title = labels.settings;
  30. base.OnInit(e);
  31. }
  32. private void BindRoles()
  33. {
  34. ddlSelfRegistrationInitialRole.AppendDataBoundItems = true;
  35. ddlSelfRegistrationInitialRole.DataSource = Roles.GetAllRoles().Where(r => !r.Equals(BlogConfig.AnonymousRole, StringComparison.OrdinalIgnoreCase));
  36. ddlSelfRegistrationInitialRole.DataBind();
  37. }
  38. /// <summary>
  39. /// The bind settings.
  40. /// </summary>
  41. private void BindSettings()
  42. {
  43. // -----------------------------------------------------------------------
  44. // Bind Basic settings
  45. // -----------------------------------------------------------------------
  46. txtName.Text = BlogSettings.Instance.Name;
  47. txtDescription.Text = BlogSettings.Instance.Description;
  48. txtPostsPerPage.Text = BlogSettings.Instance.PostsPerPage.ToString();
  49. cbShowRelatedPosts.Checked = BlogSettings.Instance.EnableRelatedPosts;
  50. txtThemeCookieName.Text = BlogSettings.Instance.ThemeCookieName;
  51. cbUseBlogNameInPageTitles.Checked = BlogSettings.Instance.UseBlogNameInPageTitles;
  52. cbEnableRating.Checked = BlogSettings.Instance.EnableRating;
  53. cbShowDescriptionInPostList.Checked = BlogSettings.Instance.ShowDescriptionInPostList;
  54. txtDescriptionCharacters.Text = BlogSettings.Instance.DescriptionCharacters.ToString();
  55. cbShowDescriptionInPostListForPostsByTagOrCategory.Checked =
  56. BlogSettings.Instance.ShowDescriptionInPostListForPostsByTagOrCategory;
  57. txtDescriptionCharactersForPostsByTagOrCategory.Text =
  58. BlogSettings.Instance.DescriptionCharactersForPostsByTagOrCategory.ToString();
  59. cbTimeStampPostLinks.Checked = BlogSettings.Instance.TimeStampPostLinks;
  60. ddlCulture.SelectedValue = BlogSettings.Instance.Culture;
  61. txtTimeZone.Text = BlogSettings.Instance.Timezone.ToString();
  62. cbShowPostNavigation.Checked = BlogSettings.Instance.ShowPostNavigation;
  63. cbEnablePasswordReset.Checked = BlogSettings.Instance.EnablePasswordReset;
  64. cbEnableSelfRegistration.Checked = BlogSettings.Instance.EnableSelfRegistration;
  65. Utils.SelectListItemByValue(ddlSelfRegistrationInitialRole, BlogSettings.Instance.SelfRegistrationInitialRole);
  66. }
  67. /// <summary>
  68. /// The bind cultures.
  69. /// </summary>
  70. private void BindCultures()
  71. {
  72. if (File.Exists(Path.Combine(HttpRuntime.AppDomainAppPath, "PrecompiledApp.config")))
  73. {
  74. var precompiledDir = HttpRuntime.BinDirectory;
  75. var translations = Directory.GetFiles(
  76. precompiledDir, "App_GlobalResources.resources.dll", SearchOption.AllDirectories);
  77. foreach (var translation in translations)
  78. {
  79. var path = Path.GetDirectoryName(translation);
  80. if (path == null)
  81. {
  82. continue;
  83. }
  84. var resourceDir = path.Remove(0, precompiledDir.Length);
  85. if (String.IsNullOrEmpty(resourceDir))
  86. {
  87. continue;
  88. }
  89. var info = CultureInfo.GetCultureInfoByIetfLanguageTag(resourceDir);
  90. ddlCulture.Items.Add(new ListItem(info.NativeName, resourceDir));
  91. }
  92. }
  93. else
  94. {
  95. var path = Server.MapPath(string.Format("{0}App_GlobalResources/", Utils.ApplicationRelativeWebRoot));
  96. foreach (var file in Directory.GetFiles(path, "labels.*.resx"))
  97. {
  98. var index = file.LastIndexOf(Path.DirectorySeparatorChar) + 1;
  99. var filename = file.Substring(index);
  100. filename = filename.Replace("labels.", string.Empty).Replace(".resx", string.Empty);
  101. var info = CultureInfo.GetCultureInfoByIetfLanguageTag(filename);
  102. ddlCulture.Items.Add(new ListItem(info.NativeName, filename));
  103. }
  104. }
  105. }
  106. /// <summary>
  107. /// Save settings
  108. /// </summary>
  109. /// <param name="name">Blog name</param>
  110. /// <param name="desc">Description</param>
  111. /// <param name="postsPerPage">Number of posts per page</param>
  112. /// <param name="theme">Active theme</param>
  113. /// <param name="mobileTheme">Mobile theme</param>
  114. /// <param name="themeCookieName">Cookie name to persist theme within session</param>
  115. /// <param name="useBlogNameInPageTitles">Whether use blog name in page titles</param>
  116. /// <param name="enableRelatedPosts">Enable related posts</param>
  117. /// <param name="enableRating">Enable rating</param>
  118. /// <param name="showDescriptionInPostList">Show description in post list</param>
  119. /// <param name="descriptionCharacters">Number of characters in description</param>
  120. /// <param name="showDescriptionInPostListForPostsByTagOrCategory">Shwo descripton for posts by tag or category</param>
  121. /// <param name="descriptionCharactersForPostsByTagOrCategory">Description characters</param>
  122. /// <param name="timeStampPostLinks">Time stamp post links</param>
  123. /// <param name="showPostNavigation">Show post navigation</param>
  124. /// <param name="culture">Culture</param>
  125. /// <param name="timezone">Time zone</param>
  126. /// <param name="enablePasswordReset">Enable password resets</param>
  127. /// <param name="enableSelfRegistration">Enable self registration</param>
  128. /// <param name="selfRegistrationInitialRole">Self registration initial role</param>
  129. /// <returns></returns>
  130. [WebMethod]
  131. public static JsonResponse Save(string name,
  132. string desc,
  133. string postsPerPage,
  134. string themeCookieName,
  135. string useBlogNameInPageTitles,
  136. string enableRelatedPosts,
  137. string enableRating,
  138. string showDescriptionInPostList,
  139. string descriptionCharacters,
  140. string showDescriptionInPostListForPostsByTagOrCategory,
  141. string descriptionCharactersForPostsByTagOrCategory,
  142. string timeStampPostLinks,
  143. string showPostNavigation,
  144. string culture,
  145. string timezone,
  146. string enablePasswordReset,
  147. string enableSelfRegistration,
  148. string selfRegistrationInitialRole)
  149. {
  150. var response = new JsonResponse {Success = false};
  151. if (!WebUtils.CheckRightsForAdminSettingsPage(true))
  152. {
  153. response.Message = "Not authorized";
  154. return response;
  155. }
  156. try
  157. {
  158. BlogSettings.Instance.Name = name;
  159. BlogSettings.Instance.Description = desc;
  160. BlogSettings.Instance.PostsPerPage = int.Parse(postsPerPage);
  161. BlogSettings.Instance.ThemeCookieName = themeCookieName;
  162. BlogSettings.Instance.UseBlogNameInPageTitles = bool.Parse(useBlogNameInPageTitles);
  163. BlogSettings.Instance.EnableRelatedPosts = bool.Parse(enableRelatedPosts);
  164. BlogSettings.Instance.EnableRating = bool.Parse(enableRating);
  165. BlogSettings.Instance.ShowDescriptionInPostList = bool.Parse(showDescriptionInPostList);
  166. BlogSettings.Instance.DescriptionCharacters = int.Parse(descriptionCharacters);
  167. BlogSettings.Instance.ShowDescriptionInPostListForPostsByTagOrCategory =
  168. bool.Parse(showDescriptionInPostListForPostsByTagOrCategory);
  169. BlogSettings.Instance.DescriptionCharactersForPostsByTagOrCategory =
  170. int.Parse(descriptionCharactersForPostsByTagOrCategory);
  171. BlogSettings.Instance.TimeStampPostLinks = bool.Parse(timeStampPostLinks);
  172. BlogSettings.Instance.ShowPostNavigation = bool.Parse(showPostNavigation);
  173. BlogSettings.Instance.Culture = culture;
  174. BlogSettings.Instance.Timezone = double.Parse(timezone);
  175. BlogSettings.Instance.EnablePasswordReset = bool.Parse(enablePasswordReset);
  176. BlogSettings.Instance.EnableSelfRegistration = bool.Parse(enableSelfRegistration);
  177. BlogSettings.Instance.SelfRegistrationInitialRole = selfRegistrationInitialRole;
  178. BlogSettings.Instance.Save();
  179. }
  180. catch (Exception ex)
  181. {
  182. Utils.Log(string.Format("admin.Settings.Main.Save(): {0}", ex.Message));
  183. response.Message = string.Format("Could not save settings: {0}", ex.Message);
  184. return response;
  185. }
  186. response.Success = true;
  187. response.Message = "Settings saved";
  188. return response;
  189. }
  190. }
  191. }