Merge pull request #44 from open-sausages/pulls/4.0/namespace-admin

Namespace Admin module
This commit is contained in:
Daniel Hensby 2016-08-17 11:45:37 +01:00 committed by GitHub
commit f759a7c6db
3 changed files with 35 additions and 7 deletions

View File

@ -154,11 +154,21 @@ class SS_Report extends ViewableData
{ {
return Controller::join_links( return Controller::join_links(
ReportAdmin::singleton()->Link('show'), ReportAdmin::singleton()->Link('show'),
get_class($this), $this->sanitiseClassName(get_class($this)),
$action $action
); );
} }
/**
* Sanitise a model class' name for inclusion in a link
*
* @param string $class
* @return string
*/
protected function sanitiseClassName($class) {
return str_replace('\\', '-', $class);
}
/** /**
* counts the number of objects returned * counts the number of objects returned

View File

@ -4,6 +4,7 @@ use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\SS_List; use SilverStripe\ORM\SS_List;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Security\PermissionProvider; use SilverStripe\Security\PermissionProvider;
use SilverStripe\Admin\LeftAndMain;
/** /**
* Reports section of the CMS. * Reports section of the CMS.
@ -43,6 +44,8 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider
*/ */
protected $reportObject; protected $reportObject;
private static $required_permission_codes = 'CMS_ACCESS_ReportAdmin';
public function init() public function init()
{ {
parent::init(); parent::init();
@ -93,6 +96,7 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider
public function Reports() public function Reports()
{ {
$output = new ArrayList(); $output = new ArrayList();
/** @var SS_Report $report */
foreach (SS_Report::get_reports() as $report) { foreach (SS_Report::get_reports() as $report) {
if ($report->canView()) { if ($report->canView()) {
$output->push($report); $output->push($report);
@ -103,7 +107,7 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider
public function handleAction($request, $action) public function handleAction($request, $action)
{ {
$this->reportClass = $request->param('ReportClass'); $this->reportClass = $this->unsanitiseClassName($request->param('ReportClass'));
// Check report // Check report
if ($this->reportClass) { if ($this->reportClass) {
@ -118,6 +122,16 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider
return parent::handleAction($request, $action); return parent::handleAction($request, $action);
} }
/**
* Unsanitise a model class' name from a URL param
*
* @param string $class
* @return string
*/
protected function unsanitiseClassName($class) {
return str_replace('-', '\\', $class);
}
/** /**
* Determine if we have reports and need * Determine if we have reports and need
* to display the "Reports" main menu item * to display the "Reports" main menu item
@ -136,6 +150,8 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider
/** /**
* Returns the Breadcrumbs for the ReportAdmin * Returns the Breadcrumbs for the ReportAdmin
*
* @param bool $unlinked
* @return ArrayList * @return ArrayList
*/ */
public function Breadcrumbs($unlinked = false) public function Breadcrumbs($unlinked = false)
@ -175,10 +191,11 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider
public function providePermissions() public function providePermissions()
{ {
$title = _t("ReportAdmin.MENUTITLE", LeftAndMain::menu_title_for_class($this->class));
return array( return array(
"CMS_ACCESS_ReportAdmin" => array( "CMS_ACCESS_ReportAdmin" => array(
'name' => _t('CMSMain.ACCESS', "Access to '{title}' section", array('title' => $title)), 'name' => _t('CMSMain.ACCESS', "Access to '{title}' section", array(
'title' => static::menu_title()
)),
'category' => _t('Permission.CMS_ACCESS_CATEGORY', 'CMS Access') 'category' => _t('Permission.CMS_ACCESS_CATEGORY', 'CMS Access')
) )
); );
@ -199,6 +216,7 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider
new GridFieldFooter() new GridFieldFooter()
); );
$gridField = new GridField('Reports', false, $this->Reports(), $gridFieldConfig); $gridField = new GridField('Reports', false, $this->Reports(), $gridFieldConfig);
/** @var GridFieldDataColumns $columns */
$columns = $gridField->getConfig()->getComponentByType('GridFieldDataColumns'); $columns = $gridField->getConfig()->getComponentByType('GridFieldDataColumns');
$columns->setDisplayFields(array( $columns->setDisplayFields(array(
'title' => _t('ReportAdmin.ReportTitle', 'Title'), 'title' => _t('ReportAdmin.ReportTitle', 'Title'),

View File

@ -3,9 +3,9 @@
<div class="cms-content-header north"> <div class="cms-content-header north">
<% with $EditForm %> <% with $EditForm %>
<div class="cms-content-header-info"> <div class="cms-content-header-info">
<% include BackLink_Button %> <% include SilverStripe\\Admin\\BackLink_Button %>
<% with $Controller %> <% with $Controller %>
<% include CMSBreadcrumbs %> <% include SilverStripe\\Admin\\CMSBreadcrumbs %>
<% end_with %> <% end_with %>
</div> </div>
<% end_with %> <% end_with %>