mirror of
https://github.com/silverstripe/silverstripe-subsites
synced 2024-10-22 09:05:55 +00:00
BUG Move the SubsiteList PJAX request to a dedicated Controller.
Currently the request cannot be made if one doesn't have access to the SubsiteAdmin section, which often happens with subsite-specific admins.
This commit is contained in:
parent
fc07486f9b
commit
91cca0c64d
@ -30,17 +30,4 @@ class SubsiteAdmin extends ModelAdmin {
|
|||||||
return $form;
|
return $form;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getResponseNegotiator() {
|
|
||||||
$negotiator = parent::getResponseNegotiator();
|
|
||||||
$self = $this;
|
|
||||||
// Register a new callback
|
|
||||||
$negotiator->setCallback('SubsiteList', function() use(&$self) {
|
|
||||||
return $self->SubsiteList();
|
|
||||||
});
|
|
||||||
return $negotiator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function SubsiteList() {
|
|
||||||
return $this->renderWith('SubsiteList');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
38
code/SubsiteXHRController.php
Normal file
38
code/SubsiteXHRController.php
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Section-agnostic PJAX controller.
|
||||||
|
*/
|
||||||
|
class SubsiteXHRController extends LeftAndMain {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Relax the access permissions, so anyone who has access to any CMS subsite can access this controller.
|
||||||
|
*/
|
||||||
|
public function canView($member = null) {
|
||||||
|
if (parent::canView()) return true;
|
||||||
|
|
||||||
|
if (Subsite::all_accessible_sites()->count()>0) return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getResponseNegotiator() {
|
||||||
|
$negotiator = parent::getResponseNegotiator();
|
||||||
|
$self = $this;
|
||||||
|
|
||||||
|
// Register a new callback
|
||||||
|
$negotiator->setCallback('SubsiteList', function() use(&$self) {
|
||||||
|
return $self->SubsiteList();
|
||||||
|
});
|
||||||
|
|
||||||
|
return $negotiator;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide the list of available subsites as a cms-section-agnostic PJAX handler.
|
||||||
|
*/
|
||||||
|
public function SubsiteList() {
|
||||||
|
return $this->renderWith('SubsiteList');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -58,7 +58,7 @@
|
|||||||
*/
|
*/
|
||||||
$('.cms-container .cms-menu-list li a').entwine({
|
$('.cms-container .cms-menu-list li a').entwine({
|
||||||
onclick: function(e) {
|
onclick: function(e) {
|
||||||
$('.cms-container').subsiteFetchPjaxFragment('admin/subsites/', 'SubsiteList');
|
$('.cms-container').subsiteFetchPjaxFragment('SubsiteXHRController', 'SubsiteList');
|
||||||
this._super(e);
|
this._super(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -68,7 +68,7 @@
|
|||||||
*/
|
*/
|
||||||
$('.cms-container .SubsiteAdmin .cms-edit-form fieldset.ss-gridfield').entwine({
|
$('.cms-container .SubsiteAdmin .cms-edit-form fieldset.ss-gridfield').entwine({
|
||||||
onreload: function(e) {
|
onreload: function(e) {
|
||||||
$('.cms-container').subsiteFetchPjaxFragment('admin/subsites/', 'SubsiteList');
|
$('.cms-container').subsiteFetchPjaxFragment('SubsiteXHRController', 'SubsiteList');
|
||||||
this._super(e);
|
this._super(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -81,7 +81,7 @@
|
|||||||
*/
|
*/
|
||||||
$('.cms-container .cms-content-fields .subsite-model').entwine({
|
$('.cms-container .cms-content-fields .subsite-model').entwine({
|
||||||
onadd: function(e) {
|
onadd: function(e) {
|
||||||
$('.cms-container').subsiteFetchPjaxFragment('admin/subsites/', 'SubsiteList');
|
$('.cms-container').subsiteFetchPjaxFragment('SubsiteXHRController', 'SubsiteList');
|
||||||
this._super(e);
|
this._super(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user