mirror of
https://github.com/silverstripe/silverstripe-externallinks.git
synced 2024-10-22 15:05:44 +00:00
Merge branch '2.4' into 2
This commit is contained in:
commit
e12e2aaece
@ -17,6 +17,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
start: function() {
|
start: function() {
|
||||||
|
var self = this;
|
||||||
// initiate a new job
|
// initiate a new job
|
||||||
$('.external-links-report__report-progress')
|
$('.external-links-report__report-progress')
|
||||||
.empty()
|
.empty()
|
||||||
@ -25,10 +26,14 @@
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
url: "admin/externallinks/start",
|
url: "admin/externallinks/start",
|
||||||
async: true,
|
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();
|
$('.external-links-report__create-report').poll();
|
||||||
}, 1000));
|
}, 1000));
|
||||||
},
|
},
|
||||||
error: function(e) {
|
error: function() {
|
||||||
if (typeof console !== 'undefined') {
|
|
||||||
console.log(e);
|
|
||||||
}
|
|
||||||
self.buttonReset();
|
self.buttonReset();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -8,6 +8,7 @@ use SilverStripe\ExternalLinks\Tasks\CheckExternalLinksTask;
|
|||||||
use SilverStripe\Control\Controller;
|
use SilverStripe\Control\Controller;
|
||||||
use Symbiote\QueuedJobs\Services\QueuedJobService;
|
use Symbiote\QueuedJobs\Services\QueuedJobService;
|
||||||
use SilverStripe\Control\Middleware\HTTPCacheControlMiddleware;
|
use SilverStripe\Control\Middleware\HTTPCacheControlMiddleware;
|
||||||
|
use SilverStripe\Security\Permission;
|
||||||
|
|
||||||
class CMSExternalLinksController extends Controller
|
class CMSExternalLinksController extends Controller
|
||||||
{
|
{
|
||||||
@ -24,6 +25,9 @@ class CMSExternalLinksController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function getJobStatus()
|
public function getJobStatus()
|
||||||
{
|
{
|
||||||
|
if (!Permission::check('CMS_ACCESS_CMSMain')) {
|
||||||
|
return $this->httpError(403, 'You do not have permission to access this resource');
|
||||||
|
}
|
||||||
// Set headers
|
// Set headers
|
||||||
HTTPCacheControlMiddleware::singleton()->setMaxAge(0);
|
HTTPCacheControlMiddleware::singleton()->setMaxAge(0);
|
||||||
$this->response
|
$this->response
|
||||||
@ -49,6 +53,9 @@ class CMSExternalLinksController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function start()
|
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
|
// return if the a job is already running
|
||||||
$status = BrokenExternalPageTrackStatus::get_latest();
|
$status = BrokenExternalPageTrackStatus::get_latest();
|
||||||
if ($status && $status->Status == 'Running') {
|
if ($status && $status->Status == 'Running') {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
namespace SilverStripe\ExternalLinks\Tests;
|
namespace SilverStripe\ExternalLinks\Tests;
|
||||||
|
|
||||||
use SilverStripe\Core\Injector\Injector;
|
use SilverStripe\Core\Injector\Injector;
|
||||||
use SilverStripe\Dev\SapphireTest;
|
use SilverStripe\Dev\FunctionalTest;
|
||||||
use SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatus;
|
use SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatus;
|
||||||
use SilverStripe\ExternalLinks\Reports\BrokenExternalLinksReport;
|
use SilverStripe\ExternalLinks\Reports\BrokenExternalLinksReport;
|
||||||
use SilverStripe\ExternalLinks\Tasks\CheckExternalLinksTask;
|
use SilverStripe\ExternalLinks\Tasks\CheckExternalLinksTask;
|
||||||
@ -13,7 +13,7 @@ use SilverStripe\ExternalLinks\Tests\Stubs\PretendLinkChecker;
|
|||||||
use SilverStripe\i18n\i18n;
|
use SilverStripe\i18n\i18n;
|
||||||
use SilverStripe\Reports\Report;
|
use SilverStripe\Reports\Report;
|
||||||
|
|
||||||
class ExternalLinksTest extends SapphireTest
|
class ExternalLinksTest extends FunctionalTest
|
||||||
{
|
{
|
||||||
|
|
||||||
protected static $fixture_file = 'ExternalLinksTest.yml';
|
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
|
// Ensure report does not list the link associated with an archived page
|
||||||
$this->assertEquals(3, BrokenExternalLinksReport::create()->sourceRecords()->count());
|
$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…
x
Reference in New Issue
Block a user