diff --git a/code/SubsiteAdmin.php b/code/SubsiteAdmin.php index 7ed122c..abea9a1 100644 --- a/code/SubsiteAdmin.php +++ b/code/SubsiteAdmin.php @@ -30,17 +30,4 @@ class SubsiteAdmin extends ModelAdmin { 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'); - } } diff --git a/code/SubsiteXHRController.php b/code/SubsiteXHRController.php new file mode 100644 index 0000000..944bbd7 --- /dev/null +++ b/code/SubsiteXHRController.php @@ -0,0 +1,38 @@ +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'); + } + +} diff --git a/javascript/LeftAndMain_Subsites.js b/javascript/LeftAndMain_Subsites.js index 5966440..8988eb6 100644 --- a/javascript/LeftAndMain_Subsites.js +++ b/javascript/LeftAndMain_Subsites.js @@ -58,7 +58,7 @@ */ $('.cms-container .cms-menu-list li a').entwine({ onclick: function(e) { - $('.cms-container').subsiteFetchPjaxFragment('admin/subsites/', 'SubsiteList'); + $('.cms-container').subsiteFetchPjaxFragment('SubsiteXHRController', 'SubsiteList'); this._super(e); } }); @@ -68,7 +68,7 @@ */ $('.cms-container .SubsiteAdmin .cms-edit-form fieldset.ss-gridfield').entwine({ onreload: function(e) { - $('.cms-container').subsiteFetchPjaxFragment('admin/subsites/', 'SubsiteList'); + $('.cms-container').subsiteFetchPjaxFragment('SubsiteXHRController', 'SubsiteList'); this._super(e); } }); @@ -81,7 +81,7 @@ */ $('.cms-container .cms-content-fields .subsite-model').entwine({ onadd: function(e) { - $('.cms-container').subsiteFetchPjaxFragment('admin/subsites/', 'SubsiteList'); + $('.cms-container').subsiteFetchPjaxFragment('SubsiteXHRController', 'SubsiteList'); this._super(e); } });