MDL-75235 reportbuilder: allow default filter form to be disabled.
This allows for custom filter forms to be implemented, rather than using the default one for system reports.
This commit is contained in:
@@ -21,9 +21,9 @@ namespace core_reportbuilder\external;
|
||||
use core\external\persistent_exporter;
|
||||
use core_table\local\filter\integer_filter;
|
||||
use core_table\local\filter\string_filter;
|
||||
use core_reportbuilder\system_report;
|
||||
use core_reportbuilder\form\filter;
|
||||
use core_reportbuilder\local\models\report;
|
||||
use core_reportbuilder\local\report\base;
|
||||
use core_reportbuilder\table\system_report_table;
|
||||
use core_reportbuilder\table\system_report_table_filterset;
|
||||
use renderer_base;
|
||||
@@ -53,7 +53,7 @@ class system_report_exporter extends persistent_exporter {
|
||||
*/
|
||||
protected static function define_related(): array {
|
||||
return [
|
||||
'source' => base::class,
|
||||
'source' => system_report::class,
|
||||
'parameters' => 'string',
|
||||
];
|
||||
}
|
||||
@@ -85,7 +85,7 @@ class system_report_exporter extends persistent_exporter {
|
||||
* @return array
|
||||
*/
|
||||
protected function get_other_values(renderer_base $output): array {
|
||||
/** @var base $source */
|
||||
/** @var system_report $source */
|
||||
$source = $this->related['source'];
|
||||
|
||||
/** @var string $parameters */
|
||||
@@ -102,8 +102,8 @@ class system_report_exporter extends persistent_exporter {
|
||||
$table = system_report_table::create($reportid, (array) json_decode($parameters, true));
|
||||
$table->set_filterset($filterset);
|
||||
|
||||
// Generate filters form if report contains any filters.
|
||||
$filterspresent = !empty($source->get_active_filters());
|
||||
// Generate filters form if report uses the default form, and contains any filters.
|
||||
$filterspresent = $source->get_filter_form_default() && !empty($source->get_active_filters());
|
||||
if ($filterspresent) {
|
||||
$filtersform = new filter(null, null, 'post', '', [], true, [
|
||||
'reportid' => $reportid,
|
||||
|
||||
@@ -22,9 +22,9 @@ use renderable;
|
||||
use renderer_base;
|
||||
use stdClass;
|
||||
use templatable;
|
||||
use core_reportbuilder\system_report as system_report_base;
|
||||
use core_reportbuilder\external\system_report_exporter;
|
||||
use core_reportbuilder\local\models\report;
|
||||
use core_reportbuilder\local\report\base;
|
||||
|
||||
/**
|
||||
* System report output class
|
||||
@@ -38,7 +38,7 @@ class system_report implements renderable, templatable {
|
||||
/** @var report $report */
|
||||
protected $report;
|
||||
|
||||
/** @var base $source */
|
||||
/** @var system_report_base $source */
|
||||
protected $source;
|
||||
|
||||
/** @var array $parameters */
|
||||
@@ -48,10 +48,10 @@ class system_report implements renderable, templatable {
|
||||
* Class constructor
|
||||
*
|
||||
* @param report $report
|
||||
* @param base $source
|
||||
* @param system_report_base $source
|
||||
* @param array $parameters
|
||||
*/
|
||||
public function __construct(report $report, base $source, array $parameters) {
|
||||
public function __construct(report $report, system_report_base $source, array $parameters) {
|
||||
$this->report = $report;
|
||||
$this->source = $source;
|
||||
$this->parameters = $parameters;
|
||||
|
||||
@@ -40,6 +40,9 @@ abstract class system_report extends base {
|
||||
/** @var string[] $basefields List of base fields */
|
||||
private $basefields = [];
|
||||
|
||||
/** @var bool $filterformdefault Whether to use the default filters form */
|
||||
private $filterformdefault = true;
|
||||
|
||||
/** @var action[] $actions */
|
||||
private $actions = [];
|
||||
|
||||
@@ -119,6 +122,25 @@ abstract class system_report extends base {
|
||||
return $this->basefields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Override whether to use the default system report filters form, for instance this can be disabled if the UI requires
|
||||
* it's own custom filter management form for a specific report
|
||||
*
|
||||
* @param bool $filterformdefault
|
||||
*/
|
||||
final public function set_filter_form_default(bool $filterformdefault = true): void {
|
||||
$this->filterformdefault = $filterformdefault;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether to use the default filters form
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
final public function get_filter_form_default(): bool {
|
||||
return $this->filterformdefault;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an action to the report
|
||||
*
|
||||
|
||||
@@ -2,6 +2,9 @@ This file describes API changes in /reportbuilder/*
|
||||
Information provided here is intended especially for developers.
|
||||
|
||||
=== 4.1 ===
|
||||
|
||||
* New method `set_filter_form_default` in base system report class, to override whether the default filters form
|
||||
should be shown for a report
|
||||
* 'set_default_per_page' and 'get_default_per_page' methods have been added to \local\report\base class
|
||||
to manage the default displayed rows per page.
|
||||
* Added two new methods in the datasource class:
|
||||
|
||||
Reference in New Issue
Block a user