PageRenderTime 33ms CodeModel.GetById 11ms RepoModel.GetById 1ms app.codeStats 0ms

/BlogEngine/BlogEngine.NET/admin/Extensions/Editor.cshtml

#
Razor | 124 lines | 109 code | 15 blank | 0 comment | 11 complexity | 891e20109f8c91cb33f1cdf0ee3a8dcc MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0, BSD-3-Clause
  1. @using System.IO
  2. @using System.Linq
  3. @using System.Reflection
  4. @using App_Code;
  5. @using BlogEngine.Core
  6. @using BlogEngine.Core.Web.Extensions
  7. @{
  8. Page.Title = Resources.labels.extensions;
  9. Layout = "../_Layout.cshtml";
  10. Security.DemandUserHasRight(Rights.AccessAdminPages, true);
  11. if (!WebUtils.CheckIfPrimaryBlog(false)) { return; }
  12. var extName = Request.QueryString["id"];
  13. if (string.IsNullOrWhiteSpace(extName))
  14. {
  15. Response.Redirect("default.cshtml");
  16. return;
  17. }
  18. var ext = ExtensionManager.GetExtension(extName);
  19. if (ext == null)
  20. {
  21. Response.Redirect("default.cshtml");
  22. return;
  23. }
  24. var extensionFilename = ext.GetPathAndFilename(false);
  25. var canWrite = Utils.CanWrite(Href(Utils.ApplicationRelativeWebRoot + "App_Code/Extensions"));
  26. var fileExists = !string.IsNullOrWhiteSpace(extensionFilename) && File.Exists(extensionFilename);
  27. var editLink = "";
  28. if (canWrite)
  29. {
  30. editLink = "<a class=\"extEdit\" onclick=\"return ShowEditor();\" href=\"#\">" + Resources.labels.edit + "</a>";
  31. }
  32. var val = string.Format("Source for [{0}] not found", extensionFilename);
  33. try
  34. {
  35. if (fileExists)
  36. {
  37. val = File.ReadAllText(extensionFilename);
  38. }
  39. }
  40. catch (Exception ex)
  41. {
  42. Utils.Log("admin/Extensions/Editor.cshtml", ex);
  43. }
  44. }
  45. <link rel="stylesheet" href="@Href(Utils.RelativeWebRoot + "Styles/syntaxhighlighter/shCore.css")" type="text/css" />
  46. <link rel="stylesheet" href="@Href(Utils.RelativeWebRoot + "Styles/syntaxhighlighter/shThemeDefault.css")" type="text/css" />
  47. <script src="@Href(Utils.RelativeWebRoot + "Scripts/syntaxhighlighter/shCore.js")" type="text/javascript"></script>
  48. <script src="@Href(Utils.RelativeWebRoot + "Scripts/syntaxhighlighter/shBrushCSharp.js")" type="text/javascript"></script>
  49. <script src="@Href(Utils.RelativeWebRoot + "Scripts/syntaxhighlighter/shBrushCss.js")" type="text/javascript"></script>
  50. <script type="text/javascript">SyntaxHighlighter.all();</script>
  51. <script type="text/javascript">
  52. function ShowEditor() {
  53. $('#extensionViewer').fadeOut();
  54. $('#extensionEditor').fadeIn();
  55. $('#saveArea').fadeIn();
  56. return false;
  57. }
  58. function CancelEdit() {
  59. CloseEditor();
  60. return false;
  61. }
  62. function BtnSaveClick() {
  63. var dto = { "sourceCode": $('#txtSourceCode').val(), "extensionName": $('#hdnExtensionName').val() };
  64. $.ajax({
  65. url: SiteVars.ApplicationRelativeWebRoot + "admin/AjaxHelper.aspx/UpdateExtensionSourceCode",
  66. data: JSON.stringify(dto),
  67. type: "POST",
  68. contentType: "application/json; charset=utf-8",
  69. dataType: "json",
  70. beforeSend: onAjaxBeforeSend,
  71. success: function (result) {
  72. var rt = result.d;
  73. if (rt == true) {
  74. ShowStatus("success", "Source code updated");
  75. window.location.reload();
  76. }
  77. else {
  78. ShowStatus("warning", "Error saving source code");
  79. }
  80. }
  81. });
  82. CloseEditor();
  83. return false;
  84. }
  85. function CloseEditor() {
  86. $('#extensionViewer').fadeIn();
  87. $('#extensionEditor').fadeOut();
  88. $('#saveArea').fadeOut();
  89. }
  90. </script>
  91. <div class="content-box-outer">
  92. <div class="content-box-full">
  93. <h1>@Resources.labels.sourceViewer: @extName @Html.Raw(editLink)</h1>
  94. <div id="extensionViewer">
  95. <pre class="brush: c-sharp;">// @extensionFilename
  96. @val</pre>
  97. </div>
  98. <div id="extensionEditor" style="display:none">
  99. <textarea id="txtSourceCode" style="width: 100%; min-height: 350px;">
  100. @val
  101. </textarea>
  102. </div>
  103. <div id="saveArea" style="padding:5px 0 0 0; display: none">
  104. <input type="button" id="btnSave" class="btn primary" value="@Resources.labels.save" onclick="return BtnSaveClick()" />
  105. @Resources.labels.or <a href="" onclick="return CancelEdit();">@Resources.labels.cancel</a>
  106. </div>
  107. </div>
  108. <input type="hidden" id="hdnExtensionName" value="@extName" />
  109. </div>