query.twig 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <form method="post" action="{{ url('/import') }}" class="ajax lock-page" id="sqlqueryform" name="sqlform"
  2. {{- is_upload ? ' enctype="multipart/form-data"' }}>
  3. {{ get_hidden_inputs(db, table) }}
  4. <input type="hidden" name="is_js_confirmed" value="0">
  5. <input type="hidden" name="pos" value="0">
  6. <input type="hidden" name="goto" value="{{ goto }}">
  7. <input type="hidden" name="message_to_show" value="{% trans 'Your SQL query has been executed successfully.' %}">
  8. <input type="hidden" name="prev_sql_query" value="{{ query }}">
  9. {% if display_tab == 'full' or display_tab == 'sql' %}
  10. <a id="querybox"></a>
  11. <div class="card mb-3">
  12. <div class="card-header">{{ legend|raw }}</div>
  13. <div class="card-body">
  14. <div id="queryfieldscontainer">
  15. <div class="row">
  16. <div class="col">
  17. <div class="form-group">
  18. <textarea class="form-control" tabindex="100" name="sql_query" id="sqlquery" cols="{{ textarea_cols }}" rows="{{ textarea_rows }}"
  19. {{- textarea_auto_select ? ' onclick="Functions.selectContent(this, sqlBoxLocked, true);"' }} aria-label="{% trans 'SQL query' %}">
  20. {{- query -}}
  21. </textarea>
  22. </div>
  23. <div id="querymessage"></div>
  24. <div class="btn-toolbar" role="toolbar">
  25. {% if columns_list is not empty %}
  26. <div class="btn-group mr-2" role="group">
  27. <input type="button" value="SELECT *" id="selectall" class="btn btn-secondary button sqlbutton">
  28. <input type="button" value="SELECT" id="select" class="btn btn-secondary button sqlbutton">
  29. <input type="button" value="INSERT" id="insert" class="btn btn-secondary button sqlbutton">
  30. <input type="button" value="UPDATE" id="update" class="btn btn-secondary button sqlbutton">
  31. <input type="button" value="DELETE" id="delete" class="btn btn-secondary button sqlbutton">
  32. </div>
  33. {% endif %}
  34. <div class="btn-group mr-2" role="group">
  35. <input type="button" value="{% trans 'Clear' %}" id="clear" class="btn btn-secondary button sqlbutton">
  36. {% if codemirror_enable %}
  37. <input type="button" value="{% trans 'Format' %}" id="format" class="btn btn-secondary button sqlbutton">
  38. {% endif %}
  39. </div>
  40. <input type="button" value="{% trans 'Get auto-saved query' %}" id="saved" class="btn btn-secondary button sqlbutton">
  41. </div>
  42. <div class="form-group mt-3">
  43. <div class="form-check">
  44. <input class="form-check-input" type="checkbox" name="parameterized" id="parameterized">
  45. <label class="form-check-label" for="parameterized">
  46. {% trans %}Bind parameters{% notes %}Bind parameters in the SQL query using :parameterName format{% endtrans %}
  47. {{ show_docu('faq', 'faq6-40') }}
  48. </label>
  49. </div>
  50. </div>
  51. <div class="form-group" id="parametersDiv"></div>
  52. </div>
  53. {% if columns_list is not empty %}
  54. <div class="col-xl-2 col-lg-3">
  55. <div class="form-group">
  56. <label class="sr-only" for="fieldsSelect">{% trans 'Columns' %}</label>
  57. <select class="form-control" id="fieldsSelect" name="dummy" size="{{ textarea_rows }}" ondblclick="Functions.insertValueQuery()" multiple>
  58. {% for field in columns_list %}
  59. <option value="{{ backquote(field['Field']) }}"
  60. {{- field['Field'] is not null and field['Comment'] is not null and field['Field']|length > 0 ? ' title="' ~ field['Comment'] ~ '"' }}>
  61. {{ field['Field'] }}
  62. </option>
  63. {% endfor %}
  64. </select>
  65. </div>
  66. <input type="button" class="btn btn-secondary button" id="insertBtn" name="insert" value="
  67. {%- if show_icons('ActionLinksMode') %}{{ '<<' }}" title="{% endif -%}
  68. {%- trans 'Insert' %}">
  69. </div>
  70. {% endif %}
  71. </div>
  72. </div>
  73. {% if has_bookmark %}
  74. <div class="form-inline">
  75. <div class="form-group">
  76. <label for="bkm_label">{% trans 'Bookmark this SQL query:' %}</label>
  77. <input class="form-control" type="text" name="bkm_label" id="bkm_label" tabindex="110" value="">
  78. </div>
  79. <div class="form-check form-check-inline">
  80. <input class="form-check-input" type="checkbox" name="bkm_all_users" tabindex="111" id="id_bkm_all_users" value="true">
  81. <label class="form-check-label" for="id_bkm_all_users">{% trans 'Let every user access this bookmark' %}</label>
  82. </div>
  83. <div class="form-check form-check-inline">
  84. <input class="form-check-input" type="checkbox" name="bkm_replace" tabindex="112" id="id_bkm_replace" value="true">
  85. <label class="form-check-label" for="id_bkm_replace">{% trans 'Replace existing bookmark of same name' %}</label>
  86. </div>
  87. </div>
  88. {% endif %}
  89. </div>
  90. <div class="card-footer">
  91. <div class="row">
  92. <div class="form-inline col">
  93. <div class="input-group mr-2">
  94. <div class="input-group-prepend">
  95. <span class="input-group-text">{% trans 'Delimiter' %}</span>
  96. </div>
  97. <label class="sr-only" for="id_sql_delimiter">{% trans 'Delimiter' %}</label>
  98. <input class="form-control" type="text" name="sql_delimiter" tabindex="131" size="3" value="{{ delimiter }}" id="id_sql_delimiter">
  99. </div>
  100. <div class="form-check form-check-inline">
  101. <input class="form-check-input" type="checkbox" name="show_query" value="1" id="checkbox_show_query" tabindex="132">
  102. <label class="form-check-label" for="checkbox_show_query">{% trans 'Show this query here again' %}</label>
  103. </div>
  104. <div class="form-check form-check-inline">
  105. <input class="form-check-input" type="checkbox" name="retain_query_box" value="1" id="retain_query_box" tabindex="133"
  106. {{- retain_query_box ? ' checked' }}>
  107. <label class="form-check-label" for="retain_query_box">{% trans 'Retain query box' %}</label>
  108. </div>
  109. <div class="form-check form-check-inline">
  110. <input class="form-check-input" type="checkbox" name="rollback_query" value="1" id="rollback_query" tabindex="134">
  111. <label class="form-check-label" for="rollback_query">{% trans 'Rollback when finished' %}</label>
  112. </div>
  113. <div class="form-check">
  114. <input type="hidden" name="fk_checks" value="0">
  115. <input class="form-check-input" type="checkbox" name="fk_checks" id="fk_checks" value="1"{{ is_foreign_key_check ? ' checked' }}>
  116. <label class="form-check-label" for="fk_checks">{% trans 'Enable foreign key checks' %}</label>
  117. </div>
  118. </div>
  119. <div class="form-inline col-auto">
  120. <input class="btn btn-primary ml-1" type="submit" id="button_submit_query" name="SQL" tabindex="200" value="{% trans 'Go' %}">
  121. </div>
  122. </div>
  123. </div>
  124. </div>
  125. {% endif %}
  126. {% if display_tab == 'full' and bookmarks is not empty %}
  127. <div class="card mb-3">
  128. <div class="card-header">{% trans 'Bookmarked SQL query' %}</div>
  129. <div class="card-body">
  130. <div class="form-inline">
  131. <div class="form-group">
  132. <label for="id_bookmark">{% trans 'Bookmark:' %}</label>
  133. <select class="form-control" name="id_bookmark" id="id_bookmark">
  134. <option value="">&nbsp;</option>
  135. {% for bookmark in bookmarks %}
  136. <option value="{{ bookmark.id }}" data-varcount="{{ bookmark.variable_count }}">
  137. {{ bookmark.label }}
  138. {% if bookmark.is_shared %}
  139. ({% trans 'shared' %})
  140. {% endif %}
  141. </option>
  142. {% endfor %}
  143. </select>
  144. </div>
  145. <div class="form-check form-check-inline">
  146. <input class="form-check-input" type="radio" name="action_bookmark" value="0" id="radio_bookmark_exe" checked>
  147. <label class="form-check-label" for="radio_bookmark_exe">{% trans 'Submit' %}</label>
  148. </div>
  149. <div class="form-check form-check-inline">
  150. <input class="form-check-input" type="radio" name="action_bookmark" value="1" id="radio_bookmark_view">
  151. <label class="form-check-label" for="radio_bookmark_view">{% trans 'View only' %}</label>
  152. </div>
  153. <div class="form-check form-check-inline">
  154. <input class="form-check-input" type="radio" name="action_bookmark" value="2" id="radio_bookmark_del">
  155. <label class="form-check-label" for="radio_bookmark_del">{% trans 'Delete' %}</label>
  156. </div>
  157. </div>
  158. <div class="hide">
  159. {% trans 'Variables' %}
  160. {{ show_docu('faq', 'faqbookmark') }}
  161. <div class="form-inline" id="bookmarkVariables"></div>
  162. </div>
  163. </div>
  164. <div class="card-footer text-right">
  165. <input class="btn btn-secondary" type="submit" name="SQL" id="button_submit_bookmark" value="{% trans 'Go' %}">
  166. </div>
  167. </div>
  168. {% endif %}
  169. {% if can_convert_kanji %}
  170. <div class="card mb-3">
  171. <div class="card-body">
  172. {% include 'encoding/kanji_encoding_form.twig' %}
  173. </div>
  174. </div>
  175. {% endif %}
  176. </form>
  177. <div id="sqlqueryresultsouter"></div>