aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2024-06-29 16:29:34 +0200
committerGitHub <noreply@github.com>2024-06-29 16:29:34 +0200
commit682faad0b35efe2ab6d19d1531abe54231d778bf (patch)
tree164a89a29f9ec227a9dacbbdc66754e3d5e0c841 /core
parent02983f331743542594ce51f57c419205a13a378a (diff)
parent4f7907612c858cdfdfcc50580b9e48a1058dfb6b (diff)
downloadnextcloud-server-682faad0b35efe2ab6d19d1531abe54231d778bf.tar.gz
nextcloud-server-682faad0b35efe2ab6d19d1531abe54231d778bf.zip
Merge pull request #46009 from nextcloud/refactor/ajax-cron
refactor(cron): Use `IAppConfig` for cron settings and migrate ajax cron away from jQuery
Diffstat (limited to 'core')
-rw-r--r--core/Command/Background/Base.php11
-rw-r--r--core/Listener/BeforeTemplateRenderedListener.php10
-rw-r--r--core/js/backgroundjobs.js13
-rw-r--r--core/js/public/publicpage.js1
-rw-r--r--core/src/ajax-cron.ts18
5 files changed, 29 insertions, 24 deletions
diff --git a/core/Command/Background/Base.php b/core/Command/Background/Base.php
index e9946ad4cc7..364c9fa3c0c 100644
--- a/core/Command/Background/Base.php
+++ b/core/Command/Background/Base.php
@@ -5,7 +5,7 @@
*/
namespace OC\Core\Command\Background;
-use OCP\IConfig;
+use OCP\IAppConfig;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
@@ -17,18 +17,17 @@ use Symfony\Component\Console\Output\OutputInterface;
* Subclasses will override the getMode() function to specify the mode to configure.
*/
abstract class Base extends Command {
- abstract protected function getMode();
+ abstract protected function getMode(): string;
public function __construct(
- protected IConfig $config,
+ protected IAppConfig $config,
) {
parent::__construct();
}
protected function configure(): void {
$mode = $this->getMode();
- $this
- ->setName("background:$mode")
+ $this->setName("background:$mode")
->setDescription("Use $mode to run background jobs");
}
@@ -43,7 +42,7 @@ abstract class Base extends Command {
*/
protected function execute(InputInterface $input, OutputInterface $output): int {
$mode = $this->getMode();
- $this->config->setAppValue('core', 'backgroundjobs_mode', $mode);
+ $this->config->setValueString('core', 'backgroundjobs_mode', $mode);
$output->writeln("Set mode for background jobs to '$mode'");
return 0;
}
diff --git a/core/Listener/BeforeTemplateRenderedListener.php b/core/Listener/BeforeTemplateRenderedListener.php
index 0eff924d1f8..e3533f1c6ce 100644
--- a/core/Listener/BeforeTemplateRenderedListener.php
+++ b/core/Listener/BeforeTemplateRenderedListener.php
@@ -13,12 +13,14 @@ use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
-use OCP\IConfig;
+use OCP\IAppConfig;
use OCP\Util;
/** @template-implements IEventListener<BeforeLoginTemplateRenderedEvent|BeforeTemplateRenderedEvent> */
class BeforeTemplateRenderedListener implements IEventListener {
- public function __construct(private IConfig $config) {
+ public function __construct(
+ private IAppConfig $appConfig,
+ ) {
}
public function handle(Event $event): void {
@@ -53,8 +55,8 @@ class BeforeTemplateRenderedListener implements IEventListener {
// If installed and background job is set to ajax, add dedicated script
- if ($this->config->getAppValue('core', 'backgroundjobs_mode', 'ajax') == 'ajax') {
- Util::addScript('core', 'backgroundjobs');
+ if ($this->appConfig->getValueString('core', 'backgroundjobs_mode', 'ajax') === 'ajax') {
+ Util::addScript('core', 'ajax-cron');
}
}
}
diff --git a/core/js/backgroundjobs.js b/core/js/backgroundjobs.js
deleted file mode 100644
index ec5ae24d262..00000000000
--- a/core/js/backgroundjobs.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * SPDX-FileCopyrightText: 2012 Jakob Sack owncloud@jakobsack.de
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
-
-// start worker once page has loaded
-window.addEventListener('DOMContentLoaded', function(){
- $.get( OC.getRootPath()+'/cron.php' );
-
- $('.section .icon-info').tooltip({
- placement: 'right'
- });
-});
diff --git a/core/js/public/publicpage.js b/core/js/public/publicpage.js
index af473045413..340fb56d9f1 100644
--- a/core/js/public/publicpage.js
+++ b/core/js/public/publicpage.js
@@ -14,7 +14,6 @@ window.addEventListener('DOMContentLoaded', function () {
$('#remote_address').focus();
});
-
$(document).mouseup(function(e) {
var toggle = $('#body-public').find('.header-right .menutoggle');
var container = toggle.next('.popovermenu');
diff --git a/core/src/ajax-cron.ts b/core/src/ajax-cron.ts
new file mode 100644
index 00000000000..d903a3596ea
--- /dev/null
+++ b/core/src/ajax-cron.ts
@@ -0,0 +1,18 @@
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { getRootUrl } from '@nextcloud/router'
+import logger from './logger'
+
+window.addEventListener('DOMContentLoaded', async () => {
+ // When the page is loaded send GET to the cron endpoint to trigger background jobs
+ try {
+ logger.debug('Running web cron')
+ await window.fetch(`${getRootUrl()}/cron.php`)
+ logger.debug('Web cron successfull')
+ } catch (e) {
+ logger.debug('Running web cron failed', { error: e })
+ }
+})