SettingScriptManager.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Text;
  4. using System.Threading.Tasks;
  5. using Abp.Authorization;
  6. using Abp.Configuration;
  7. using Abp.Dependency;
  8. using Abp.Runtime.Session;
  9. using Abp.Web.Authorization;
  10. using Abp.Web.Http;
  11. using Abp.Web.Settings;
  12. using IwbZero.Authorization.Permissions;
  13. namespace ShwasherSys.ScriptManager
  14. {
  15. public class IwbSettingScriptManager : ISettingScriptManager, ISingletonDependency
  16. {
  17. private readonly ISettingDefinitionManager _settingDefinitionManager;
  18. private readonly ISettingManager _settingManager;
  19. private readonly IAbpSession _abpSession;
  20. private readonly IIocResolver _iocResolver;
  21. public IwbSettingScriptManager(
  22. ISettingDefinitionManager settingDefinitionManager,
  23. ISettingManager settingManager,
  24. IAbpSession abpSession,
  25. IIocResolver iocResolver)
  26. {
  27. _settingDefinitionManager = settingDefinitionManager;
  28. _settingManager = settingManager;
  29. _abpSession = abpSession;
  30. _iocResolver = iocResolver;
  31. }
  32. public async Task<string> GetScriptAsync()
  33. {
  34. var script = new StringBuilder();
  35. script.AppendLine("(function(){");
  36. script.AppendLine(" abp.setting = abp.setting || {};");
  37. script.AppendLine(" abp.setting.values = {");
  38. var settingDefinitions = _settingDefinitionManager
  39. .GetAllSettingDefinitions();
  40. var added = 0;
  41. using (var scope = _iocResolver.CreateScope())
  42. {
  43. foreach (var settingDefinition in settingDefinitions)
  44. {
  45. if (!await settingDefinition.ClientVisibilityProvider.CheckVisible(scope))
  46. {
  47. continue;
  48. }
  49. if (added > 0)
  50. {
  51. script.AppendLine(",");
  52. }
  53. else
  54. {
  55. script.AppendLine();
  56. }
  57. var settingValue = await _settingManager.GetSettingValueAsync(settingDefinition.Name);
  58. script.Append(" '" +
  59. settingDefinition.Name.Replace("'", @"\'") + "': " +
  60. (settingValue == null ? "null" : "'" + HttpEncode.JavaScriptStringEncode(settingValue) + "'"));
  61. ++added;
  62. }
  63. }
  64. script.AppendLine();
  65. script.AppendLine(" };");
  66. script.AppendLine();
  67. script.Append("})();");
  68. return script.ToString();
  69. }
  70. }
  71. }