diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-09 10:55:03 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-09 13:09:38 +0100 |
| commit | 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch) | |
| tree | 5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/templates/table/structure/display_structure.twig | |
| parent | 7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff) | |
| download | ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2 ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip | |
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/templates/table/structure/display_structure.twig')
| -rw-r--r-- | srcs/phpmyadmin/templates/table/structure/display_structure.twig | 516 |
1 files changed, 516 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/templates/table/structure/display_structure.twig b/srcs/phpmyadmin/templates/table/structure/display_structure.twig new file mode 100644 index 0000000..16e11db --- /dev/null +++ b/srcs/phpmyadmin/templates/table/structure/display_structure.twig @@ -0,0 +1,516 @@ +{% extends 'table/page_with_secondary_tabs.twig' %} +{% block content %} +<form method="post" action="tbl_structure.php" name="fieldsForm" id="fieldsForm" + class="ajax{{ hide_structure_actions ? ' HideStructureActions' }}"> + {{ get_hidden_inputs(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 #} + <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 table/structure.js, function moreOptsMenuResize() #} + {% if not db_is_system_schema and not tbl_is_view %} + <th colspan="{{ show_icons('ActionLinksMode') ? '8' : '9' -}} + " class="action print_ignore">{% trans 'Action' %}</th> + {% endif %} + </tr> + </thead> + <tbody> + {# Table body #} + {% set rownum = 0 %} + {% for row in fields %} + {% set rownum = rownum + 1 %} + + {% set extracted_columnspec = extracted_columnspecs[rownum] %} + {% set field_name = row['Field']|e %} + {# For column comments #} + {% set comments = row_comments[rownum] %} + {# Underline commented fields and display a hover-title (CSS only) #} + + <tr> + <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 }}"> + {% if displayed_fields[rownum].comment is defined %} + <span class="commented_column" title="{{ displayed_fields[rownum].comment }}">{{ displayed_fields[rownum].text }}</span> + {% else %} + {{ displayed_fields[rownum].text }} + {% endif %} + {{ displayed_fields[rownum].icon|raw }} + </label> + </th> + <td{{ 'set' != extracted_columnspec['type'] and 'enum' != extracted_columnspec['type'] ? ' class="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>{% trans 'Media (MIME) type:' %} {{ mime_map[row['Field']]['mimetype']|replace({'_': '/'})|lower }} + {% endif %} + </bdo> + </td> + <td> + {% if row['Collation'] is not empty %} + <dfn title="{{ collations[row['Collation']].description }}">{{ collations[row['Collation']].name }}</dfn> + {% endif %} + </td> + <td class="column_attribute nowrap">{{ attributes[rownum] }}</td> + <td>{{ row['Null'] == 'YES' ? 'Yes'|trans : 'No'|trans }}</td> + <td class="nowrap"> + {% if row['Default'] is not null %} + {% if extracted_columnspec['type'] == 'bit' %} + {{ row['Default']|convert_bit_default_value }} + {% else %} + {{ row['Default'] }} + {% endif %} + {% elseif row['Null'] == 'YES' %} + <em>NULL</em> + {% 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 }}&field={{ row['Field']|url_encode }}&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 }}&sql_query= + {{- ('ALTER TABLE ' ~ backquote(table) + ~ ' DROP ' ~ backquote(row['Field']) ~ ';')|url_encode -}} + &dropped_column={{ row['Field']|url_encode }}&purge=1&message_to_show= + {{- ('Column %s has been dropped.'|trans|format(row['Field']|e))|url_encode }}"> + {{ titles['Drop']|raw }} + </a> + </td> + {% endif %} + + {% if not tbl_is_view and not db_is_system_schema %} + {% set type = extracted_columnspec['print_type'] is not empty ? extracted_columnspec['print_type'] %} + <td class="print_ignore"> + <ul class="table-structure-actions resizable-menu"> + {% if hide_structure_actions %} + <li class="submenu shown"> + <a href="#" class="tab nowrap">{{ get_icon('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 }}&add_key=1&sql_query= + {{- ('ALTER TABLE ' ~ backquote(table) + ~ ' ADD FULLTEXT(' ~ backquote(row['Field']) + ~ ');')|url_encode }}&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 }}&sql_query= + {{- ('SELECT COUNT(*) AS ' ~ backquote('Rows'|trans) + ~ ', ' ~ backquote(row['Field']) + ~ ' FROM ' ~ backquote(table) + ~ ' GROUP BY ' ~ backquote(row['Field']) + ~ ' ORDER BY ' ~ backquote(row['Field']))|url_encode -}} + &is_browse_distinct=1"> + {{ titles['DistinctValues']|raw }} + </a> + </li> + {% if central_columns_work %} + <li class="browse nowrap"> + {% if row['Field'] in central_list %} + <a href="#" class="central_columns remove_button"> + {{ get_icon('centralColumns_delete', 'Remove from central columns'|trans) }} + </a> + {% else %} + <a href="#" class="central_columns add_button"> + {{ get_icon('centralColumns_add', 'Add to central columns'|trans) }} + </a> + {% endif %} + </li> + {% endif %} + {% if hide_structure_actions %} + </ul> + </li> + {% endif %} + </ul> + </td> + {% endif %} + </tr> + {% endfor %} + </tbody> + </table> + </div> + <div class="print_ignore"> + {% include 'select_all.twig' with { + 'pma_theme_image': pma_theme_image, + 'text_dir': text_dir, + 'form_name': 'fieldsForm' + } only %} + + {{ get_button_or_image( + 'submit_mult', + 'mult_submit', + 'Browse'|trans, + 'b_browse', + 'browse' + ) }} + + {% if not tbl_is_view and not db_is_system_schema %} + {{ get_button_or_image( + 'submit_mult', + 'mult_submit change_columns_anchor ajax', + 'Change'|trans, + 'b_edit', + 'change' + ) }} + {{ get_button_or_image( + 'submit_mult', + 'mult_submit', + 'Drop'|trans, + 'b_drop', + 'drop' + ) }} + + {% if tbl_storage_engine != 'ARCHIVE' %} + {{ get_button_or_image( + 'submit_mult', + 'mult_submit', + 'Primary'|trans, + 'b_primary', + 'primary' + ) }} + {{ get_button_or_image( + 'submit_mult', + 'mult_submit', + 'Unique'|trans, + 'b_unique', + 'unique' + ) }} + {{ get_button_or_image( + 'submit_mult', + 'mult_submit', + 'Index'|trans, + 'b_index', + 'index' + ) }} + {{ get_button_or_image( + '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') %} + {{ get_button_or_image( + 'submit_mult', + 'mult_submit', + 'Fulltext'|trans, + 'b_ftext', + 'ftext' + ) }} + {% endif %} + + {% if central_columns_work %} + {{ get_button_or_image( + 'submit_mult', + 'mult_submit', + 'Add to central columns'|trans, + 'centralColumns_add', + 'add_to_central_columns' + ) }} + {{ get_button_or_image( + 'submit_mult', + 'mult_submit', + 'Remove from central columns'|trans, + 'centralColumns_delete', + 'remove_from_central_columns' + ) }} + {% endif %} + {% endif %} + {% endif %} + </div> +</form> +<hr class="print_ignore"> +<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" name="move_column_form" id="move_column_form"> + <div> + {{ get_hidden_inputs(db, table) }} + <ul></ul> + </div> + </form> +</div> +{# Work on the table #} +<div id="structure-action-links"> + {% if tbl_is_view and not db_is_system_schema %} + {% set edit_view_url = 'view_create.php' ~ edit_view_url %} + {{ link_or_button( + edit_view_url, + get_icon('b_edit', 'Edit view'|trans, true) + ) }} + {% endif %} + <a href="#" id="printView">{{ get_icon('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 }}&session_max_rows=all&sql_query= + {{- ('SELECT * FROM ' ~ backquote(table) ~ ' PROCEDURE ANALYSE()')|url_encode -}} + " style="margin-right: 0;"> + {{ get_icon( + 'b_tblanalyse', + 'Propose table structure'|trans, + true + ) }} + </a> + {{ show_mysql_docu('procedure_analyse') }} + {% endif %} + {% if is_active %} + <a href="tbl_tracking.php{{ url_query|raw }}"> + {{ get_icon('eye', 'Track table'|trans, true) }} + </a> + {% endif %} + <a href="#" id="move_columns_anchor"> + {{ get_icon('b_move', 'Move columns'|trans, true) }} + </a> + <a href="normalization.php{{ url_query|raw }}"> + {{ get_icon('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 }}"> + {{ get_icon('eye', 'Track view'|trans, true) }} + </a> + {% endif %} + {% endif %} +</div> +{% if not tbl_is_view and not db_is_system_schema %} + <form method="post" action="tbl_addfield.php" id="addColumns" name="addColumns"> + {{ get_hidden_inputs(db, table) }} + {% if show_icons('ActionLinksMode') %} + {{ get_image('b_insrow', 'Add column'|trans) }} + {% 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"> + {# 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 class="btn btn-primary" type="submit" value="{% trans 'Go' %}"> + </form> +{% endif %} + +{# Displays indexes #} +{% if not tbl_is_view and not db_is_system_schema + and 'ARCHIVE' != tbl_storage_engine %} + {{ displayIndexesHtml|raw }} +{% endif %} + +{# Display partition details #} +{% if have_partitioning %} + {# Detect partitioning #} + {% if partition_names is not empty and partition_names[0] is not null %} + {% 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': get_icon('b_search', 'Analyze'|trans), + 'CHECK': get_icon('eye', 'Check'|trans), + 'OPTIMIZE': get_icon('normalize', 'Optimize'|trans), + 'REBUILD': get_icon('s_tbl', 'Rebuild'|trans), + 'REPAIR': get_icon('b_tblops', 'Repair'|trans), + 'TRUNCATE': get_icon('b_empty', 'Truncate'|trans), + } %} + {% if range_or_list %} + {% set action_icons = action_icons|merge({'DROP': get_icon('b_drop', 'Drop'|trans)}) %} + {% endif %} + + {# open Slider Effect div #} + {% include 'div_for_slider_effect.twig' with { + 'id': 'partitions-2', + 'message': 'Partitions'|trans, + 'initial_sliders_state': default_sliders_state + } only %} + + {% set remove_sql = 'ALTER TABLE ' ~ backquote(table) ~ ' REMOVE PARTITIONING' %} + {% set remove_url = 'sql.php' ~ url_query ~ '&sql_query=' ~ remove_sql|url_encode %} + + {% 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': remove_url + } 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> +{% endblock %} |
