ImgURL Pro容器部署
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

186 lines
8.5 KiB

2 years ago
<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-control" 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>