Merge remote-tracking branch 'origin/QA_4_7' into QA_4_7
This commit is contained in:
commit
7f3947dc6c
@ -281,8 +281,12 @@ var AJAX = {
|
||||
|
||||
var url = isLink ? href : $(this).attr('action');
|
||||
var params = 'ajax_request=true&ajax_page_request=true';
|
||||
var dataPost = AJAX.source.getPostData();
|
||||
if (! isLink) {
|
||||
params += '&' + $(this).serialize();
|
||||
} else if (dataPost) {
|
||||
params += '&' + dataPost;
|
||||
isLink = false;
|
||||
}
|
||||
if (! (history && history.pushState)) {
|
||||
// Add a list of menu hashes that we have in the cache to the request
|
||||
|
||||
@ -328,8 +328,7 @@ AJAX.registerOnload('db_structure.js', function () {
|
||||
|
||||
PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
|
||||
|
||||
var params = getJSConfirmCommonParam(this);
|
||||
params.token = PMA_commonParams.get('token');
|
||||
var params = getJSConfirmCommonParam(this, $this_anchor.getPostData());
|
||||
|
||||
$.post(url, params, function (data) {
|
||||
if (typeof data !== 'undefined' && data.success === true) {
|
||||
@ -392,8 +391,7 @@ AJAX.registerOnload('db_structure.js', function () {
|
||||
|
||||
var $msg = PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
|
||||
|
||||
var params = getJSConfirmCommonParam(this);
|
||||
params.token = PMA_commonParams.get('token');
|
||||
var params = getJSConfirmCommonParam(this, $this_anchor.getPostData());
|
||||
|
||||
$.post(url, params, function (data) {
|
||||
if (typeof data !== 'undefined' && data.success === true) {
|
||||
|
||||
@ -662,18 +662,7 @@ function confirmLink(theLink, theSqlQuery)
|
||||
|
||||
var is_confirmed = confirm(PMA_sprintf(PMA_messages.strDoYouReally, theSqlQuery));
|
||||
if (is_confirmed) {
|
||||
if ($(theLink).hasClass('formLinkSubmit')) {
|
||||
var name = 'is_js_confirmed';
|
||||
|
||||
if ($(theLink).attr('href').indexOf('usesubform') != -1) {
|
||||
var matches = $(theLink).attr('href').substr('#').match(/usesubform\[(\d+)\]/i);
|
||||
if (matches != null) {
|
||||
name = 'subform[' + matches[1] + '][is_js_confirmed]';
|
||||
}
|
||||
}
|
||||
|
||||
$(theLink).parents('form').append('<input type="hidden" name="' + name + '" value="1" />');
|
||||
} else if (typeof(theLink.href) != 'undefined') {
|
||||
if (typeof(theLink.href) !== 'undefined') {
|
||||
theLink.href += '&is_js_confirmed=1';
|
||||
} else if (typeof(theLink.form) != 'undefined') {
|
||||
theLink.form.action += '?is_js_confirmed=1';
|
||||
@ -1853,12 +1842,19 @@ function loadForeignKeyCheckbox() {
|
||||
});
|
||||
}
|
||||
|
||||
function getJSConfirmCommonParam(elem) {
|
||||
return {
|
||||
'is_js_confirmed' : 1,
|
||||
'ajax_request' : true,
|
||||
'fk_checks': $(elem).find('#fk_checks').is(':checked') ? 1 : 0
|
||||
};
|
||||
function getJSConfirmCommonParam (elem, params) {
|
||||
var $elem = $(elem);
|
||||
if (params) {
|
||||
// Strip possible leading ?
|
||||
if (params.startsWith('?')) {
|
||||
params = params.substr(1);
|
||||
}
|
||||
params += '&';
|
||||
} else {
|
||||
params = '';
|
||||
}
|
||||
params += 'is_js_confirmed=1&ajax_request=true&fk_checks' + ($elem.find('#fk_checks').is(':checked') ? 1 : 0);
|
||||
return params;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -4159,7 +4155,6 @@ AJAX.registerOnload('functions.js', function () {
|
||||
*/
|
||||
AJAX.registerTeardown('functions.js', function () {
|
||||
$(document).off('change', 'select.pageselector');
|
||||
$(document).off('click', 'a.formLinkSubmit');
|
||||
$('#update_recent_tables').unbind('ready');
|
||||
$('#sync_favorite_tables').unbind('ready');
|
||||
});
|
||||
@ -4206,16 +4201,6 @@ AJAX.registerOnload('functions.js', function () {
|
||||
*/
|
||||
PMA_init_slider();
|
||||
|
||||
/**
|
||||
* Enables the text generated by PMA\libraries\Util::linkOrButton() to be clickable
|
||||
*/
|
||||
$(document).on('click', 'a.formLinkSubmit', function (e) {
|
||||
if (! $(this).hasClass('requireConfirm')) {
|
||||
submitFormLink($(this));
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
var $updateRecentTables = $('#update_recent_tables');
|
||||
if ($updateRecentTables.length) {
|
||||
$.get(
|
||||
@ -4988,3 +4973,15 @@ AJAX.registerOnload('functions.js', function(){
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Return POST data as stored by Util::linkOrButton
|
||||
*/
|
||||
jQuery.fn.getPostData = function() {
|
||||
var dataPost = this.attr('data-post');
|
||||
// Strip possible leading ?
|
||||
if (dataPost !== undefined && dataPost.startsWith('?')) {
|
||||
dataPost = dataPost.substr(1);
|
||||
}
|
||||
return dataPost;
|
||||
};
|
||||
|
||||
@ -225,10 +225,6 @@ AJAX.registerTeardown('gis_data_editor.js', function () {
|
||||
});
|
||||
|
||||
AJAX.registerOnload('gis_data_editor.js', function () {
|
||||
|
||||
// Remove the class that is added due to the URL being too long.
|
||||
$('span.open_gis_editor a').removeClass('formLinkSubmit');
|
||||
|
||||
/**
|
||||
* Prepares and insert the GIS data to the input field on clicking 'copy'.
|
||||
*/
|
||||
|
||||
12
js/rte.js
12
js/rte.js
@ -402,11 +402,7 @@ RTE.COMMON = {
|
||||
* the AJAX message shown to the user
|
||||
*/
|
||||
var $msg = PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
|
||||
var params = {
|
||||
'is_js_confirmed': 1,
|
||||
'ajax_request': true,
|
||||
'token': PMA_commonParams.get('token')
|
||||
};
|
||||
var params = getJSConfirmCommonParam(this, $this.getPostData());
|
||||
$.post(url, params, function (data) {
|
||||
if (data.success === true) {
|
||||
/**
|
||||
@ -481,11 +477,7 @@ RTE.COMMON = {
|
||||
* @var $curr_row Object containing reference to the current row
|
||||
*/
|
||||
var $curr_row = $anchor.parents('tr');
|
||||
var params = {
|
||||
'is_js_confirmed': 1,
|
||||
'ajax_request': true,
|
||||
'token': PMA_commonParams.get('token')
|
||||
};
|
||||
var params = getJSConfirmCommonParam(this, $anchor.getPostData());
|
||||
$.post($anchor.attr('href'), params, function (data) {
|
||||
returnCount++;
|
||||
if (data.success === true) {
|
||||
|
||||
28
js/sql.js
28
js/sql.js
@ -168,23 +168,19 @@ AJAX.registerOnload('sql.js', function () {
|
||||
var $link = $(this);
|
||||
$link.PMA_confirm(question, $link.attr('href'), function (url) {
|
||||
$msgbox = PMA_ajaxShowMessage();
|
||||
if ($link.hasClass('formLinkSubmit')) {
|
||||
submitFormLink($link);
|
||||
} else {
|
||||
var params = {
|
||||
'ajax_request': true,
|
||||
'is_js_confirmed': true,
|
||||
'token': PMA_commonParams.get('token')
|
||||
};
|
||||
$.post(url, params, function (data) {
|
||||
if (data.success) {
|
||||
PMA_ajaxShowMessage(data.message);
|
||||
$link.closest('tr').remove();
|
||||
} else {
|
||||
PMA_ajaxShowMessage(data.error, false);
|
||||
}
|
||||
});
|
||||
var params = 'ajax_request=1&is_js_confirmed=1';
|
||||
var postData = $link.getPostData();
|
||||
if (postData) {
|
||||
params += '&' + postData;
|
||||
}
|
||||
$.post(url, params, function (data) {
|
||||
if (data.success) {
|
||||
PMA_ajaxShowMessage(data.message);
|
||||
$link.closest('tr').remove();
|
||||
} else {
|
||||
PMA_ajaxShowMessage(data.error, false);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@ -128,6 +128,8 @@ AJAX.registerOnload('tbl_operations.js', function () {
|
||||
**/
|
||||
$(document).on('click', "#tbl_maintenance li a.maintain_action.ajax", function (event) {
|
||||
event.preventDefault();
|
||||
var $link = $(this);
|
||||
|
||||
if ($(".sqlqueryresults").length !== 0) {
|
||||
$(".sqlqueryresults").remove();
|
||||
}
|
||||
@ -135,12 +137,16 @@ AJAX.registerOnload('tbl_operations.js', function () {
|
||||
$(".result_query").remove();
|
||||
}
|
||||
//variables which stores the common attributes
|
||||
var params = {
|
||||
var params = $.param({
|
||||
ajax_request: 1,
|
||||
server: PMA_commonParams.get('server'),
|
||||
token: PMA_commonParams.get('token')
|
||||
};
|
||||
$.post($(this).attr('href'), params, function (data) {
|
||||
server: PMA_commonParams.get('server')
|
||||
});
|
||||
var postData = $link.getPostData();
|
||||
if (postData) {
|
||||
params += '&' + postData;
|
||||
}
|
||||
|
||||
$.post($link.attr('href'), params, function (data) {
|
||||
function scrollToTop() {
|
||||
$('html, body').animate({ scrollTop: 0 });
|
||||
}
|
||||
@ -152,7 +158,7 @@ AJAX.registerOnload('tbl_operations.js', function () {
|
||||
PMA_highlightSQL($('#page_content'));
|
||||
scrollToTop();
|
||||
} else if (typeof data !== 'undefined' && data.success === true) {
|
||||
var $temp_div = $("<div id='temp_div'></div>");
|
||||
$temp_div = $('<div id=\'temp_div\'></div>');
|
||||
$temp_div.html(data.message);
|
||||
var $success = $temp_div.find(".result_query .success");
|
||||
PMA_ajaxShowMessage($success);
|
||||
@ -165,7 +171,14 @@ AJAX.registerOnload('tbl_operations.js', function () {
|
||||
} else {
|
||||
$temp_div = $("<div id='temp_div'></div>");
|
||||
$temp_div.html(data.error);
|
||||
var $error = $temp_div.find("code").addClass("error");
|
||||
|
||||
var $error;
|
||||
if ($temp_div.find('.error code').length !== 0) {
|
||||
$error = $temp_div.find('.error code').addClass('error');
|
||||
} else {
|
||||
$error = $temp_div;
|
||||
}
|
||||
|
||||
PMA_ajaxShowMessage($error, false);
|
||||
}
|
||||
}); // end $.post()
|
||||
|
||||
@ -211,14 +211,11 @@ AJAX.registerOnload('tbl_structure.js', function () {
|
||||
* @var question String containing the question to be asked for confirmation
|
||||
*/
|
||||
var question = PMA_sprintf(PMA_messages.strDoYouReally, 'ALTER TABLE `' + escapeHtml(curr_table_name) + '` DROP `' + escapeHtml(curr_column_name) + '`;');
|
||||
$(this).PMA_confirm(question, $(this).attr('href'), function (url) {
|
||||
var $this_anchor = $(this);
|
||||
$this_anchor.PMA_confirm(question, $this_anchor.attr('href'), function (url) {
|
||||
var $msg = PMA_ajaxShowMessage(PMA_messages.strDroppingColumn, false);
|
||||
var params = {
|
||||
'is_js_confirmed' : 1,
|
||||
'ajax_request' : true,
|
||||
'ajax_page_request' : true,
|
||||
'token': PMA_commonParams.get('token')
|
||||
};
|
||||
var params = getJSConfirmCommonParam(this, $this_anchor.getPostData());
|
||||
params += '&ajax_page_request=1';
|
||||
$.post(url, params, function (data) {
|
||||
if (typeof data !== 'undefined' && data.success === true) {
|
||||
PMA_ajaxRemoveMessage($msg);
|
||||
@ -297,14 +294,14 @@ AJAX.registerOnload('tbl_structure.js', function () {
|
||||
var question = PMA_sprintf(PMA_messages.strDoYouReally, 'ALTER TABLE `' +
|
||||
escapeHtml(curr_table_name) + '` ' + add_clause + '(`' + escapeHtml(curr_column_name) + '`);');
|
||||
|
||||
$(this).PMA_confirm(question, $(this).attr('href'), function (url) {
|
||||
var $this_anchor = $(this);
|
||||
|
||||
$this_anchor.PMA_confirm(question, $this_anchor.attr('href'), function (url) {
|
||||
PMA_ajaxShowMessage();
|
||||
AJAX.source = $this;
|
||||
var params = {
|
||||
'ajax_request' : true,
|
||||
'ajax_page_request' : true,
|
||||
'token': PMA_commonParams.get('token')
|
||||
};
|
||||
|
||||
var params = getJSConfirmCommonParam(this, $this_anchor.getPostData());
|
||||
params += '&ajax_page_request=1';
|
||||
$.post(url, params, AJAX.responseHandler);
|
||||
}); // end $.PMA_confirm()
|
||||
}); //end Add key
|
||||
|
||||
@ -1819,90 +1819,29 @@ class Util
|
||||
}
|
||||
}
|
||||
|
||||
if (($url_length <= $GLOBALS['cfg']['LinkLengthLimit'])
|
||||
&& $in_suhosin_limits
|
||||
&& ! $force_button
|
||||
&& strpos($url, 'sql_query=') === false
|
||||
$tag_params_strings = array();
|
||||
if (($url_length > $GLOBALS['cfg']['LinkLengthLimit'])
|
||||
|| ! $in_suhosin_limits
|
||||
|| $force_button
|
||||
|| strpos($url, 'sql_query=') !== false
|
||||
) {
|
||||
$tag_params_strings = array();
|
||||
foreach ($tag_params as $par_name => $par_value) {
|
||||
// htmlspecialchars() only on non javascript
|
||||
$par_value = mb_substr($par_name, 0, 2) == 'on'
|
||||
? $par_value
|
||||
: htmlspecialchars($par_value);
|
||||
$tag_params_strings[] = $par_name . '="' . $par_value . '"';
|
||||
}
|
||||
$parts = explode('?', $url, 2);
|
||||
/*
|
||||
* The data-post indicates that client should do POST
|
||||
* this is handled in js/ajax.js
|
||||
*/
|
||||
$tag_params_strings[] = 'data-post="' . (isset($parts[1]) ? $parts[1] : '') . '"';
|
||||
$url = $parts[0];
|
||||
}
|
||||
|
||||
// no whitespace within an <a> else Safari will make it part of the link
|
||||
$ret = '<a href="' . $url . '" '
|
||||
. implode(' ', $tag_params_strings) . '>'
|
||||
. $message . $displayed_message . '</a>';
|
||||
} else {
|
||||
// no spaces (line breaks) at all
|
||||
// or after the hidden fields
|
||||
// IE will display them all
|
||||
foreach ($tag_params as $par_name => $par_value) {
|
||||
$tag_params_strings[] = $par_name . '="' . htmlspecialchars($par_value) . '"';
|
||||
}
|
||||
|
||||
if (! isset($query_parts)) {
|
||||
$query_parts = self::splitURLQuery($url);
|
||||
}
|
||||
$url_parts = parse_url($url);
|
||||
|
||||
if ($new_form) {
|
||||
if ($target) {
|
||||
$target = ' target="' . $target . '"';
|
||||
}
|
||||
$ret = '<form action="' . $url_parts['path'] . '" class="link"'
|
||||
. ' method="post"' . $target . ' style="display: inline;">';
|
||||
$ret .= URL::getHiddenInputs();
|
||||
$subname_open = '';
|
||||
$subname_close = '';
|
||||
$submit_link = '#';
|
||||
} else {
|
||||
$query_parts[] = 'redirect=' . $url_parts['path'];
|
||||
$query_parts[] = 'token=' . $_SESSION[' PMA_token '];
|
||||
if (empty($GLOBALS['subform_counter'])) {
|
||||
$GLOBALS['subform_counter'] = 0;
|
||||
}
|
||||
$GLOBALS['subform_counter']++;
|
||||
$ret = '';
|
||||
$subname_open = 'subform[' . $GLOBALS['subform_counter'] . '][';
|
||||
$subname_close = ']';
|
||||
$submit_link = '#usesubform[' . $GLOBALS['subform_counter']
|
||||
. ']=1';
|
||||
}
|
||||
|
||||
foreach ($query_parts as $query_pair) {
|
||||
list($eachvar, $eachval) = explode('=', $query_pair);
|
||||
$ret .= '<input type="hidden" name="' . $subname_open . $eachvar
|
||||
. $subname_close . '" value="'
|
||||
. htmlspecialchars(urldecode($eachval)) . '" />';
|
||||
} // end while
|
||||
|
||||
if (empty($tag_params['class'])) {
|
||||
$tag_params['class'] = 'formLinkSubmit';
|
||||
} else {
|
||||
$tag_params['class'] .= ' formLinkSubmit';
|
||||
}
|
||||
|
||||
$tag_params_strings = array();
|
||||
foreach ($tag_params as $par_name => $par_value) {
|
||||
// htmlspecialchars() only on non javascript
|
||||
$par_value = mb_substr($par_name, 0, 2) == 'on'
|
||||
? $par_value
|
||||
: htmlspecialchars($par_value);
|
||||
$tag_params_strings[] = $par_name . '="' . $par_value . '"';
|
||||
}
|
||||
|
||||
$ret .= "\n" . '<a href="' . $submit_link . '" '
|
||||
. implode(' ', $tag_params_strings) . '>'
|
||||
. $message . ' ' . $displayed_message . '</a>' . "\n";
|
||||
|
||||
if ($new_form) {
|
||||
$ret .= '</form>';
|
||||
}
|
||||
} // end if... else...
|
||||
|
||||
return $ret;
|
||||
// no whitespace within an <a> else Safari will make it part of the link
|
||||
return '<a href="' . $url . '" '
|
||||
. implode(' ', $tag_params_strings) . '>'
|
||||
. $message . $displayed_message . '</a>';
|
||||
} // end of the 'linkOrButton()' function
|
||||
|
||||
/**
|
||||
|
||||
@ -156,58 +156,6 @@ foreach (get_defined_vars() as $key => $value) {
|
||||
}
|
||||
unset($key, $value, $variables_whitelist);
|
||||
|
||||
/**
|
||||
* Subforms - some functions need to be called by form, cause of the limited URL
|
||||
* length, but if this functions inside another form you cannot just open a new
|
||||
* form - so phpMyAdmin uses 'arrays' inside this form
|
||||
*
|
||||
* <code>
|
||||
* <form ...>
|
||||
* ... main form elements ...
|
||||
* <input type="hidden" name="subform[action1][id]" value="1" />
|
||||
* ... other subform data ...
|
||||
* <input type="submit" name="usesubform[action1]" value="do action1" />
|
||||
* ... other subforms ...
|
||||
* <input type="hidden" name="subform[actionX][id]" value="X" />
|
||||
* ... other subform data ...
|
||||
* <input type="submit" name="usesubform[actionX]" value="do actionX" />
|
||||
* ... main form elements ...
|
||||
* <input type="submit" name="main_action" value="submit form" />
|
||||
* </form>
|
||||
* </code>
|
||||
*
|
||||
* so we now check if a subform is submitted
|
||||
*/
|
||||
$__redirect = null;
|
||||
if (isset($_POST['usesubform']) && ! defined('PMA_MINIMUM_COMMON')) {
|
||||
// if a subform is present and should be used
|
||||
// the rest of the form is deprecated
|
||||
$subform_id = key($_POST['usesubform']);
|
||||
$subform = $_POST['subform'][$subform_id];
|
||||
$_POST = $subform;
|
||||
$_REQUEST = $subform;
|
||||
/**
|
||||
* some subforms need another page than the main form, so we will just
|
||||
* include this page at the end of this script - we use $__redirect to
|
||||
* track this
|
||||
*/
|
||||
if (isset($_POST['redirect'])
|
||||
&& $_POST['redirect'] != basename($PMA_PHP_SELF)
|
||||
) {
|
||||
$__redirect = $_POST['redirect'];
|
||||
unset($_POST['redirect']);
|
||||
}
|
||||
unset($subform_id, $subform);
|
||||
} else {
|
||||
// Note: here we overwrite $_REQUEST so that it does not contain cookies,
|
||||
// because another application for the same domain could have set
|
||||
// a cookie (with a compatible path) that overrides a variable
|
||||
// we expect from GET or POST.
|
||||
// We'll refer to cookies explicitly with the $_COOKIE syntax.
|
||||
$_REQUEST = array_merge($_GET, $_POST);
|
||||
}
|
||||
// end check if a subform is submitted
|
||||
|
||||
/**
|
||||
* check timezone setting
|
||||
* this could produce an E_WARNING - but only once,
|
||||
@ -323,13 +271,6 @@ $goto_whitelist = array(
|
||||
'user_password.php',
|
||||
);
|
||||
|
||||
/**
|
||||
* check $__redirect against whitelist
|
||||
*/
|
||||
if (! PMA_checkPageValidity($__redirect, $goto_whitelist)) {
|
||||
$__redirect = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* holds page that should be displayed
|
||||
* @global string $GLOBALS['goto']
|
||||
@ -941,14 +882,6 @@ if (count($_REQUEST) > 1000) {
|
||||
$GLOBALS['is_superuser']
|
||||
= isset($GLOBALS['dbi']) && $GLOBALS['dbi']->isSuperuser();
|
||||
|
||||
if (!empty($__redirect) && in_array($__redirect, $goto_whitelist)) {
|
||||
/**
|
||||
* include subform target page
|
||||
*/
|
||||
include $__redirect;
|
||||
exit();
|
||||
}
|
||||
|
||||
// If Zero configuration mode enabled, check PMA tables in current db.
|
||||
if (! defined('PMA_MINIMUM_COMMON')
|
||||
&& ! empty($GLOBALS['server'])
|
||||
|
||||
@ -1471,11 +1471,11 @@ function PMA_getListofMaintainActionLink($pma_table, $url_params)
|
||||
function PMA_getMaintainActionlink($action_message, $params, $url_params, $link)
|
||||
{
|
||||
return '<li>'
|
||||
. '<a class="maintain_action ajax" '
|
||||
. 'href="sql.php'
|
||||
. URL::getCommon(array_merge($url_params, $params)) . '">'
|
||||
. $action_message
|
||||
. '</a>'
|
||||
. Util::linkOrButton(
|
||||
'sql.php' . URL::getCommon(array_merge($url_params, $params)),
|
||||
$action_message,
|
||||
['class' => 'maintain_action ajax']
|
||||
)
|
||||
. Util::showMySQLDocu($link)
|
||||
. '</li>';
|
||||
}
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
use PMA\libraries\Response;
|
||||
use PMA\libraries\URL;
|
||||
use PMA\libraries\Template;
|
||||
use PMA\libraries\Util;
|
||||
use PhpMyAdmin\SqlParser\Statements\CreateStatement;
|
||||
|
||||
if (! defined('PHPMYADMIN')) {
|
||||
@ -305,13 +306,11 @@ function PMA_RTN_getRowForList($routine, $rowclass = '')
|
||||
}
|
||||
$retval .= " </td>\n";
|
||||
$retval .= " <td>\n";
|
||||
$retval .= ' <a ' . $ajax_class['drop']
|
||||
. ' href="sql.php'
|
||||
. $url_query
|
||||
. '&sql_query=' . urlencode($sql_drop)
|
||||
. '&goto=db_routines.php'
|
||||
. urlencode("?db={$db}")
|
||||
. '" >' . $titles['Drop'] . "</a>\n";
|
||||
$retval .= Util::linkOrButton(
|
||||
'sql.php' . $url_query . '&sql_query=' . urlencode($sql_drop) . '&goto=db_routines.php' . urlencode("?db={$db}"),
|
||||
$titles['Drop'],
|
||||
['class' => 'ajax drop_anchor']
|
||||
);
|
||||
$retval .= " </td>\n";
|
||||
$retval .= " <td>\n";
|
||||
$retval .= " {$routine['type']}\n";
|
||||
@ -381,14 +380,11 @@ function PMA_TRI_getRowForList($trigger, $rowclass = '')
|
||||
$retval .= " </td>\n";
|
||||
$retval .= " <td>\n";
|
||||
if (PMA\libraries\Util::currentUserHasPrivilege('TRIGGER', $db)) {
|
||||
$retval .= ' <a ' . $ajax_class['drop']
|
||||
. ' href="sql.php'
|
||||
. $url_query
|
||||
. '&sql_query='
|
||||
. urlencode($trigger['drop'])
|
||||
. '&goto=db_triggers.php'
|
||||
. urlencode("?db={$db}")
|
||||
. '" >' . $titles['Drop'] . "</a>\n";
|
||||
$retval .= Util::linkOrButton(
|
||||
'sql.php' . $url_query . '&sql_query=' . urlencode($trigger['drop']) . '&goto=db_triggers.php' . urlencode("?db={$db}"),
|
||||
$titles['Drop'],
|
||||
['class' => 'ajax drop_anchor']
|
||||
);
|
||||
} else {
|
||||
$retval .= " {$titles['NoDrop']}\n";
|
||||
}
|
||||
@ -462,13 +458,11 @@ function PMA_EVN_getRowForList($event, $rowclass = '')
|
||||
$retval .= " </td>\n";
|
||||
$retval .= " <td>\n";
|
||||
if (PMA\libraries\Util::currentUserHasPrivilege('EVENT', $db)) {
|
||||
$retval .= ' <a ' . $ajax_class['drop']
|
||||
. ' href="sql.php'
|
||||
. $url_query
|
||||
. '&sql_query=' . urlencode($sql_drop)
|
||||
. '&goto=db_events.php'
|
||||
. urlencode("?db={$db}")
|
||||
. '" >' . $titles['Drop'] . "</a>\n";
|
||||
$retval .= Util::linkOrButton(
|
||||
'sql.php' . $url_query . '&sql_query=' . urlencode($sql_drop) . '&goto=db_events.php' . urlencode("?db={$db}"),
|
||||
$titles['Drop'],
|
||||
['class' => 'ajax drop_anchor']
|
||||
);
|
||||
} else {
|
||||
$retval .= " {$titles['NoDrop']}\n";
|
||||
}
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
<a class="truncate_table_anchor ajax" href="sql.php<?= $tbl_url_query; ?>&sql_query=<?= $sql_query; ?>&message_to_show=<?= $message_to_show; ?>">
|
||||
<a class="truncate_table_anchor ajax" href="sql.php" data-post="<?= $tbl_url_query; ?>&sql_query=<?= $sql_query; ?>&message_to_show=<?= $message_to_show; ?>">
|
||||
<?= $title; ?>
|
||||
</a>
|
||||
@ -52,7 +52,7 @@
|
||||
<td class="center print_ignore"><?= $empty_table; ?></td>
|
||||
<td class="center print_ignore">
|
||||
<a class="ajax drop_table_anchor <?= ($table_is_view || $current_table['ENGINE'] == null) ? ' view' : '' ?>"
|
||||
href="sql.php<?= $tbl_url_query; ?>&reload=1&purge=1&sql_query=<?= urlencode($drop_query); ?>&message_to_show=<?= urlencode($drop_message); ?>" >
|
||||
href="sql.php" data-post="<?= $tbl_url_query; ?>&reload=1&purge=1&sql_query=<?= urlencode($drop_query); ?>&message_to_show=<?= urlencode($drop_message); ?>" >
|
||||
<?= $titles['Drop']; ?>
|
||||
</a>
|
||||
</td>
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
add_spatial_anchor"
|
||||
<?php else: ?>
|
||||
"
|
||||
<?php endif; ?> href="tbl_structure.php<?= $url_query; ?>&add_key=1&sql_query=<?= urlencode(
|
||||
<?php endif; ?> href="tbl_structure.php" data-post="<?= $url_query; ?>&add_key=1&sql_query=<?= urlencode(
|
||||
'ALTER TABLE ' . PMA\libraries\Util::backquote($GLOBALS['table'])
|
||||
. ($isPrimary ? ($primary ? ' DROP PRIMARY KEY,' : '') : '')
|
||||
. ' ' . $syntax . '('
|
||||
|
||||
@ -93,7 +93,7 @@
|
||||
&& (mb_strpos($type, 'text') !== false
|
||||
|| mb_strpos($type, 'char') !== false)
|
||||
): ?>
|
||||
<a rel="samepage" class="ajax add_key add_fulltext_anchor" href="tbl_structure.php<?= $url_query; ?>&add_key=1&sql_query=<?= urlencode(
|
||||
<a rel="samepage" class="ajax add_key add_fulltext_anchor" href="tbl_structure.php" data-post="<?= $url_query; ?>&add_key=1&sql_query=<?= urlencode(
|
||||
'ALTER TABLE ' . Util::backquote($GLOBALS['table'])
|
||||
. ' ADD FULLTEXT(' . Util::backquote($row['Field'])
|
||||
. ');'); ?>&message_to_show=<?= urlencode(sprintf(
|
||||
@ -107,7 +107,7 @@
|
||||
</li>
|
||||
<!-- Distinct value action -->
|
||||
<li class="browse nowrap">
|
||||
<a href="sql.php<?= $url_query; ?>&sql_query=<?= urlencode(
|
||||
<a href="sql.php" data-post="<?= $url_query; ?>&sql_query=<?= urlencode(
|
||||
'SELECT COUNT(*) AS ' . PMA\libraries\Util::backquote(__('Rows'))
|
||||
. ', ' . PMA\libraries\Util::backquote($row['Field'])
|
||||
. ' FROM ' . PMA\libraries\Util::backquote($GLOBALS['table'])
|
||||
|
||||
@ -77,7 +77,7 @@ use PMA\libraries\URL; ?>
|
||||
<td><?= htmlspecialchars($partition->getComment()); ?></td>
|
||||
<?php foreach ($actionIcons as $action => $icon): ?>
|
||||
<td>
|
||||
<a href="tbl_structure.php<?= $url_query; ?>&partition_maintenance=1&sql_query=<?= urlencode(
|
||||
<a href="tbl_structure.php" data-post="<?= $url_query; ?>&partition_maintenance=1&sql_query=<?= urlencode(
|
||||
"ALTER TABLE " . Util::backquote($table) . $action . " PARTITION " . $partition->getName()
|
||||
) ?>"
|
||||
id="partition_action_<?= $action; ?>"
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
|| $tbl_storage_engine == 'BDB')): ?>
|
||||
<tr class="tblFooters print_ignore">
|
||||
<td colspan="3" class="center">
|
||||
<a href="sql.php<?= $url_query; ?>&pos=0&sql_query=<?= urlencode(
|
||||
<a href="sql.php" data-post="<?= $url_query; ?>&pos=0&sql_query=<?= urlencode(
|
||||
'OPTIMIZE TABLE ' . PMA\libraries\Util::backquote($GLOBALS['table'])); ?>">
|
||||
<?= PMA\libraries\Util::getIcon('b_tbloptimize.png', __('Optimize table')); ?>
|
||||
</a>
|
||||
|
||||
@ -5,7 +5,7 @@ use PMA\libraries\Util;
|
||||
?>
|
||||
<a href="#" id="printView"><?= Util::getIcon('b_print.png', __('Print'), true); ?></a>
|
||||
<?php if (! $tbl_is_view && ! $db_is_system_schema): ?>
|
||||
<a href="sql.php<?= $url_query; ?>&session_max_rows=all&sql_query=<?= urlencode(
|
||||
<a href="sql.php" data-post="<?= $url_query; ?>&session_max_rows=all&sql_query=<?= urlencode(
|
||||
'SELECT * FROM ' . Util::backquote($GLOBALS['table'])
|
||||
. ' PROCEDURE ANALYSE()'
|
||||
); ?>" style="margin-right: 0;">
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
</a>
|
||||
</td>
|
||||
<td class="drop center print_ignore">
|
||||
<a class="drop_column_anchor ajax" href="sql.php<?= $url_query; ?>&sql_query=<?= urlencode(
|
||||
<a class="drop_column_anchor ajax" href="sql.php" data-post="<?= $url_query; ?>&sql_query=<?= urlencode(
|
||||
'ALTER TABLE ' . PMA\libraries\Util::backquote($table)
|
||||
. ' DROP ' . PMA\libraries\Util::backquote($row['Field']) . ';'); ?>&dropped_column=<?= $field_encoded; ?>&purge=1&message_to_show=<?= urlencode(sprintf(__('Column %s has been dropped.'), htmlspecialchars($row['Field']))) ?>" >
|
||||
<?= $titles['Drop']; ?>
|
||||
|
||||
@ -372,7 +372,6 @@ class DisplayResultsTest extends PMATestCase
|
||||
array('`new`.`id`' => '= 1'),
|
||||
'[%_PMA_CHECKBOX_DIR_%]',
|
||||
'klass',
|
||||
|
||||
'<td class="klass" class="center print_ignore"><input type'
|
||||
. '="checkbox" id="id_rows_to_delete0[%_PMA_CHECKBOX_DIR_%]" name='
|
||||
. '"rows_to_delete[0]" class="multi_checkbox checkall" value="%60'
|
||||
@ -434,9 +433,16 @@ class DisplayResultsTest extends PMATestCase
|
||||
. '"Edit" class="icon ic_b_edit" /> Edit</span>',
|
||||
'`customer`.`id` = 1',
|
||||
'%60customer%60.%60id%60+%3D+1',
|
||||
'<td class="klass edit_row_anchor center print_ignore" ><span class="nowrap"><input type="hidden" name="subform[1][db]" value="Data" /><input type="hidden" name="subform[1][table]" value="customer" /><input type="hidden" name="subform[1][where_clause]" value="`customer`.`id` = 1" /><input type="hidden" name="subform[1][clause_is_unique]" value="1" /><input type="hidden" name="subform[1][sql_query]" value="SELECT * FROM `customer`" /><input type="hidden" name="subform[1][goto]" value="sql.php" /><input type="hidden" name="subform[1][default_action]" value="update" /><input type="hidden" name="subform[1][redirect]" value="tbl_change.php" /><input type="hidden" name="subform[1][token]" value="token" />
|
||||
<a href="#usesubform[1]=1" class="formLinkSubmit"><span class="nowrap"><img src="themes/dot.gif" title="Edit" alt="Edit" class="icon ic_b_edit" /> Edit</span> </a>
|
||||
<input type="hidden" class="where_clause" value ="%60customer%60.%60id%60+%3D+1" /></span></td>'
|
||||
'<td class="klass edit_row_anchor center print_ignore" >'
|
||||
. '<span class="nowrap">'
|
||||
. '<a href="tbl_change.php" data-post="db=Data&table=customer&where_'
|
||||
. 'clause=%60customer%60.%60id%60+%3D+1&clause_is_unique=1&'
|
||||
. 'sql_query=SELECT+%2A+FROM+%60customer%60&goto=sql.php&'
|
||||
. 'default_action=update"'
|
||||
. '><span class="nowrap"><img src="themes/dot.gif" title="Edit" '
|
||||
. 'alt="Edit" class="icon ic_b_edit" /> Edit</span></a>'
|
||||
. '<input type="hidden" class="where_clause" value ="%60customer'
|
||||
. '%60.%60id%60+%3D+1" /></span></td>'
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -490,9 +496,16 @@ class DisplayResultsTest extends PMATestCase
|
||||
'`customer`.`id` = 1',
|
||||
'%60customer%60.%60id%60+%3D+1',
|
||||
'klass',
|
||||
'<td class="klass center print_ignore" ><span class="nowrap"><input type="hidden" name="subform[1][db]" value="Data" /><input type="hidden" name="subform[1][table]" value="customer" /><input type="hidden" name="subform[1][where_clause]" value="`customer`.`id` = 1" /><input type="hidden" name="subform[1][clause_is_unique]" value="1" /><input type="hidden" name="subform[1][sql_query]" value="SELECT * FROM `customer`" /><input type="hidden" name="subform[1][goto]" value="sql.php" /><input type="hidden" name="subform[1][default_action]" value="insert" /><input type="hidden" name="subform[1][redirect]" value="tbl_change.php" /><input type="hidden" name="subform[1][token]" value="token" />
|
||||
<a href="#usesubform[1]=1" class="formLinkSubmit"><span class="nowrap"><img src="themes/dot.gif" title="Copy" alt="Copy" class="icon ic_b_insrow" /> Copy</span> </a>
|
||||
<input type="hidden" class="where_clause" value="%60customer%60.%60id%60+%3D+1" /></span></td>'
|
||||
'<td class="klass center print_ignore" ><span class='
|
||||
. '"nowrap">'
|
||||
. '<a href="tbl_change.php" data-post="db=Data&table=customer&where_'
|
||||
. 'clause=%60customer%60.%60id%60+%3D+1&clause_is_unique=1&'
|
||||
. 'sql_query=SELECT+%2A+FROM+%60customer%60&goto=sql.php&'
|
||||
. 'default_action=insert"'
|
||||
. '><span class="nowrap"><img src="themes/dot.gif" title="Copy" '
|
||||
. 'alt="Copy" class="icon ic_b_insrow" /> Copy</span></a>'
|
||||
. '<input type="hidden" class="where_clause" value="%60customer%60'
|
||||
. '.%60id%60+%3D+1" /></span></td>'
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -547,9 +560,18 @@ class DisplayResultsTest extends PMATestCase
|
||||
. 'alt="Delete" class="icon ic_b_drop" /> Delete</span>',
|
||||
'DELETE FROM `Data`.`customer` WHERE `customer`.`id` = 1',
|
||||
'klass',
|
||||
'<td class="klass center print_ignore" ><input type="hidden" name="subform[1][db]" value="Data" /><input type="hidden" name="subform[1][table]" value="customer" /><input type="hidden" name="subform[1][sql_query]" value="DELETE FROM `Data`.`customer` WHERE `customer`.`id` = 1" /><input type="hidden" name="subform[1][message_to_show]" value="The row has been deleted" /><input type="hidden" name="subform[1][goto]" value="sql.php?db=Data&table=customer&sql_query=SELECT+%2A+FROM+%60customer%60&message_to_show=The+row+has+been+deleted&goto=tbl_structure.php" /><input type="hidden" name="subform[1][redirect]" value="sql.php" /><input type="hidden" name="subform[1][token]" value="token" />
|
||||
<a href="#usesubform[1]=1" class="delete_row requireConfirm formLinkSubmit"><span class="nowrap"><img src="themes/dot.gif" title="Delete" alt="Delete" class="icon ic_b_drop" /> Delete</span> </a>
|
||||
<div class="hide">DELETE FROM `Data`.`customer` WHERE `customer`.`id` = 1</div></td>'
|
||||
'<td class="klass center print_ignore" >'
|
||||
. '<a href="sql.php" data-post="db=Data&table=customer&sql_query=DELETE'
|
||||
. '+FROM+%60Data%60.%60customer%60+WHERE+%60customer%60.%60id%60+%3D'
|
||||
. '+1&message_to_show=The+row+has+been+deleted&goto=sql.php'
|
||||
. '%3Fdb%3DData%26table%3Dcustomer%26sql_query%3DSELECT%2B%252A%2B'
|
||||
. 'FROM%2B%2560customer%2560%26message_to_show%3DThe%2Brow%2Bhas%2B'
|
||||
. 'been%2Bdeleted%26goto%3Dtbl_structure.php" '
|
||||
. 'class="delete_row requireConfirm"><span class="nowrap"><img src="themes/dot.'
|
||||
. 'gif" title="Delete" alt="Delete" class="icon ic_b_drop" /> '
|
||||
. 'Delete</span></a>'
|
||||
. '<div class="hide">DELETE FROM `Data`.`customer` WHERE '
|
||||
. '`customer`.`id` = 1</div></td>'
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -629,14 +651,40 @@ class DisplayResultsTest extends PMATestCase
|
||||
'<span class="nowrap"><img src="themes/dot.gif" title="Delete" '
|
||||
. 'alt="Delete" class="icon ic_b_drop" /> Delete</span>',
|
||||
'DELETE FROM `data`.`new` WHERE `new`.`id` = 1',
|
||||
'<td class="center print_ignore"><input type="checkbox" id="id_rows_to_delete0_left" name="rows_to_delete[0]" class="multi_checkbox checkall" value="%60new%60.%60id%60+%3D+1" /><input type="hidden" class="condition_array" value="{"`new`.`id`":"= 1"}" /> </td><td class="edit_row_anchor center print_ignore" ><span class="nowrap"><input type="hidden" name="subform[1][db]" value="data" /><input type="hidden" name="subform[1][table]" value="new" /><input type="hidden" name="subform[1][where_clause]" value="`new`.`id` = 1" /><input type="hidden" name="subform[1][clause_is_unique]" value="1" /><input type="hidden" name="subform[1][sql_query]" value="SELECT * FROM `new`" /><input type="hidden" name="subform[1][goto]" value="sql.php" /><input type="hidden" name="subform[1][default_action]" value="update" /><input type="hidden" name="subform[1][redirect]" value="tbl_change.php" /><input type="hidden" name="subform[1][token]" value="token" />
|
||||
<a href="#usesubform[1]=1" class="formLinkSubmit"><span class="nowrap"><img src="themes/dot.gif" title="Edit" alt="Edit" class="icon ic_b_edit" /> Edit</span> </a>
|
||||
<input type="hidden" class="where_clause" value ="%60new%60.%60id%60+%3D+1" /></span></td><td class="center print_ignore" ><span class="nowrap"><input type="hidden" name="subform[2][db]" value="data" /><input type="hidden" name="subform[2][table]" value="new" /><input type="hidden" name="subform[2][where_clause]" value="`new`.`id` = 1" /><input type="hidden" name="subform[2][clause_is_unique]" value="1" /><input type="hidden" name="subform[2][sql_query]" value="SELECT * FROM `new`" /><input type="hidden" name="subform[2][goto]" value="sql.php" /><input type="hidden" name="subform[2][default_action]" value="insert" /><input type="hidden" name="subform[2][redirect]" value="tbl_change.php" /><input type="hidden" name="subform[2][token]" value="token" />
|
||||
<a href="#usesubform[2]=1" class="formLinkSubmit"><span class="nowrap"><img src="themes/dot.gif" title="Copy" alt="Copy" class="icon ic_b_insrow" /> Copy</span> </a>
|
||||
<input type="hidden" class="where_clause" value="%60new%60.%60id%60+%3D+1" /></span></td><td class="center print_ignore" ><input type="hidden" name="subform[3][db]" value="data" /><input type="hidden" name="subform[3][table]" value="new" /><input type="hidden" name="subform[3][sql_query]" value="DELETE FROM `data`.`new` WHERE `new`.`id` = 1" /><input type="hidden" name="subform[3][message_to_show]" value="The row has been deleted" /><input type="hidden" name="subform[3][goto]" value="sql.php?db=data&table=new&sql_query=SELECT+%2A+FROM+%60new%60&message_to_show=The+row+has+been+deleted&goto=tbl_structure.php" /><input type="hidden" name="subform[3][redirect]" value="sql.php" /><input type="hidden" name="subform[3][token]" value="token" />
|
||||
<a href="#usesubform[3]=1" class="delete_row requireConfirm formLinkSubmit"><span class="nowrap"><img src="themes/dot.gif" title="Delete" alt="Delete" class="icon ic_b_drop" /> Delete</span> </a>
|
||||
<div class="hide">DELETE FROM `data`.`new` WHERE `new`.`id` = 1</div></td>'
|
||||
|
||||
'<td class="center print_ignore"><input type="checkbox" id="id_rows_to_delete0_'
|
||||
. 'left" name="rows_to_delete[0]" class="multi_checkbox checkall" '
|
||||
. 'value="%60new%60.%60id%60+%3D+1" /><input type="hidden" class='
|
||||
. '"condition_array" value="{"`new`.`id`":"= 1"'
|
||||
. '}" /> </td><td class="edit_row_anchor center print_ignore" ><span class='
|
||||
. '"nowrap">'
|
||||
. '<a href="tbl_change.php" data-post="db=data&table=new&where_'
|
||||
. 'clause=%60new%60.%60id%60+%3D+1&clause_is_unique=1&'
|
||||
. 'sql_query=SELECT+%2A+FROM+%60new%60&goto=sql.php&default'
|
||||
. '_action=update">'
|
||||
. '<span class="nowrap"><img src="themes/dot.gif" title="Edit" '
|
||||
. 'alt="Edit" class="icon ic_b_edit" /> Edit</span></a>'
|
||||
. '<input type="hidden" class="where_clause" value ="%60new%60.%60'
|
||||
. 'id%60+%3D+1" /></span></td><td class="center print_ignore" ><span class'
|
||||
. '="nowrap">'
|
||||
. '<a href="tbl_change.php" data-post="db=data&table=new&where_clause'
|
||||
. '=%60new%60.%60id%60+%3D+1&clause_is_unique=1&sql_query='
|
||||
. 'SELECT+%2A+FROM+%60new%60&goto=sql.php&default_action='
|
||||
. 'insert"><span class'
|
||||
. '="nowrap"><img src="themes/dot.gif" title="Copy" alt="Copy" '
|
||||
. 'class="icon ic_b_insrow" /> Copy</span></a>'
|
||||
. '<input type="hidden" class="where_clause" value="%60new%60.%60id'
|
||||
. '%60+%3D+1" /></span></td><td class="center print_ignore" >'
|
||||
. '<a href="sql.php" data-post="db=data&table=new&sql_query=DELETE+'
|
||||
. 'FROM+%60data%60.%60new%60+WHERE+%60new%60.%60id%60+%3D+1&'
|
||||
. 'message_to_show=The+row+has+been+deleted&goto=sql.php%3F'
|
||||
. 'db%3Ddata%26table%3Dnew%26sql_query%3DSELECT%2B%252A%2BFROM%2B'
|
||||
. '%2560new%2560%26message_to_show%3DThe%2Brow%2Bhas%2Bbeen%2B'
|
||||
. 'deleted%26goto%3Dtbl_structure.php" '
|
||||
. 'class="delete_row requireConfirm"><span class="nowrap"><img src="themes/dot.'
|
||||
. 'gif" title="Delete" alt="Delete" class="icon ic_b_drop" /> '
|
||||
. 'Delete</span></a>'
|
||||
. '<div class="hide">DELETE FROM `data`.`new` WHERE `new`.`id` = 1'
|
||||
. '</div></td>'
|
||||
),
|
||||
array(
|
||||
PMA\libraries\DisplayResults::POSITION_RIGHT,
|
||||
@ -675,13 +723,38 @@ class DisplayResultsTest extends PMATestCase
|
||||
'<span class="nowrap"><img src="themes/dot.gif" title="Delete" '
|
||||
. 'alt="Delete" class="icon ic_b_drop" /> Delete</span>',
|
||||
'DELETE FROM `data`.`new` WHERE `new`.`id` = 1',
|
||||
'<td class="center print_ignore" ><input type="hidden" name="subform[1][db]" value="data" /><input type="hidden" name="subform[1][table]" value="new" /><input type="hidden" name="subform[1][sql_query]" value="DELETE FROM `data`.`new` WHERE `new`.`id` = 1" /><input type="hidden" name="subform[1][message_to_show]" value="The row has been deleted" /><input type="hidden" name="subform[1][goto]" value="sql.php?db=data&table=new&sql_query=SELECT+%2A+FROM+%60new%60&message_to_show=The+row+has+been+deleted&goto=tbl_structure.php" /><input type="hidden" name="subform[1][redirect]" value="sql.php" /><input type="hidden" name="subform[1][token]" value="token" />
|
||||
<a href="#usesubform[1]=1" class="delete_row requireConfirm formLinkSubmit"><span class="nowrap"><img src="themes/dot.gif" title="Delete" alt="Delete" class="icon ic_b_drop" /> Delete</span> </a>
|
||||
<div class="hide">DELETE FROM `data`.`new` WHERE `new`.`id` = 1</div></td><td class="center print_ignore" ><span class="nowrap"><input type="hidden" name="subform[2][db]" value="data" /><input type="hidden" name="subform[2][table]" value="new" /><input type="hidden" name="subform[2][where_clause]" value="`new`.`id` = 1" /><input type="hidden" name="subform[2][clause_is_unique]" value="1" /><input type="hidden" name="subform[2][sql_query]" value="SELECT * FROM `new`" /><input type="hidden" name="subform[2][goto]" value="sql.php" /><input type="hidden" name="subform[2][default_action]" value="insert" /><input type="hidden" name="subform[2][redirect]" value="tbl_change.php" /><input type="hidden" name="subform[2][token]" value="token" />
|
||||
<a href="#usesubform[2]=1" class="formLinkSubmit"><span class="nowrap"><img src="themes/dot.gif" title="Copy" alt="Copy" class="icon ic_b_insrow" /> Copy</span> </a>
|
||||
<input type="hidden" class="where_clause" value="%60new%60.%60id%60+%3D+1" /></span></td><td class="edit_row_anchor center print_ignore" ><span class="nowrap"><input type="hidden" name="subform[3][db]" value="data" /><input type="hidden" name="subform[3][table]" value="new" /><input type="hidden" name="subform[3][where_clause]" value="`new`.`id` = 1" /><input type="hidden" name="subform[3][clause_is_unique]" value="1" /><input type="hidden" name="subform[3][sql_query]" value="SELECT * FROM `new`" /><input type="hidden" name="subform[3][goto]" value="sql.php" /><input type="hidden" name="subform[3][default_action]" value="update" /><input type="hidden" name="subform[3][redirect]" value="tbl_change.php" /><input type="hidden" name="subform[3][token]" value="token" />
|
||||
<a href="#usesubform[3]=1" class="formLinkSubmit"><span class="nowrap"><img src="themes/dot.gif" title="Edit" alt="Edit" class="icon ic_b_edit" /> Edit</span> </a>
|
||||
<input type="hidden" class="where_clause" value ="%60new%60.%60id%60+%3D+1" /></span></td><td class="center print_ignore"><input type="checkbox" id="id_rows_to_delete0_right" name="rows_to_delete[0]" class="multi_checkbox checkall" value="%60new%60.%60id%60+%3D+1" /><input type="hidden" class="condition_array" value="{"`new`.`id`":"= 1"}" /> </td>'
|
||||
'<td class="center print_ignore" >'
|
||||
. '<a href="sql.php" data-post="db=data&table=new&sql_query=DELETE+'
|
||||
. 'FROM+%60data%60.%60new%60+WHERE+%60new%60.%60id%60+%3D+1&'
|
||||
. 'message_to_show=The+row+has+been+deleted&goto=sql.php%3Fdb'
|
||||
. '%3Ddata%26table%3Dnew%26sql_query%3DSELECT%2B%252A%2BFROM%2B%25'
|
||||
. '60new%2560%26message_to_show%3DThe%2Brow%2Bhas%2Bbeen%2Bdeleted'
|
||||
. '%26goto%3Dtbl_structure.php" class="delete'
|
||||
. '_row requireConfirm"><span class="nowrap"><img src="themes/dot.gif" title='
|
||||
. '"Delete" alt="Delete" class="icon ic_b_drop" /> Delete</span></a>'
|
||||
. '<div class="hide">DELETE FROM `data`.`new` WHERE `new`.'
|
||||
. '`id` = 1</div></td><td class="center print_ignore" ><span class="nowrap">'
|
||||
. '<a href="tbl_change.php" data-post="db=data&table=new&where_'
|
||||
. 'clause=%60new%60.%60id%60+%3D+1&clause_is_unique=1&sql_'
|
||||
. 'query=SELECT+%2A+FROM+%60new%60&goto=sql.php&default_'
|
||||
. 'action=insert"><span '
|
||||
. 'class="nowrap"><img src="themes/dot.gif" title="Copy" alt="Copy" '
|
||||
. 'class="icon ic_b_insrow" /> Copy</span></a>'
|
||||
. '<input type="hidden" class="where_clause" value="%60new%60.%60id'
|
||||
. '%60+%3D+1" /></span></td><td class="edit_row_anchor center print_ignore" >'
|
||||
. '<span class="nowrap">'
|
||||
. '<a href="tbl_change.php" data-post="db=data&table=new&where_clause'
|
||||
. '=%60new%60.%60id%60+%3D+1&clause_is_unique=1&sql_query='
|
||||
. 'SELECT+%2A+FROM+%60new%60&goto=sql.php&default_action='
|
||||
. 'update"><span class='
|
||||
. '"nowrap"><img src="themes/dot.gif" title="Edit" alt="Edit" class'
|
||||
. '="icon ic_b_edit" /> Edit</span></a>'
|
||||
. '<input type="hidden" class="where_clause" value ="%60new%60.%60'
|
||||
. 'id%60+%3D+1" /></span></td><td class="center print_ignore"><input type='
|
||||
. '"checkbox" id="id_rows_to_delete0_right" name="rows_to_delete'
|
||||
. '[0]" class="multi_checkbox checkall" value="%60new%60.%60id%60'
|
||||
. '+%3D+1" /><input type="hidden" class="condition_array" value="'
|
||||
. '{"`new`.`id`":"= 1"}" /> </td>'
|
||||
),
|
||||
array(
|
||||
PMA\libraries\DisplayResults::POSITION_NONE,
|
||||
@ -806,7 +879,7 @@ class DisplayResultsTest extends PMATestCase
|
||||
'tbl_change.php?db=data&table=new&where_clause=%60new%60.%60'
|
||||
. 'id%60+%3D+1&clause_is_unique=1&sql_query=SELECT+%2A+FROM+'
|
||||
. '%60new%60&goto=sql.php&default_action=update',
|
||||
'tbl_change.php?db=data&table=new&where_clause=%60new%60.%60'
|
||||
'/tbl_change.php?db=data&table=new&where_clause=%60new%60.%60'
|
||||
. 'id%60+%3D+1&clause_is_unique=1&sql_query=SELECT+%2A+FROM+'
|
||||
. '%60new%60&goto=sql.php&default_action=insert',
|
||||
'edit_row_anchor',
|
||||
|
||||
@ -306,4 +306,57 @@ class UtilTest extends PMATestCase
|
||||
array("https://www.phpmyadmin.net/test/nothing","GET", true, false),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for Util::linkOrButton
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider linksOrButtons
|
||||
*/
|
||||
public function testLinkOrButton(array $params, $limit, $match)
|
||||
{
|
||||
$restore = isset($GLOBALS['cfg']['LinkLengthLimit']) ? $GLOBALS['cfg']['LinkLengthLimit'] : 1000;
|
||||
$GLOBALS['cfg']['LinkLengthLimit'] = $limit;
|
||||
try {
|
||||
$result = call_user_func_array(
|
||||
array('PMA\libraries\Util', 'linkOrButton'),
|
||||
$params
|
||||
);
|
||||
$this->assertEquals($match, $result);
|
||||
} finally {
|
||||
$GLOBALS['cfg']['LinkLengthLimit'] = $restore;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for Util::linkOrButton test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function linksOrButtons()
|
||||
{
|
||||
return [
|
||||
[
|
||||
['index.php', 'text'],
|
||||
1000,
|
||||
'<a href="index.php" >text</a>'
|
||||
],
|
||||
[
|
||||
['index.php?some=parameter', 'text'],
|
||||
20,
|
||||
'<a href="index.php" data-post="some=parameter">text</a>',
|
||||
],
|
||||
[
|
||||
['index.php', 'text', [], true, false, 'target'],
|
||||
1000,
|
||||
'<a href="index.php" target="target">text</a>',
|
||||
],
|
||||
[
|
||||
['url.php?url=http://phpmyadmin.net/', 'text', [], true, false, '_blank'],
|
||||
1000,
|
||||
'<a href="url.php?url=http://phpmyadmin.net/" target="_blank" rel="noopener noreferrer">text</a>',
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,6 +37,7 @@ class PMA_Operations_Test extends PHPUnit_Framework_TestCase
|
||||
$GLOBALS['cfg'] = array(
|
||||
'ServerDefault' => 1,
|
||||
'ActionLinksMode' => 'icons',
|
||||
'LinkLengthLimit' => 1000,
|
||||
);
|
||||
$GLOBALS['cfg']['DBG']['sql'] = false;
|
||||
$GLOBALS['server'] = 1;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user