From 1a33f062dea755041f49496a7795ed02fff96ffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Wed, 4 Oct 2017 23:44:15 -0300 Subject: [PATCH] Port zoom_result_form template to Twig MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MaurĂ­cio Meneghini Fauth --- .../Table/TableSearchController.php | 28 +++--- libraries/classes/Template.php | 2 + .../classes/Twig/PhpFunctionsExtension.php | 31 ++++++ libraries/classes/Twig/RelationExtension.php | 12 ++- scripts/generate-twig-cache | 2 + templates/table/search/zoom_result_form.phtml | 98 ------------------- templates/table/search/zoom_result_form.twig | 85 ++++++++++++++++ 7 files changed, 142 insertions(+), 116 deletions(-) create mode 100644 libraries/classes/Twig/PhpFunctionsExtension.php delete mode 100644 templates/table/search/zoom_result_form.phtml create mode 100644 templates/table/search/zoom_result_form.twig diff --git a/libraries/classes/Controllers/Table/TableSearchController.php b/libraries/classes/Controllers/Table/TableSearchController.php index dcc8583023..ba3b09a93e 100644 --- a/libraries/classes/Controllers/Table/TableSearchController.php +++ b/libraries/classes/Controllers/Table/TableSearchController.php @@ -354,20 +354,20 @@ class TableSearchController extends TableController ) ); $this->response->addHTML( - Template::get('table/search/zoom_result_form') - ->render( - array( - '_db' => $this->db, - '_table' => $this->table, - '_columnNames' => $this->_columnNames, - '_foreigners' => $this->_foreigners, - '_columnNullFlags' => $this->_columnNullFlags, - '_columnTypes' => $this->_columnTypes, - 'titles' => $titles, - 'goto' => $goto, - 'data' => $data, - ) - ) + Template::get('table/search/zoom_result_form')->render([ + 'db' => $this->db, + 'table' => $this->table, + 'column_names' => $this->_columnNames, + 'foreigners' => $this->_foreigners, + 'column_null_flags' => $this->_columnNullFlags, + 'column_types' => $this->_columnTypes, + 'titles' => $titles, + 'goto' => $goto, + 'data' => $data, + 'data_json' => json_encode($data), + 'zoom_submit' => isset($_POST['zoom_submit']), + 'foreign_max_limit' => $GLOBALS['cfg']['ForeignKeyMaxLimit'], + ]) ); } diff --git a/libraries/classes/Template.php b/libraries/classes/Template.php index 7c818b616e..afe4a6d587 100644 --- a/libraries/classes/Template.php +++ b/libraries/classes/Template.php @@ -10,6 +10,7 @@ namespace PhpMyAdmin; use PhpMyAdmin\Twig\CharsetsExtension; use PhpMyAdmin\Twig\I18nExtension; use PhpMyAdmin\Twig\MessageExtension; +use PhpMyAdmin\Twig\PhpFunctionsExtension; use PhpMyAdmin\Twig\RelationExtension; use PhpMyAdmin\Twig\SanitizeExtension; use PhpMyAdmin\Twig\ServerPrivilegesExtension; @@ -65,6 +66,7 @@ class Template $twig->addExtension(new CharsetsExtension()); $twig->addExtension(new I18nExtension()); $twig->addExtension(new MessageExtension()); + $twig->addExtension(new PhpFunctionsExtension()); $twig->addExtension(new RelationExtension()); $twig->addExtension(new SanitizeExtension()); $twig->addExtension(new ServerPrivilegesExtension()); diff --git a/libraries/classes/Twig/PhpFunctionsExtension.php b/libraries/classes/Twig/PhpFunctionsExtension.php new file mode 100644 index 0000000000..f6fa0ddbe6 --- /dev/null +++ b/libraries/classes/Twig/PhpFunctionsExtension.php @@ -0,0 +1,31 @@ + array('html')) ), + new Twig_SimpleFunction( + 'Relation_getForeignData', + 'PhpMyAdmin\Relation::getForeignData' + ), + new Twig_SimpleFunction( + 'Relation_searchColumnInForeigners', + 'PhpMyAdmin\Relation::searchColumnInForeigners' + ), ); } } diff --git a/scripts/generate-twig-cache b/scripts/generate-twig-cache index c95f0b3392..526fc92f03 100644 --- a/scripts/generate-twig-cache +++ b/scripts/generate-twig-cache @@ -7,6 +7,7 @@ require_once AUTOLOAD_FILE; use PhpMyAdmin\Twig\CharsetsExtension; use PhpMyAdmin\Twig\I18nExtension; use PhpMyAdmin\Twig\MessageExtension; +use PhpMyAdmin\Twig\PhpFunctionsExtension; use PhpMyAdmin\Twig\RelationExtension; use PhpMyAdmin\Twig\SanitizeExtension; use PhpMyAdmin\Twig\ServerPrivilegesExtension; @@ -25,6 +26,7 @@ $twig = new Twig_Environment($loader, array( $twig->addExtension(new CharsetsExtension()); $twig->addExtension(new I18nExtension()); $twig->addExtension(new MessageExtension()); +$twig->addExtension(new PhpFunctionsExtension()); $twig->addExtension(new RelationExtension()); $twig->addExtension(new SanitizeExtension()); $twig->addExtension(new ServerPrivilegesExtension()); diff --git a/templates/table/search/zoom_result_form.phtml b/templates/table/search/zoom_result_form.phtml deleted file mode 100644 index ea5899ded9..0000000000 --- a/templates/table/search/zoom_result_form.phtml +++ /dev/null @@ -1,98 +0,0 @@ -
- - - - -
- - - -
- -
-
- - - -
-
- -
-
- -
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - render(array( - 'str' => '', - 'column_type' => $_columnTypes[$column_index], - 'column_id' => ($_columnTypes[$column_index]) ? 'edit_fieldID_' : 'fieldID_', - 'in_zoom_search_edit' => true, - 'foreigners' => $_foreigners, - 'column_name' => $fieldpopup, - 'column_name_hash' => md5($fieldpopup), - 'foreign_data' => $foreignData, - 'table' => $_table, - 'column_index' => $column_index, - 'foreign_max_limit' => $GLOBALS['cfg']['ForeignKeyMaxLimit'], - 'criteria_values' => '', - 'db' => $_db, - 'titles' => $titles, - 'in_fbs' => false - ));?> -
-
- - diff --git a/templates/table/search/zoom_result_form.twig b/templates/table/search/zoom_result_form.twig new file mode 100644 index 0000000000..d76ae19a46 --- /dev/null +++ b/templates/table/search/zoom_result_form.twig @@ -0,0 +1,85 @@ +
+ {{ Url_getHiddenInputs(db, table) }} + + + +
+ {% trans 'Browse/Edit the points' %} + + {# JSON encode the data(query result) #} +
+ {% if zoom_submit and data is not empty %} +
+
+ + {% trans 'How to use' %} + +
+
+ {{ data_json }} +
+
+ +
+ {% endif %} +
+ + {# Displays rows in point edit form #} +
+ + + + + + + + + + {% for column_index in 0..column_names|length - 1 %} + {% set field_popup = column_names[column_index] %} + {% set foreign_data = Relation_getForeignData( + foreigners, + field_popup, + false, + '', + '' + ) %} + + + {# Null checkbox if column can be null #} + + {# Column's Input box #} + + + {% endfor %} + +
{% trans 'Column' %}{% trans 'Null' %}{% trans 'Value' %}
{{ column_names[column_index] }} + {% if column_null_flags[column_index] == 'YES' %} + + {% endif %} + + {% include 'table/search/input_box.twig' with { + 'str': '', + 'column_type': column_types[column_index], + 'column_id': column_types[column_index] ? 'edit_fieldID_' : 'fieldID_', + 'in_zoom_search_edit': true, + 'foreigners': foreigners, + 'column_name': field_popup, + 'column_name_hash': md5(field_popup), + 'foreign_data': foreign_data, + 'table': table, + 'column_index': column_index, + 'foreign_max_limit': foreign_max_limit, + 'criteria_values': '', + 'db': db, + 'titles': titles, + 'in_fbs': false + } only %} +
+
+ +