mirror of
https://github.com/silverstripe/silverstripe-externallinks.git
synced 2024-09-28 20:29:29 +02:00
Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2ee2bfbc8a | ||
|
b12e6868bc | ||
|
e12e2aaece | ||
|
8797f1f41e | ||
|
a01c16b829 | ||
|
20c2231bff | ||
|
bea1716d94 | ||
|
062319682e | ||
|
2560888df0 | ||
|
ae9dbddfb0 | ||
|
418d69813f | ||
|
8b27314490 |
5
.github/workflows/ci.yml
vendored
5
.github/workflows/ci.yml
vendored
@ -4,13 +4,8 @@ on:
|
||||
push:
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
# Every Wednesday at 2:00pm UTC
|
||||
schedule:
|
||||
- cron: '0 14 * * 3'
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: CI
|
||||
# Only run cron on the silverstripe account
|
||||
if: (github.event_name == 'schedule' && github.repository_owner == 'silverstripe') || (github.event_name != 'schedule')
|
||||
uses: silverstripe/gha-ci/.github/workflows/ci.yml@v1
|
||||
|
16
.github/workflows/dispatch-ci.yml
vendored
Normal file
16
.github/workflows/dispatch-ci.yml
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
name: Dispatch CI
|
||||
|
||||
on:
|
||||
# At 2:00 PM UTC, only on Wednesday and Thursday
|
||||
schedule:
|
||||
- cron: '0 14 * * 3,4'
|
||||
|
||||
jobs:
|
||||
dispatch-ci:
|
||||
name: Dispatch CI
|
||||
# Only run cron on the silverstripe account
|
||||
if: (github.event_name == 'schedule' && github.repository_owner == 'silverstripe') || (github.event_name != 'schedule')
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Dispatch CI
|
||||
uses: silverstripe/gha-dispatch-ci@v1
|
@ -17,6 +17,7 @@
|
||||
},
|
||||
|
||||
start: function() {
|
||||
var self = this;
|
||||
// initiate a new job
|
||||
$('.external-links-report__report-progress')
|
||||
.empty()
|
||||
@ -25,10 +26,14 @@
|
||||
$.ajax({
|
||||
url: "admin/externallinks/start",
|
||||
async: true,
|
||||
timeout: 3000
|
||||
timeout: 3000,
|
||||
success: function() {
|
||||
self.poll();
|
||||
},
|
||||
error: function() {
|
||||
self.buttonReset();
|
||||
}
|
||||
});
|
||||
|
||||
this.poll();
|
||||
},
|
||||
|
||||
/**
|
||||
@ -125,10 +130,7 @@
|
||||
$('.external-links-report__create-report').poll();
|
||||
}, 1000));
|
||||
},
|
||||
error: function(e) {
|
||||
if (typeof console !== 'undefined') {
|
||||
console.log(e);
|
||||
}
|
||||
error: function() {
|
||||
self.buttonReset();
|
||||
}
|
||||
});
|
||||
|
12
lang/en.yml
12
lang/en.yml
@ -9,18 +9,30 @@ en:
|
||||
other: '{count} Broken External Links'
|
||||
SINGULARNAME: 'Broken External Link'
|
||||
UNKNOWNRESPONSE: 'Unknown Response Code'
|
||||
db_HTTPCode: 'HTTP code'
|
||||
db_Link: Link
|
||||
has_one_Status: Status
|
||||
has_one_Track: Track
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrack:
|
||||
PLURALNAME: 'Broken External Page Tracks'
|
||||
PLURALS:
|
||||
one: 'A Broken External Page Track'
|
||||
other: '{count} Broken External Page Tracks'
|
||||
SINGULARNAME: 'Broken External Page Track'
|
||||
db_Processed: Processed
|
||||
has_many_BrokenLinks: 'Broken links'
|
||||
has_one_Page: Page
|
||||
has_one_Status: Status
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatus:
|
||||
PLURALNAME: 'Broken External Page Track Statuses'
|
||||
PLURALS:
|
||||
one: 'A Broken External Page Track Status'
|
||||
other: '{count} Broken External Page Track Statuses'
|
||||
SINGULARNAME: 'Broken External Page Track Status'
|
||||
db_JobInfo: 'Job info'
|
||||
db_Status: Status
|
||||
has_many_BrokenLinks: 'Broken links'
|
||||
has_many_TrackedPages: 'Tracked pages'
|
||||
SilverStripe\ExternalLinks\Reports\BrokenExternalLinksReport:
|
||||
EXTERNALBROKENLINKS: 'External broken links report'
|
||||
RUNREPORT: 'Create new report'
|
||||
|
12
lang/eo.yml
12
lang/eo.yml
@ -9,18 +9,30 @@ eo:
|
||||
other: '{count} rompitaj eksteraj ligiloj'
|
||||
SINGULARNAME: 'Rompita ekstera ligilo'
|
||||
UNKNOWNRESPONSE: 'Nekonata respondokodo'
|
||||
db_HTTPCode: HTTP-kodo
|
||||
db_Link: Ligilo
|
||||
has_one_Status: Stato
|
||||
has_one_Track: Spuri
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrack:
|
||||
PLURALNAME: 'Rompitaj eksteraj paĝaj trakoj'
|
||||
PLURALS:
|
||||
one: 'Unu rompita ekstera paĝa trako'
|
||||
other: '{count} rompitaj eksteraj paĝaj trakoj'
|
||||
SINGULARNAME: 'Rompita ekstera paĝa trako'
|
||||
db_Processed: Traktita
|
||||
has_many_BrokenLinks: 'Rompitaj ligiloj'
|
||||
has_one_Page: Paĝo
|
||||
has_one_Status: Stato
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatus:
|
||||
PLURALNAME: 'Stato de rompitaj eksteraj paĝaj trakoj'
|
||||
PLURALS:
|
||||
one: 'Unu stato de rompita ekstera paĝa trako'
|
||||
other: '{count} statoj de rompitaj eksteraj paĝaj trakoj'
|
||||
SINGULARNAME: 'Stato de rompita ekstera paĝa trako'
|
||||
db_JobInfo: 'Taska informo'
|
||||
db_Status: Stato
|
||||
has_many_BrokenLinks: 'Rompitaj ligiloj'
|
||||
has_many_TrackedPages: 'Spuritaj paĝoj'
|
||||
SilverStripe\ExternalLinks\Reports\BrokenExternalLinksReport:
|
||||
EXTERNALBROKENLINKS: 'Raporto pri eksteraj rompitaj ligiloj'
|
||||
RUNREPORT: 'Krei novan raporton'
|
||||
|
@ -5,24 +5,24 @@ it:
|
||||
NOTAVAILABLE: 'Server Non Disponibile'
|
||||
PLURALNAME: 'Link Esterni Orfani'
|
||||
PLURALS:
|
||||
many: '{count} Link Esterni Orfani'
|
||||
one: 'Un Link Esterno Orfano'
|
||||
other: '{count} Link Esterni Orfani'
|
||||
many: '{count} Link Esterni Orfani'
|
||||
SINGULARNAME: 'Link Esterno Orfano'
|
||||
UNKNOWNRESPONSE: 'Codice di Risposta Sconosciuto'
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrack:
|
||||
PLURALNAME: 'Tracce Pagine Esterne Orfane'
|
||||
PLURALS:
|
||||
many: '{count} Tracce Pagine Esterne Orfane'
|
||||
one: 'Una Traccia Pagina Esterna Orfana'
|
||||
other: '{count} Tracce Pagine Esterne Orfane'
|
||||
many: '{count} Tracce Pagine Esterne Orfane'
|
||||
SINGULARNAME: 'Traccia Pagina Esterna Orfana'
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatus:
|
||||
PLURALNAME: 'Stati Tracce Pagine Esterne Orfane'
|
||||
PLURALS:
|
||||
many: '{count} Stati Tracce Pagine Esterne Orfane'
|
||||
one: 'Uno Stato Traccia Pagina Esterna Orfana'
|
||||
other: '{count} Stati Tracce Pagine Esterne Orfane'
|
||||
many: '{count} Stati Tracce Pagine Esterne Orfane'
|
||||
SINGULARNAME: 'Stato Traccia Pagina Esterna Orfana'
|
||||
SilverStripe\ExternalLinks\Reports\BrokenExternalLinksReport:
|
||||
EXTERNALBROKENLINKS: 'Report link esterni orfani'
|
||||
|
@ -1,4 +1,6 @@
|
||||
pl:
|
||||
SilverStripe\ExternalLinks\Jobs\CheckExternalLinksJob:
|
||||
TITLE: 'Wyszukiwanie uszkodzonych linków zewnętrznych'
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalLink:
|
||||
NOTAVAILABLE: 'Serwer niedostępny'
|
||||
PLURALNAME: 'Uszkodzone linki zewnętrzne'
|
||||
@ -10,8 +12,6 @@ pl:
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatus:
|
||||
PLURALNAME: 'Statusy wykrywania wadliwych stron zewnętrznych'
|
||||
SINGULARNAME: 'Status wykrywania wadliwych stron zewnętrznych'
|
||||
SilverStripe\ExternalLinks\Jobs\CheckExternalLinksJob:
|
||||
TITLE: 'Wyszukiwanie uszkodzonych linków zewnętrznych'
|
||||
SilverStripe\ExternalLinks\Reports\BrokenExternalLinksReport:
|
||||
EXTERNALBROKENLINKS: 'Raport uszkodzonych linków zewnętrznych'
|
||||
RUNREPORT: 'Stwórz nowy raport'
|
||||
|
44
lang/sk.yml
Normal file
44
lang/sk.yml
Normal file
@ -0,0 +1,44 @@
|
||||
sk:
|
||||
SilverStripe\ExternalLinks\Jobs\CheckExternalLinksJob:
|
||||
TITLE: 'Kontrola externých nefunkčných odkazov'
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalLink:
|
||||
NOTAVAILABLE: 'Server nedostupný'
|
||||
PLURALNAME: 'Nefunkčné externé odkazy'
|
||||
PLURALS:
|
||||
few: '{count} nefunkčné externé odkazy'
|
||||
many: '{count} nefunkčných externých odkazov'
|
||||
one: 'Nefunkčný externý odkaz'
|
||||
other: '{count} nefunkčných externých odkazov'
|
||||
SINGULARNAME: 'Nefunkčný externý odkaz'
|
||||
UNKNOWNRESPONSE: 'Neznámy kód odpovede'
|
||||
db_HTTPCode: 'HTTP kód'
|
||||
db_Link: Odkaz
|
||||
has_one_Status: Stav
|
||||
has_one_Track: Stopa
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrack:
|
||||
PLURALNAME: 'Nefunkčné externé stopy stránok'
|
||||
PLURALS:
|
||||
few: '{count} nefunkčné externé stopy stránky'
|
||||
many: '{count} nefunkčných externých stôp stránky'
|
||||
one: 'Nefunkčná externá stopa stránky'
|
||||
other: '{count} nefunkčných externých stôp stránky'
|
||||
SINGULARNAME: 'Nefunkčná externá stopa stránky'
|
||||
db_Processed: Spracované
|
||||
has_many_BrokenLinks: 'Nefunkčné odkazy'
|
||||
has_one_Page: Stránka
|
||||
has_one_Status: Stav
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatus:
|
||||
PLURALNAME: 'Stavy nefunkčných externých stôp stránky'
|
||||
PLURALS:
|
||||
few: '{count} stavy nefunkčných externých stôp stránky'
|
||||
many: '{count} stavov nefunkčných externých stôp stránky'
|
||||
one: 'Stav nefunkčnej externej stopy stránky'
|
||||
other: '{count} stavov nefunkčných externých stôp stránky'
|
||||
SINGULARNAME: 'Stav nefunkčnej externej stopy stránky'
|
||||
db_JobInfo: 'Informácie o úlohe'
|
||||
db_Status: Stav
|
||||
has_many_BrokenLinks: 'Nefunkčné odkazy'
|
||||
has_many_TrackedPages: 'Sledované stránky'
|
||||
SilverStripe\ExternalLinks\Reports\BrokenExternalLinksReport:
|
||||
EXTERNALBROKENLINKS: 'Správa o externých nefunkčných odkazoch'
|
||||
RUNREPORT: 'Vytvoriť novú správu'
|
12
lang/sl.yml
12
lang/sl.yml
@ -5,27 +5,27 @@ sl:
|
||||
NOTAVAILABLE: 'Strežnik ni na voljo'
|
||||
PLURALNAME: 'Nedostopne zunanje povezave'
|
||||
PLURALS:
|
||||
one: 'Nedostopna zunanja povezava'
|
||||
two: '{count} nedostopni zunanji povezavi'
|
||||
few: '{count} nedostopnih zunanjih povezav'
|
||||
one: 'Nedostopna zunanja povezava'
|
||||
other: '{count} nedostopnih zunanjih povezav'
|
||||
two: '{count} nedostopni zunanji povezavi'
|
||||
SINGULARNAME: 'Nedostopna zunanja povezava'
|
||||
UNKNOWNRESPONSE: 'Neznana šifra odziva'
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrack:
|
||||
PLURALNAME: 'Preverjanja nedostopnih zunanjih povezav'
|
||||
PLURALS:
|
||||
one: 'Preverjanje nedostopnih zunanjih povezav'
|
||||
two: '{count} preverjanji nedostopnih zunanjih povezav'
|
||||
few: '{count} preverjanj nedostopnih zunanjih povezav'
|
||||
one: 'Preverjanje nedostopnih zunanjih povezav'
|
||||
other: '{count} preverjanj nedostopnih zunanjih povezav'
|
||||
two: '{count} preverjanji nedostopnih zunanjih povezav'
|
||||
SINGULARNAME: 'Preverjanje nedostopnih zunanjih povezav'
|
||||
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatus:
|
||||
PLURALNAME: 'Status preverjanj'
|
||||
PLURALS:
|
||||
one: 'Status preverjanja'
|
||||
two: '{count} statusa preverjanj'
|
||||
few: '{count} statusov preverjanj'
|
||||
one: 'Status preverjanja'
|
||||
other: '{count} statusov preverjanj'
|
||||
two: '{count} statusa preverjanj'
|
||||
SINGULARNAME: 'Status preverjanja'
|
||||
SilverStripe\ExternalLinks\Reports\BrokenExternalLinksReport:
|
||||
EXTERNALBROKENLINKS: 'Poročilo o nedostopnih zunanjih povezavah'
|
||||
|
@ -8,6 +8,7 @@ use SilverStripe\ExternalLinks\Tasks\CheckExternalLinksTask;
|
||||
use SilverStripe\Control\Controller;
|
||||
use Symbiote\QueuedJobs\Services\QueuedJobService;
|
||||
use SilverStripe\Control\Middleware\HTTPCacheControlMiddleware;
|
||||
use SilverStripe\Security\Permission;
|
||||
|
||||
class CMSExternalLinksController extends Controller
|
||||
{
|
||||
@ -24,6 +25,9 @@ class CMSExternalLinksController extends Controller
|
||||
*/
|
||||
public function getJobStatus()
|
||||
{
|
||||
if (!Permission::check('CMS_ACCESS_CMSMain')) {
|
||||
return $this->httpError(403, 'You do not have permission to access this resource');
|
||||
}
|
||||
// Set headers
|
||||
HTTPCacheControlMiddleware::singleton()->setMaxAge(0);
|
||||
$this->response
|
||||
@ -49,6 +53,9 @@ class CMSExternalLinksController extends Controller
|
||||
*/
|
||||
public function start()
|
||||
{
|
||||
if (!Permission::check('CMS_ACCESS_CMSMain')) {
|
||||
return $this->httpError(403, 'You do not have permission to access this resource');
|
||||
}
|
||||
// return if the a job is already running
|
||||
$status = BrokenExternalPageTrackStatus::get_latest();
|
||||
if ($status && $status->Status == 'Running') {
|
||||
|
@ -3,7 +3,7 @@
|
||||
namespace SilverStripe\ExternalLinks\Tests;
|
||||
|
||||
use SilverStripe\Core\Injector\Injector;
|
||||
use SilverStripe\Dev\SapphireTest;
|
||||
use SilverStripe\Dev\FunctionalTest;
|
||||
use SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatus;
|
||||
use SilverStripe\ExternalLinks\Reports\BrokenExternalLinksReport;
|
||||
use SilverStripe\ExternalLinks\Tasks\CheckExternalLinksTask;
|
||||
@ -13,7 +13,7 @@ use SilverStripe\ExternalLinks\Tests\Stubs\PretendLinkChecker;
|
||||
use SilverStripe\i18n\i18n;
|
||||
use SilverStripe\Reports\Report;
|
||||
|
||||
class ExternalLinksTest extends SapphireTest
|
||||
class ExternalLinksTest extends FunctionalTest
|
||||
{
|
||||
|
||||
protected static $fixture_file = 'ExternalLinksTest.yml';
|
||||
@ -125,4 +125,29 @@ class ExternalLinksTest extends SapphireTest
|
||||
// Ensure report does not list the link associated with an archived page
|
||||
$this->assertEquals(3, BrokenExternalLinksReport::create()->sourceRecords()->count());
|
||||
}
|
||||
|
||||
public function provideGetJobStatus(): array
|
||||
{
|
||||
return [
|
||||
'ADMIN - valid permission' => ['ADMIN', 200],
|
||||
'CMS_ACCESS_CMSMain - valid permission' => ['CMS_ACCESS_CMSMain', 200],
|
||||
'VIEW_SITE - not enough permission' => ['VIEW_SITE', 403],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provideGetJobStatus
|
||||
*/
|
||||
public function testGetJobStatus(
|
||||
string $permission,
|
||||
int $expectedResponseCode
|
||||
): void {
|
||||
$this->logInWithPermission($permission);
|
||||
|
||||
$response = $this->get('admin/externallinks/start', null, ['Accept' => 'application/json']);
|
||||
$this->assertEquals($expectedResponseCode, $response->getStatusCode());
|
||||
|
||||
$response = $this->get('admin/externallinks/getJobStatus', null, ['Accept' => 'application/json']);
|
||||
$this->assertEquals($expectedResponseCode, $response->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user