index.twig 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <div class="container-fluid my-3">
  2. <h2>
  3. {{ get_icon('b_events', 'Events'|trans) }}
  4. {{ show_mysql_docu('EVENTS') }}
  5. </h2>
  6. <div class="d-flex flex-wrap my-3">
  7. {%- if items is not empty %}
  8. <div>
  9. <div class="input-group">
  10. <div class="input-group-text">
  11. <div class="form-check mb-0">
  12. <input class="form-check-input checkall_box" type="checkbox" value="" id="checkAllCheckbox" form="rteListForm">
  13. <label class="form-check-label" for="checkAllCheckbox">{% trans 'Check all' %}</label>
  14. </div>
  15. </div>
  16. <button class="btn btn-outline-secondary" id="bulkActionExportButton" type="submit" name="submit_mult" value="export" form="rteListForm" title="{% trans 'Export' %}">
  17. {{ get_icon('b_export', 'Export'|trans) }}
  18. </button>
  19. <button class="btn btn-outline-secondary" id="bulkActionDropButton" type="submit" name="submit_mult" value="drop" form="rteListForm" title="{% trans 'Drop' %}">
  20. {{ get_icon('b_drop', 'Drop'|trans) }}
  21. </button>
  22. </div>
  23. </div>
  24. {%- endif %}
  25. <div{{ items is not empty ? ' class="ms-auto"' }}>
  26. <a class="ajax add_anchor btn btn-primary{{ not has_privilege ? ' disabled' }}" href="{{ url('/database/events', {'db': db, 'add_item': true}) }}" role="button"{{ not has_privilege ? ' tabindex="-1" aria-disabled="true"' }}>
  27. {{ get_icon('b_event_add', 'Create new event'|trans) }}
  28. </a>
  29. </div>
  30. </div>
  31. <form id="rteListForm" class="ajax" action="{{ url('/database/events') }}">
  32. {{ get_hidden_inputs(db) }}
  33. <div id="nothing2display"{{ items is not empty ? ' class="hide"' }}>
  34. {{ 'There are no events to display.'|trans|notice }}
  35. </div>
  36. <table id="eventsTable" class="table table-striped table-hover{{ items is empty ? ' hide' }} w-auto data">
  37. <thead>
  38. <tr>
  39. <th></th>
  40. <th>{% trans 'Name' %}</th>
  41. <th>{% trans 'Status' %}</th>
  42. <th>{% trans 'Type' %}</th>
  43. <th colspan="3"></th>
  44. </tr>
  45. </thead>
  46. <tbody>
  47. <tr class="hide">{% for i in 0..6 %}<td></td>{% endfor %}</tr>
  48. {% for event in items %}
  49. <tr{{ is_ajax ? ' class="ajaxInsert hide"' }}>
  50. <td>
  51. <input type="checkbox" class="checkall" name="item_name[]" value="{{ event.name }}">
  52. </td>
  53. <td>
  54. <span class="drop_sql hide">{{ 'DROP EVENT IF EXISTS %s'|format(backquote(event.name)) }}</span>
  55. <strong>{{ event.name }}</strong>
  56. </td>
  57. <td>
  58. {{ event.status }}
  59. </td>
  60. <td>
  61. {{ event.type }}
  62. </td>
  63. <td>
  64. {% if has_privilege %}
  65. <a class="ajax edit_anchor" href="{{ url('/database/events', {
  66. 'db': db,
  67. 'edit_item': true,
  68. 'item_name': event.name
  69. }) }}">
  70. {{ get_icon('b_edit', 'Edit'|trans) }}
  71. </a>
  72. {% else %}
  73. {{ get_icon('bd_edit', 'Edit'|trans) }}
  74. {% endif %}
  75. </td>
  76. <td>
  77. <a class="ajax export_anchor" href="{{ url('/database/events', {
  78. 'db': db,
  79. 'export_item': true,
  80. 'item_name': event.name
  81. }) }}">
  82. {{ get_icon('b_export', 'Export'|trans) }}
  83. </a>
  84. </td>
  85. <td>
  86. {% if has_privilege %}
  87. {{ link_or_button(
  88. url('/sql'),
  89. {
  90. 'db': db,
  91. 'sql_query': 'DROP EVENT IF EXISTS %s'|format(backquote(event.name)),
  92. 'goto': url('/database/events', {'db': db})
  93. },
  94. get_icon('b_drop', 'Drop'|trans),
  95. {'class': 'ajax drop_anchor'}
  96. ) }}
  97. {% else %}
  98. {{ get_icon('bd_drop', 'Drop'|trans) }}
  99. {% endif %}
  100. </td>
  101. </tr>
  102. {% endfor %}
  103. </tbody>
  104. </table>
  105. </form>
  106. <div class="card mt-3">
  107. <div class="card-header">{% trans 'Event scheduler status' %}</div>
  108. <div class="card-body">
  109. <div class="wrap">
  110. <div class="wrapper toggleAjax hide">
  111. <div class="toggleButton">
  112. <div title="{% trans 'Click to toggle' %}" class="toggle-container {{ scheduler_state ? 'on' : 'off' }}">
  113. <img src="{{ image('toggle-' ~ text_dir ~ '.png') }}">
  114. <table>
  115. <tbody>
  116. <tr>
  117. <td class="toggleOn">
  118. <span class="hide">
  119. {{- url('/sql', {
  120. 'db': db,
  121. 'goto': url('/database/events', {'db': db}),
  122. 'sql_query': 'SET GLOBAL event_scheduler="ON"',
  123. }) -}}
  124. </span>
  125. <div>{% trans 'ON' %}</div>
  126. </td>
  127. <td><div>&nbsp;</div></td>
  128. <td class="toggleOff">
  129. <span class="hide">
  130. {{- url('/sql', {
  131. 'db': db,
  132. 'goto': url('/database/events', {'db': db}),
  133. 'sql_query': 'SET GLOBAL event_scheduler="OFF"',
  134. }) -}}
  135. </span>
  136. <div>{% trans 'OFF' %}</div>
  137. </td>
  138. </tr>
  139. </tbody>
  140. </table>
  141. <span class="hide callback">Functions.slidingMessage(data.sql_query);</span>
  142. <span class="hide text_direction">{{ text_dir }}</span>
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. </div>
  149. </div>