_form.html 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. // tabs handle
  43. $('textarea#form-body').on('keydown', function(event){
  44. var self = $(this)
  45. start = this.selectionStart,
  46. end = this.selectionEnd
  47. val = self.val();
  48. if (event.keyCode === 9) {
  49. // tab
  50. event.preventDefault();
  51. self.val(
  52. val.substring(0, start)
  53. + ' '
  54. + val.substring(end, val.length)
  55. );
  56. this.selectionStart = start + 4;
  57. this.selectionEnd = start + 4;
  58. } else if (event.keyCode === 27) {
  59. // escape
  60. self.blur();
  61. }
  62. });
  63. });
  64. </script>
  65. </div>