mirror of
https://github.com/wintercms/winter.git
synced 2024-06-28 05:33:29 +02:00
Merge pull request #2898 from arzola/master
Added Extensibility to ReportWidgets
This commit is contained in:
commit
ef94decb1a
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
use Str;
|
use Str;
|
||||||
use System\Classes\PluginManager;
|
use System\Classes\PluginManager;
|
||||||
|
use Event;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Widget manager
|
* Widget manager
|
||||||
@ -188,6 +189,11 @@ class WidgetManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Extensibility
|
||||||
|
*/
|
||||||
|
Event::fire('system.reportwidgets.extendItems', [$this]);
|
||||||
|
|
||||||
return $this->reportWidgets;
|
return $this->reportWidgets;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,4 +221,19 @@ class WidgetManager
|
|||||||
{
|
{
|
||||||
$this->reportWidgetCallbacks[] = $definitions;
|
$this->reportWidgetCallbacks[] = $definitions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a registered ReportWidget.
|
||||||
|
* @param string $className Widget class name.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function removeReportWidget($className)
|
||||||
|
{
|
||||||
|
if (!$this->reportWidgets) {
|
||||||
|
throw new SystemException('Unable to remove a widget before widgets are loaded.');
|
||||||
|
}
|
||||||
|
|
||||||
|
unset($this->reportWidgets[$className]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13,4 +13,36 @@ class WidgetManagerTest extends TestCase
|
|||||||
$this->assertArrayHasKey('TestVendor\Test\FormWidgets\Sample', $widgets);
|
$this->assertArrayHasKey('TestVendor\Test\FormWidgets\Sample', $widgets);
|
||||||
$this->assertArrayHasKey('October\Tester\FormWidgets\Preview', $widgets);
|
$this->assertArrayHasKey('October\Tester\FormWidgets\Preview', $widgets);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testIfWidgetsCanBeExtended()
|
||||||
|
{
|
||||||
|
$manager = WidgetManager::instance();
|
||||||
|
$manager->registerReportWidget('Acme\Fake\ReportWidget\HelloWorld', [
|
||||||
|
'name' => 'Hello World Test',
|
||||||
|
'context' => 'dashboard'
|
||||||
|
]);
|
||||||
|
$widgets = $manager->listReportWidgets();
|
||||||
|
|
||||||
|
$this->assertArrayHasKey('Acme\Fake\ReportWidget\HelloWorld', $widgets);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testIfWidgetsCanBeRemoved()
|
||||||
|
{
|
||||||
|
$manager = WidgetManager::instance();
|
||||||
|
$manager->registerReportWidget('Acme\Fake\ReportWidget\HelloWorld', [
|
||||||
|
'name' => 'Hello World Test',
|
||||||
|
'context' => 'dashboard'
|
||||||
|
]);
|
||||||
|
$manager->registerReportWidget('Acme\Fake\ReportWidget\ByeWorld', [
|
||||||
|
'name' => 'Hello World Bye',
|
||||||
|
'context' => 'dashboard'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$manager->removeReportWidget('Acme\Fake\ReportWidget\ByeWorld');
|
||||||
|
|
||||||
|
$widgets = $manager->listReportWidgets();
|
||||||
|
|
||||||
|
$this->assertCount(1, $widgets);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user