• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eliashaeussler / typo3-warming / 15644638902

13 Jun 2025 09:52PM UTC coverage: 91.686% (+1.1%) from 90.617%
15644638902

push

github

web-flow
[TASK] Update @eslint/js to v9.29.0

| datasource | package    | from   | to     |
| ---------- | ---------- | ------ | ------ |
| npm        | @eslint/js | 9.28.0 | 9.29.0 |

1610 of 1756 relevant lines covered (91.69%)

12.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.3
/Classes/Backend/ToolbarItems/CacheWarmupToolbarItem.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of the TYPO3 CMS extension "warming".
7
 *
8
 * Copyright (C) 2021-2025 Elias Häußler <elias@haeussler.dev>
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation, either version 2 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22
 */
23

24
namespace EliasHaeussler\Typo3Warming\Backend\ToolbarItems;
25

26
use EliasHaeussler\Typo3Warming\Configuration;
27
use EliasHaeussler\Typo3Warming\Domain;
28
use EliasHaeussler\Typo3Warming\View;
29
use TYPO3\CMS\Backend;
30
use TYPO3\CMS\Core;
31

32
/**
33
 * CacheWarmupToolbarItem
34
 *
35
 * @author Elias Häußler <elias@haeussler.dev>
36
 * @license GPL-2.0-or-later
37
 */
38
final readonly class CacheWarmupToolbarItem implements Backend\Toolbar\ToolbarItemInterface
39
{
40
    public function __construct(
35✔
41
        private Configuration\Configuration $configuration,
42
        private View\TemplateRenderer $renderer,
43
        private Domain\Repository\SiteRepository $siteRepository,
44
        Core\Page\PageRenderer $pageRenderer,
45
    ) {
46
        $pageRenderer->loadJavaScriptModule('@eliashaeussler/typo3-warming/backend/toolbar-menu.js');
35✔
47
        $pageRenderer->addInlineLanguageLabelArray([
35✔
48
            // Notification
49
            'warming.notification.aborted.title' => Configuration\Localization::translate('notification.aborted.title'),
35✔
50
            'warming.notification.aborted.message' => Configuration\Localization::translate('notification.aborted.message'),
35✔
51
            'warming.notification.error.title' => Configuration\Localization::translate('notification.error.title'),
35✔
52
            'warming.notification.error.message' => Configuration\Localization::translate('notification.error.message'),
35✔
53
            'warming.notification.action.showReport' => Configuration\Localization::translate('notification.action.showReport'),
35✔
54
            'warming.notification.action.retry' => Configuration\Localization::translate('notification.action.retry'),
35✔
55
            'warming.notification.noSitesSelected.title' => Configuration\Localization::translate('notification.noSitesSelected.title'),
35✔
56
            'warming.notification.noSitesSelected.message' => Configuration\Localization::translate('notification.noSitesSelected.message'),
35✔
57

58
            // Progress Modal
59
            'warming.modal.progress.title' => Configuration\Localization::translate('modal.progress.title'),
35✔
60
            'warming.modal.progress.button.report' => Configuration\Localization::translate('modal.progress.button.report'),
35✔
61
            'warming.modal.progress.button.retry' => Configuration\Localization::translate('modal.progress.button.retry'),
35✔
62
            'warming.modal.progress.button.close' => Configuration\Localization::translate('modal.progress.button.close'),
35✔
63
            'warming.modal.progress.failedCounter' => Configuration\Localization::translate('modal.progress.failedCounter'),
35✔
64
            'warming.modal.progress.allCounter' => Configuration\Localization::translate('modal.progress.allCounter'),
35✔
65
            'warming.modal.progress.placeholder' => Configuration\Localization::translate('modal.progress.placeholder'),
35✔
66

67
            // Report Modal
68
            'warming.modal.report.title' => Configuration\Localization::translate('modal.report.title'),
35✔
69
            'warming.modal.report.panel.failed' => Configuration\Localization::translate('modal.report.panel.failed'),
35✔
70
            'warming.modal.report.panel.failed.summary' => Configuration\Localization::translate('modal.report.panel.failed.summary'),
35✔
71
            'warming.modal.report.panel.successful' => Configuration\Localization::translate('modal.report.panel.successful'),
35✔
72
            'warming.modal.report.panel.successful.summary' => Configuration\Localization::translate('modal.report.panel.successful.summary'),
35✔
73
            'warming.modal.report.panel.excluded' => Configuration\Localization::translate('modal.report.panel.excluded'),
35✔
74
            'warming.modal.report.panel.excluded.summary' => Configuration\Localization::translate('modal.report.panel.excluded.summary'),
35✔
75
            'warming.modal.report.panel.excluded.sitemaps' => Configuration\Localization::translate('modal.report.panel.excluded.sitemaps'),
35✔
76
            'warming.modal.report.panel.excluded.urls' => Configuration\Localization::translate('modal.report.panel.excluded.urls'),
35✔
77
            'warming.modal.report.action.edit' => Configuration\Localization::translate('modal.report.action.edit'),
35✔
78
            'warming.modal.report.action.info' => Configuration\Localization::translate('modal.report.action.info'),
35✔
79
            'warming.modal.report.action.log' => Configuration\Localization::translate('modal.report.action.log'),
35✔
80
            'warming.modal.report.action.view' => Configuration\Localization::translate('modal.report.action.view'),
35✔
81
            'warming.modal.report.message.requestId' => Configuration\Localization::translate('modal.report.message.requestId'),
35✔
82
            'warming.modal.report.message.total' => Configuration\Localization::translate('modal.report.message.total'),
35✔
83
            'warming.modal.report.message.noUrlsCrawled' => Configuration\Localization::translate('modal.report.message.noUrlsCrawled'),
35✔
84

85
            // Sites Modal
86
            'warming.modal.sites.title' => Configuration\Localization::translate('modal.sites.title'),
35✔
87
            'warming.modal.sites.userAgent.action.successful' => Configuration\Localization::translate('modal.sites.userAgent.action.successful'),
35✔
88
            'warming.modal.sites.button.start' => Configuration\Localization::translate('modal.sites.button.start'),
35✔
89
        ]);
35✔
90
    }
91

92
    public function checkAccess(): bool
35✔
93
    {
94
        // Early return if cache warmup from backend toolbar is disabled globally
95
        if (!$this->configuration->isEnabledInToolbar()) {
35✔
96
            return false;
2✔
97
        }
98

99
        return $this->siteRepository->countAll() > 0;
34✔
100
    }
101

102
    public function getItem(): string
31✔
103
    {
104
        return $this->renderer->render('Toolbar/CacheWarmupToolbarItem');
31✔
105
    }
106

107
    public function hasDropDown(): bool
31✔
108
    {
109
        return false;
31✔
110
    }
111

112
    public function getDropDown(): string
×
113
    {
114
        return '';
×
115
    }
116

117
    /**
118
     * @return array<string, string>
119
     */
120
    public function getAdditionalAttributes(): array
31✔
121
    {
122
        return [
31✔
123
            'class' => 'tx-warming-toolbar-item',
31✔
124
        ];
31✔
125
    }
126

127
    public function getIndex(): int
35✔
128
    {
129
        // Clear cache toolbar item has index=25
130
        return 27;
35✔
131
    }
132
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc