event_settings.html 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. {% extends "base.html" %}
  2. {% block content %}
  3. <div class="columns">
  4. <div class="column is-3">
  5. <aside class="menu">
  6. <p class="menu-label">Administration</p>
  7. <ul class="menu-list">
  8. <li><a href="{{ url_for('admin.dashboard') }}">Dashboard</a></li>
  9. <li><a href="{{ url_for('admin.user_search') }}">User Search</a></li>
  10. <li><a>Players</a></li>
  11. <li><a>Bans</a></li>
  12. <li><a href="{{ url_for('admin.event_settings') }}" class="is-active">Event Settings</a></li>
  13. </ul>
  14. </aside>
  15. </div>
  16. <div class="column">
  17. <h1 class="title">Event Logging Settings</h1>
  18. {% if success %}
  19. <div class="notification is-success">
  20. Settings saved successfully! Plugin updated.
  21. </div>
  22. {% endif %}
  23. {% if not configs %}
  24. <div class="notification is-warning">
  25. No events found. Please start the Minecraft server and wait for it to connect to populate this list.
  26. </div>
  27. {% else %}
  28. <form method="POST">
  29. <div class="tabs is-boxed is-small">
  30. <ul id="package-tabs" style="flex-wrap: wrap;">
  31. {% for package in configs.keys() %}
  32. <li class="{% if loop.first %}is-active{% endif %}" data-tab="{{ package }}">
  33. <a>{{ package|replace('org.bukkit.event.', '') }}</a>
  34. </li>
  35. {% endfor %}
  36. </ul>
  37. </div>
  38. <div id="tab-content">
  39. {% for package, events in configs.items() %}
  40. <div class="content-tab {% if not loop.first %}is-hidden{% endif %}" data-content="{{ package }}">
  41. <table class="table is-fullwidth is-striped">
  42. <thead>
  43. <tr>
  44. <th>Event Name</th>
  45. <th>Logging Enabled</th>
  46. </tr>
  47. </thead>
  48. <tbody>
  49. {% for config in events %}
  50. <tr>
  51. <td>
  52. <strong>{{ config.event_name.split('.')[-1] }}</strong><br>
  53. <small class="has-text-grey">{{ config.event_name }}</small>
  54. </td>
  55. <td>
  56. <label class="switch">
  57. <input type="checkbox" name="{{ config.event_name }}" {% if config.is_enabled
  58. %}checked{% endif %}>
  59. <span class="slider round"></span>
  60. <!-- You might need CSS for this or use standard checkbox -->
  61. Enable
  62. </label>
  63. </td>
  64. </tr>
  65. {% endfor %}
  66. </tbody>
  67. </table>
  68. </div>
  69. {% endfor %}
  70. </div>
  71. <div class="field is-grouped is-grouped-right"
  72. style="position: sticky; bottom: 20px; background: #222; padding: 10px; border-radius: 5px;">
  73. <div class="control">
  74. <button class="button is-primary">Save Changes</button>
  75. </div>
  76. </div>
  77. </form>
  78. {% endif %}
  79. </div>
  80. </div>
  81. <style>
  82. /* Basic Switch CSS if not using a library */
  83. /* Adjust as needed or use standard checkbox */
  84. </style>
  85. <script>
  86. document.addEventListener('DOMContentLoaded', () => {
  87. const tabs = document.querySelectorAll('#package-tabs li');
  88. const contents = document.querySelectorAll('.content-tab');
  89. tabs.forEach(tab => {
  90. tab.addEventListener('click', () => {
  91. // Remove active from all tabs
  92. tabs.forEach(t => t.classList.remove('is-active'));
  93. // Add active to clicked
  94. tab.classList.add('is-active');
  95. // Hide all contents
  96. contents.forEach(c => c.classList.add('is-hidden'));
  97. // Show target content
  98. const target = tab.dataset.tab;
  99. document.querySelector(`.content-tab[data-content="${target}"]`).classList.remove('is-hidden');
  100. });
  101. });
  102. });
  103. </script>
  104. {% endblock %}