diff options
author | Ferdinand Thiessen <opensource@fthiessen.de> | 2024-06-29 16:29:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-29 16:29:34 +0200 |
commit | 682faad0b35efe2ab6d19d1531abe54231d778bf (patch) | |
tree | 164a89a29f9ec227a9dacbbdc66754e3d5e0c841 /core | |
parent | 02983f331743542594ce51f57c419205a13a378a (diff) | |
parent | 4f7907612c858cdfdfcc50580b9e48a1058dfb6b (diff) | |
download | nextcloud-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.php | 11 | ||||
-rw-r--r-- | core/Listener/BeforeTemplateRenderedListener.php | 10 | ||||
-rw-r--r-- | core/js/backgroundjobs.js | 13 | ||||
-rw-r--r-- | core/js/public/publicpage.js | 1 | ||||
-rw-r--r-- | core/src/ajax-cron.ts | 18 |
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 }) + } +}) |