editor.html 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. {% macro editor(field, submit_button, placeholder=None, rows=4, hide_links=False, hide_images=False, hide_hr=False, zen=False, extra=None) %}
  2. <div class="editor editor-editable">
  3. {% if field.errors %}
  4. <div class="editor-error">
  5. {% for error in field.errors %}
  6. <p class="help-block">{{ error }}</p>
  7. {% endfor %}
  8. </div>
  9. {% endif %}
  10. {% set context = field.field.widget.get_context(field.html_name, field.value()) %}
  11. <div class="editor-input">
  12. <div>
  13. <textarea name="{{ context.name }}" id="id_{{ context.name }}" rows="{{ rows }}"{% if placeholder %} placeholder="{{ placeholder }}"{% endif %}>{% if 'value' in context %}{{ context.value }}{% endif %}</textarea>
  14. {% if zen %}
  15. <div class="editor-zen-on tooltip-left" title="{% trans %}Click to enter Zen mode{% endtrans %}">
  16. <a href="#"><i class="icon-expand-alt"></i></a>
  17. </div>
  18. {% endif %}
  19. </div>
  20. </div>
  21. <div class="editor-actions">
  22. <ul class="editor-tools unstyled pull-left">
  23. <li><a href="#" class="tooltip-top btn editor-bold" title="{% trans %}Bold{% endtrans %}"><i class="icon-bold"></i></a></li>
  24. <li><a href="#" class="tooltip-top btn editor-emphasis" title="{% trans %}Emphasis{% endtrans %}"><i class="icon-italic"></i></a></li>
  25. {% if not hide_links %}<li><a href="#" class="tooltip-top btn editor-link" title="{% trans %}Insert Link{% endtrans %}"><i class="icon-share-alt"></i></a></li>{% endif %}
  26. {% if not hide_images %}<li><a href="#" class="tooltip-top btn editor-image" title="{% trans %}Insert Image{% endtrans %}"><i class="icon-picture"></i></a></li>{% endif %}
  27. {% if not hide_hr %}<li><a href="#" class="tooltip-top btn editor-hr" title="{% trans %}Insert Horizontal Line{% endtrans %}"><i class="icon-minus"></i></a></li>{% endif %}
  28. </ul>
  29. <a href="{{ url('help_md') }}" class="editor-help" target="_blank">{% trans %}Formatting Help{% endtrans %}</a>
  30. <button name="save" type="submit" class="btn btn-primary pull-right">{{ submit_button }}</button>
  31. {% if extra %}{{ extra }}{% endif %}
  32. </div>
  33. {{ attachments_editor() }}
  34. </div>
  35. {% endmacro %}
  36. {% macro zen() %}
  37. <div class="zen-overlay editor-editable">
  38. <div>
  39. <div class="container">
  40. <textarea id="overlay-textarea" name="overlay-textarea" placeholder="{% trans %}Message Body{% endtrans %}"></textarea>
  41. <div class="overlay-options">
  42. <ul>
  43. <li><a href="#" class="tooltip-left editor-bold" title="{% trans %}Bold{% endtrans %}"><i class="icon-bold"></i></a></li>
  44. <li><a href="#" class="tooltip-left editor-emphasis" title="{% trans %}Emphasis{% endtrans %}"><i class="icon-italic"></i></a></li>
  45. <li><a href="#" class="tooltip-left editor-link" title="{% trans %}Insert Link{% endtrans %}"><i class="icon-share-alt"></i></a></li>
  46. <li><a href="#" class="tooltip-left editor-image" title="{% trans %}Insert Image{% endtrans %}"><i class="icon-picture"></i></a></li>
  47. <li><a href="#" class="tooltip-left editor-hr" title="{% trans %}Insert Horizontal Line{% endtrans %}"><i class="icon-minus"></i></a></li>
  48. <li><a href="{{ url('help_md') }}" class="tooltip-left" title="{% trans %}Formatting Help{% endtrans %}" target="_blank"><i class="icon-info"></i></a></li>
  49. <li><hr></li>
  50. <li class="editor-zen-off tooltip-left" title="{% trans %}Leave Zen mode{% endtrans %}"><a href="#"><i class="icon-off"></i></a></li>
  51. </ul>
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. {% endmacro %}
  57. {% macro attachments_editor() %}
  58. {% if acl.threads.can_upload_attachments(forum) %}
  59. <div class="editor-upload">
  60. <input type="file" name="new_file">
  61. <button name="upload" type="submit" class="btn pull-right">{% trans %}Attach File{% endtrans %}</button>
  62. </div>
  63. {% endif %}
  64. {% if attachments %}
  65. <ul class="unstyled editor-attachments">
  66. {% for attachment in attachments %}
  67. <li{% if attachment.pk in attachments_removed %} class="attachment-removed"{% endif %}>
  68. <div class="attachment-image">
  69. <a href="{{ url('attachments_server', attachment=attachment.hash_id) }}">
  70. {% if attachment.is_image %}
  71. <img src="{{ url('attachments_thumbs_server', attachment=attachment.hash_id) }}" alt="">
  72. {% else %}
  73. <i class="icon-file"></i>
  74. {% endif %}
  75. </a>
  76. </div>
  77. <div class="attachment-actions">
  78. {% if attachment.pk in attachments_removed %}
  79. <button name="restore_attachment" value="{{ attachment.pk }}" type="submit" class="btn pull-right"><i class="icon-plus"></i> {% trans %}Restore{% endtrans %}</button>
  80. {% else %}
  81. <button type="button" class="btn btn-insert pull-right editor-insert-attachment" data-attachment-md="{% if attachment.is_image %}[![{{ attachment.name }}]({{ url('attachments_thumbs_server', attachment=attachment.hash_id) }})]({{ url('attachments_server', attachment=attachment.hash_id) }}){% else %}[{{ attachment.name }}]({{ url('attachments_server', attachment=attachment.hash_id) }}){% endif %}"><i class="icon-share"></i> {% trans %}Insert{% endtrans %}</button>
  82. {% if acl.threads.can_delete_attachment(user, forum, attachment) %}
  83. <button name="remove_attachment" value="{{ attachment.pk }}" type="submit" class="btn btn-remove pull-right"><i class="icon-remove"></i> {% trans %}Remove{% endtrans %}</button>
  84. {% endif %}
  85. {% endif %}
  86. </div>
  87. <div class="attachment-body">
  88. <h4>{% if attachment.pk in attachments_removed %}<span class="attachment-removed-message"><i class="icon-remove"></i> {% trans %}Removed:{% endtrans %}</span> {% endif %}{{ attachment.name }}</h4>
  89. <div class="attachment-details">
  90. {% if attachment.user_id %}
  91. <a href="{{ url('user', user=attachment.user_id, username=attachment.user_name_slug) }}">{{ attachment.user_name }}</a>,
  92. {% else %}
  93. {{ attachment.user_name }},
  94. {% endif %}
  95. {% if acl.users.can_see_users_trails() %}
  96. <abbr title="{{ attachment.agent }}">{{ attachment.ip }}</abbr>,
  97. {% endif %}
  98. {{ attachment.date|date }},
  99. {{ _(attachments_types[attachment.filetype_id].name) }}, {{ attachment.size|filesize }}
  100. </div>
  101. </div>
  102. </li>
  103. {% endfor %}
  104. </ul>
  105. {% endif %}
  106. {% endmacro %}
  107. {% macro js() %}
  108. <script type="text/javascript">
  109. $(function () {
  110. ed_lang_enter_link_url = "{% trans %}Enter link address{% endtrans %}";
  111. ed_lang_enter_link_label = "{% trans %}Enter link label (optional){% endtrans %}";
  112. ed_lang_enter_image_url = "{% trans %}Enter image address{% endtrans %}";
  113. ed_lang_enter_image_label = "{% trans %}Enter image label{% endtrans %}";
  114. ed_emojis = ['{{ ("', '".join(emojis))|safe }}'];
  115. ed_emoji_tpl = "<li data-value='${key}'><img src='{{ STATIC_URL }}emojis/${name}.png' height='20' width='20'/> ${name} </li>";
  116. ed_emojis_list = $.map(ed_emojis, function(value, i) {
  117. return {'id':i, 'key':value+":", 'name':value};
  118. });
  119. });
  120. </script>
  121. <script src="{{ STATIC_URL }}cranefly/js/jquery.caret.js"></script>
  122. <script src="{{ STATIC_URL }}cranefly/js/jquery.atwho.js"></script>
  123. <script src="{{ STATIC_URL }}cranefly/js/editor.js"></script>
  124. {% endmacro %}