<form method="post" action="{{ action }}" class=" {{- action == url('/table/create') ? 'create_table' : 'append_fields' -}} _form ajax lock-page"> {{ get_hidden_inputs(form_params) }} {# happens when an index has been set on a column #} {# and a column is added to the table creation dialog #} {# This contains a JSON-encoded string #} <input type="hidden" name="primary_indexes" value=" {{- primary_indexes is not empty ? primary_indexes : '[]' }}"> <input type="hidden" name="unique_indexes" value=" {{- unique_indexes is not empty ? unique_indexes : '[]' }}"> <input type="hidden" name="indexes" value=" {{- indexes is not empty ? indexes : '[]' }}"> <input type="hidden" name="fulltext_indexes" value=" {{- fulltext_indexes is not empty ? fulltext_indexes : '[]' }}"> <input type="hidden" name="spatial_indexes" value=" {{- spatial_indexes is not empty ? spatial_indexes : '[]' }}"> {% if action == url('/table/create') %} <div id="table_name_col_no_outer"> <table id="table_name_col_no" class="table table-borderless tdblock"> <tr class="align-middle float-start"> <td>{% trans 'Table name' %}: <input type="text" name="table" size="40" maxlength="64" value="{{ table is defined ? table }}" class="textfield" autofocus required> </td> <td> {% trans 'Add' %} <input type="number" id="added_fields" name="added_fields" size="2" value="1" min="1" onfocus="this.select()"> {% trans 'column(s)' %} <input class="btn btn-secondary" type="button" name="submit_num_fields" value="{% trans 'Go' %}"> </td> </tr> </table> </div> {% endif %} {% if content_cells is iterable %} {% include 'columns_definitions/table_fields_definitions.twig' with { 'is_backup': is_backup, 'fields_meta': fields_meta, 'relation_parameters': relation_parameters, 'content_cells': content_cells, 'change_column': change_column, 'is_virtual_columns_supported': is_virtual_columns_supported, 'server_version' : server_version, 'browse_mime': browse_mime, 'supports_stored_keyword': supports_stored_keyword, 'max_rows': max_rows, 'char_editing': char_editing, 'attribute_types': attribute_types, 'privs_available': privs_available, 'max_length': max_length, 'charsets': charsets } only %} {% endif %} {% if action == url('/table/create') %} <div class="responsivetable"> <table class="table table-borderless w-auto align-middle mb-0"> <tr class="align-top"> <th>{% trans 'Table comments:' %}</th> <td width="25">&nbsp;</td> <th>{% trans 'Collation:' %}</th> <td width="25">&nbsp;</td> <th> {% trans 'Storage Engine:' %} {{ show_mysql_docu('Storage_engines') }} </th> <td width="25">&nbsp;</td> <th id="storage-engine-connection"> {% trans 'Connection:' %} {{ show_mysql_docu('federated-create-connection') }} </th> </tr> <tr> <td> <input type="text" name="comment" size="40" maxlength="60" value="{{ comment is defined ? comment }}" class="textfield"> </td> <td width="25">&nbsp;</td> <td> <select lang="en" dir="ltr" name="tbl_collation"> <option value=""></option> {% for charset in charsets %} <optgroup label="{{ charset.name }}" title="{{ charset.description }}"> {% for collation in charset.collations %} <option value="{{ collation.name }}" title="{{ collation.description }}" {{- collation.name == tbl_collation ? ' selected' }}> {{- collation.name -}} </option> {% endfor %} </optgroup> {% endfor %} </select> </td> <td width="25">&nbsp;</td> <td> <select class="form-select" name="tbl_storage_engine" aria-label="{% trans 'Storage engine' %}"> {% for engine in storage_engines %} <option value="{{ engine.name }}"{% if engine.comment is not empty %} title="{{ engine.comment }}"{% endif %} {{- engine.name|lower == tbl_storage_engine|lower or (tbl_storage_engine is empty and engine.is_default) ? ' selected' }}> {{- engine.name -}} </option> {% endfor %} </select> </td> <td width="25">&nbsp;</td> <td> <input type="text" name="connection" size="40" value="{{ connection is defined ? connection }}" placeholder="scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name" class="textfield" required="required"> </td> </tr> {% if have_partitioning %} <tr class="align-top"> <th colspan="5"> {% trans 'PARTITION definition:' %} {{ show_mysql_docu('Partitioning') }} </th> </tr> <tr> <td colspan="5"> {% include 'columns_definitions/partitions.twig' with { 'partition_details': partition_details, 'storage_engines': storage_engines } only %} </td> </tr> {% endif %} </table> </div> {% endif %} <fieldset class="pma-fieldset tblFooters"> {% if action == url('/table/add-field') or action == url('/table/structure/save') %} <input type="checkbox" name="online_transaction" value="ONLINE_TRANSACTION_ENABLED" />{% trans %}Online transaction{% context %}Online transaction part of the SQL DDL for InnoDB{% endtrans %}{{ show_mysql_docu('innodb-online-ddl') }} {% endif %} <input class="btn btn-secondary preview_sql" type="button" value="{% trans 'Preview SQL' %}"> <input class="btn btn-primary" type="submit" name="do_save_data" value="{% trans 'Save' %}"> </fieldset> <div id="properties_message"></div> {% if is_integers_length_restricted %} <div class="alert alert-primary" id="length_not_allowed" role="alert"> {{ get_image('s_notice') }} {% trans %}The column width of integer types is ignored in your MySQL version unless defining a TINYINT(1) column{% endtrans %} {{ show_mysql_docu('', false, 'https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html') }} </div> {% endif %} </form> <div class="modal fade" id="previewSqlModal" tabindex="-1" aria-labelledby="previewSqlModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="previewSqlModalLabel">{% trans 'Loading' %}</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{% trans 'Close' %}"></button> </div> <div class="modal-body"> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" id="previewSQLCloseButton" data-bs-dismiss="modal">{% trans 'Close' %}</button> </div> </div> </div> </div> {# Used by add new column of type ENUM/SET #} {{ include('modals/enum_set_editor.twig') }}