column_attributes.twig 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. {# Cell index: If certain fields get left out, the counter shouldn't change. #}
  2. {% set ci = 0 %}
  3. {# Every time a cell shall be left out the STRG-jumping feature, $ci_offset has
  4. to be incremented ($ci_offset++) #}
  5. {% set ci_offset = -1 %}
  6. <td class="text-center">
  7. {# column name #}
  8. {% include 'columns_definitions/column_name.twig' with {
  9. 'column_number': column_number,
  10. 'ci': ci,
  11. 'ci_offset': ci_offset,
  12. 'column_meta': column_meta,
  13. 'cfg_relation': cfg_relation,
  14. 'max_rows': max_rows
  15. } only %}
  16. {% set ci = ci + 1 %}
  17. </td>
  18. <td class="text-center">
  19. <select class="column_type" name="field_type[{{ column_number }}]" id="field_{{ column_number }}_{{ ci - ci_offset }}"
  20. {{- column_meta['column_status'] is defined and not column_meta['column_status']['isEditable'] ? ' disabled' }}>
  21. {{ get_supported_datatypes(true, type_upper) }}
  22. </select>
  23. {% set ci = ci + 1 %}
  24. </td>
  25. <td class="text-center">
  26. <input id="field_{{ column_number }}_{{ ci - ci_offset }}" type="text" name="field_length[{{ column_number }}]" size="
  27. {{- length_values_input_size }}" value="{{ length }}" class="textfield">
  28. <p class="enum_notice" id="enum_notice_{{ column_number }}_{{ ci - ci_offset }}">
  29. <a href="#" class="open_enum_editor">{% trans 'Edit ENUM/SET values' %}</a>
  30. </p>
  31. {% set ci = ci + 1 %}
  32. </td>
  33. <td class="text-center">
  34. <select name="field_default_type[{{ column_number }}]" id="field_{{ column_number }}_{{ ci - ci_offset }}" class="default_type">
  35. <option value="NONE"{{ column_meta['DefaultType'] is defined and column_meta['DefaultType'] == 'NONE' ? ' selected' }}>
  36. {% trans %}None{% context %}for default{% endtrans %}
  37. </option>
  38. <option value="USER_DEFINED"{{ column_meta['DefaultType'] is defined and column_meta['DefaultType'] == 'USER_DEFINED' ? ' selected' }}>
  39. {% trans 'As defined:' %}
  40. </option>
  41. <option value="NULL"{{ column_meta['DefaultType'] is defined and column_meta['DefaultType'] == 'NULL' ? ' selected' }}>
  42. NULL
  43. </option>
  44. <option value="CURRENT_TIMESTAMP"{{ column_meta['DefaultType'] is defined and column_meta['DefaultType'] == 'CURRENT_TIMESTAMP' ? ' selected' }}>
  45. CURRENT_TIMESTAMP
  46. </option>
  47. </select>
  48. {% if char_editing == 'textarea' %}
  49. <textarea name="field_default_value[{{ column_number }}]" cols="15" class="textfield default_value">{{ default_value }}</textarea>
  50. {% else %}
  51. <input type="text" name="field_default_value[{{ column_number }}]" size="12" value="{{ default_value }}" class="textfield default_value">
  52. {% endif %}
  53. {% set ci = ci + 1 %}
  54. </td>
  55. <td class="text-center">
  56. {# column collation #}
  57. <select lang="en" dir="ltr" name="field_collation[{{ column_number }}]" id="field_{{ column_number }}_{{ ci - ci_offset }}">
  58. <option value=""></option>
  59. {% for charset in charsets %}
  60. <optgroup label="{{ charset.name }}" title="{{ charset.description }}">
  61. {% for collation in charset.collations %}
  62. <option value="{{ collation.name }}" title="{{ collation.description }}"
  63. {{- collation.name == column_meta['Collation'] ? ' selected' }}>
  64. {{- collation.name -}}
  65. </option>
  66. {% endfor %}
  67. </optgroup>
  68. {% endfor %}
  69. </select>
  70. {% set ci = ci + 1 %}
  71. </td>
  72. <td class="text-center">
  73. {# column attribute #}
  74. {% include 'columns_definitions/column_attribute.twig' with {
  75. 'column_number': column_number,
  76. 'ci': ci,
  77. 'ci_offset': ci_offset,
  78. 'column_meta': column_meta,
  79. 'extracted_columnspec': extracted_columnspec,
  80. 'submit_attribute': submit_attribute,
  81. 'attribute_types': attribute_types
  82. } only %}
  83. {% set ci = ci + 1 %}
  84. </td>
  85. <td class="text-center">
  86. <input name="field_null[{{ column_number }}]" id="field_{{ column_number }}_{{ ci - ci_offset }}" type="checkbox" value="YES" class="allow_null"
  87. {{- column_meta['Null'] is not empty and column_meta['Null'] != 'NO' and column_meta['Null'] != 'NOT NULL' ? ' checked' }}>
  88. {% set ci = ci + 1 %}
  89. </td>
  90. {% if change_column is defined and change_column is not empty %}
  91. {# column Adjust privileges, Only for 'Edit' Column(s) #}
  92. <td class="text-center">
  93. <input name="field_adjust_privileges[{{ column_number }}]" id="field_{{ column_number }}_{{ ci - ci_offset }}" type="checkbox" value="NULL" class="allow_null"
  94. {%- if privs_available %} checked>
  95. {%- else %} title="{% trans "You don't have sufficient privileges to perform this operation; Please refer to the documentation for more details" %}" disabled>
  96. {%- endif %}
  97. {% set ci = ci + 1 %}
  98. </td>
  99. {% endif %}
  100. {% if not is_backup %}
  101. {# column indexes, See my other comment about this 'if'. #}
  102. <td class="text-center">
  103. <select name="field_key[{{ column_number }}]" id="field_{{ column_number }}_{{ ci - ci_offset }}" data-index="">
  104. <option value="none_{{ column_number }}">---</option>
  105. <option value="primary_{{ column_number }}" title="{% trans "Primary" %}"
  106. {{- column_meta['Key'] is defined and column_meta['Key'] == 'PRI' ? ' selected' }}>
  107. PRIMARY
  108. </option>
  109. <option value="unique_{{ column_number }}" title="{% trans "Unique" %}"
  110. {{- column_meta['Key'] is defined and column_meta['Key'] == 'UNI' ? ' selected' }}>
  111. UNIQUE
  112. </option>
  113. <option value="index_{{ column_number }}" title="{% trans "Index" %}"
  114. {{- column_meta['Key'] is defined and column_meta['Key'] == 'MUL' ? ' selected' }}>
  115. INDEX
  116. </option>
  117. <option value="fulltext_{{ column_number }}" title="{% trans "Fulltext" %}"
  118. {{- column_meta['Key'] is defined and column_meta['Key'] == 'FULLTEXT' ? ' selected' }}>
  119. FULLTEXT
  120. </option>
  121. <option value="spatial_{{ column_number }}" title="{% trans "Spatial" %}"
  122. {{- column_meta['Key'] is defined and column_meta['Key'] == 'SPATIAL' ? ' selected' }}>
  123. SPATIAL
  124. </option>
  125. </select>
  126. {% set ci = ci + 1 %}
  127. </td>
  128. {% endif %}
  129. <td class="text-center">
  130. <input name="field_extra[{{ column_number }}]" id="field_{{ column_number }}_{{ ci - ci_offset }}" type="checkbox" value="AUTO_INCREMENT"
  131. {{- column_meta['Extra'] is defined and column_meta['Extra']|lower == 'auto_increment' ? ' checked' }}>
  132. {% set ci = ci + 1 %}
  133. </td>
  134. <td class="text-center">
  135. <textarea id="field_{{ column_number }}_{{ ci - ci_offset }}" rows="1" name="field_comments[{{ column_number }}]" maxlength="{{ max_length }}">
  136. {{- column_meta['Field'] is defined and comments_map is iterable and comments_map[column_meta['Field']] is defined ? comments_map[column_meta['Field']] -}}
  137. </textarea>
  138. {% set ci = ci + 1 %}
  139. </td>
  140. {# column virtuality #}
  141. {% if is_virtual_columns_supported %}
  142. <td class="text-center">
  143. <select name="field_virtuality[{{ column_number }}]" id="field_{{ column_number }}_{{ ci - ci_offset }}" class="virtuality">
  144. {% for key, value in options %}
  145. <option value="{{ key }}"{{ column_meta['Extra'] is defined and key != '' and column_meta['Extra']|slice(0, key|length) is same as (key) ? ' selected' }}>
  146. {{ value }}
  147. </option>
  148. {% endfor %}
  149. </select>
  150. {% if char_editing == 'textarea' %}
  151. <textarea name="field_expression[{{ column_number }}]" cols="15" class="textfield expression">{{ column_meta['Expression'] is defined ? column_meta['Expression'] }}</textarea>
  152. {% else %}
  153. <input type="text" name="field_expression[{{ column_number }}]" size="12" value="{{ column_meta['Expression'] is defined ? column_meta['Expression'] }}" placeholder="{% trans 'Expression' %}" class="textfield expression">
  154. {% endif %}
  155. {% set ci = ci + 1 %}
  156. </td>
  157. {% endif %}
  158. {# move column #}
  159. {% if fields_meta is defined %}
  160. {% set current_index = 0 %}
  161. {% set cols = move_columns|length - 1 %}
  162. {% set break = false %}
  163. {% for mi in 0..cols %}
  164. {% if move_columns[mi].name == column_meta['Field'] and not break %}
  165. {% set current_index = mi %}
  166. {% set break = true %}
  167. {% endif %}
  168. {% endfor %}
  169. <td class="text-center">
  170. <select id="field_{{ column_number }}_{{ ci - ci_offset }}" name="field_move_to[{{ column_number }}]" size="1" width="5em">
  171. <option value="" selected="selected">&nbsp;</option>
  172. <option value="-first"{{ current_index == 0 ? ' disabled="disabled"' }}>
  173. {% trans 'first' %}
  174. </option>
  175. {% for mi in 0..move_columns|length - 1 %}
  176. <option value="{{ move_columns[mi].name }}"
  177. {{- current_index == mi or current_index == mi + 1 ? ' disabled' }}>
  178. {{ 'after %s'|trans|format(backquote(move_columns[mi].name|e)) }}
  179. </option>
  180. {% endfor %}
  181. </select>
  182. {% set ci = ci + 1 %}
  183. </td>
  184. {% endif %}
  185. {% if cfg_relation['mimework'] and browse_mime and cfg_relation['commwork'] %}
  186. <td class="text-center">
  187. <select id="field_{{ column_number }}_{{ ci - ci_offset }}" size="1" name="field_mimetype[{{ column_number }}]">
  188. <option value="">&nbsp;</option>
  189. {% if available_mime['mimetype'] is defined and available_mime['mimetype'] is iterable %}
  190. {% for media_type in available_mime['mimetype'] %}
  191. <option value="{{ media_type|replace({'/': '_'}) }}"
  192. {{- column_meta['Field'] is defined and mime_map[column_meta['Field']]['mimetype'] is defined
  193. and mime_map[column_meta['Field']]['mimetype'] == media_type|replace({'/': '_'}) ? ' selected' }}>
  194. {{ media_type|lower }}
  195. </option>
  196. {% endfor %}
  197. {% endif %}
  198. </select>
  199. {% set ci = ci + 1 %}
  200. </td>
  201. <td class="text-center">
  202. <select id="field_{{ column_number }}_{{ ci - ci_offset }}" size="1" name="field_transformation[{{ column_number }}]">
  203. <option value="" title="{% trans 'None' %}"></option>
  204. {% if available_mime['transformation'] is defined and available_mime['transformation'] is iterable %}
  205. {% for mimekey, transform in available_mime['transformation'] %}
  206. {% set parts = transform|split(':') %}
  207. <option value="{{ available_mime['transformation_file'][mimekey] }}" title="{{ get_description(available_mime['transformation_file'][mimekey]) }}"
  208. {{- column_meta['Field'] is defined and mime_map[column_meta['Field']]['transformation'] is defined
  209. and mime_map[column_meta['Field']]['transformation'] matches '@' ~ available_mime['transformation_file_quoted'][mimekey] ~ '3?@i' ? ' selected'}}>
  210. {{ get_name(available_mime['transformation_file'][mimekey]) ~ ' (' ~ parts[0]|lower ~ ':' ~ parts[1] ~ ')' }}
  211. </option>
  212. {% endfor %}
  213. {% endif %}
  214. </select>
  215. {% set ci = ci + 1 %}
  216. </td>
  217. <td class="text-center">
  218. <input id="field_{{ column_number }}_{{ ci - ci_offset }}" type="text" name="field_transformation_options[{{ column_number }}]" size="16" class="textfield" value="
  219. {{- column_meta['Field'] is defined and mime_map[column_meta['Field']]['transformation_options'] is defined ? mime_map[column_meta['Field']]['transformation_options'] }}">
  220. {% set ci = ci + 1 %}
  221. </td>
  222. <td class="text-center">
  223. <select id="field_{{ column_number }}_{{ ci - ci_offset }}" size="1" name="field_input_transformation[{{ column_number }}]">
  224. <option value="" title="{% trans 'None' %}"></option>
  225. {% if available_mime['input_transformation'] is defined and available_mime['input_transformation'] is iterable %}
  226. {% for mimekey, transform in available_mime['input_transformation'] %}
  227. {% set parts = transform|split(':') %}
  228. <option value="{{ available_mime['input_transformation_file'][mimekey] }}" title="{{ get_description(available_mime['input_transformation_file'][mimekey]) }}"
  229. {{- column_meta['Field'] is defined and mime_map[column_meta['Field']]['input_transformation'] is defined
  230. and mime_map[column_meta['Field']]['input_transformation'] matches '@' ~ available_mime['input_transformation_file_quoted'][mimekey] ~ '3?@i' ? ' selected' }}>
  231. {{ get_name(available_mime['input_transformation_file'][mimekey]) ~ ' (' ~ parts[0]|lower ~ ':' ~ parts[1] ~ ')' }}
  232. </option>
  233. {% endfor %}
  234. {% endif %}
  235. </select>
  236. {% set ci = ci + 1 %}
  237. </td>
  238. <td class="text-center">
  239. <input id="field_{{ column_number }}_{{ ci - ci_offset }}" type="text" name="field_input_transformation_options[{{ column_number }}]" size="16" class="textfield" value="
  240. {{- column_meta['Field'] is defined and mime_map[column_meta['Field']]['input_transformation_options'] is defined ? mime_map[column_meta['Field']]['input_transformation_options'] }}">
  241. {% set ci = ci + 1 %}
  242. </td>
  243. {% endif %}