Skip to content
Snippets Groups Projects
Commit 556bfa66 authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms
Browse files

remove pagination from cronjob administration pages for schedules and tasks, fixes #2625

Closes #2625

Merge request studip/studip!1774
parent c004478c
No related branches found
No related tags found
No related merge requests found
......@@ -61,24 +61,14 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
/**
* Displays all available schedules according to the set filters.
*
* @param int $page Which page to display
*/
public function index_action($page = 0)
public function index_action()
{
$filter = $_SESSION['cronjob-filter'];
$this->total = CronjobSchedule::countBySql('1');
$this->pagination = Pagination::create(
CronjobSchedule::countBySql($filter['where']),
$page
);
$this->schedules = $this->pagination->loadSORMCollection(
CronjobSchedule::class,
$filter['where']
);
$this->schedules = CronjobSchedule::findBySQL($filter['where']);
// Filters
$this->tasks = CronjobTask::findBySql('1');
......@@ -134,9 +124,8 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
* Edits a schedule.
*
* @param String $id Id of the schedule in question (null to create)
* @param int $page Return to this page after editing (optional)
*/
public function edit_action(CronjobSchedule $schedule = null, $page = 0)
public function edit_action(CronjobSchedule $schedule = null)
{
if (Request::submitted('store')) {
$parameters = Request::getArray('parameters');
......@@ -173,7 +162,7 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
$schedule->store();
PageLayout::postSuccess(_('Die Änderungen wurden gespeichert.'));
$this->redirect('admin/cronjobs/schedules/index/' . $page);
$this->redirect('admin/cronjobs/schedules/index');
return;
}
......@@ -182,11 +171,10 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
$actions = Sidebar::get()->addWidget(new ActionsWidget());
$actions->addLink(
_('Zurück zur Übersicht'),
$this->indexURL($page),
$this->indexURL(),
Icon::create('link-intern')
);
$this->page = $page;
$this->tasks = CronjobTask::findBySql('1');
}
......@@ -214,56 +202,51 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
* Activates a schedule.
*
* @param CronjobSchedule $schedule Schedule to activate
* @param int $page Return to this page after activating (optional)
*/
public function activate_action(CronjobSchedule $schedule, $page = 0)
public function activate_action(CronjobSchedule $schedule)
{
$schedule->activate();
if (!Request::isXhr()) {
PageLayout::postSuccess(_('Der Cronjob wurde aktiviert.'));
}
$this->redirect("admin/cronjobs/schedules/index/{$page}#job-{$schedule->id}");
$this->redirect("admin/cronjobs/schedules/index#job-{$schedule->id}");
}
/**
* Deactivates a schedule.
*
* @param CronjobSchedule $schedule Schedule to deactivate
* @param int $page Return to this page after deactivating (optional)
*/
public function deactivate_action(CronjobSchedule $schedule, $page = 0)
public function deactivate_action(CronjobSchedule $schedule)
{
$schedule->deactivate();
if (!Request::isXhr()) {
PageLayout::postSuccess(_('Der Cronjob wurde deaktiviert.'));
}
$this->redirect("admin/cronjobs/schedules/index/{$page}#job-{$schedule->id}");
$this->redirect("admin/cronjobs/schedules/index#job-{$schedule->id}");
}
/**
* Cancels/deletes a schedule.
*
* @param CronjobSchedule $schedule Schedule to cancel
* @param int $page Return to this page after canceling (optional)
*/
public function cancel_action(CronjobSchedule $schedule, $page = 0)
public function cancel_action(CronjobSchedule $schedule)
{
CSRFProtection::verifyUnsafeRequest();
$schedule->delete();
PageLayout::postSuccess(_('Der Cronjob wurde gelöscht.'));
$this->redirect("admin/cronjobs/schedules/index/{$page}");
$this->redirect('admin/cronjobs/schedules/index');
}
/**
* Performs a bulk operation on a set of schedules. Operation can be
* either activating, deactivating or canceling/deleting.
*
* @param int $page Return to this page afterwarsd (optional)
*/
public function bulk_action($page = 0)
public function bulk_action()
{
$action = Request::option('action');
$ids = Request::optionArray('ids');
......@@ -310,6 +293,6 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
PageLayout::postSuccess($message);
}
$this->redirect("admin/cronjobs/schedules/index/{$page}");
$this->redirect('admin/cronjobs/schedules/index');
}
}
......@@ -47,26 +47,18 @@ class Admin_Cronjobs_TasksController extends AuthenticatedController
/**
* Displays all available tasks.
*
* @param int $page Which page to display
*/
public function index_action($page = 0)
public function index_action()
{
$this->pagination = Pagination::create(
CronjobTask::countBySql('1'),
$page
);
$this->tasks = $this->pagination->loadSORMCollection(CronjobTask::class);
$this->tasks = CronjobTask::findBySQL('1');
}
/**
* Activates a tasks.
*
* @param CronjobTask $task Task to activate
* @param int $page Return to this page after activating (optional)
*/
public function activate_action(CronjobTask $task, $page = 0)
public function activate_action(CronjobTask $task)
{
$task->active = true;
$task->store();
......@@ -80,16 +72,15 @@ class Admin_Cronjobs_TasksController extends AuthenticatedController
$message = sprintf(_('Die Aufgabe und %u Cronjob(s) wurden aktiviert.'), $activated);
PageLayout::postSuccess($message);
}
$this->redirect("admin/cronjobs/tasks/index/{$page}#task-{$task->id}");
$this->redirect("admin/cronjobs/tasks/index#task-{$task->id}");
}
/**
* Deactivates a tasks.
*
* @param CronjobTask $task Task to deactivate
* @param int $page Return to this page after deactivating (optional)
*/
public function deactivate_action(CronjobTask $task, $page = 0)
public function deactivate_action(CronjobTask $task)
{
$task->active = false;
$task->store();
......@@ -103,16 +94,15 @@ class Admin_Cronjobs_TasksController extends AuthenticatedController
$message = sprintf(_('Die Aufgabe und %u Cronjob(s) wurden deaktiviert.'), $deactivated);
PageLayout::postSuccess($message);
}
$this->redirect("admin/cronjobs/tasks/index/{$page}#task-{$task->id}");
$this->redirect("admin/cronjobs/tasks/index#task-{$task->id}");
}
/**
* Deletes a tasks.
*
* @param CronjobTask $task Task to delete
* @param int $page Return to this page after deleting (optional)
*/
public function delete_action(CronjobTask $task, $page = 0)
public function delete_action(CronjobTask $task)
{
CSRFProtection::verifyUnsafeRequest();
$deleted = $task->schedules->count();
......@@ -121,16 +111,14 @@ class Admin_Cronjobs_TasksController extends AuthenticatedController
$message = sprintf(_('Die Aufgabe und %u Cronjob(s) wurden gelöscht.'), $deleted);
PageLayout::postSuccess($message);
$this->redirect("admin/cronjobs/tasks/index/{$page}");
$this->redirect('admin/cronjobs/tasks/index');
}
/**
* Performs a bulk operation on a set of tasks. Operation can be either
* activating, deactivating or deleting.
*
* @param int $page Return to this page afterwarsd (optional)
*/
public function bulk_action($page = 0)
public function bulk_action()
{
$action = Request::option('action');
$ids = Request::optionArray('ids');
......@@ -170,7 +158,7 @@ class Admin_Cronjobs_TasksController extends AuthenticatedController
PageLayout::postSuccess($message);
}
$this->redirect('admin/cronjobs/tasks/index/' . $page);
$this->redirect('admin/cronjobs/tasks/index');
}
/**
......
......@@ -18,7 +18,7 @@ $days_of_week = [
7 => _('Sonntag'),
];
?>
<form action="<?= $controller->edit($schedule, $page) ?>" method="post" class="cronjobs-edit default">
<form action="<?= $controller->edit($schedule) ?>" method="post" class="cronjobs-edit default">
<?= CSRFProtection::tokenTag() ?>
<h1>
......@@ -242,6 +242,6 @@ $days_of_week = [
<footer class="buttons">
<?= Button::createAccept(_('Speichern'), 'store') ?>
<?= LinkButton::createCancel('Abbrechen', $controller->indexURL($page)) ?>
<?= LinkButton::createCancel('Abbrechen', $controller->indexURL()) ?>
</footer>
</form>
......@@ -3,7 +3,6 @@
* @var CronjobTask[] $tasks
* @var CronjobSchedule[] $schedules
* @var Admin_Cronjobs_SchedulesController $controller
* @var Pagination $pagination
* @var int $total
* @var array $filter
*/
......@@ -15,8 +14,8 @@ use Studip\Button, Studip\LinkButton;
<fieldset>
<legend>
<?= _('Darstellung einschränken') ?>
<? if ($pagination->getTotal() != $total): ?>
<?= sprintf(_('Passend: %u von %u Cronjobs'), $pagination->getTotal(), $total) ?>
<? if (count($schedules) != $total): ?>
<?= sprintf(_('Passend: %u von %u Cronjobs'), count($schedules), $total) ?>
<? endif; ?>
</legend>
<label class="col-2">
......@@ -67,7 +66,7 @@ use Studip\Button, Studip\LinkButton;
</form>
<form class="cronjobs" action="<?= $controller->bulk($pagination->getCurrentPage()) ?>" method="post">
<form class="cronjobs" action="<?= $controller->bulk() ?>" method="post">
<?= CSRFProtection::tokenTag() ?>
<table class="default cronjobs sortable-table" data-sortlist="[[1, 0]]">
......@@ -114,12 +113,12 @@ use Studip\Button, Studip\LinkButton;
<? if (!$schedule->task->active): ?>
<?= Icon::create('checkbox-unchecked', Icon::ROLE_INACTIVE)->asImg(['title' => _('Cronjob kann nicht aktiviert werden, da die zugehörige ' . 'Aufgabe deaktiviert ist.')]) ?>
<? elseif ($schedule->active): ?>
<a href="<?= $controller->deactivate($schedule, $pagination->getCurrentPage()) ?>"
<a href="<?= $controller->deactivate($schedule) ?>"
data-behaviour="ajax-toggle">
<?= Icon::create('checkbox-checked')->asImg(['title' => _('Cronjob deaktivieren')]) ?>
</a>
<? else: ?>
<a href="<?= $controller->activate($schedule, $pagination->getCurrentPage()) ?>"
<a href="<?= $controller->activate($schedule) ?>"
data-behaviour="ajax-toggle">
<?= Icon::create('checkbox-unchecked')->asImg(['title' => _('Cronjob aktivieren')]) ?>
</a>
......@@ -137,7 +136,7 @@ use Studip\Button, Studip\LinkButton;
<a data-dialog href="<?= $controller->display($schedule) ?>">
<?= Icon::create('admin')->asImg(['title' => _('Cronjob anzeigen')]) ?>
</a>
<a href="<?= $controller->edit($schedule, $pagination->getCurrentPage()) ?>">
<a href="<?= $controller->edit($schedule) ?>">
<?= Icon::create('edit')->asImg(['title' => _('Cronjob bearbeiten')]) ?>
</a>
<a href="<?= $controller->link_for('admin/cronjobs/logs/schedule', $schedule) ?>">
......@@ -145,7 +144,7 @@ use Studip\Button, Studip\LinkButton;
</a>
<?= Icon::create('trash')->asInput([
'data-confirm' => _('Wollen Sie den ausgewählten Cronjob wirklich löschen?'),
'formaction' => $controller->cancelURL($schedule, $pagination->getCurrentPage()),
'formaction' => $controller->cancelURL($schedule),
]) ?>
</td>
</tr>
......@@ -161,12 +160,6 @@ use Studip\Button, Studip\LinkButton;
<option value="cancel"><?= _('Löschen') ?></option>
</select>
<?= Button::createAccept(_('Ausführen'), 'bulk') ?>
<section style="float: right">
<?= $pagination->asLinks(function ($page) use ($controller) {
return $controller->index($page);
}) ?>
</section>
</td>
</tr>
</tfoot>
......
<?php
/**
* @var Admin_Cronjobs_TasksController $controller
* @var Pagination $pagination
* @var CronjobTask[] $tasks
*/
use Studip\Button;
?>
<form action="<?= $controller->bulk($pagination->getCurrentPage()) ?>" method="post" class="default">
<form action="<?= $controller->bulk() ?>" method="post" class="default">
<?= CSRFProtection::tokenTag() ?>
<table class="default cronjobs sortable-table" data-sortlist="[[1,0]]">
......@@ -50,11 +49,11 @@ use Studip\Button;
<td><?= $task->isCore() ? _('Kern') : _('Plugin') ?></td>
<td style="text-align: center;" data-sort-value="'<?= (int) $task->active ?>'">
<? if ($task->active): ?>
<a href="<?= $controller->deactivate($task, $pagination->getCurrentPage()) ?>" data-behaviour="ajax-toggle">
<a href="<?= $controller->deactivate($task) ?>" data-behaviour="ajax-toggle">
<?= Icon::create('checkbox-checked')->asImg(['title' => _('Aufgabe deaktivieren')]) ?>
</a>
<? else: ?>
<a href="<?= $controller->activate($task, $pagination->getCurrentPage()) ?>" data-behaviour="ajax-toggle">
<a href="<?= $controller->activate($task) ?>" data-behaviour="ajax-toggle">
<?= Icon::create('checkbox-unchecked')->asImg(['title' => _('Aufgabe aktivieren')]) ?>
</a>
<? endif; ?>
......@@ -70,7 +69,7 @@ use Studip\Button;
</a>
<?= Icon::create('trash')->asInput([
'data-confirm' => _('Wollen Sie die ausgewählte Aufgabe wirklich löschen?'),
'formaction' => $controller->deleteURL($task, $pagination->getCurrentPage()),
'formaction' => $controller->deleteURL($task),
]) ?>
</td>
</tr>
......@@ -86,12 +85,6 @@ use Studip\Button;
<option value="delete"><?= _('Löschen') ?></option>
</select>
<?= Button::createAccept(_('Ausführen'), 'bulk') ?>
<section style="float: right">
<?= $pagination->asLinks(function ($page) use ($controller) {
return $controller->index($page);
}) ?>
</section>
</td>
</tr>
</tfoot>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment