mirror of
https://github.com/silverstripe/silverstripe-reports
synced 2024-10-22 11:05:53 +02:00
BUGFIX Reconstruct form before returning from LeftAndMain and CMSMain controller actions, in order to avoid stale form fields or form actions (e.g. after hitting CMSMain->unpublish(), the 'unpublish' FormAction has to be removed from the existing form)
This commit is contained in:
parent
824f7451a0
commit
4eac937da6
@ -490,8 +490,8 @@ JS;
|
|||||||
return $this->RootForm();
|
return $this->RootForm();
|
||||||
} else if($id) {
|
} else if($id) {
|
||||||
return new Form($this, "EditForm", new FieldSet(
|
return new Form($this, "EditForm", new FieldSet(
|
||||||
new LabelField('PageDoesntExistLabel',_t('CMSMain.PAGENOTEXISTS',"This page doesn't exist"))), new FieldSet());
|
new LabelField('PageDoesntExistLabel',_t('CMSMain.PAGENOTEXISTS',"This page doesn't exist"))), new FieldSet()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -575,12 +575,13 @@ JS;
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
$form->loadDataFrom($publishedRecord);
|
// Reload form, data and actions might have changed
|
||||||
|
$form = $this->getEditForm($publishedRecord->ID);
|
||||||
} else {
|
} else {
|
||||||
$this->response->addHeader('X-Status', _t('LeftAndMain.SAVEDUP'));
|
$this->response->addHeader('X-Status', _t('LeftAndMain.SAVEDUP'));
|
||||||
|
|
||||||
// write process might've changed the record, so we reload before returning
|
// Reload form, data and actions might have changed
|
||||||
$form->loadDataFrom($record);
|
$form = $this->getEditForm($record->ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $form->formHtmlContent();
|
return $form->formHtmlContent();
|
||||||
@ -995,18 +996,20 @@ JS;
|
|||||||
}
|
}
|
||||||
|
|
||||||
function unpublish($data, $form) {
|
function unpublish($data, $form) {
|
||||||
$page = DataObject::get_by_id("SiteTree", $data['ID']);
|
$className = $this->stat('tree_class');
|
||||||
|
$record = DataObject::get_by_id($className, $data['ID']);
|
||||||
|
|
||||||
if($page && !$page->canDeleteFromLive()) return Security::permissionFailure($this);
|
if($record && !$record->canDeleteFromLive()) return Security::permissionFailure($this);
|
||||||
|
|
||||||
$page->doUnpublish();
|
$record->doUnpublish();
|
||||||
|
|
||||||
$this->response->addHeader(
|
$this->response->addHeader(
|
||||||
'X-Status',
|
'X-Status',
|
||||||
sprintf(_t('CMSMain.REMOVEDPAGE',"Removed '%s' from the published site"),$page->Title)
|
sprintf(_t('CMSMain.REMOVEDPAGE',"Removed '%s' from the published site"),$record->Title)
|
||||||
);
|
);
|
||||||
|
|
||||||
$form->loadDataFrom($page);
|
// Reload form, data and actions might have changed
|
||||||
|
$form = $this->getEditForm($record->ID);
|
||||||
|
|
||||||
return $form->formHtmlContent();
|
return $form->formHtmlContent();
|
||||||
}
|
}
|
||||||
@ -1487,7 +1490,9 @@ JS;
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
$form = $this->getEditForm($id);
|
// Reload form, data and actions might have changed
|
||||||
|
$form = $this->getEditForm($restoredPage->ID);
|
||||||
|
|
||||||
return $form->formHtmlContent();
|
return $form->formHtmlContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1509,7 +1514,9 @@ JS;
|
|||||||
$newPage->write();
|
$newPage->write();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reload form, data and actions might have changed
|
||||||
$form = $this->getEditForm($newPage->ID);
|
$form = $this->getEditForm($newPage->ID);
|
||||||
|
|
||||||
return $form->formHtmlContent();
|
return $form->formHtmlContent();
|
||||||
} else {
|
} else {
|
||||||
user_error("CMSMain::duplicate() Bad ID: '$id'", E_USER_WARNING);
|
user_error("CMSMain::duplicate() Bad ID: '$id'", E_USER_WARNING);
|
||||||
@ -1528,7 +1535,9 @@ JS;
|
|||||||
|
|
||||||
$newPage = $page->duplicateWithChildren();
|
$newPage = $page->duplicateWithChildren();
|
||||||
|
|
||||||
|
// Reload form, data and actions might have changed
|
||||||
$form = $this->getEditForm($newPage->ID);
|
$form = $this->getEditForm($newPage->ID);
|
||||||
|
|
||||||
return $form->formHtmlContent();
|
return $form->formHtmlContent();
|
||||||
} else {
|
} else {
|
||||||
user_error("CMSMain::duplicate() Bad ID: '$id'", E_USER_WARNING);
|
user_error("CMSMain::duplicate() Bad ID: '$id'", E_USER_WARNING);
|
||||||
|
@ -614,7 +614,7 @@ class LeftAndMain extends Controller {
|
|||||||
$this->response->addHeader('X-Status', _t('LeftAndMain.SAVEDUP'));
|
$this->response->addHeader('X-Status', _t('LeftAndMain.SAVEDUP'));
|
||||||
|
|
||||||
// write process might've changed the record, so we reload before returning
|
// write process might've changed the record, so we reload before returning
|
||||||
$form->loadDataFrom($record);
|
$form = $this->getEditForm($record->ID);
|
||||||
|
|
||||||
return $form->formHtmlContent();
|
return $form->formHtmlContent();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user