diff options
Diffstat (limited to 'srcs/phpmyadmin/templates/display')
32 files changed, 995 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/templates/display/export/format_dropdown.twig b/srcs/phpmyadmin/templates/display/export/format_dropdown.twig new file mode 100644 index 0000000..adda19b --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/format_dropdown.twig @@ -0,0 +1,4 @@ +<div class="exportoptions" id="format"> + <h3>{% trans 'Format:' %}</h3> + {{ dropdown|raw }} +</div> diff --git a/srcs/phpmyadmin/templates/display/export/hidden_inputs.twig b/srcs/phpmyadmin/templates/display/export/hidden_inputs.twig new file mode 100644 index 0000000..fc7c04e --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/hidden_inputs.twig @@ -0,0 +1,23 @@ +{% if export_type == 'server' %} + {{ get_hidden_inputs('', '', 1) }} +{% elseif export_type == 'database' %} + {{ get_hidden_inputs(db, '', 1) }} +{% else %} + {{ get_hidden_inputs(db, table, 1) }} +{% endif %} + +{# Just to keep this value for possible next display of this form after saving on server #} +{% if single_table is not empty %} + <input type="hidden" name="single_table" value="TRUE"> +{% endif %} + +<input type="hidden" name="export_type" value="{{ export_type }}"> + +{# The export method (quick, custom or custom-no-form) #} +<input type="hidden" name="export_method" value="{{ export_method }}"> + +{% if sql_query is not empty %} + <input type="hidden" name="sql_query" value="{{ sql_query }}"> +{% endif %} + +<input type="hidden" name="template_id" value="{{ template_id }}"> diff --git a/srcs/phpmyadmin/templates/display/export/method.twig b/srcs/phpmyadmin/templates/display/export/method.twig new file mode 100644 index 0000000..5521f57 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/method.twig @@ -0,0 +1,22 @@ +{% if export_method != 'custom-no-form' %} + <div class="exportoptions" id="quick_or_custom"> + <h3>{% trans 'Export method:' %}</h3> + <ul> + <li> + <input type="radio" name="quick_or_custom" value="quick" id="radio_quick_export" + {{- export_method == 'quick' ? ' checked' }}> + <label for="radio_quick_export"> + {% trans 'Quick - display only the minimal options' %} + </label> + </li> + + <li> + <input type="radio" name="quick_or_custom" value="custom" id="radio_custom_export" + {{- export_method == 'custom' ? ' checked' }}> + <label for="radio_custom_export"> + {% trans 'Custom - display all possible options' %} + </label> + </li> + </ul> + </div> +{% endif %} diff --git a/srcs/phpmyadmin/templates/display/export/option_header.twig b/srcs/phpmyadmin/templates/display/export/option_header.twig new file mode 100644 index 0000000..03e4f6b --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/option_header.twig @@ -0,0 +1,12 @@ +<div class="exportoptions" id="header"> + <h2> + {{ get_image('b_export', 'Export'|trans) }} + {% if export_type == 'server' %} + {% trans 'Exporting databases from the current server' %} + {% elseif export_type == 'database' %} + {{ 'Exporting tables from "%s" database'|trans|format(db) }} + {% else %} + {{ 'Exporting rows from "%s" table'|trans|format(table) }} + {% endif %} + </h2> +</div> diff --git a/srcs/phpmyadmin/templates/display/export/options_format.twig b/srcs/phpmyadmin/templates/display/export/options_format.twig new file mode 100644 index 0000000..6b09814 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/options_format.twig @@ -0,0 +1,24 @@ +<div class="exportoptions" id="format_specific_opts"> + <h3>{% trans 'Format-specific options:' %}</h3> + <p class="no_js_msg" id="scroll_to_options_msg"> + {% trans 'Scroll down to fill in the options for the selected format and ignore the options for other formats.' %} + </p> + {{ options|raw }} +</div> + +{% if can_convert_kanji %} + {# Japanese encoding setting #} + <div class="exportoptions" id="kanji_encoding"> + <h3>{% trans 'Encoding Conversion:' %}</h3> + {% include 'encoding/kanji_encoding_form.twig' %} + </div> +{% endif %} + +<div class="exportoptions" id="submit"> + <input id="buttonGo" class="btn btn-primary" type="submit" value="{% trans 'Go' %}" + {#- If the time limit set is zero, then time out won't occur so no need + to check for time out. -#} + {%- if exec_time_limit > 0 %} + onclick="Export.checkTimeOut({{ exec_time_limit }})" + {%- endif %}> +</div> diff --git a/srcs/phpmyadmin/templates/display/export/options_output.twig b/srcs/phpmyadmin/templates/display/export/options_output.twig new file mode 100644 index 0000000..60d721c --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/options_output.twig @@ -0,0 +1,54 @@ +<div class="exportoptions" id="output"> + <h3>{% trans 'Output:' %}</h3> + <ul id="ul_output"> + <li> + <input type="checkbox" id="btn_alias_config"{{ has_aliases ? ' checked' }}> + <label for="btn_alias_config"> + {% trans 'Rename exported databases/tables/columns' %} + </label> + </li> + + {% if export_type != 'server' %} + <li> + <input type="checkbox" name="lock_tables" + value="something" id="checkbox_lock_tables" + {{- (not repopulate and is_checked_lock_tables) or lock_tables ? ' checked' }}> + <label for="checkbox_lock_tables"> + {{ 'Use %s statement'|trans|format('<code>LOCK TABLES</code>')|raw }} + </label> + </li> + {% endif %} + + <li> + <input type="radio" name="output_format" value="sendit" id="radio_dump_asfile" + {{- not repopulate and is_checked_asfile ? ' checked' }}> + <label for="radio_dump_asfile"> + {% trans 'Save output to a file' %} + </label> + <ul id="ul_save_asfile"> + {% if save_dir is not empty %} + {{ options_output_save_dir|raw }} + {% endif %} + + {{ options_output_format|raw }} + + {% if is_encoding_supported %} + {{ options_output_charset|raw }} + {% endif %} + + {{ options_output_compression|raw }} + + {% if export_type == 'server' or export_type == 'database' %} + {{ options_output_separate_files|raw }} + {% endif %} + </ul> + </li> + + {{ options_output_radio|raw }} + </ul> + + <label for="maxsize"> + {{- 'Skip tables larger than %s MiB'|trans|format( + '</label><input type="text" id="maxsize" name="maxsize" size="4">' + )|raw }} +</div> diff --git a/srcs/phpmyadmin/templates/display/export/options_output_charset.twig b/srcs/phpmyadmin/templates/display/export/options_output_charset.twig new file mode 100644 index 0000000..bd316bf --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/options_output_charset.twig @@ -0,0 +1,16 @@ +<li> + <label for="select_charset" class="desc"> + {% trans 'Character set of the file:' %} + </label> + <select id="select_charset" name="charset" size="1"> + {% for charset in encodings %} + <option value="{{ charset }}" + {%- if (export_charset is empty and charset == 'utf-8') + or charset == export_charset %} + selected + {%- endif %}> + {{- charset -}} + </option> + {% endfor %} + </select> +</li> diff --git a/srcs/phpmyadmin/templates/display/export/options_output_compression.twig b/srcs/phpmyadmin/templates/display/export/options_output_compression.twig new file mode 100644 index 0000000..1905981 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/options_output_compression.twig @@ -0,0 +1,24 @@ +{% if is_zip or is_gzip %} + <li> + <label for="compression" class="desc"> + {% trans 'Compression:' %} + </label> + <select id="compression" name="compression"> + <option value="none">{% trans 'None' %}</option> + {% if is_zip %} + <option value="zip" + {{- selected_compression == 'zip' ? ' selected' }}> + {% trans 'zipped' %} + </option> + {% endif %} + {% if is_gzip %} + <option value="gzip" + {{- selected_compression == 'gzip' ? ' selected' }}> + {% trans 'gzipped' %} + </option> + {% endif %} + </select> + </li> +{% else %} + <input type="hidden" name="compression" value="{{ selected_compression }}"> +{% endif %} diff --git a/srcs/phpmyadmin/templates/display/export/options_output_format.twig b/srcs/phpmyadmin/templates/display/export/options_output_format.twig new file mode 100644 index 0000000..d75d330 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/options_output_format.twig @@ -0,0 +1,13 @@ +<li> + <label for="filename_template" class="desc"> + {% trans 'File name template:' %} + {{ show_hint(message) }} + </label> + <input type="text" name="filename_template" id="filename_template" value=" + {{- filename_template }}"> + <input type="checkbox" name="remember_template" id="checkbox_remember_template" + {{- is_checked ? ' checked' }}> + <label for="checkbox_remember_template"> + {% trans 'use this for future exports' %} + </label> +</li> diff --git a/srcs/phpmyadmin/templates/display/export/options_output_radio.twig b/srcs/phpmyadmin/templates/display/export/options_output_radio.twig new file mode 100644 index 0000000..7adf21e --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/options_output_radio.twig @@ -0,0 +1,7 @@ +<li> + <input type="radio" id="radio_view_as_text" name="output_format" value="astext" + {{- has_repopulate or export_asfile == false ? ' checked' }}> + <label for="radio_view_as_text"> + {% trans 'View output as text' %} + </label> +</li> diff --git a/srcs/phpmyadmin/templates/display/export/options_output_save_dir.twig b/srcs/phpmyadmin/templates/display/export/options_output_save_dir.twig new file mode 100644 index 0000000..b4526aa --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/options_output_save_dir.twig @@ -0,0 +1,15 @@ +<li> + <input type="checkbox" name="onserver" value="saveit" + id="checkbox_dump_onserver"{{ export_is_checked ? ' checked' }}> + <label for="checkbox_dump_onserver"> + {{ 'Save on server in the directory <strong>%s</strong>'|trans|format(save_dir|e)|raw }} + </label> +</li> +<li> + <input type="checkbox" name="onserver_overwrite" + value="saveitover" id="checkbox_dump_onserver_overwrite" + {{- export_overwrite_is_checked ? ' checked' }}> + <label for="checkbox_dump_onserver_overwrite"> + {% trans 'Overwrite existing file(s)' %} + </label> +</li> diff --git a/srcs/phpmyadmin/templates/display/export/options_output_separate_files.twig b/srcs/phpmyadmin/templates/display/export/options_output_separate_files.twig new file mode 100644 index 0000000..fec85c4 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/options_output_separate_files.twig @@ -0,0 +1,12 @@ +<li> + <input type="checkbox" id="checkbox_as_separate_files" + name="as_separate_files" value="{{ export_type }}" + {{- is_checked ? ' checked' }}> + <label for="checkbox_as_separate_files"> + {% if export_type == 'server' %} + {% trans 'Export databases as separate files' %} + {% elseif export_type == 'database' %} + {% trans 'Export tables as separate files' %} + {% endif %} + </label> +</li> diff --git a/srcs/phpmyadmin/templates/display/export/options_quick_export.twig b/srcs/phpmyadmin/templates/display/export/options_quick_export.twig new file mode 100644 index 0000000..b3bd159 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/options_quick_export.twig @@ -0,0 +1,20 @@ +<div class="exportoptions" id="output_quick_export"> + <h3>{% trans 'Output:' %}</h3> + <ul> + <li> + <input type="checkbox" name="quick_export_onserver" value="saveit" + id="checkbox_quick_dump_onserver"{{ export_is_checked ? ' checked' }}> + <label for="checkbox_quick_dump_onserver"> + {{ 'Save on server in the directory <strong>%s</strong>'|trans|format(save_dir|e)|raw }} + </label> + </li> + <li> + <input type="checkbox" name="quick_export_onserver_overwrite" + value="saveitover" id="checkbox_quick_dump_onserver_overwrite" + {{- export_overwrite_is_checked ? ' checked' }}> + <label for="checkbox_quick_dump_onserver_overwrite"> + {% trans 'Overwrite existing file(s)' %} + </label> + </li> + </ul> +</div> diff --git a/srcs/phpmyadmin/templates/display/export/options_rows.twig b/srcs/phpmyadmin/templates/display/export/options_rows.twig new file mode 100644 index 0000000..1d4f866 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/options_rows.twig @@ -0,0 +1,35 @@ +<div class="exportoptions" id="rows"> + <h3>{% trans 'Rows:' %}</h3> + <ul> + <li> + <input type="radio" name="allrows" value="0" id="radio_allrows_0" + {{- allrows is not null and allrows == 0 ? ' checked' }}> + <label for="radio_allrows_0">{% trans 'Dump some row(s)' %}</label> + <ul> + <li> + <label for="limit_to">{% trans 'Number of rows:' %}</label> + <input type="text" id="limit_to" name="limit_to" size="5" value=" + {%- apply spaceless %} + {% if limit_to is not null %} + {{ limit_to }} + {% elseif unlim_num_rows is not empty and unlim_num_rows != 0 %} + {{ unlim_num_rows }} + {% else %} + {{ number_of_rows }} + {% endif %} + {% endapply %}" onfocus="this.select()"> + </li> + <li> + <label for="limit_from">{% trans 'Row to begin at:' %}</label> + <input type="text" id="limit_from" name="limit_from" size="5" value=" + {{- limit_from is not null ? limit_from : 0 }}" onfocus="this.select()"> + </li> + </ul> + </li> + <li> + <input type="radio" name="allrows" value="1" id="radio_allrows_1" + {{- allrows is null or allrows == 1 ? ' checked' }}> + <label for="radio_allrows_1">{% trans 'Dump all rows' %}</label> + </li> + </ul> +</div> diff --git a/srcs/phpmyadmin/templates/display/export/select_options.twig b/srcs/phpmyadmin/templates/display/export/select_options.twig new file mode 100644 index 0000000..4ca00ba --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/select_options.twig @@ -0,0 +1,19 @@ +<div> + <p> + <a href="#" onclick="Functions.setSelectOptions('dump', 'db_select[]', true); return false;"> + {% trans 'Select all' %} + </a> + / + <a href="#" onclick="Functions.setSelectOptions('dump', 'db_select[]', false); return false;"> + {% trans 'Unselect all' %} + </a> + </p> + + <select name="db_select[]" id="db_select" size="10" multiple> + {% for database in databases %} + <option value="{{ database.name }}"{{ database.is_selected ? ' selected' }}> + {{ database.name }} + </option> + {% endfor %} + </select> +</div> diff --git a/srcs/phpmyadmin/templates/display/export/selection.twig b/srcs/phpmyadmin/templates/display/export/selection.twig new file mode 100644 index 0000000..6f691f5 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/selection.twig @@ -0,0 +1,10 @@ +<div class="exportoptions" id="databases_and_tables"> + {% if export_type == 'server' %} + <h3>{% trans 'Databases:' %}</h3> + {% elseif export_type == 'database' %} + <h3>{% trans 'Tables:' %}</h3> + {% endif %} + {% if multi_values is not empty %} + {{ multi_values|raw }} + {% endif %} +</div> diff --git a/srcs/phpmyadmin/templates/display/export/template_loading.twig b/srcs/phpmyadmin/templates/display/export/template_loading.twig new file mode 100644 index 0000000..16eaa6d --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/template_loading.twig @@ -0,0 +1,27 @@ +<div class="exportoptions" id="export_templates"> + <h3>{% trans 'Export templates:' %}</h3> + + <div class="floatleft"> + <form method="post" action="tbl_export.php" id="newTemplateForm" class="ajax"> + <h4>{% trans 'New template:' %}</h4> + <input type="text" name="templateName" id="templateName" + maxlength="64" placeholder="{% trans 'Template name' %}" required> + <input class="btn btn-secondary" type="submit" name="createTemplate" id="createTemplate" + value="{% trans 'Create' %}"> + </form> + </div> + + <div class="floatleft" style="margin-left: 50px;"> + <form method="post" action="tbl_export.php" id="existingTemplatesForm" class="ajax"> + <h4>{% trans 'Existing templates:' %}</h4> + <label for="template">{% trans 'Template:' %}</label> + <select name="template" id="template" required> + {{ options|raw }} + </select> + <input class="btn btn-secondary" type="submit" name="updateTemplate" id="updateTemplate" value="{% trans 'Update' %}"> + <input class="btn btn-secondary" type="submit" name="deleteTemplate" id="deleteTemplate" value="{% trans 'Delete' %}"> + </form> + </div> + + <div class="clearfloat"></div> +</div> diff --git a/srcs/phpmyadmin/templates/display/export/template_options.twig b/srcs/phpmyadmin/templates/display/export/template_options.twig new file mode 100644 index 0000000..ddcd4f5 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/export/template_options.twig @@ -0,0 +1,7 @@ +<option value="">-- {% trans 'Select a template' %} --</option> + +{% for template in templates %} + <option value="{{ template.id }}"{{ template.id == selected_template ? ' selected' }}> + {{ template.name }} + </option> +{% endfor %} diff --git a/srcs/phpmyadmin/templates/display/import/import.twig b/srcs/phpmyadmin/templates/display/import/import.twig new file mode 100644 index 0000000..dab14a3 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/import/import.twig @@ -0,0 +1,195 @@ +<iframe id="import_upload_iframe" name="import_upload_iframe" width="1" height="1" class="hide"></iframe> +<div id="import_form_status" class="hide"></div> +<div id="importmain"> + <img src="{{ pma_theme_image }}ajax_clock_small.gif" width="16" height="16" alt="ajax clock" class="hide"> + + <script type="text/javascript"> + //<![CDATA[ + {% include 'display/import/javascript.twig' with { + 'upload_id': upload_id, + 'handler': handler, + 'pma_theme_image': pma_theme_image + } only %} + //]]> + </script> + + <form id="import_file_form" + action="import.php" + method="post" + enctype="multipart/form-data" + name="import" + class="ajax" + {%- if handler != 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadNoplugin' %} + target="import_upload_iframe" + {%- endif %}> + + <input type="hidden" name="{{ id_key }}" value="{{ upload_id }}"> + {% if import_type == 'server' %} + {{ get_hidden_inputs('', '', 1) }} + {% elseif import_type == 'database' %} + {{ get_hidden_inputs(db, '', 1) }} + {% else %} + {{ get_hidden_inputs(db, table, 1) }} + {% endif %} + <input type="hidden" name="import_type" value="{{ import_type }}"> + + <div class="exportoptions" id="header"> + <h2> + {{ get_image('b_import', 'Import'|trans) }} + {% if import_type == 'server' %} + {% trans 'Importing into the current server' %} + {% elseif import_type == 'database' %} + {{ 'Importing into the database "%s"'|trans|format(db) }} + {% else %} + {{ 'Importing into the table "%s"'|trans|format(table) }} + {% endif %} + </h2> + </div> + + <div class="importoptions"> + <h3>{% trans 'File to import:' %}</h3> + + {# We don't have show anything about compression, when no supported #} + {% if compressions is not empty %} + <div class="formelementrow" id="compression_info"> + <p> + {{ 'File may be compressed (%s) or uncompressed.'|trans|format(compressions|join(', ')) }} + <br> + {% trans 'A compressed file\'s name must end in <strong>.[format].[compression]</strong>. Example: <strong>.sql.zip</strong>' %} + </p> + </div> + {% endif %} + + <div class="formelementrow" id="upload_form"> + {% if is_upload and upload_dir is not empty %} + <ul> + <li> + <input type="radio" name="file_location" id="radio_import_file" required="required"> + {{ get_browse_upload_file_block(max_upload_size) }} + {% trans 'You may also drag and drop a file on any page.' %} + </li> + <li> + <input type="radio" name="file_location" id="radio_local_import_file" + {%- if timeout_passed_global is not empty and local_import_file is not empty %} + checked="checked" + {%- endif %}> + {{ get_select_upload_file_block( + import_list, + upload_dir + ) }} + </li> + </ul> + {% elseif is_upload %} + {{ get_browse_upload_file_block(max_upload_size) }} + <p>{% trans 'You may also drag and drop a file on any page.' %}</p> + {% elseif not is_upload %} + {{ 'File uploads are not allowed on this server.'|trans|notice }} + {% elseif upload_dir is not empty %} + {{ get_select_upload_file_block( + import_list, + upload_dir + ) }} + {% endif %} + </div> + + <div class="formelementrow" id="charaset_of_file"> + {# Charset of file #} + <label for="charset_of_file">{% trans 'Character set of the file:' %}</label> + {% if is_encoding_supported %} + <select id="charset_of_file" name="charset_of_file" size="1"> + {% for charset in encodings %} + <option value="{{ charset }}" + {% if (import_charset is empty and charset == 'utf-8') + or charset == import_charset %} + selected="selected" + {% endif %}> + {{ charset }} + </option> + {% endfor %} + </select> + {% else %} + <select lang="en" dir="ltr" name="charset_of_file" id="charset_of_file"> + <option value=""></option> + {% for charset in charsets %} + <option value="{{ charset.name }}" title="{{ charset.description }}" + {{- charset.name == 'utf8' ? ' selected' }}> + {{- charset.name -}} + </option> + {% endfor %} + </select> + {% endif %} + </div> + </div> + + <div class="importoptions"> + <h3>{% trans 'Partial import:' %}</h3> + + {% if timeout_passed is defined and timeout_passed %} + <div class="formelementrow"> + <input type="hidden" name="skip" value="{{ offset }}"> + {{ 'Previous import timed out, after resubmitting will continue from position %d.'|trans|format(offset) }} + </div> + {% endif %} + + <div class="formelementrow"> + <input type="checkbox" name="allow_interrupt" value="yes" id="checkbox_allow_interrupt" + {{ checkbox_check('Import', 'allow_interrupt') }}> + <label for="checkbox_allow_interrupt"> + {% trans 'Allow the interruption of an import in case the script detects it is close to the PHP timeout limit. <em>(This might be a good way to import large files, however it can break transactions.)</em>' %} + </label> + </div> + + {% if not (timeout_passed is defined and timeout_passed) %} + <div class="formelementrow"> + <label for="text_skip_queries"> + {% trans 'Skip this number of queries (for SQL) starting from the first one:' %} + </label> + <input type="number" name="skip_queries" value=" + {{- get_default_plugin('Import', 'skip_queries') -}} + " id="text_skip_queries" min="0"> + </div> + {% else %} + {# If timeout has passed, + do not show the Skip dialog to avoid the risk of someone + entering a value here that would interfere with "skip" #} + <input type="hidden" name="skip_queries" value=" + {{- get_default_plugin('Import', 'skip_queries') -}} + " id="text_skip_queries"> + {% endif %} + </div> + + <div class="importoptions"> + <h3>{% trans 'Other options:' %}</h3> + <div class="formelementrow"> + {{ get_fk_checkbox() }} + </div> + </div> + + <div class="importoptions"> + <h3>{% trans 'Format:' %}</h3> + {{ get_choice('Import', 'format', import_list) }} + <div id="import_notification"></div> + </div> + + <div class="importoptions" id="format_specific_opts"> + <h3>{% trans 'Format-specific options:' %}</h3> + <p class="no_js_msg" id="scroll_to_options_msg"> + {% trans 'Scroll down to fill in the options for the selected format and ignore the options for other formats.' %} + </p> + {{ get_options('Import', import_list) }} + </div> + <div class="clearfloat"></div> + + {# Japanese encoding setting #} + {% if can_convert_kanji %} + <div class="importoptions" id="kanji_encoding"> + <h3>{% trans 'Encoding Conversion:' %}</h3> + {% include 'encoding/kanji_encoding_form.twig' %} + </div> + {% endif %} + + <div class="importoptions" id="submit"> + <input id="buttonGo" class="btn btn-primary" type="submit" value="{% trans 'Go' %}"> + </div> + </form> +</div> diff --git a/srcs/phpmyadmin/templates/display/import/javascript.twig b/srcs/phpmyadmin/templates/display/import/javascript.twig new file mode 100644 index 0000000..ec91e3c --- /dev/null +++ b/srcs/phpmyadmin/templates/display/import/javascript.twig @@ -0,0 +1,162 @@ +$( function() { + {# Add event when user click on "Go" button #} + $("#buttonGo").on("click", function() { + {# Hide form #} + $("#upload_form_form").css("display", "none"); + + {% if handler != 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadNoplugin' %} + {# Some variable for javascript #} + {% set ajax_url = 'import_status.php?id=' ~ upload_id ~ get_common_raw({ + 'import_status': 1 + }, '&') %} + {% set promot_str = 'The file being uploaded is probably larger than the maximum allowed size or this is a known bug in webkit based (Safari, Google Chrome, Arora etc.) browsers.'|trans|js_format(false) %} + {% set statustext_str = '%s of %s'|trans|escape_js_string %} + {% set second_str = '%s/sec.'|trans|js_format(false) %} + {% set remaining_min = 'About %MIN min. %SEC sec. remaining.'|trans|js_format(false) %} + {% set remaining_second = 'About %SEC sec. remaining.'|trans|js_format(false) %} + {% set processed_str = 'The file is being processed, please be patient.'|trans|js_format(false) %} + {% set import_url = get_common_raw({'import_status': 1}, '&') %} + + {% set upload_html %} + {% apply spaceless %} + <div class="upload_progress"> + <div class="upload_progress_bar_outer"> + <div class="percentage"></div> + <div id="status" class="upload_progress_bar_inner"> + <div class="percentage"></div> + </div> + </div> + <div> + <img src="{{ pma_theme_image }}ajax_clock_small.gif" width="16" height="16" alt="ajax clock"> {{ 'Uploading your import file…'|trans|js_format(false) -}} + </div> + <div id="statustext"></div> + </div> + {% endapply %} + {% endset %} + + {# Start output #} + var finished = false; + var percent = 0.0; + var total = 0; + var complete = 0; + var original_title = parent && parent.document ? parent.document.title : false; + var import_start; + + var perform_upload = function () { + new $.getJSON( + "{{ ajax_url|raw }}", + {}, + function(response) { + finished = response.finished; + percent = response.percent; + total = response.total; + complete = response.complete; + + if (total==0 && complete==0 && percent==0) { + $("#upload_form_status_info").html('<img src="{{ pma_theme_image }}ajax_clock_small.gif" width="16" height="16" alt="ajax clock"> {{ promot_str|raw }}'); + $("#upload_form_status").css("display", "none"); + } else { + var now = new Date(); + now = Date.UTC( + now.getFullYear(), + now.getMonth(), + now.getDate(), + now.getHours(), + now.getMinutes(), + now.getSeconds()) + + now.getMilliseconds() - 1000; + var statustext = Functions.sprintf( + "{{ statustext_str|raw }}", + Functions.formatBytes( + complete, 1, Messages.strDecimalSeparator + ), + Functions.formatBytes( + total, 1, Messages.strDecimalSeparator + ) + ); + + if ($("#importmain").is(":visible")) { + {# Show progress UI #} + $("#importmain").hide(); + $("#import_form_status") + .html('{{ upload_html|raw }}') + .show(); + import_start = now; + } + else if (percent > 9 || complete > 2000000) { + {# Calculate estimated time #} + var used_time = now - import_start; + var seconds = parseInt(((total - complete) / complete) * used_time / 1000); + var speed = Functions.sprintf( + "{{ second_str|raw }}", + Functions.formatBytes(complete / used_time * 1000, 1, Messages.strDecimalSeparator) + ); + + var minutes = parseInt(seconds / 60); + seconds %= 60; + var estimated_time; + if (minutes > 0) { + estimated_time = "{{ remaining_min|raw }}" + .replace("%MIN", minutes) + .replace("%SEC", seconds); + } + else { + estimated_time = "{{ remaining_second|raw }}" + .replace("%SEC", seconds); + } + + statustext += "<br>" + speed + "<br><br>" + estimated_time; + } + + var percent_str = Math.round(percent) + "%"; + $("#status").animate({width: percent_str}, 150); + $(".percentage").text(percent_str); + + {# Show percent in window title #} + if (original_title !== false) { + parent.document.title + = percent_str + " - " + original_title; + } + else { + document.title + = percent_str + " - " + original_title; + } + $("#statustext").html(statustext); + } + + if (finished == true) { + if (original_title !== false) { + parent.document.title = original_title; + } + else { + document.title = original_title; + } + $("#importmain").hide(); + {# Loads the message, either success or mysql error #} + $("#import_form_status") + .html('<img src="{{ pma_theme_image }}ajax_clock_small.gif" width="16" height="16" alt="ajax clock"> {{ processed_str|raw }}') + .show(); + $("#import_form_status").load("import_status.php?message=true&{{ import_url|raw }}"); + Navigation.reload(); + + {# If finished #} + } + else { + setTimeout(perform_upload, 1000); + } + }); + }; + setTimeout(perform_upload, 1000); + {% else %} + {# No plugin available #} + {% set image_tag -%} + <img src="{{ pma_theme_image -}} + ajax_clock_small.gif" width="16" height="16" alt="ajax clock"> + {{- 'Please be patient, the file is being uploaded. Details about the upload are not available.'|trans|js_format(false) -}} + {{- show_docu('faq', 'faq2-9') -}} + {%- endset %} + $('#upload_form_status_info').html('{{ image_tag|raw }}'); + $("#upload_form_status").css("display", "none"); + {% endif %} + }); +}); diff --git a/srcs/phpmyadmin/templates/display/results/comment_for_row.twig b/srcs/phpmyadmin/templates/display/results/comment_for_row.twig new file mode 100644 index 0000000..f232375 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/comment_for_row.twig @@ -0,0 +1,10 @@ +{% if comments_map[fields_meta.table] is defined + and comments_map[fields_meta.table][fields_meta.name] is defined %} + <br><span class="tblcomment" title="{{ comments_map[fields_meta.table][fields_meta.name] }}"> + {% if comments_map[fields_meta.table][fields_meta.name]|length > limit_chars %} + {{ comments_map[fields_meta.table][fields_meta.name]|slice(0, limit_chars) }}… + {% else %} + {{ comments_map[fields_meta.table][fields_meta.name] }} + {% endif %} + </span> +{% endif %} diff --git a/srcs/phpmyadmin/templates/display/results/data_for_resetting_column_order.twig b/srcs/phpmyadmin/templates/display/results/data_for_resetting_column_order.twig new file mode 100644 index 0000000..6a345e7 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/data_for_resetting_column_order.twig @@ -0,0 +1,9 @@ +{% if column_order %} + <input class="col_order" type="hidden" value="{{ column_order|join(',') }}"> +{% endif %} +{% if column_visibility %} + <input class="col_visib" type="hidden" value="{{ column_visibility|join(',') }}"> +{% endif %} +{% if not is_view %} + <input class="table_create_time" type="hidden" value="{{ table_create_time }}"> +{% endif %} diff --git a/srcs/phpmyadmin/templates/display/results/empty_display.twig b/srcs/phpmyadmin/templates/display/results/empty_display.twig new file mode 100644 index 0000000..cd43ebc --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/empty_display.twig @@ -0,0 +1 @@ +<td {{ align }} class="{{ classes }}"></td> diff --git a/srcs/phpmyadmin/templates/display/results/null_display.twig b/srcs/phpmyadmin/templates/display/results/null_display.twig new file mode 100644 index 0000000..f2ea2e5 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/null_display.twig @@ -0,0 +1,7 @@ +<td {{ align }} + data-decimals="{{ meta.decimals is defined ? meta.decimals : '-1' }}" + data-type="{{ meta.type }}" + {# The null class is needed for grid editing #} + class="{{ classes }} null"> + <em>NULL</em> +</td> diff --git a/srcs/phpmyadmin/templates/display/results/options_block.twig b/srcs/phpmyadmin/templates/display/results/options_block.twig new file mode 100644 index 0000000..d185fec --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/options_block.twig @@ -0,0 +1,121 @@ +<form method="post" action="sql.php" name="displayOptionsForm" class="ajax print_ignore"> + {{ get_hidden_inputs({ + 'db': db, + 'table': table, + 'sql_query': sql_query, + 'goto': goto, + 'display_options_form': 1 + }) }} + + {% include 'div_for_slider_effect.twig' with { + 'id': '', + 'message': 'Options'|trans, + 'initial_sliders_state': default_sliders_state + } only %} + <fieldset> + <div class="formelement"> + {# pftext means "partial or full texts" (done to reduce line lengths #} + {{ get_radio_fields( + 'pftext', + { + 'P': 'Partial texts'|trans, + 'F': 'Full texts'|trans + }, + pftext, + true, + true, + '', + 'pftext_' ~ unique_id + ) }} + </div> + + {% if relwork and displaywork %} + <div class="formelement"> + {{ get_radio_fields( + 'relational_display', + { + 'K': 'Relational key'|trans, + 'D': 'Display column for relationships'|trans + }, + relational_display, + true, + true, + '', + 'relational_display_' ~ unique_id + ) }} + </div> + {% endif %} + + <div class="formelement"> + {% include 'checkbox.twig' with { + 'html_field_name': 'display_binary', + 'label': 'Show binary contents'|trans, + 'checked': display_binary is not empty, + 'onclick': false, + 'html_field_id': 'display_binary_' ~ unique_id + } only %} + {% include 'checkbox.twig' with { + 'html_field_name': 'display_blob', + 'label': 'Show BLOB contents'|trans, + 'checked': display_blob is not empty, + 'onclick': false, + 'html_field_id': 'display_blob_' ~ unique_id + } only %} + </div> + + {# I would have preferred to name this "display_transformation". + This is the only way I found to be able to keep this setting sticky + per SQL query, and at the same time have a default that displays + the transformations. #} + <div class="formelement"> + {% include 'checkbox.twig' with { + 'html_field_name': 'hide_transformation', + 'label': 'Hide browser transformation'|trans, + 'checked': hide_transformation is not empty, + 'onclick': false, + 'html_field_id': 'hide_transformation_' ~ unique_id + } only %} + </div> + + + {% if possible_as_geometry %} + <div class="formelement"> + {{ get_radio_fields( + 'geoOption', + { + 'GEOM': 'Geometry'|trans, + 'WKT': 'Well Known Text'|trans, + 'WKB': 'Well Known Binary'|trans + }, + geo_option, + true, + true, + '', + 'geoOption_' ~ unique_id + ) }} + </div> + {% else %} + <div class="formelement"> + {{ possible_as_geometry }} + {{ get_radio_fields( + 'geoOption', + { + 'WKT': 'Well Known Text'|trans, + 'WKB': 'Well Known Binary'|trans + }, + geo_option, + true, + true, + '', + 'geoOption_' ~ unique_id + ) }} + </div> + {% endif %} + <div class="clearfloat"></div> + </fieldset> + + <fieldset class="tblFooters"> + <input class="btn btn-primary" type="submit" value="{% trans 'Go' %}"> + </fieldset> + </div>{# slider effect div #} +</form> diff --git a/srcs/phpmyadmin/templates/display/results/page_selector.twig b/srcs/phpmyadmin/templates/display/results/page_selector.twig new file mode 100644 index 0000000..1791270 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/page_selector.twig @@ -0,0 +1,6 @@ +<td> + <form action="sql.php" method="post"> + {{ get_hidden_inputs(url_params) }} + {{ page_selector|raw }} + </form> +</td> diff --git a/srcs/phpmyadmin/templates/display/results/sort_by_key.twig b/srcs/phpmyadmin/templates/display/results/sort_by_key.twig new file mode 100644 index 0000000..fb26f10 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/sort_by_key.twig @@ -0,0 +1,9 @@ +<form action="sql.php" method="post" class="print_ignore"> + {{ get_hidden_fields(hidden_fields) }} + {% trans 'Sort by key:' %} + <select name="sql_query" class="autosubmit"> + {% for option in options %} + <option value="{{ option.value }}"{{ option.is_selected ? ' selected' }}>{{ option.content }}</option> + {% endfor %} + </select> +</form> diff --git a/srcs/phpmyadmin/templates/display/results/table.twig b/srcs/phpmyadmin/templates/display/results/table.twig new file mode 100644 index 0000000..760ca1c --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/table.twig @@ -0,0 +1,11 @@ +{{ sql_query_message|raw }} +{{ navigation|raw }} +{{ headers|raw }} +<tbody> + {{ body|raw }} +</tbody> +</table> +</div> +{{ multi_row_operation_links|raw }} +{{ navigation|raw }} +{{ operations|raw }} diff --git a/srcs/phpmyadmin/templates/display/results/table_headers.twig b/srcs/phpmyadmin/templates/display/results/table_headers.twig new file mode 100644 index 0000000..506a6c0 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/table_headers.twig @@ -0,0 +1,23 @@ +<input class="save_cells_at_once" type="hidden" value="{{ save_cells_at_once }}"> +<div class="common_hidden_inputs"> + {{ get_hidden_inputs(db, table) }} +</div> + +{{ data_for_resetting_column_order|raw }} +{{ options_block|raw }} + +{% if delete_link == delete_row or delete_link == kill_process %} + <form method="post" action="tbl_row_action.php" name="resultsForm" id="resultsForm_{{ unique_id }}" class="ajax"> + {{ get_hidden_inputs(db, table, 1) }} + <input type="hidden" name="goto" value="sql.php"> +{% endif %} + +<div class="responsivetable"> + <table class="table_results data ajax" data-uniqueId="{{ unique_id }}"> + + {{ button|raw }} + {{ table_headers_for_columns|raw }} + {{ column_at_right_side|raw }} + + </tr> + </thead> diff --git a/srcs/phpmyadmin/templates/display/results/table_navigation.twig b/srcs/phpmyadmin/templates/display/results/table_navigation.twig new file mode 100644 index 0000000..0746243 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/table_navigation.twig @@ -0,0 +1,82 @@ +<table class="navigation nospacing nopadding print_ignore"> + <tr> + <td class="navigation_separator"></td> + {{ move_backward_buttons|raw }} + {{ page_selector|raw }} + {{ move_forward_buttons|raw }} + {% if number_total_page > 1 %} + <td><div class="navigation_separator">|</div></td> + {% endif %} + {% if has_show_all %} + <td> + <form action="sql.php" method="post"> + {{ get_hidden_fields(hidden_fields|merge({ + 'session_max_rows': session_max_rows, + 'pos': '0' + })) }} + <input type="checkbox" name="navig" id="showAll_{{ unique_id }}" class="showAllRows" value="all" + {{- is_showing_all ? ' checked' }}> + <label for="showAll_{{ unique_id }}">{% trans 'Show all' %}</label> + </form> + </td> + <td><div class="navigation_separator">|</div></td> + {% endif %} + <td> + <div class="save_edited hide"> + <input class="btn btn-link" type="submit" value="{% trans 'Save edited data' %}"> + <div class="navigation_separator">|</div> + </div> + </td> + <td> + <div class="restore_column hide"> + <input class="btn btn-link" type="submit" value="{% trans 'Restore column order' %}"> + <div class="navigation_separator">|</div> + </div> + </td> + <td class="navigation_goto"> + {# if displaying a VIEW, $unlim_num_rows could be zero because #} + {# of $cfg['MaxExactCountViews']; in this case, avoid passing #} + {# the 5th parameter to Functions.checkFormElementInRange() #} + {# (this means we can't validate the upper limit) #} + <form action="sql.php" method="post" onsubmit="return (Functions.checkFormElementInRange(this, 'session_max_rows', ' + {{- '%d is not valid row number.'|trans|replace({'\'': '\\\''}) -}} + ', 1) && Functions.checkFormElementInRange(this, 'pos', ' + {{- '%d is not valid row number.'|trans|replace({'\'': '\\\''}) -}} + ', 0 + {{- unlim_num_rows > 0 ? ', ' ~ (unlim_num_rows - 1) -}} + ));"> + + {{ get_hidden_fields(hidden_fields|merge({ + 'pos': pos + })) }} + + {% trans 'Number of rows:' %} + + {{ get_dropdown( + 'session_max_rows', + { + '25': 25, + '50': 50, + '100': 100, + '250': 250, + '500': 500, + }, + max_rows, + '', + 'autosubmit', + is_showing_all ? 'All'|trans + ) }} + </form> + </td> + <td class="navigation_separator"></td> + <td class="largescreenonly"> + <span>{% trans 'Filter rows' %}:</span> + <input type="text" class="filter_rows" placeholder=" + {%- trans 'Search this table' %}" data-for="{{ unique_id }}"> + </td> + <td class="largescreenonly"> + {{ sort_by_key|raw }} + </td> + <td class="navigation_separator"></td> + </tr> +</table> diff --git a/srcs/phpmyadmin/templates/display/results/table_navigation_button.twig b/srcs/phpmyadmin/templates/display/results/table_navigation_button.twig new file mode 100644 index 0000000..2573c0c --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/table_navigation_button.twig @@ -0,0 +1,12 @@ +<td> + <form action="sql.php" method="post"{{ onsubmit|raw }}> + {{ get_hidden_inputs(db, table) }} + <input type="hidden" name="sql_query" value="{{ sql_query|raw }}"> + <input type="hidden" name="pos" value="{{ pos }}"> + <input type="hidden" name="is_browse_distinct" value="{{ is_browse_distinct }}"> + <input type="hidden" name="goto" value="{{ goto }}"> + {{ input_for_real_end|raw }} + <input type="submit" name="navig" class="btn btn-secondary ajax" value="{{ caption_output|raw }}" title="{{ title }}" + {{- onclick|raw }}> + </form> +</td> diff --git a/srcs/phpmyadmin/templates/display/results/value_display.twig b/srcs/phpmyadmin/templates/display/results/value_display.twig new file mode 100644 index 0000000..35640b9 --- /dev/null +++ b/srcs/phpmyadmin/templates/display/results/value_display.twig @@ -0,0 +1,3 @@ +<td class="left {{ class }}{{ condition_field ? ' condition' }}"> + {{ value|raw }} +</td> |
