Merge pull request #16480 from mauriciofauth/toggle-button-removal
Remove toggle button generator
This commit is contained in:
commit
fee730fcdc
@ -76,7 +76,9 @@ final class EventsController extends AbstractController
|
||||
'items' => $items,
|
||||
'select_all_arrow_src' => $PMA_Theme->getImgPath() . 'arrow_' . $text_dir . '.png',
|
||||
'has_privilege' => Util::currentUserHasPrivilege('EVENT', $db),
|
||||
'toggle_button' => $this->events->getFooterToggleButton(),
|
||||
'scheduler_state' => $this->events->getEventSchedulerStatus(),
|
||||
'text_dir' => $text_dir,
|
||||
'theme_image_path' => $PMA_Theme->getImgPath(),
|
||||
'is_ajax' => $this->response->isAjax() && empty($_REQUEST['ajax_page_request']),
|
||||
]);
|
||||
}
|
||||
|
||||
@ -9,7 +9,6 @@ use PhpMyAdmin\Html\Generator;
|
||||
use PhpMyAdmin\Message;
|
||||
use PhpMyAdmin\Response;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\Url;
|
||||
use PhpMyAdmin\Util;
|
||||
use function count;
|
||||
use function explode;
|
||||
@ -467,49 +466,15 @@ class Events
|
||||
return $query;
|
||||
}
|
||||
|
||||
private function getEventSchedulerStatus(): bool
|
||||
public function getEventSchedulerStatus(): bool
|
||||
{
|
||||
$state = $this->dbi->fetchValue(
|
||||
'SHOW GLOBAL VARIABLES LIKE \'event_scheduler\'',
|
||||
0,
|
||||
1
|
||||
);
|
||||
$state = strtoupper($state);
|
||||
|
||||
return $state === 'ON' || $state === '1';
|
||||
}
|
||||
|
||||
public function getFooterToggleButton(): string
|
||||
{
|
||||
global $db, $table;
|
||||
|
||||
$state = $this->getEventSchedulerStatus();
|
||||
$options = [
|
||||
0 => [
|
||||
'label' => __('OFF'),
|
||||
'value' => 'SET GLOBAL event_scheduler="OFF"',
|
||||
'selected' => ! $state,
|
||||
],
|
||||
1 => [
|
||||
'label' => __('ON'),
|
||||
'value' => 'SET GLOBAL event_scheduler="ON"',
|
||||
'selected' => $state,
|
||||
],
|
||||
];
|
||||
|
||||
return Generator::toggleButton(
|
||||
Url::getFromRoute(
|
||||
'/sql',
|
||||
[
|
||||
'db' => $db,
|
||||
'table' => $table,
|
||||
'goto' => Url::getFromRoute('/database/events', ['db' => $db]),
|
||||
]
|
||||
),
|
||||
'sql_query',
|
||||
$options,
|
||||
'Functions.slidingMessage(data.sql_query);'
|
||||
);
|
||||
return strtoupper($state) === 'ON' || $state === '1';
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -186,56 +186,6 @@ class Generator
|
||||
return $ext_but_html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an AJAX sliding toggle button
|
||||
* (or and equivalent form when AJAX is disabled)
|
||||
*
|
||||
* @param string $action The URL for the request to be executed
|
||||
* @param string $select_name The name for the dropdown box
|
||||
* @param array $options An array of options
|
||||
* @param string $callback A JS snippet to execute when the request is
|
||||
* successfully processed
|
||||
*
|
||||
* @return string HTML code for the toggle button
|
||||
*
|
||||
* @throws Throwable
|
||||
* @throws LoaderError
|
||||
* @throws RuntimeError
|
||||
* @throws SyntaxError
|
||||
*/
|
||||
public static function toggleButton($action, $select_name, array $options, $callback): string
|
||||
{
|
||||
global $PMA_Theme;
|
||||
|
||||
$template = new Template();
|
||||
// Do the logic first
|
||||
$link = $action . '&' . urlencode($select_name) . '=';
|
||||
$link_on = $link . urlencode($options[1]['value']);
|
||||
$link_off = $link . urlencode($options[0]['value']);
|
||||
|
||||
if ($options[1]['selected'] == true) {
|
||||
$state = 'on';
|
||||
} elseif ($options[0]['selected'] == true) {
|
||||
$state = 'off';
|
||||
} else {
|
||||
$state = 'on';
|
||||
}
|
||||
|
||||
return $template->render(
|
||||
'toggle_button',
|
||||
[
|
||||
'theme_image_path' => $PMA_Theme->getImgPath(),
|
||||
'text_dir' => $GLOBALS['text_dir'],
|
||||
'link_on' => $link_on,
|
||||
'link_off' => $link_off,
|
||||
'toggle_on' => $options[1]['label'],
|
||||
'toggle_off' => $options[0]['label'],
|
||||
'callback' => $callback,
|
||||
'state' => $state,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an HTML IMG tag for a particular icon from a theme,
|
||||
* which may be an actual file or an icon from a sprite.
|
||||
|
||||
@ -1118,22 +1118,6 @@ class Tracking
|
||||
return $entries;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get version status
|
||||
*
|
||||
* @param array $version version info
|
||||
*
|
||||
* @return string The status message
|
||||
*/
|
||||
public function getVersionStatus(array $version)
|
||||
{
|
||||
if ($version['tracking_active'] == 1) {
|
||||
return __('active');
|
||||
}
|
||||
|
||||
return __('not active');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get HTML for tracked and untracked tables
|
||||
*
|
||||
@ -1184,12 +1168,7 @@ class Tracking
|
||||
. '\' AND `version` = \'' . $versionNumber . '\'';
|
||||
|
||||
$tableResult = $relation->queryAsControlUser($tableQuery);
|
||||
$versionData = $dbi->fetchArray($tableResult);
|
||||
$versionData['status_button'] = $this->getStatusButton(
|
||||
$versionData,
|
||||
$urlParams
|
||||
);
|
||||
$versions[] = $versionData;
|
||||
$versions[] = $dbi->fetchArray($tableResult);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1249,41 +1228,4 @@ class Tracking
|
||||
//Use helper function to get table list recursively.
|
||||
return $this->extractTableNames($table_list, $db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get tracking status button
|
||||
*
|
||||
* @param array $versionData data about tracking versions
|
||||
* @param array $params url parameters
|
||||
*
|
||||
* @return string HTML
|
||||
*/
|
||||
private function getStatusButton(array $versionData, array $params): string
|
||||
{
|
||||
$state = $this->getVersionStatus($versionData);
|
||||
$options = [
|
||||
0 => [
|
||||
'label' => __('not active'),
|
||||
'value' => 'deactivate_now',
|
||||
'selected' => $state !== 'active',
|
||||
],
|
||||
1 => [
|
||||
'label' => __('active'),
|
||||
'value' => 'activate_now',
|
||||
'selected' => $state === 'active',
|
||||
],
|
||||
];
|
||||
$link = Url::getFromRoute('/table/tracking', array_merge([
|
||||
'db' => $versionData['db_name'],
|
||||
'table' => $versionData['table_name'],
|
||||
'version' => $versionData['version'],
|
||||
], $params));
|
||||
|
||||
return Generator::toggleButton(
|
||||
$link,
|
||||
'toggle_activation',
|
||||
$options,
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2150,11 +2150,6 @@ parameters:
|
||||
count: 2
|
||||
path: libraries/classes/Tracking.php
|
||||
|
||||
-
|
||||
message: "#^Parameter \\#4 \\$callback of static method PhpMyAdmin\\\\Html\\\\Generator\\:\\:toggleButton\\(\\) expects string, null given\\.$#"
|
||||
count: 1
|
||||
path: libraries/classes/Tracking.php
|
||||
|
||||
-
|
||||
message: "#^Parameter \\#1 \\$classname of function class_exists expects string, PhpMyAdmin\\\\Plugins\\\\TransformationsInterface given\\.$#"
|
||||
count: 2
|
||||
|
||||
@ -115,7 +115,42 @@
|
||||
<fieldset class="right">
|
||||
<legend>{% trans 'Event scheduler status' %}</legend>
|
||||
<div class="wrap">
|
||||
{{ toggle_button|raw }}
|
||||
<div class="wrapper toggleAjax hide">
|
||||
<div class="toggleButton">
|
||||
<div title="{% trans 'Click to toggle' %}" class="toggle-container {{ scheduler_state ? 'on' : 'off' }}">
|
||||
<img src="{{ theme_image_path }}toggle-{{ text_dir }}.png">
|
||||
<table class="nospacing nopadding">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="toggleOn">
|
||||
<span class="hide">
|
||||
{{- url('/sql', {
|
||||
'db': db,
|
||||
'goto': url('/database/events', {'db': db}),
|
||||
'sql_query': 'SET GLOBAL event_scheduler="ON"',
|
||||
}) -}}
|
||||
</span>
|
||||
<div>{% trans 'ON' %}</div>
|
||||
</td>
|
||||
<td><div> </div></td>
|
||||
<td class="toggleOff">
|
||||
<span class="hide">
|
||||
{{- url('/sql', {
|
||||
'db': db,
|
||||
'goto': url('/database/events', {'db': db}),
|
||||
'sql_query': 'SET GLOBAL event_scheduler="OFF"',
|
||||
}) -}}
|
||||
</span>
|
||||
<div>{% trans 'OFF' %}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<span class="hide callback">Functions.slidingMessage(data.sql_query);</span>
|
||||
<span class="hide text_direction">{{ text_dir }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="clearfloat"></div>
|
||||
|
||||
@ -42,7 +42,44 @@
|
||||
{{ version.date_updated }}
|
||||
</td>
|
||||
<td>
|
||||
{{ version.status_button|raw }}
|
||||
<div class="wrapper toggleAjax hide">
|
||||
<div class="toggleButton">
|
||||
<div title="{% trans 'Click to toggle' %}" class="toggle-container {{ version.tracking_active == 1 ? 'on' : 'off' }}">
|
||||
<img src="{{ theme_image_path }}toggle-{{ text_dir }}.png">
|
||||
<table class="nospacing nopadding">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="toggleOn">
|
||||
<span class="hide">
|
||||
{{- url('/table/tracking', {
|
||||
'db': version.db_name,
|
||||
'table': version.table_name,
|
||||
'version': version.version,
|
||||
'toggle_activation': 'activate_now',
|
||||
}) -}}
|
||||
</span>
|
||||
<div>{% trans 'active' %}</div>
|
||||
</td>
|
||||
<td><div> </div></td>
|
||||
<td class="toggleOff">
|
||||
<span class="hide">
|
||||
{{- url('/table/tracking', {
|
||||
'db': version.db_name,
|
||||
'table': version.table_name,
|
||||
'version': version.version,
|
||||
'toggle_activation': 'deactivate_now',
|
||||
}) -}}
|
||||
</span>
|
||||
<div>{% trans 'not active' %}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<span class="hide callback"></span>
|
||||
<span class="hide text_direction">{{ text_dir }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<a class="delete_tracking_anchor ajax" href="{{ url('/database/tracking') }}" data-post="
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
<div class='wrapper toggleAjax hide'>
|
||||
<div class='toggleButton'>
|
||||
<div title="{% trans 'Click to toggle' %}" class='toggle-container {{ state }}'>
|
||||
<img src="{{ theme_image_path }}toggle-{{ text_dir }}.png">
|
||||
<table class='nospacing nopadding'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class='toggleOn'>
|
||||
<span class='hide'>{{ link_on|raw }}</span>
|
||||
<div>{{ toggle_on }}</div>
|
||||
</td>
|
||||
<td><div> </div></td>
|
||||
<td class='toggleOff'>
|
||||
<span class='hide'>{{ link_off|raw }}</span>
|
||||
<div>{{ toggle_off }}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<span class='hide callback'>{{ callback }}</span>
|
||||
<span class='hide text_direction'>{{ text_dir }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Loading…
Reference in New Issue
Block a user