diff --git a/code/controllers/ReportAdmin.php b/code/controllers/ReportAdmin.php index 8e3f370e..4d9c6a9e 100644 --- a/code/controllers/ReportAdmin.php +++ b/code/controllers/ReportAdmin.php @@ -58,9 +58,9 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider { return false; } - function currentPageID() { + function currentReport() { $id = parent::currentPageID(); - $reports = SS_Report::get_reports('ReportAdmin'); + $reports = SS_Report::get_reports(); return (isset($reports[$id])) ? $reports[$id] : null; } @@ -72,7 +72,7 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider { */ public function Reports() { $output = new ArrayList(); - foreach(SS_Report::get_reports('ReportAdmin') as $report) { + foreach(SS_Report::get_reports() as $report) { if($report->canView()) $output->push($report); } return $output; @@ -90,7 +90,7 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider { * @return boolean */ public static function has_reports() { - return sizeof(SS_Report::get_reports('ReportAdmin')) > 0; + return sizeof(SS_Report::get_reports()) > 0; } public function updatereport() { @@ -107,5 +107,67 @@ class ReportAdmin extends LeftAndMain implements PermissionProvider { ) ); } + + public function getEditForm($id = null, $fields = null) { + $fields = new FieldList(); + + $report = $this->currentReport(); + + if($report) { + // List all reports + $gridFieldConfig = GridFieldConfig::create()->addComponents( + new GridFieldToolbarHeader(), + new GridFieldSortableHeader(), + new GridFieldDataColumns(), + new GridFieldPaginator(), + new GridFieldPrintButton(), + new GridFieldExportButton() + ); + $gridField = new GridField('Report',$report->title(), $report->sourceRecords(array(), null, null), $gridFieldConfig); + $displayFields = array(); + $fieldCasting = array(); + $fieldFormatting = array(); + + // Parse the column information + foreach($report->columns() as $source => $info) { + if(is_string($info)) $info = array('title' => $info); + + if(isset($info['formatting'])) $fieldFormatting[$source] = $info['formatting']; + if(isset($info['csvFormatting'])) $csvFieldFormatting[$source] = $info['csvFormatting']; + if(isset($info['casting'])) $fieldCasting[$source] = $info['casting']; + + $displayFields[$source] = isset($info['title']) ? $info['title'] : $source; + } + $gridField->setDisplayFields($displayFields); + $gridField->setFieldCasting($fieldCasting); + $gridField->setFieldFormatting($fieldFormatting); + + $fields->push($gridField); + } else { + // List all reports + $gridFieldConfig = GridFieldConfig::create()->addComponents( + new GridFieldToolbarHeader(), + new GridFieldSortableHeader(), + new GridFieldDataColumns() + ); + $gridField = new GridField('Reports','Reports', $this->Reports(), $gridFieldConfig); + $gridField->setDisplayFields(array( + 'title' => 'Title', + 'description' => 'Description' + )); + $gridField->setFieldFormatting(array( + 'title' => '$value' + )); + $fields->push($gridField); + } + + $actions = new FieldList(); + $form = new Form($this, "EditForm", $fields, $actions); + $form->addExtraClass('cms-edit-form cms-panel-padded center ' . $this->BaseCSSClasses()); + + $this->extend('updateEditForm', $form); + + return $form; + } } diff --git a/code/reports/Report.php b/code/reports/Report.php index e3ab707c..d4407989 100644 --- a/code/reports/Report.php +++ b/code/reports/Report.php @@ -134,6 +134,10 @@ class SS_Report extends ViewableData { return $this->dataClass; } + function getLink() { + return 'admin/reports/show/' . $this->class; + } + /** @@ -197,7 +201,7 @@ class SS_Report extends ViewableData { if (in_array($report, self::$excluded_reports)) continue; //don't use the SS_Report superclass $reportObj = new $report; if (method_exists($reportObj,'sort')) $reportObj->sort = $reportObj->sort(); //use the sort method to specify the sort field - $reportsArray[] = $reportObj; + $reportsArray[$report] = $reportObj; } } diff --git a/templates/Includes/ReportAdmin_Content.ss b/templates/Includes/ReportAdmin_Content.ss index 7315f2d3..ae0e60aa 100644 --- a/templates/Includes/ReportAdmin_Content.ss +++ b/templates/Includes/ReportAdmin_Content.ss @@ -1,13 +1,28 @@ -
+
-

<% _t('REPORTS','Reports') %>

+
+ <% control EditForm %> + <% if Backlink %> + + <% _t('Back', 'Back') %> + + <% end_if %> + +

+ <% control Controller %> + <% include CMSBreadcrumbs %> + <% end_control %> +

+ <% end_control %> + +
- $Tools - -
+
+ $EditForm +
\ No newline at end of file diff --git a/templates/Includes/ReportAdmin_Tools.ss b/templates/Includes/ReportAdmin_Tools.ss index dbb930d5..e69de29b 100644 --- a/templates/Includes/ReportAdmin_Tools.ss +++ b/templates/Includes/ReportAdmin_Tools.ss @@ -1,11 +0,0 @@ -
- -
    - <% control Reports %> -
  • - $TreeTitle -
  • - <% end_control %> -
- -
\ No newline at end of file