updated widget utility
This commit is contained in:
parent
906b7045fa
commit
bc46b1f8f6
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Utilities;
|
namespace App\Utilities;
|
||||||
|
|
||||||
|
use App\Models\Common\Widget;
|
||||||
use App\Models\Module\Module;
|
use App\Models\Module\Module;
|
||||||
|
|
||||||
class Widgets
|
class Widgets
|
||||||
@ -10,7 +11,7 @@ class Widgets
|
|||||||
{
|
{
|
||||||
$classes = [];
|
$classes = [];
|
||||||
|
|
||||||
$core_classes = [
|
$list = [
|
||||||
'App\Widgets\TotalIncome',
|
'App\Widgets\TotalIncome',
|
||||||
'App\Widgets\TotalExpenses',
|
'App\Widgets\TotalExpenses',
|
||||||
'App\Widgets\TotalProfit',
|
'App\Widgets\TotalProfit',
|
||||||
@ -22,26 +23,16 @@ class Widgets
|
|||||||
'App\Widgets\LatestExpenses',
|
'App\Widgets\LatestExpenses',
|
||||||
];
|
];
|
||||||
|
|
||||||
static::parseClasses($classes, $core_classes);
|
Module::enabled()->each(function ($module) use (&$list) {
|
||||||
|
|
||||||
$modules = Module::enabled()->get();
|
|
||||||
|
|
||||||
foreach ($modules as $module) {
|
|
||||||
$m = module($module->alias);
|
$m = module($module->alias);
|
||||||
|
|
||||||
// Check if the module exists and has widgets
|
|
||||||
if (!$m || empty($m->get('widgets'))) {
|
if (!$m || empty($m->get('widgets'))) {
|
||||||
continue;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static::parseClasses($classes, $m->get('widgets'));
|
$list = array_merge($list, (array) $m->get('widgets'));
|
||||||
}
|
});
|
||||||
|
|
||||||
return $classes;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static function parseClasses(&$classes, $list)
|
|
||||||
{
|
|
||||||
foreach ($list as $class) {
|
foreach ($list as $class) {
|
||||||
if (!class_exists($class)) {
|
if (!class_exists($class)) {
|
||||||
continue;
|
continue;
|
||||||
@ -51,17 +42,31 @@ class Widgets
|
|||||||
|
|
||||||
$classes[$class] = $name;
|
$classes[$class] = $name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $classes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getInstance($model)
|
public static function getInstance($model)
|
||||||
{
|
{
|
||||||
|
if (is_string($model)) {
|
||||||
|
$model = Widget::where('class', $model)->first();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((!$model instanceof Widget) || !class_exists($model->class)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
$class = $model->class;
|
$class = $model->class;
|
||||||
|
|
||||||
return new $class($model);
|
return new $class($model);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function show($model)
|
public static function show($model, ...$arguments)
|
||||||
{
|
{
|
||||||
return static::getInstance($model)->show();
|
if (!$class = static::getInstance($model)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $class->show(...$arguments);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,12 +41,16 @@ if (!function_exists('company_date')) {
|
|||||||
|
|
||||||
if (!function_exists('show_widget')) {
|
if (!function_exists('show_widget')) {
|
||||||
/**
|
/**
|
||||||
* Format the given date based on company settings.
|
* Show a widget.
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function show_widget($model)
|
function show_widget()
|
||||||
{
|
{
|
||||||
return Widgets::show($model);
|
$arguments = func_get_args();
|
||||||
|
|
||||||
|
$model = array_shift($arguments);
|
||||||
|
|
||||||
|
return Widgets::show($model, ...$arguments);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user