_form.html 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. {% if req.form.errors %}
  2. <div class="alert alert-danger">
  3. <ul>
  4. {% for error in req.form.errors %}
  5. <li>{{ error }}</li>
  6. {% endfor %}
  7. </ul>
  8. </div>
  9. {% endif %}
  10. <div id="form-box" class="row">
  11. <div class="col-md-6">
  12. <form action="{{ path }}/edit" method="post" class="">
  13. <textarea name="pageForm[body]" class="form-control form-body-height" id="form-body">{% if pageForm.body %}{{ pageForm.body }}{% elseif not revision.body %}# {{ path|path2name }}{% else %}{{ revision.body }}{% endif %}</textarea>
  14. <input type="hidden" name="pageForm[format]" value="markdown" id="form-format">
  15. <input type="hidden" name="pageForm[currentRevision]" value="{{ pageForm.currentRevision|default(revision._id.toString()) }}">
  16. <div class="form-submit-group form-group form-inline">
  17. <select name="pageForm[grant]" class="form-control">
  18. {% for grantId, grantLabel in consts.pageGrants %}
  19. <option value="{{ grantId }}" {% if (pageForm.grant && grantId == pageForm.grant) || (page.grant == grantId ) %}selected{% endif %}>{{ grantLabel }}</option>
  20. {% endfor %}
  21. </select>
  22. <input type="submit" class="btn btn-primary" id="edit-form-submit" value="ページを更新" />
  23. </div>
  24. </form>
  25. </div>
  26. <div class="col-md-6">
  27. <div id="preview-body" class="wiki preview-body">
  28. </div>
  29. </div>
  30. <script type="text/javascript">
  31. $(function() {
  32. // preview watch
  33. var prevContent = "";
  34. var watchTimer = setInterval(function() {
  35. var content = $('#form-body').val();
  36. if (prevContent != content) {
  37. var renderer = new Crowi.renderer('#form-body', $('#form-format').val(), '#preview-body');
  38. renderer.render();
  39. prevContent = content;
  40. }
  41. }, 1000);
  42. function maximizeFormBox()
  43. {
  44. $('#form-box').addClass('form-maximized');
  45. $('#form-body').height($(window).height() - 150 + 'px');
  46. }
  47. function minimizeFormBox()
  48. {
  49. $('#form-box').removeClass('form-maximized');
  50. $('#form-body').height('300px');
  51. }
  52. $('#form-box-full').toggle(function()
  53. {
  54. maximizeFormBox();
  55. }, function() {
  56. minimizeFormBox();
  57. });
  58. // tabs handle
  59. $('textarea#form-body').on('keydown', function(event){
  60. var self = $(this)
  61. start = this.selectionStart,
  62. end = this.selectionEnd
  63. val = self.val();
  64. if (event.keyCode === 9) {
  65. // tab
  66. event.preventDefault();
  67. self.val(
  68. val.substring(0, start)
  69. + ' '
  70. + val.substring(end, val.length)
  71. );
  72. this.selectionStart = start + 4;
  73. this.selectionEnd = start + 4;
  74. } else if (event.keyCode === 27) {
  75. // escape
  76. self.blur();
  77. }
  78. });
  79. });
  80. </script>
  81. </div>