Remove Modules system
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace CachetHQ\Cachet\Composers\Modules;
|
||||
namespace CachetHQ\Cachet\Composers;
|
||||
|
||||
use CachetHQ\Cachet\Models\Component;
|
||||
use CachetHQ\Cachet\Models\ComponentGroup;
|
||||
@@ -9,7 +9,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace CachetHQ\Cachet\Composers\Modules;
|
||||
namespace CachetHQ\Cachet\Composers;
|
||||
|
||||
use CachetHQ\Cachet\Models\Metric;
|
||||
use Illuminate\Contracts\Auth\Guard;
|
||||
@@ -1,77 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Cachet.
|
||||
*
|
||||
* (c) Alt Three Services Limited
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace CachetHQ\Cachet\Composers;
|
||||
|
||||
use CachetHQ\Cachet\Services\Modules\Manager;
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Contracts\View\View;
|
||||
|
||||
/**
|
||||
* This is the module composer class.
|
||||
*
|
||||
* @author Connor S. Parks <connor@connorvg.tv>
|
||||
* @author James Brooks <james@alt-three.com>
|
||||
*/
|
||||
class ModuleComposer
|
||||
{
|
||||
/**
|
||||
* The application instance.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Foundation\Application
|
||||
*/
|
||||
protected $app;
|
||||
|
||||
/**
|
||||
* The modules manager instance.
|
||||
*
|
||||
* @var \CachetHQ\Cachet\Services\Modules\Manager
|
||||
*/
|
||||
protected $manager;
|
||||
|
||||
/**
|
||||
* Create a new modules composer.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Foundation\Application $app
|
||||
* @param \CachetHQ\Cachet\Services\Modules\Manager $manager
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(Application $app, Manager $manager)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->manager = $manager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Bind data to the view.
|
||||
*
|
||||
* @param \Illuminate\Contracts\View\View $view
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function compose(View $view)
|
||||
{
|
||||
$key = $view->getName();
|
||||
|
||||
$view->with('view', $key);
|
||||
|
||||
$modules = "view.modules: {$key}";
|
||||
$groups = "view.groups: {$key}";
|
||||
|
||||
$modules = $this->app->bound($modules) ? $this->app[$modules] : [];
|
||||
$groups = $this->app->bound($groups) ? $this->app[$groups] : [];
|
||||
|
||||
$modules = $this->manager->groupModules($modules, $groups);
|
||||
|
||||
$view->withModules($modules);
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace CachetHQ\Cachet\Composers\Modules;
|
||||
namespace CachetHQ\Cachet\Composers;
|
||||
|
||||
use CachetHQ\Cachet\Models\Schedule;
|
||||
use Illuminate\Contracts\View\View;
|
||||
@@ -9,7 +9,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace CachetHQ\Cachet\Composers\Modules;
|
||||
namespace CachetHQ\Cachet\Composers;
|
||||
|
||||
use CachetHQ\Cachet\Integrations\Contracts\System;
|
||||
use Illuminate\Contracts\View\View;
|
||||
@@ -9,7 +9,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace CachetHQ\Cachet\Composers\Modules;
|
||||
namespace CachetHQ\Cachet\Composers;
|
||||
|
||||
use CachetHQ\Cachet\Models\Incident;
|
||||
use CachetHQ\Cachet\Services\Dates\DateFactory;
|
||||
@@ -9,7 +9,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace CachetHQ\Cachet\Composers\Modules;
|
||||
namespace CachetHQ\Cachet\Composers;
|
||||
|
||||
use Illuminate\Contracts\View\View;
|
||||
|
||||
@@ -12,17 +12,16 @@
|
||||
namespace CachetHQ\Cachet\Foundation\Providers;
|
||||
|
||||
use CachetHQ\Cachet\Composers\AppComposer;
|
||||
use CachetHQ\Cachet\Composers\ComponentsComposer;
|
||||
use CachetHQ\Cachet\Composers\CurrentUserComposer;
|
||||
use CachetHQ\Cachet\Composers\DashboardComposer;
|
||||
use CachetHQ\Cachet\Composers\ModuleComposer;
|
||||
use CachetHQ\Cachet\Composers\Modules\ComponentsComposer as ComponentsModuleComposer;
|
||||
use CachetHQ\Cachet\Composers\Modules\MetricsComposer as MetricsModuleComposer;
|
||||
use CachetHQ\Cachet\Composers\Modules\ScheduledComposer as ScheduledModuleComposer;
|
||||
use CachetHQ\Cachet\Composers\Modules\StatusComposer as StatusModuleComposer;
|
||||
use CachetHQ\Cachet\Composers\Modules\StickiedComposer as StickiedModuleComposer;
|
||||
use CachetHQ\Cachet\Composers\Modules\TimelineComposer as TimelineModuleComposer;
|
||||
use CachetHQ\Cachet\Composers\MetricsComposer;
|
||||
use CachetHQ\Cachet\Composers\ScheduledComposer;
|
||||
use CachetHQ\Cachet\Composers\SettingsComposer;
|
||||
use CachetHQ\Cachet\Composers\StatusComposer;
|
||||
use CachetHQ\Cachet\Composers\StickiedComposer;
|
||||
use CachetHQ\Cachet\Composers\ThemeComposer;
|
||||
use CachetHQ\Cachet\Composers\TimelineComposer;
|
||||
use CachetHQ\Cachet\Composers\TimezoneLocaleComposer;
|
||||
use Illuminate\Contracts\View\Factory;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
@@ -42,13 +41,12 @@ class ComposerServiceProvider extends ServiceProvider
|
||||
$factory->composer('dashboard.*', DashboardComposer::class);
|
||||
$factory->composer(['setup.*', 'dashboard.settings.localization'], TimezoneLocaleComposer::class);
|
||||
|
||||
$factory->composer('*', ModuleComposer::class);
|
||||
$factory->composer('partials.modules.components', ComponentsModuleComposer::class);
|
||||
$factory->composer('partials.modules.metrics', MetricsModuleComposer::class);
|
||||
$factory->composer('partials.modules.stickied', StickiedModuleComposer::class);
|
||||
$factory->composer('partials.modules.scheduled', ScheduledModuleComposer::class);
|
||||
$factory->composer('partials.modules.status', StatusModuleComposer::class);
|
||||
$factory->composer('partials.modules.timeline', TimelineModuleComposer::class);
|
||||
$factory->composer('partials.modules.components', ComponentsComposer::class);
|
||||
$factory->composer('partials.modules.metrics', MetricsComposer::class);
|
||||
$factory->composer('partials.modules.stickied', StickiedComposer::class);
|
||||
$factory->composer('partials.modules.scheduled', ScheduledComposer::class);
|
||||
$factory->composer('partials.modules.status', StatusComposer::class);
|
||||
$factory->composer('partials.modules.timeline', TimelineComposer::class);
|
||||
$factory->composer(['dashboard.settings.mail', 'setup.*'], SettingsComposer::class);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,95 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Cachet.
|
||||
*
|
||||
* (c) Alt Three Services Limited
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace CachetHQ\Cachet\Foundation\Providers;
|
||||
|
||||
use CachetHQ\Cachet\Services\Modules\Renderer as ModulesRenderer;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\View\Compilers\BladeCompiler;
|
||||
|
||||
class ModuleServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* The module definitions.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $modules = [
|
||||
'index' => [
|
||||
['group' => 'messages', 'partial' => 'partials.modules.messages'],
|
||||
['group' => 'status', 'partial' => 'partials.modules.status'],
|
||||
['group' => 'components', 'partial' => 'partials.modules.components'],
|
||||
['group' => 'metrics', 'partial' => 'partials.modules.metrics'],
|
||||
['group' => 'stickied', 'partial' => 'partials.modules.stickied'],
|
||||
['group' => 'scheduled', 'partial' => 'partials.modules.scheduled'],
|
||||
['group' => 'timeline', 'partial' => 'partials.modules.timeline'],
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* The group definitions.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $groups = [
|
||||
'index' => [
|
||||
'messages' => 10000,
|
||||
'status' => 20000,
|
||||
'components' => 30000,
|
||||
'metrics' => 40000,
|
||||
'scheduled' => 50000,
|
||||
'stickied' => 60000,
|
||||
'timeline' => 70000,
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* Boot the service provider.
|
||||
*
|
||||
* @param \Illuminate\View\Compilers\BladeCompiler $blade
|
||||
*/
|
||||
public function boot(BladeCompiler $blade)
|
||||
{
|
||||
$blade->directive('modules', function ($group) {
|
||||
return sprintf(
|
||||
'<?php echo $app->call(\'%s@%s\', [
|
||||
\'factory\' => $__env,
|
||||
\'data\' => array_except(get_defined_vars(), array(\'__data\', \'__path\')),
|
||||
\'modules\' => $modules,
|
||||
\'group\' => %s,
|
||||
]); ?>',
|
||||
ModulesRenderer::class,
|
||||
'renderModules',
|
||||
empty($group) ? 'null' : $group
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
foreach ($this->modules as $key => $modules) {
|
||||
$this->app->singleton("view.modules: {$key}", function () use ($modules) {
|
||||
return $modules;
|
||||
});
|
||||
}
|
||||
|
||||
foreach ($this->groups as $key => $groups) {
|
||||
$this->app->singleton("view.groups: {$key}", function () use ($groups) {
|
||||
return $groups;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Cachet.
|
||||
*
|
||||
* (c) Alt Three Services Limited
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace CachetHQ\Cachet\Services\Modules;
|
||||
|
||||
/**
|
||||
* This is the module manager class.
|
||||
*
|
||||
* @author Connor S. Parks <connor@connorvg.tv>
|
||||
*/
|
||||
class Manager
|
||||
{
|
||||
/**
|
||||
* Groups the modules.
|
||||
*
|
||||
* @param array $modules
|
||||
* @param array $groups
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function groupModules(array $modules, array $groups = [])
|
||||
{
|
||||
$grouped = [];
|
||||
$length = count($modules);
|
||||
foreach ($modules as $order => $module) {
|
||||
if (!is_array($module) || empty($module['group'])) {
|
||||
$order = array_get($module, 'order', PHP_INT_MAX - $length + $order);
|
||||
|
||||
$grouped[] = [$module, 'order' => $order];
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$group = $module['group'];
|
||||
if (empty($grouped[$group])) {
|
||||
$grouped[$group] = [$module];
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$grouped[$group][] = $module;
|
||||
}
|
||||
|
||||
foreach ($groups as $group => $order) {
|
||||
if (empty($grouped[$group])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$grouped[$group]['order'] = $order;
|
||||
}
|
||||
|
||||
return $grouped;
|
||||
}
|
||||
|
||||
/**
|
||||
* Orders the modules.
|
||||
*
|
||||
* @param array $modules
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function orderModules($modules)
|
||||
{
|
||||
$modules = array_numeric_sort($modules);
|
||||
|
||||
foreach ($modules as $group => $subModules) {
|
||||
$modules[$group] = array_numeric_sort($subModules);
|
||||
}
|
||||
|
||||
return $modules;
|
||||
}
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Cachet.
|
||||
*
|
||||
* (c) Alt Three Services Limited
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace CachetHQ\Cachet\Services\Modules;
|
||||
|
||||
use Illuminate\Contracts\View\Factory;
|
||||
|
||||
/**
|
||||
* This is the module renderer class.
|
||||
*
|
||||
* @author Connor S. Parks <connor@connorvg.tv>
|
||||
*/
|
||||
class Renderer
|
||||
{
|
||||
/**
|
||||
* Render the modules.
|
||||
*
|
||||
* @param \Illuminate\Contracts\View\Factory $factory
|
||||
* @param array $data
|
||||
* @param array $modules
|
||||
* @param string|null $group
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function renderModules(Factory $factory, array $data, array $modules, $group = null)
|
||||
{
|
||||
if ($group !== null) {
|
||||
if (empty($modules[$group])) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return $this->renderModulesGroup($factory, $data, $modules[$group]);
|
||||
}
|
||||
|
||||
return array_reduce(
|
||||
array_numeric_sort($modules),
|
||||
function ($reduce, $module) use ($factory, $data) {
|
||||
return $reduce.$this->renderModulesGroup($factory, $data, $module);
|
||||
},
|
||||
''
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render a group of modules.
|
||||
*
|
||||
* @param \Illuminate\Contracts\View\Factory $factory
|
||||
* @param array $data
|
||||
* @param array $modules
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function renderModulesGroup(Factory $factory, array $data, array $modules)
|
||||
{
|
||||
return array_reduce(
|
||||
array_numeric_sort($modules),
|
||||
function ($reduce, $module) use ($factory, $data) {
|
||||
if (empty($module['partial'])) {
|
||||
return $reduce;
|
||||
}
|
||||
|
||||
return $reduce.$factory->make($module['partial'], $data)->render();
|
||||
},
|
||||
''
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user