Yu-Gi-Oh! Deck Building and Card Inventory Management web interface written in Common Lisp, utilizing HTMX.
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

89 wiersze
2.8KB

  1. {% extends "layouts/default.html" %}
  2. {% block title %}{_ "File Uploader" _}{% endblock %}
  3. {% block content %}
  4. <form name="file-form" id="file-form"
  5. enctype="multipart/form-data" method="post">
  6. {{ token | safe }}
  7. <input type="hidden" name="MAX_FILE_SIZE" value="100000">
  8. </form>
  9. <div class="content">
  10. {% if files %}
  11. <h2>Files</h2>
  12. <div class="columns is-multiline">
  13. {% for image in files %}
  14. <div class="column" id="image-{{ image.id }}">
  15. <div class="card">
  16. <div class="card-content">
  17. <div class="media">
  18. <div class="media-left">
  19. <p class="image" style="width:64px">
  20. <a href="{{ image.url }}" target="_blank" data-lightbox="{{ image.url }}">
  21. <img class="has-ratio" src="{{ image.icon }}">
  22. </a>
  23. </p>
  24. </div>
  25. <div class="media-content">
  26. <div class="content">
  27. <p><b>File Key:</b> {{ image.attachment.file-key }}</p>
  28. <p><b>File Size:</b> {{ image.attachment.file-size }}</p>
  29. </div>
  30. </div>
  31. <div class="media-right">
  32. <button class="delete"
  33. hx-confirm="Delete {{ image.id }} - Are you sure?"
  34. hx-delete="/upload/{{ image.id }}"
  35. hx-include="[name='file-form']"
  36. hx-swap="outerHTML swap:1s"
  37. hx-target="#image-{{ image.id }}"></button>
  38. </div>
  39. </div>
  40. </div>
  41. </div>
  42. </div>
  43. {% endfor %}
  44. </div>
  45. <hr>
  46. {% endif %}
  47. <div style="flex: 1;">
  48. <div class="columns is-flex is-centered is-vcentered">
  49. <div class="column is-half">
  50. <div class="field">
  51. <div id="file-js" class="file has-name is-boxed is-fullwidth">
  52. <label class="file-label">
  53. <input class="file-input" type="file" name="files[]" id="files" multiple="multiple" form="file-form">
  54. <span class="file-cta">
  55. <span class="file-icon">
  56. <i class="fas fa-upload"></i>
  57. </span>
  58. <span class="file-label">
  59. Choose a file&hellip;
  60. </span>
  61. </span>
  62. <span class="file-name">
  63. No file uploaded
  64. </span>
  65. </label>
  66. </div>
  67. {% include "file-js.html" :target "#file-js" %}
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. <div class="columns is-centered">
  73. <div class="column is-1">
  74. <div class="field">
  75. <div class="control">
  76. <button class="button is-primary"
  77. form="file-form"
  78. type="submit">Process</button>
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. {% endblock %}