Skip to content

Commit 93b1681

Browse files
committed
Migrate cronjob log clear to modern code
1 parent 0eefa53 commit 93b1681

File tree

7 files changed

+95
-85
lines changed

7 files changed

+95
-85
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* Deletes all entries of the cronjob log.
3+
*
4+
* @author Marcel Werk
5+
* @copyright 2001-2024 WoltLab GmbH
6+
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
7+
* @since 6.2
8+
* @woltlabExcludeBundle tiny
9+
*/
10+
11+
import { prepareRequest } from "WoltLabSuite/Core/Ajax/Backend";
12+
import { ApiResult, apiResultFromError, apiResultFromValue } from "../../Result";
13+
14+
export async function clearLogs(): Promise<ApiResult<[]>> {
15+
try {
16+
await prepareRequest(`${window.WSC_RPC_API_URL}core/cronjobs/logs`).delete().fetchAsJson();
17+
} catch (e) {
18+
return apiResultFromError(e);
19+
}
20+
21+
return apiResultFromValue([]);
22+
}

wcfsetup/install/files/acp/js/WCF.ACP.js

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -92,63 +92,6 @@ WCF.ACP.Cronjob.ExecutionHandler = Class.extend({
9292
}
9393
});
9494

95-
/**
96-
* Handles the cronjob log list.
97-
*/
98-
WCF.ACP.Cronjob.LogList = Class.extend({
99-
/**
100-
* error message dialog
101-
* @var jQuery
102-
*/
103-
_dialog: null,
104-
105-
/**
106-
* Initializes WCF.ACP.Cronjob.LogList object.
107-
*/
108-
init: function() {
109-
// bind event listener to delete cronjob log button
110-
$('.jsCronjobLogDelete').click(function() {
111-
WCF.System.Confirmation.show(WCF.Language.get('wcf.acp.cronjob.log.clear.confirm'), function(action) {
112-
if (action == 'confirm') {
113-
new WCF.Action.Proxy({
114-
autoSend: true,
115-
data: {
116-
actionName: 'clearAll',
117-
className: 'wcf\\data\\cronjob\\log\\CronjobLogAction'
118-
},
119-
success: function() {
120-
window.location.reload();
121-
}
122-
});
123-
}
124-
});
125-
});
126-
127-
// bind event listeners to error badges
128-
$('.jsCronjobError').click($.proxy(this._showError, this));
129-
},
130-
131-
/**
132-
* Shows certain error message
133-
*
134-
* @param object event
135-
*/
136-
_showError: function(event) {
137-
var $errorBadge = $(event.currentTarget);
138-
139-
if (this._dialog === null) {
140-
this._dialog = $('<div style="overflow: auto"><pre>' + $errorBadge.next().html() + '</pre></div>').hide().appendTo(document.body);
141-
this._dialog.wcfDialog({
142-
title: WCF.Language.get('wcf.acp.cronjob.log.error.details')
143-
});
144-
}
145-
else {
146-
this._dialog.html('<pre>' + $errorBadge.next().html() + '</pre>');
147-
this._dialog.wcfDialog('open');
148-
}
149-
}
150-
});
151-
15295
/**
15396
* Namespace for ACP package management.
15497
*/

wcfsetup/install/files/acp/templates/cronjobLogList.tpl

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
{include file='header' pageTitle='wcf.acp.cronjob.log'}
22

33
<script data-relocate="true">
4-
$(function() {
5-
WCF.Language.addObject({
6-
'wcf.acp.cronjob.log.clear.confirm': '{jslang}wcf.acp.cronjob.log.clear.confirm{/jslang}',
7-
'wcf.acp.cronjob.log.error.details': '{jslang}wcf.acp.cronjob.log.error.details{/jslang}'
4+
require(['WoltLabSuite/Core/Api/Cronjobs/Logs/ClearLogs', 'Ui/Notification', 'WoltLabSuite/Core/Component/Confirmation'], ({ clearLogs }, UiNotification, { confirmationFactory }) => {
5+
document.querySelectorAll('.jsCronjobLogDelete').forEach((button) => {
6+
button.addEventListener('click', async () => {
7+
const result = await confirmationFactory()
8+
.custom('{jslang}wcf.acp.cronjob.log.clear.confirm{/jslang}')
9+
.withoutMessage();
10+
11+
if (result) {
12+
const response = await clearLogs();
13+
if (response.ok) {
14+
UiNotification.show(undefined, () => {
15+
window.location.reload();
16+
});
17+
}
18+
}
19+
});
820
});
9-
10-
new WCF.ACP.Cronjob.LogList();
1121
});
1222
</script>
1323

wcfsetup/install/files/js/WoltLabSuite/Core/Api/Cronjobs/Logs/ClearLogs.js

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wcfsetup/install/files/lib/bootstrap/com.woltlab.wcf.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ static function (\wcf\event\endpoint\ControllerCollecting $event) {
134134
$event->register(new \wcf\system\endpoint\controller\core\comments\responses\RenderResponse);
135135
$event->register(new \wcf\system\endpoint\controller\core\comments\responses\RenderResponses);
136136
$event->register(new \wcf\system\endpoint\controller\core\comments\responses\UpdateResponse);
137+
$event->register(new \wcf\system\endpoint\controller\core\cronjobs\logs\ClearLogs);
137138
$event->register(new \wcf\system\endpoint\controller\core\messages\GetMentionSuggestions);
138139
$event->register(new \wcf\system\endpoint\controller\core\sessions\DeleteSession);
139140
}

wcfsetup/install/files/lib/data/cronjob/log/CronjobLogAction.class.php

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace wcf\data\cronjob\log;
44

55
use wcf\data\AbstractDatabaseObjectAction;
6-
use wcf\system\WCF;
76

87
/**
98
* Executes cronjob log-related actions.
@@ -22,25 +21,4 @@ class CronjobLogAction extends AbstractDatabaseObjectAction
2221
* @inheritDoc
2322
*/
2423
protected $className = CronjobLogEditor::class;
25-
26-
/**
27-
* @inheritDoc
28-
*/
29-
protected $requireACP = ['clearAll'];
30-
31-
/**
32-
* Validates the clear all action.
33-
*/
34-
public function validateClearAll()
35-
{
36-
WCF::getSession()->checkPermissions(['admin.management.canManageCronjob']);
37-
}
38-
39-
/**
40-
* Deletes the entire cronjob log.
41-
*/
42-
public function clearAll()
43-
{
44-
CronjobLogEditor::clearLogs();
45-
}
4624
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace wcf\system\endpoint\controller\core\cronjobs\logs;
4+
5+
use Laminas\Diactoros\Response\JsonResponse;
6+
use Psr\Http\Message\ResponseInterface;
7+
use Psr\Http\Message\ServerRequestInterface;
8+
use wcf\data\cronjob\log\CronjobLogEditor;
9+
use wcf\system\endpoint\DeleteRequest;
10+
use wcf\system\endpoint\IController;
11+
use wcf\system\WCF;
12+
13+
/**
14+
* API endpoint for the deletion of all entries of the cronjob log.
15+
*
16+
* @author Marcel Werk
17+
* @copyright 2001-2024 WoltLab GmbH
18+
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
19+
* @since 6.2
20+
*/
21+
#[DeleteRequest('/core/cronjobs/logs')]
22+
final class ClearLogs implements IController
23+
{
24+
#[\Override]
25+
public function __invoke(ServerRequestInterface $request, array $variables): ResponseInterface
26+
{
27+
WCF::getSession()->checkPermissions(['admin.management.canManageCronjob']);
28+
29+
CronjobLogEditor::clearLogs();
30+
31+
return new JsonResponse([]);
32+
}
33+
}

0 commit comments

Comments
 (0)