Skip to content

Instantly share code, notes, and snippets.

@kinglozzer
Created March 15, 2018 16:30
Show Gist options
  • Save kinglozzer/076668800c9e4b35ec40d92b3e3f6a00 to your computer and use it in GitHub Desktop.
Save kinglozzer/076668800c9e4b35ec40d92b3e3f6a00 to your computer and use it in GitHub Desktop.
GridFieldDetailForm_ItemRequest:
extensions:
- GridFieldBetterButtonsBetterItemRequestExtension
<?php
class BetterButtonBetterNestedForm extends BetterButtonNestedForm
{
public function getButtonLink()
{
Requirements::javascript('mysite/javascript/GridFieldBetterButtonsNestedForm.js');
$link = 'betternestedform?action=' . $this->actionName;
return $this->gridFieldRequest->Link($link);
}
}
<?php
class BetterButtonsBetterNestedFormRequest extends BetterButtonsNestedFormRequest
{
public function Link()
{
return $this->controller->Link('betternestedform');
}
public function nestedFormSave($data, $form, $request)
{
$formAction = $this->getFormActionFromRequest($request);
$actionName = $formAction->getButtonName();
$result = $this->record->$actionName($data, $form, $request);
if ($result) {
$this->form->sessionMessage($result, 'good');
}
return <<<HTML
<span class="force-reload">Loading, please wait...</span>
HTML
;
}
}
<?php
class GridFieldBetterButtonsBetterItemRequestExtension extends Extension
{
private static $allowed_actions = [
'betternestedform'
];
/**
* Handles all custom action from DataObjects and hands them off to a sub-controller.
* e.g. /betternestedform?action=myDataObjectAction
*
* @param SS_HTTPRequest $request
* @return SS_HTTPResponse
*/
public function betternestedform(SS_HTTPRequest $request)
{
$req = BetterButtonsBetterNestedFormRequest::create($this, $this->owner, $this->owner->ItemEditForm());
return $req->handleRequest($request, DataModel::inst());
}
}
(function($) {
$.entwine('ss', function($) {
$('.better-button-dialog iframe').entwine({
onmatch: function() {
var self = this;
self.on('load', function() {
if (self.contents().find('.force-reload').length) {
window.location.reload(true);
}
});
}
})
});
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment