init web ems all

This commit is contained in:
agtuser
2024-09-27 17:13:36 +08:00
parent 81c97acbe9
commit 5cc56f8078
4263 changed files with 798779 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
<li class="{{ class }}">
{% if type == 'text'
or type == 'blob'
or tbl_storage_engine == 'ARCHIVE'
or has_field %}
{{ titles['No' ~ action]|raw }}
{% else %}
<a rel="samepage" class="ajax add_key print_ignore
{%- if has_link_class %}
add_primary_key_anchor
{%- elseif action == 'Index' %}
add_index_anchor
{%- elseif action == 'Unique' %}
add_unique_anchor
{%- elseif action == 'Spatial' %}
add_spatial_anchor
{%- endif %}" href="tbl_structure.php" data-post="{{ url_query|raw -}}
&amp;add_key=1&amp;sql_query=
{{- ('ALTER TABLE ' ~
Util_backquote(table) ~
(is_primary ? (primary ? ' DROP PRIMARY KEY,')) ~
' ' ~
syntax ~
'(' ~
Util_backquote(row['Field']) ~
');')|url_encode -}}
&amp;message_to_show={{ message|format(row['Field']|e)|url_encode }}">
{{ titles[action]|raw }}
</a>
{% endif %}
</li>

View File

@@ -0,0 +1,140 @@
<td class="print_ignore"><ul class="table-structure-actions resizable-menu">
{% if hide_structure_actions %}
<li class="submenu shown">
<a href="#" class="tab nowrap">{{ Util_getIcon('b_more', 'More'|trans) }}</a>
<ul>
{% endif %}
{# Add primary #}
{% include 'table/structure/action_row_in_structure_table.twig' with {
'type': type,
'tbl_storage_engine': tbl_storage_engine,
'class': 'primary nowrap',
'has_field': primary and primary.hasColumn(field_name),
'has_link_class': true,
'url_query': url_query,
'primary': primary,
'syntax': 'ADD PRIMARY KEY',
'message': 'A primary key has been added on %s.'|trans,
'action': 'Primary',
'titles': titles,
'row': row,
'is_primary': true,
'table': table
} only %}
{# Add unique #}
{% include 'table/structure/action_row_in_structure_table.twig' with {
'type': type,
'tbl_storage_engine': tbl_storage_engine,
'class': 'add_unique unique nowrap',
'has_field': field_name in columns_with_unique_index,
'has_link_class': false,
'url_query': url_query,
'primary': primary,
'syntax': 'ADD UNIQUE',
'message': 'An index has been added on %s.'|trans,
'action': 'Unique',
'titles': titles,
'row': row,
'is_primary': false,
'table': table
} only %}
{# Add index #}
{% include 'table/structure/action_row_in_structure_table.twig' with {
'type': type,
'tbl_storage_engine': tbl_storage_engine,
'class': 'add_index nowrap',
'has_field': false,
'has_link_class': false,
'url_query': url_query,
'primary': primary,
'syntax': 'ADD INDEX',
'message': 'An index has been added on %s.'|trans,
'action': 'Index',
'titles': titles,
'row': row,
'is_primary': false,
'table': table
} only %}
{# Add spatial #}
{% set spatial_types = [
'geometry',
'point',
'linestring',
'polygon',
'multipoint',
'multilinestring',
'multipolygon',
'geomtrycollection'
] %}
{% include 'table/structure/action_row_in_structure_table.twig' with {
'type': type,
'tbl_storage_engine': tbl_storage_engine,
'class': 'spatial nowrap',
'has_field': type not in spatial_types and
(tbl_storage_engine == 'MYISAM' or mysql_int_version >= 50705),
'has_link_class': false,
'url_query': url_query,
'primary': primary,
'syntax': 'ADD SPATIAL',
'message': 'An index has been added on %s.'|trans,
'action': 'Spatial',
'titles': titles,
'row': row,
'is_primary': false,
'table': table
} only %}
{# FULLTEXT is possible on TEXT, CHAR and VARCHAR #}
<li class="fulltext nowrap">
{% if tbl_storage_engine is not empty and (
tbl_storage_engine == 'MYISAM'
or tbl_storage_engine == 'ARIA'
or tbl_storage_engine == 'MARIA'
or (tbl_storage_engine == 'INNODB' and mysql_int_version >= 50604)
) and ('text' in type or 'char' in type) %}
<a rel="samepage" class="ajax add_key add_fulltext_anchor" href="tbl_structure.php"
data-post="{{- url_query|raw }}&amp;add_key=1&amp;sql_query=
{{- ('ALTER TABLE ' ~ Util_backquote(table)
~ ' ADD FULLTEXT(' ~ Util_backquote(row['Field'])
~ ');')|url_encode }}&amp;message_to_show=
{{- ('An index has been added on %s.'|trans|format(row['Field']|e))|url_encode }}">
{{ titles['IdxFulltext']|raw }}
</a>
{% else %}
{{ titles['NoIdxFulltext']|raw }}
{% endif %}
</li>
{# Distinct value action #}
<li class="browse nowrap">
<a href="sql.php" data-post="{{ url_query|raw }}&amp;sql_query=
{{- ('SELECT COUNT(*) AS ' ~ Util_backquote('Rows'|trans)
~ ', ' ~ Util_backquote(row['Field'])
~ ' FROM ' ~ Util_backquote(table)
~ ' GROUP BY ' ~ Util_backquote(row['Field'])
~ ' ORDER BY ' ~ Util_backquote(row['Field']))|url_encode -}}
&amp;is_browse_distinct=1">
{{ titles['DistinctValues']|raw }}
</a>
</li>
{% if central_columns_work %}
<li class="browse nowrap">
{% if is_in_central_columns %}
<a href="#" class="central_columns remove_button">
{{ Util_getIcon('centralColumns_delete', 'Remove from central columns'|trans) }}
</a>
{% else %}
<a href="#" class="central_columns add_button">
{{ Util_getIcon('centralColumns_add', 'Add to central columns'|trans) }}
</a>
{% endif %}
</li>
{% endif %}
{% if hide_structure_actions %}
</ul>
</li>
{% endif %}
</ul></td>

View File

@@ -0,0 +1,24 @@
<form method="post" action="tbl_addfield.php" id="addColumns" name="addColumns">
{{ Url_getHiddenInputs(db, table) }}
{% if Util_showIcons('ActionLinksMode') %}
{{ Util_getImage('b_insrow', 'Add column'|trans) }}&nbsp;
{% endif %}
{% set num_fields -%}
<input type="number" name="num_fields" value="1" onfocus="this.select()" min="1" required />
{%- endset %}
{{ 'Add %s column(s)'|trans|format(num_fields)|raw }}
<input type="hidden" name="field_where" value="after"/>&nbsp;
{# I tried displaying the drop-down inside the label but with Firefox the drop-down was blinking #}
<select name="after_field">
<option value="first" data-pos="first">
{% trans 'at beginning of table' %}
</option>
{% for one_column_name in columns_list %}
<option value="{{ one_column_name }}"
{{- loop.revindex0 == 0 ? ' selected="selected"' }}>
{{ 'after %s'|trans|format(one_column_name) }}
</option>
{% endfor %}
</select>
<input type="submit" value="{% trans 'Go' %}" />
</form>

View File

@@ -0,0 +1,93 @@
<div class="print_ignore">
{% include 'select_all.twig' with {
'pma_theme_image': pma_theme_image,
'text_dir': text_dir,
'form_name': 'fieldsForm'
} only %}
{{ Util_getButtonOrImage(
'submit_mult',
'mult_submit',
'Browse'|trans,
'b_browse',
'browse'
) }}
{% if not tbl_is_view and not db_is_system_schema %}
{{ Util_getButtonOrImage(
'submit_mult',
'mult_submit change_columns_anchor ajax',
'Change'|trans,
'b_edit',
'change'
) }}
{{ Util_getButtonOrImage(
'submit_mult',
'mult_submit',
'Drop'|trans,
'b_drop',
'drop'
) }}
{% if tbl_storage_engine != 'ARCHIVE' %}
{{ Util_getButtonOrImage(
'submit_mult',
'mult_submit',
'Primary'|trans,
'b_primary',
'primary'
) }}
{{ Util_getButtonOrImage(
'submit_mult',
'mult_submit',
'Unique'|trans,
'b_unique',
'unique'
) }}
{{ Util_getButtonOrImage(
'submit_mult',
'mult_submit',
'Index'|trans,
'b_index',
'index'
) }}
{{ Util_getButtonOrImage(
'submit_mult',
'mult_submit',
'Fulltext'|trans,
'b_ftext',
'ftext'
) }}
{% if tbl_storage_engine is not empty and (
tbl_storage_engine == 'MYISAM'
or tbl_storage_engine == 'ARIA'
or tbl_storage_engine == 'MARIA') %}
{{ Util_getButtonOrImage(
'submit_mult',
'mult_submit',
'Fulltext'|trans,
'b_ftext',
'ftext'
) }}
{% endif %}
{% if central_columns_work %}
{{ Util_getButtonOrImage(
'submit_mult',
'mult_submit',
'Add to central columns'|trans,
'centralColumns_add',
'add_to_central_columns'
) }}
{{ Util_getButtonOrImage(
'submit_mult',
'mult_submit',
'Remove from central columns'|trans,
'centralColumns_delete',
'remove_from_central_columns'
) }}
{% endif %}
{% endif %}
{% endif %}
</div>

View File

@@ -0,0 +1,145 @@
<div id="partitions">
<fieldset>
<legend>
{% trans 'Partitions' %}
{{ Util_showMySQLDocu('partitioning') }}
</legend>
{% if partitions is empty %}
{{ Message_notice('No partitioning defined!'|trans) }}
{% else %}
<p>
{% trans 'Partitioned by:' %}
<code>{{ partition_method }}({{ partition_expression }})</code>
</p>
{% if has_sub_partitions %}
<p>
{% trans 'Sub partitioned by:' %}
<code>{{ sub_partition_method }}({{ sub_partition_expression }})</code>
<p>
{% endif %}
<table>
<thead>
<tr>
<th colspan="2">#</th>
<th>{% trans 'Partition' %}</th>
{% if has_description %}
<th>{% trans 'Expression' %}</th>
{% endif %}
<th>{% trans 'Rows' %}</th>
<th>{% trans 'Data length' %}</th>
<th>{% trans 'Index length' %}</th>
<th>{% trans 'Comment' %}</th>
<th colspan="{{ range_or_list ? '7' : '6' }}">
{% trans 'Action' %}
</th>
</tr>
</thead>
<tbody>
{% for partition in partitions %}
<tr class="noclick{{ has_sub_partitions ? ' marked' }}">
{% if has_sub_partitions %}
<td>{{ partition.getOrdinal() }}</td>
<td></td>
{% else %}
<td colspan="2">{{ partition.getOrdinal() }}</td>
{% endif %}
<th>{{ partition.getName() }}</th>
{% if has_description %}
<td>
<code>
{{- partition.getExpression() -}}
{{- partition.getMethod() == 'LIST' ? ' IN (' : ' < ' -}}
{{- partition.getDescription() -}}
{{- partition.getMethod() == 'LIST' ? ')' -}}
</code>
</td>
{% endif %}
<td class="value">{{ partition.getRows() }}</td>
<td class="value">
{% set data_length = Util_formatByteDown(
partition.getDataLength(),
3,
1
) %}
<span>{{ data_length[0] }}</span>
<span class="unit">{{ data_length[1] }}</span>
</td>
<td class="value">
{% set index_length = Util_formatByteDown(
partition.getIndexLength(),
3,
1
) %}
<span>{{ index_length[0] }}</span>
<span class="unit">{{ index_length[1] }}</span>
</td>
<td>{{ partition.getComment() }}</td>
{% for action, icon in action_icons %}
<td>
<a href="tbl_structure.php" data-post="{{ url_query -}}
&amp;partition_maintenance=1&amp;sql_query=
{{- ("ALTER TABLE " ~ Util_backquote(table) ~ " " ~ action
~ " PARTITION " ~ partition.getName())|url_encode }}"
id="partition_action_{{ action }}"
name="partition_action_{{ action }}"
class="ajax">
{{ icon|raw }}
</a>
</td>
{% endfor %}
{% if has_sub_partitions %}
{% for sub_partition in partition.getSubPartitions() %}
<tr class="noclick">
<td></td>
<td>{{ sub_partition.getOrdinal() }}</td>
<td>{{ sub_partition.getName() }}</td>
{% if has_description %}
<td></td>
{% endif %}
<td class="value">{{ sub_partition.getRows() }}</td>
<td class="value">
{% set data_length = Util_formatByteDown(
sub_partition.getDataLength(),
3,
1
) %}
<span>{{ data_length[0] }}</span>
<span class="unit">{{ data_length[1] }}</span>
</td>
<td class="value">
{% set index_length = Util_formatByteDown(
sub_partition.getIndexLength(),
3,
1
) %}
<span>{{ index_length[0] }}</span>
<span class="unit">{{ index_length[1] }}</span>
</td>
<td>{{ sub_partition.getComment() }}</td>
<td colspan="{{ range_or_list ? '7' : '6' }}"></td>
</tr>
{% endfor %}
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</fieldset>
<fieldset class="tblFooters print_ignore">
<form action="tbl_structure.php" method="post">
{{ Url_getHiddenInputs(db, table) }}
<input type="hidden" name="edit_partitioning" value="true" />
{% if partitions is empty %}
<input type="submit" name="edit_partitioning" value="{% trans 'Partition table' %}" />
{% else %}
{{ Util_linkOrButton('sql.php', remove_url_params, 'Remove partitioning'|trans, {
'class': 'button ajax',
'id': 'remove_partitioning'
}) }}
<input type="submit" name="edit_partitioning" value="{% trans 'Edit partitioning' %}" />
{% endif %}
</form>
</fieldset>
</div>

View File

@@ -0,0 +1,227 @@
<form method="post" action="tbl_structure.php" name="fieldsForm" id="fieldsForm"
class="ajax{{ hide_structure_actions ? ' HideStructureActions' }}">
{{ Url_getHiddenInputs(db, table) }}
<input type="hidden" name="table_type" value=
{%- if db_is_system_schema -%}
"information_schema"
{%- elseif tbl_is_view -%}
"view"
{%- else -%}
"table"
{%- endif %} />
<div class="responsivetable">
<table id="tablestructure" class="data topmargin">
{# Table header #}
{% include 'table/structure/table_structure_header.twig' with {
'db_is_system_schema': db_is_system_schema,
'tbl_is_view': tbl_is_view,
'show_column_comments': show_column_comments
} only %}
<tbody>
{# Table body #}
{% set rownum = 0 %}
{% set columns_list = [] %}
{% for row in fields %}
{% set rownum = rownum + 1 %}
{% set columns_list = columns_list|merge([row['Field']]) %}
{% set field_charset = row['Collation'] %}
{% set extracted_columnspec = Util_extractColumnSpec(row['Type']) %}
{% set attribute = extracted_columnspec['attribute'] %}
{% if strpos(row['Extra'], 'on update CURRENT_TIMESTAMP')
is not same as(false) %}
{% set attribute = 'on update CURRENT_TIMESTAMP' %}
{% endif %}
{% if row['Default'] is null %}
{% if row['Null'] == 'YES' %}
{% set row = row|merge({'Default': '<em>NULL</em>'}) %}
{% endif %}
{% else %}
{% set row = row|merge({'Default': row['Default']|e}) %}
{% endif %}
{% set field_name = row['Field']|e %}
{% set displayed_field_name = field_name %}
{# For column comments #}
{% set comments = '' %}
{# Underline commented fields and display a hover-title (CSS only) #}
{% if comments_map[row['Field']] is defined %}
{% set displayed_field_name -%}
<span class="commented_column" title="
{{- comments_map[row['Field']] }}">
{{- field_name|raw -}}
</span>
{%- endset %}
{% set comments = comments_map[row['Field']] %}
{% endif %}
{% if primary and primary.hasColumn(field_name) %}
{% set displayed_field_name = displayed_field_name ~ Util_getImage(
'b_primary', 'Primary'|trans
) %}
{% endif %}
{% if field_name in columns_with_index %}
{% set displayed_field_name = displayed_field_name ~ Util_getImage(
'bd_primary', 'Index'|trans
) %}
{% endif %}
<tr>
{% include 'table/structure/table_structure_row.twig' with {
'row': row,
'rownum': rownum,
'displayed_field_name': preg_replace(
'/[\\x00-\\x1F]/',
'&#x2051;',
displayed_field_name
),
'type_nowrap': Util_getClassForType(extracted_columnspec['type']),
'extracted_columnspec': extracted_columnspec,
'attribute': attribute,
'tbl_is_view': tbl_is_view,
'db_is_system_schema': db_is_system_schema,
'url_query': url_query,
'titles': titles,
'table': table,
'tbl_storage_engine': tbl_storage_engine,
'field_charset': field_charset,
'comments': comments,
'show_column_comments': show_column_comments,
'relation_commwork': relation_commwork,
'relation_mimework': relation_mimework,
'browse_mime': browse_mime
} only %}
{% if not tbl_is_view and not db_is_system_schema %}
{% include 'table/structure/actions_in_table_structure.twig' with {
'row': row,
'rownum': rownum,
'extracted_columnspec': extracted_columnspec,
'type': extracted_columnspec['print_type'] is not empty ? extracted_columnspec['print_type'],
'tbl_storage_engine': tbl_storage_engine,
'primary': primary,
'field_name': field_name,
'url_query': url_query,
'titles': titles,
'columns_with_unique_index': columns_with_unique_index,
'is_in_central_columns': row['Field'] in central_list ? true : false,
'central_columns_work': central_columns_work,
'table': table,
'hide_structure_actions': hide_structure_actions,
'mysql_int_version': mysql_int_version
} only %}
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% include 'table/structure/check_all_table_column.twig' with {
'pma_theme_image': pma_theme_image,
'text_dir': text_dir,
'tbl_is_view': tbl_is_view,
'db_is_system_schema': db_is_system_schema,
'tbl_storage_engine': tbl_storage_engine,
'central_columns_work': central_columns_work
} only %}
</form>
<hr class="print_ignore"/>
{% include 'table/structure/move_columns_dialog.twig' with {
'db': db,
'table': table
} only %}
{# Work on the table #}
<div id="structure-action-links">
{% if tbl_is_view and not db_is_system_schema %}
{{ Util_linkOrButton(
'view_create.php',
{'db': db, 'table': table},
Util_getIcon('b_edit', 'Edit view'|trans, true)
) }}
{% endif %}
{% include 'table/structure/optional_action_links.twig' with {
'url_query': url_query,
'tbl_is_view': tbl_is_view,
'db_is_system_schema': db_is_system_schema,
'table': table,
'is_active': is_active,
'mysql_int_version': mysql_int_version,
'is_mariadb': is_mariadb
} only %}
</div>
{% if not tbl_is_view and not db_is_system_schema %}
{% include 'table/structure/add_column.twig' with {
'columns_list': columns_list,
'db': db,
'table': table
} only %}
{% endif %}
{# Displays indexes #}
{% if not tbl_is_view and not db_is_system_schema
and 'ARCHIVE' != tbl_storage_engine %}
{{ Index_getHtmlForDisplayIndexes() }}
{% endif %}
{# Display partition details #}
{% if have_partitioning %}
{# Detect partitioning #}
{% if partition_names is not empty and partition_names[0] is not null %}
{% set partitions = Partition_getPartitions(db, table) %}
{% set first_partition = partitions[0] %}
{% set range_or_list = first_partition.getMethod() == 'RANGE'
or first_partition.getMethod() == 'RANGE COLUMNS'
or first_partition.getMethod() == 'LIST'
or first_partition.getMethod() == 'LIST COLUMNS' %}
{% set sub_partitions = first_partition.getSubPartitions() %}
{% set has_sub_partitions = first_partition.hasSubPartitions() %}
{% if has_sub_partitions %}
{% set first_sub_partition = sub_partitions[0] %}
{% endif %}
{% set action_icons = {
'ANALYZE': Util_getIcon('b_search', 'Analyze'|trans),
'CHECK': Util_getIcon('eye', 'Check'|trans),
'OPTIMIZE': Util_getIcon('normalize', 'Optimize'|trans),
'REBUILD': Util_getIcon('s_tbl', 'Rebuild'|trans),
'REPAIR': Util_getIcon('b_tblops', 'Repair'|trans),
'TRUNCATE': Util_getIcon('b_empty', 'Truncate'|trans),
} %}
{% if range_or_list %}
{% set action_icons = action_icons|merge({'DROP': Util_getIcon('b_drop', 'Drop'|trans)}) %}
{% endif %}
{{ Util_getDivForSliderEffect('partitions', 'Partitions'|trans) }}
{% set remove_sql = 'ALTER TABLE ' ~ Util_backquote(table) ~ ' REMOVE PARTITIONING' %}
{% include 'table/structure/display_partitions.twig' with {
'db': db,
'table': table,
'url_query': url_query,
'partitions': partitions,
'partition_method': first_partition.getMethod(),
'partition_expression': first_partition.getExpression(),
'has_description': first_partition.getDescription() is not empty,
'has_sub_partitions': has_sub_partitions,
'sub_partition_method': has_sub_partitions ? first_sub_partition.getMethod(),
'sub_partition_expression': has_sub_partitions ? first_sub_partition.getExpression(),
'action_icons': action_icons,
'range_or_list': range_or_list,
'remove_url_params': url_params|merge({'sql_query': remove_sql})
} only %}
{% else %}
{% include 'table/structure/display_partitions.twig' with {
'db': db,
'table': table
} only %}
{% endif %}
{# For closing Slider effect div #}
</div>
{% endif %}
{# Displays Space usage and row statistics #}
{% if show_stats %}
{{ table_stats|raw }}
{% endif %}
<div class="clearfloat"></div>

View File

@@ -0,0 +1,79 @@
<div id="tablestatistics">
<fieldset>
<legend>{% trans 'Information' %}</legend>
{% if showtable['TABLE_COMMENT'] %}
<p>
<strong>{% trans 'Table comments:' %}</strong>
{{ showtable['TABLE_COMMENT'] }}
</p>
{% endif %}
<a id="showusage"></a>
{% if not tbl_is_view and not db_is_system_schema %}
<table id="tablespaceusage" class="width100 data">
<caption class="tblHeaders">{% trans 'Space usage' %}</caption>
<tbody>
<tr>
<th class="name">{% trans 'Data' %}</th>
<td class="value">{{ data_size }}</td>
<td class="unit">{{ data_unit }}</td>
</tr>
{% if index_size is defined %}
<tr>
<th class="name">{% trans 'Index' %}</th>
<td class="value">{{ index_size }}</td>
<td class="unit">{{ index_unit }}</td>
</tr>
{% endif %}
{% if free_size is defined %}
<tr>
<th class="name">{% trans 'Overhead' %}</th>
<td class="value">{{ free_size }}</td>
<td class="unit">{{ free_unit }}</td>
</tr>
<tr>
<th class="name">{% trans 'Effective' %}</th>
<td class="value">{{ effect_size }}</td>
<td class="unit">{{ effect_unit }}</td>
</tr>
{% endif %}
{% if tot_size is defined and mergetable == false %}
<tr>
<th class="name">{% trans 'Total' %}</th>
<td class="value">{{ tot_size }}</td>
<td class="unit">{{ tot_unit }}</td>
</tr>
{% endif %}
{# Optimize link if overhead #}
{% if free_size is defined
and (tbl_storage_engine == 'MYISAM'
or tbl_storage_engine == 'ARIA'
or tbl_storage_engine == 'MARIA'
or tbl_storage_engine == 'BDB') %}
<tr class="tblFooters print_ignore">
<td colspan="3" class="center">
<a href="sql.php" data-post="{{ url_query }}&amp;pos=0&amp;sql_query=
{{- ('OPTIMIZE TABLE ' ~ Util_backquote(table))|url_encode }}">
{{ Util_getIcon('b_tbloptimize', 'Optimize table'|trans) }}
</a>
</td>
</tr>
{% endif %}
</tbody>
</table>
{% endif %}
{% include 'table/structure/row_stats_table.twig' with {
'showtable': showtable,
'tbl_collation': tbl_collation,
'is_innodb': is_innodb,
'mergetable': mergetable,
'avg_size': avg_size is defined ? avg_size : null,
'avg_unit': avg_unit is defined ? avg_unit : null
} only %}
</fieldset>
</div>

View File

@@ -0,0 +1,9 @@
<div id="move_columns_dialog" class="hide" title="{% trans 'Move columns' %}">
<p>{% trans 'Move the columns by dragging them up and down.' %}</p>
<form action="tbl_structure.php">
<div>
{{ Url_getHiddenInputs(db, table) }}
<ul></ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,34 @@
<a href="#" id="printView">{{ Util_getIcon('b_print', 'Print'|trans, true) }}</a>
{% if not tbl_is_view and not db_is_system_schema %}
{# Only display propose table structure for MySQL < 8.0 #}
{% if mysql_int_version < 80000 or is_mariadb %}
<a href="sql.php" data-post="{{ url_query|raw }}&amp;session_max_rows=all&amp;sql_query=
{{- ('SELECT * FROM ' ~ Util_backquote(table) ~ ' PROCEDURE ANALYSE()')|url_encode -}}
" style="margin-right: 0;">
{{ Util_getIcon(
'b_tblanalyse',
'Propose table structure'|trans,
true
) }}
</a>
{{ Util_showMySQLDocu('procedure_analyse') }}
{% endif %}
{% if is_active %}
<a href="tbl_tracking.php{{ url_query|raw }}">
{{ Util_getIcon('eye', 'Track table'|trans, true) }}
</a>
{% endif %}
<a href="#" id="move_columns_anchor">
{{ Util_getIcon('b_move', 'Move columns'|trans, true) }}
</a>
<a href="normalization.php{{ url_query|raw }}">
{{ Util_getIcon('normalize', 'Normalize'|trans, true) }}
</a>
{% endif %}
{% if tbl_is_view and not db_is_system_schema %}
{% if is_active %}
<a href="tbl_tracking.php{{ url_query|raw }}">
{{ Util_getIcon('eye', 'Track view'|trans, true) }}
</a>
{% endif %}
{% endif %}

View File

@@ -0,0 +1,14 @@
<form action="tbl_structure.php" method="post">
{{ Url_getHiddenInputs(db, table) }}
<input type="hidden" name="edit_partitioning" value="true" />
<fieldset>
<legend>{% trans 'Edit partitioning' %}</legend>
{% include 'columns_definitions/partitions.twig' with {
'partition_details': partition_details
} only %}
</fieldset>
<fieldset class="tblFooters">
<input type="submit" name="save_partitioning" value="{% trans 'Save' %}">
</fieldset>
</form>

View File

@@ -0,0 +1,95 @@
<table id="tablerowstats" class="width100 data">
<caption class="tblHeaders">{% trans 'Row statistics' %}</caption>
<tbody>
{% if showtable['Row_format'] is defined %}
<tr>
<th class="name">{% trans 'Format' %}</th>
{% if showtable['Row_format'] == 'Fixed' %}
<td class="value">{% trans 'static' %}</td>
{% elseif showtable['Row_format'] == 'Dynamic' %}
<td class="value">{% trans 'dynamic' %}</td>
{% else %}
<td class="value">{{ showtable['Row_format'] }}</td>
{% endif %}
</tr>
{% endif %}
{% if showtable['Create_options'] is not empty %}
<tr>
<th class="name">{% trans 'Options' %}</th>
{% if showtable['Create_options'] == 'partitioned' %}
<td class="value">{% trans 'partitioned' %}</td>
{% else %}
<td class="value">{{ showtable['Create_options'] }}</td>
{% endif %}
</tr>
{% endif %}
{% if tbl_collation is not empty %}
<tr>
<th class="name">{% trans 'Collation' %}</th>
<td class="value">
<dfn title="{{ Charsets_getCollationDescr(tbl_collation) }}">
{{ tbl_collation }}
</dfn>
</td>
</tr>
{% endif %}
{% if not is_innodb and showtable['Rows'] is defined %}
<tr>
<th class="name">{% trans 'Rows' %}</th>
<td class="value">{{ Util_formatNumber(showtable['Rows'], 0) }}</td>
</tr>
{% endif %}
{% if not is_innodb
and showtable['Avg_row_length'] is defined
and showtable['Avg_row_length'] > 0 %}
<tr>
<th class="name">{% trans 'Row length' %}</th>
{% set avg_row_length = Util_formatByteDown(showtable['Avg_row_length'], 6, 1) %}
<td class="value">{{ avg_row_length[0] }} {{ avg_row_length[1] }}</td>
</tr>
{% endif %}
{% if not is_innodb
and showtable['Data_length'] is defined
and showtable['Rows'] is defined
and showtable['Rows'] > 0
and mergetable == false %}
<tr>
<th class="name">{% trans 'Row size' %}</th>
<td class="value">{{ avg_size }} {{ avg_unit }}</td>
</tr>
{% endif %}
{% if showtable['Auto_increment'] is defined %}
<tr>
<th class="name">{% trans 'Next autoindex' %}</th>
<td class="value">{{ Util_formatNumber(showtable['Auto_increment'], 0) }}</td>
</tr>
{% endif %}
{% if showtable['Create_time'] is defined %}
<tr>
<th class="name">{% trans 'Creation' %}</th>
<td class="value">{{ Util_localisedDate(showtable['Create_time']|date('U')) }}</td>
</tr>
{% endif %}
{% if showtable['Update_time'] is defined %}
<tr>
<th class="name">{% trans 'Last update' %}</th>
<td class="value">{{ Util_localisedDate(showtable['Update_time']|date('U')) }}</td>
</tr>
{% endif %}
{% if showtable['Check_time'] is defined %}
<tr>
<th class="name">{% trans 'Last check' %}</th>
<td class="value">{{ Util_localisedDate(showtable['Check_time']|date('U')) }}</td>
</tr>
{% endif %}
</tbody>
</table>

View File

@@ -0,0 +1,21 @@
<thead>
<tr>
<th class="print_ignore"></th>
<th>#</th>
<th>{% trans 'Name' %}</th>
<th>{% trans 'Type' %}</th>
<th>{% trans 'Collation' %}</th>
<th>{% trans 'Attributes' %}</th>
<th>{% trans 'Null' %}</th>
<th>{% trans 'Default' %}</th>
{% if show_column_comments -%}
<th>{% trans 'Comments' %}</th>
{%- endif %}
<th>{% trans 'Extra' %}</th>
{# @see tbl_structure.js, function moreOptsMenuResize() #}
{% if not db_is_system_schema and not tbl_is_view %}
<th colspan="{{ Util_showIcons('ActionLinksMode') ? '8' : '9' -}}
" class="action print_ignore">{% trans 'Action' %}</th>
{% endif %}
</tr>
</thead>

View File

@@ -0,0 +1,59 @@
<td class="center print_ignore">
<input type="checkbox" class="checkall" name="selected_fld[]" value="{{ row['Field'] }}" id="checkbox_row_{{ rownum }}"/>
</td>
<td class="right">{{ rownum }}</td>
<th class="nowrap">
<label for="checkbox_row_{{ rownum }}">
{{ displayed_field_name|raw }}
</label>
</th>
<td {{ type_nowrap }}>
<bdo dir="ltr" lang="en">
{{ extracted_columnspec['displayed_type']|raw }}
{% if relation_commwork and relation_mimework and browse_mime
and mime_map[row['Field']]['mimetype'] is defined %}
<br />MIME: {{ mime_map[row['Field']]['mimetype']|replace({'_': '/'})|lower }}
{% endif %}
</bdo>
</td>
<td>
{% if field_charset is not empty %}
<dfn title="{{ Charsets_getCollationDescr(field_charset) }}">{{ field_charset }}</dfn>
{% endif %}
</td>
<td class="column_attribute nowrap">{{ attribute }}</td>
<td>{{ row['Null'] == 'YES' ? 'Yes'|trans : 'No'|trans }}</td>
<td class="nowrap">
{% if row['Default'] is not null %}
{% if extracted_columnspec['type'] == 'bit' %}
{{ Util_convertBitDefaultValue(row['Default']) }}
{% else %}
{{ row['Default']|raw }}
{% endif %}
{% else %}
<em>{% trans %}None{% context %}None for default{% endtrans %}</em>
{% endif %}
</td>
{% if show_column_comments %}
<td>
{{ comments }}
</td>
{% endif %}
<td class="nowrap">{{ row['Extra']|upper }}</td>
{% if not tbl_is_view and not db_is_system_schema %}
<td class="edit center print_ignore">
<a class="change_column_anchor ajax" href="tbl_structure.php
{{- url_query }}&amp;field={{ row['Field']|url_encode }}&amp;change_column=1">
{{ titles['Change']|raw }}
</a>
</td>
<td class="drop center print_ignore">
<a class="drop_column_anchor ajax" href="sql.php" data-post="{{ url_query }}&amp;sql_query=
{{- ('ALTER TABLE ' ~ Util_backquote(table)
~ ' DROP ' ~ Util_backquote(row['Field']) ~ ';')|url_encode -}}
&amp;dropped_column={{ row['Field']|url_encode }}&amp;purge=1&amp;message_to_show=
{{- ('Column %s has been dropped.'|trans|format(row['Field']|e))|url_encode }}">
{{ titles['Drop']|raw }}
</a>
</td>
{% endif %}