Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

BUGFIX: add capability of redirecting form actions.

Form actions assume that they are reloading the form afterwards. But
this is not always the case - for example "delete" action will redirect
back to the panel, so we need to be able to set the X-Pjax headers
accordingly.
  • Loading branch information...
commit 8b4b896578951f58b8b6b684fd004b6228adc235 1 parent 4f42b2e
Mateusz U mateusz authored
6 admin/code/LeftAndMain.php
View
@@ -106,7 +106,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
);
/**
- * @var PJAXResponseNegotiator
+ * @var PjaxResponseNegotiator
*/
protected $responseNegotiator;
@@ -416,12 +416,12 @@ public function show($request) {
/**
* Caution: Volatile API.
*
- * @return PJAXResponseNegotiator
+ * @return PjaxResponseNegotiator
*/
public function getResponseNegotiator() {
if(!$this->responseNegotiator) {
$controller = $this;
- $this->responseNegotiator = new PJAXResponseNegotiator(array(
+ $this->responseNegotiator = new PjaxResponseNegotiator(array(
'CurrentForm' => function() use(&$controller) {
return $controller->getEditForm()->forTemplate();
},
12 admin/javascript/LeftAndMain.Content.js
View
@@ -80,10 +80,18 @@
// as automatic browser ajax response redirects seem to discard the hash/fragment.
formData.push({name: 'BackURL', value:History.getPageUrl()});
+ // Some action buttons are redirecting to content areas as oposed to reloading the form.
+ // They will have pjax-content class on them.
+ var pjaxType = 'CurrentForm', pjaxSelector = '.cms-edit-form';
+ if ($(button).hasClass('pjax-content')) {
+ pjaxType = 'Content';
+ pjaxSelector = '.cms-content';
+ }
+
jQuery.ajax(jQuery.extend({
headers: {
- "X-Pjax" : "CurrentForm",
- 'X-Pjax-Selector': '.cms-edit-form'
+ "X-Pjax" : pjaxType,
+ 'X-Pjax-Selector': pjaxSelector
},
url: form.attr('action'),
data: formData,
3  forms/gridfield/GridFieldDetailForm.php
View
@@ -291,8 +291,9 @@ function ItemEditForm() {
if($this->record->ID !== 0) {
$actions->push(FormAction::create('doSave', _t('GridFieldDetailForm.Save', 'Save'))
->setUseButtonTag(true)->addExtraClass('ss-ui-action-constructive')->setAttribute('data-icon', 'accept'));
+ // The delete action will redirect, hence pjax-content class.
$actions->push(FormAction::create('doDelete', _t('GridFieldDetailForm.Delete', 'Delete'))
- ->addExtraClass('ss-ui-action-destructive'));
+ ->addExtraClass('ss-ui-action-destructive')->addExtraClass('pjax-content'));
}else{ // adding new record
//Change the Save label to 'Create'
$actions->push(FormAction::create('doSave', _t('GridFieldDetailForm.Create', 'Create'))
Please sign in to comment.
Something went wrong with that request. Please try again.