Skip to content

Commit

Permalink
BUG Fix broken form actions on parent and nested gridfields
Browse files Browse the repository at this point in the history
  • Loading branch information
Damian Mooyman committed Aug 1, 2016
1 parent 8a5741a commit 9d31bb0
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 22 deletions.
4 changes: 2 additions & 2 deletions code/Report.php
Expand Up @@ -158,9 +158,9 @@ public function dataClass()

public function getLink($action = null)
{

return Controller::join_links(
AdminRootController::admin_url(),
Config::inst()->get('ReportAdmin', 'url_segment'),
ReportAdmin::singleton()->Link('show'),
get_class($this),
$action
);
Expand Down
41 changes: 21 additions & 20 deletions code/ReportAdmin.php
Expand Up @@ -18,19 +18,16 @@
*/
class ReportAdmin extends LeftAndMain implements PermissionProvider
{

private static $url_segment = 'reports';

private static $url_rule = '/$ReportClass/$Action';

private static $menu_title = 'Reports';

private static $template_path = null; // defaults to (project)/templates/email

private static $tree_class = 'SS_Report';

private static $url_handlers = array(
'$ReportClass/$Action' => 'handleAction'
'show/$ReportClass/$Action' => 'handleAction'
);

/**
Expand All @@ -50,13 +47,6 @@ public function init()
{
parent::init();

//set the report we are currently viewing from the URL
$this->reportClass = (isset($this->urlParams['ReportClass']) && $this->urlParams['ReportClass'] !== 'index')
? $this->urlParams['ReportClass']
: null;
$allReports = SS_Report::get_reports();
$this->reportObject = (isset($allReports[$this->reportClass])) ? $allReports[$this->reportClass] : null;

// Set custom options for TinyMCE specific to ReportAdmin
HTMLEditorConfig::get('cms')->setOption('content_css', project() . '/css/editor.css');
HTMLEditorConfig::get('cms')->setOption('Lang', i18n::get_tinymce_lang());
Expand Down Expand Up @@ -111,6 +101,22 @@ public function Reports()
return $output;
}

public function handleAction($request, $action) {
$this->reportClass = $request->param('ReportClass');

// Check report
if ($this->reportClass) {
$allReports = SS_Report::get_reports();
if (empty($allReports[$this->reportClass])) {
return $this->httpError(404);
}
$this->reportObject = $allReports[$this->reportClass];
}

// Delegate to sub-form
return parent::handleAction($request, $action);
}

/**
* Determine if we have reports and need
* to display the "Reports" main menu item
Expand Down Expand Up @@ -142,9 +148,9 @@ public function Breadcrumbs($unlinked = false)
if ($this->reportObject) {
//build breadcrumb trail to the current report
$items->push(new ArrayData(array(
'Title' => $this->reportObject->title(),
'Link' => Controller::join_links($this->Link(), '?' . http_build_query(array('q' => $this->request->requestVar('q'))))
)));
'Title' => $this->reportObject->title(),
'Link' => Controller::join_links($this->Link(), '?' . http_build_query(array('q' => $this->request->requestVar('q'))))
)));
}

return $items;
Expand All @@ -162,13 +168,8 @@ public function Link($action = null)
return $this->reportObject->getLink($action);
}

// Join parent action
if($action) {
return static::join_links(parent::Link('index'), $action);
}

// Basic link to this cms section
return parent::Link();
return parent::Link($action);
}

public function providePermissions()
Expand Down

0 comments on commit 9d31bb0

Please sign in to comment.