aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/templates/table/structure/display_structure.twig
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-09 10:55:03 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-09 13:09:38 +0100
commit04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch)
tree5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/templates/table/structure/display_structure.twig
parent7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff)
downloadft_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.twig516
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 }}&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 ' ~ backquote(table)
+ ~ ' DROP ' ~ 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 %}
+
+ {% 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 }}&amp;add_key=1&amp;sql_query=
+ {{- ('ALTER TABLE ' ~ backquote(table)
+ ~ ' ADD FULLTEXT(' ~ 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 ' ~ backquote('Rows'|trans)
+ ~ ', ' ~ backquote(row['Field'])
+ ~ ' FROM ' ~ backquote(table)
+ ~ ' GROUP BY ' ~ backquote(row['Field'])
+ ~ ' ORDER BY ' ~ backquote(row['Field']))|url_encode -}}
+ &amp;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 }}&amp;session_max_rows=all&amp;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) }}&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 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 %}