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

eliashaeussler / typo3-warming / 14429819143

13 Apr 2025 01:13PM UTC coverage: 90.562% (-0.9%) from 91.486%
14429819143

Pull #793

github

eliashaeussler
[!!!][FEATURE] Allow to exclude sites and languages from warming

Resolves: #777
Pull Request #793: [!!!][FEATURE] Allow to exclude sites and languages from warming

116 of 135 new or added lines in 10 files covered. (85.93%)

7 existing lines in 3 files now uncovered.

1161 of 1282 relevant lines covered (90.56%)

8.47 hits per line

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

96.08
/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 class CacheWarmupToolbarItem implements Backend\Toolbar\ToolbarItemInterface
39
{
40
    public function __construct(
22✔
41
        private readonly Configuration\Configuration $configuration,
42
        private readonly View\TemplateRenderer $renderer,
43
        private readonly Domain\Repository\SiteRepository $siteRepository,
44
        Core\Page\PageRenderer $pageRenderer,
45
    ) {
46
        $pageRenderer->loadJavaScriptModule('@eliashaeussler/typo3-warming/backend/toolbar-menu.js');
22✔
47
        $pageRenderer->addInlineLanguageLabelArray([
22✔
48
            // Notification
49
            'warming.notification.aborted.title' => Configuration\Localization::translate('notification.aborted.title'),
22✔
50
            'warming.notification.aborted.message' => Configuration\Localization::translate('notification.aborted.message'),
22✔
51
            'warming.notification.error.title' => Configuration\Localization::translate('notification.error.title'),
22✔
52
            'warming.notification.error.message' => Configuration\Localization::translate('notification.error.message'),
22✔
53
            'warming.notification.action.showReport' => Configuration\Localization::translate('notification.action.showReport'),
22✔
54
            'warming.notification.action.retry' => Configuration\Localization::translate('notification.action.retry'),
22✔
55
            'warming.notification.noSitesSelected.title' => Configuration\Localization::translate('notification.noSitesSelected.title'),
22✔
56
            'warming.notification.noSitesSelected.message' => Configuration\Localization::translate('notification.noSitesSelected.message'),
22✔
57

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

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

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

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

96
        return $this->siteRepository->countAll() > 0;
21✔
97
    }
98

99
    public function getItem(): string
19✔
100
    {
101
        return $this->renderer->render('Toolbar/CacheWarmupToolbarItem');
19✔
102
    }
103

104
    public function hasDropDown(): bool
19✔
105
    {
106
        return false;
19✔
107
    }
108

UNCOV
109
    public function getDropDown(): string
×
110
    {
UNCOV
111
        return '';
×
112
    }
113

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

124
    public function getIndex(): int
22✔
125
    {
126
        // Clear cache toolbar item has index=25
127
        return 27;
22✔
128
    }
129
}
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