Widget and Report check is module disabled

This commit is contained in:
Cüneyt Şentürk 2022-06-18 00:16:09 +03:00
parent 2e79a9b5fa
commit 0f5f592c71
4 changed files with 55 additions and 5 deletions

View File

@ -53,6 +53,22 @@ class Widget extends Model
return $this->hasManyThrough('App\Models\Auth\User', 'App\Models\Common\Dashboard'); return $this->hasManyThrough('App\Models\Auth\User', 'App\Models\Common\Dashboard');
} }
/**
* Get the alias based on class.
*
* @return string
*/
public function getAliasAttribute()
{
if (Str::startsWith($this->class, 'App\\')) {
return 'core';
}
$arr = explode('\\', $this->class);
return Str::kebab($arr[1]);
}
/** /**
* Create a new factory instance for the model. * Create a new factory instance for the model.
* *

View File

@ -439,6 +439,10 @@ trait Modules
return false; return false;
} }
if (module($alias)->disabled()) {
return false;
}
if (! Module::alias($alias)->enabled()->first()) { if (! Module::alias($alias)->enabled()->first()) {
return false; return false;
} }

View File

@ -4,10 +4,13 @@ namespace App\Utilities;
use App\Models\Common\Report; use App\Models\Common\Report;
use App\Models\Module\Module; use App\Models\Module\Module;
use App\Traits\Modules;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class Reports class Reports
{ {
use Modules;
public static function getClasses($check_permission = true) public static function getClasses($check_permission = true)
{ {
$classes = []; $classes = [];
@ -35,6 +38,12 @@ class Reports
continue; continue;
} }
$alias = static::getModuleAlias($class);
if (! empty($alias) && (new Reports)->moduleIsDisabled($alias)) {
continue;
}
$classes[$class] = static::getDefaultName($class); $classes[$class] = static::getDefaultName($class);
} }
@ -51,6 +60,10 @@ class Reports
return false; return false;
} }
if ($model->alias != 'core' && (new Reports)->moduleIsDisabled($model->alias)) {
return false;
}
$class = $model->class; $class = $model->class;
return new $class($model, $load_data); return new $class($model, $load_data);

View File

@ -4,10 +4,13 @@ namespace App\Utilities;
use App\Models\Common\Widget; use App\Models\Common\Widget;
use App\Models\Module\Module; use App\Models\Module\Module;
use App\Traits\Modules;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class Widgets class Widgets
{ {
use Modules;
public static $core_widgets = [ public static $core_widgets = [
'App\Widgets\Receivables', 'App\Widgets\Receivables',
'App\Widgets\Payables', 'App\Widgets\Payables',
@ -27,13 +30,13 @@ class Widgets
} }
Module::enabled()->each(function ($module) use (&$list, $alias) { Module::enabled()->each(function ($module) use (&$list, $alias) {
if (!in_array($alias, [$module->alias, 'all'])) { if (! in_array($alias, [$module->alias, 'all'])) {
return; return;
} }
$m = module($module->alias); $m = module($module->alias);
if (!$m || empty($m->get('widgets'))) { if (! $m || empty($m->get('widgets'))) {
return; return;
} }
@ -41,7 +44,13 @@ class Widgets
}); });
foreach ($list as $class) { foreach ($list as $class) {
if (!class_exists($class) || ($check_permission && !static::canRead($class))) { if (! class_exists($class) || ($check_permission && ! static::canRead($class))) {
continue;
}
$alias = static::getModuleAlias($class);
if (! empty($alias) && (new Widgets)->moduleIsDisabled($alias)) {
continue; continue;
} }
@ -62,7 +71,11 @@ class Widgets
$model = Widget::where('dashboard_id', session('dashboard_id'))->where('class', $class_name)->first(); $model = Widget::where('dashboard_id', session('dashboard_id'))->where('class', $class_name)->first();
if (!$model instanceof Widget) { if ($model->alias != 'core' && (new Widgets)->moduleIsDisabled($model->alias)) {
return false;
}
if (! $model instanceof Widget) {
$class = (new $class_name()); $class = (new $class_name());
$model = new Widget(); $model = new Widget();
@ -79,6 +92,10 @@ class Widgets
return false; return false;
} }
if ($model->alias != 'core' && (new Widgets)->moduleIsDisabled($model->alias)) {
return false;
}
$class_name = $model->class; $class_name = $model->class;
} }
@ -87,7 +104,7 @@ class Widgets
public static function show($model, ...$arguments) public static function show($model, ...$arguments)
{ {
if (!$class = static::getClassInstance($model)) { if (! $class = static::getClassInstance($model)) {
return ''; return '';
} }