silverstripe-cms/code/Report.php
Sean Harvey c39cbbe58a ENHANCEMENT Added missing "abstract" Report class to compliment ReportAdmin. Currently it is unclear what abstract base class you're supposed to implement from.
BUGFIX Use of getOwnerID() in ReportAdmin which doesn't make sense, since ID() is sufficient.

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@63748 467b73ca-7a2a-4603-9d3b-597d59a354a9
2008-10-07 05:32:09 +00:00

90 lines
2.0 KiB
PHP

<?php
/**
* Base "abstract" class for all Report classes
* viewable in the Reports top menu section of CMS.
*/
class Report extends ViewableData {
/**
* This is the title of the report,
* used by the ReportAdmin templates.
*
* @var string
*/
protected $title = '';
/**
* This is a description about what this
* report does. Used by the ReportAdmin
* templates.
*
* @var string
*/
protected $description = '';
/**
* Returns a FieldSet with which to create the CMS editing form.
* You can use the extend() method of FieldSet to create customised forms for your other
* data objects.
*
* @uses getReportField() to render a table, or similar field for the report. This
* method should be defined on the Report subclasses.
*
* @return FieldSet
*/
function getCMSFields() {
$fields = new FieldSet(
new TabSet('Root',
new Tab('Report',
new LiteralField('ReportTitle', "<h3>{$this->title}</h3>"),
new LiteralField('ReportDescription', "<p>{$this->description}</p>"),
$this->getReportField()
)
)
);
$this->extend('augmentReportCMSFields', $fields);
return $fields;
}
/**
* Return a field, such as a {@link ComplexTableField} that is
* used to show and manipulate data relating to this report.
*
* For example, if this were an "Unprinted Orders" report, this
* field would return a table that shows all Orders with "Unprinted = 1".
*
* @return FormField subclass
*/
function getReportField() {
user_error('Please implement getReportField() on ' . $this->class, E_USER_ERROR);
}
/**
* Return the name of this report, which
* is used by the templates to render the
* name of the report in the report tree,
* the left hand pane inside ReportAdmin.
*
* @return string
*/
function TreeTitle() {
return $this->title;
}
/**
* Return the ID of this Report class.
* Because it doesn't have a number, we
* use the class name as the ID.
*
* @return string
*/
function ID() {
return $this->class;
}
}
?>