FEATURE: prepare for installing templates

This commit is contained in:
Michal Kváček
2016-09-20 00:46:32 +02:00
parent 7a681fd7f7
commit f087da1b43
22 changed files with 397 additions and 253 deletions
+34 -3
View File
@@ -2,6 +2,7 @@
namespace App\Models;
use App\Handlers\Contracts\TemplateHandler;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\App;
@@ -20,7 +21,8 @@ class Module extends Model
'module_settings',
'enabled',
'support_categories',
'manages_content'
'manages_content',
'is_template'
];
protected $guarded = [];
@@ -45,6 +47,7 @@ class Module extends Model
}
$managesContent = $handler ? in_array('App\Handlers\Contracts\AppHandler', class_implements($handler)) : false;
$isTemplate = $handler ? in_array(TemplateHandler::class, class_implements($handler)) : false;
$supportCategories = $managesContent ? call_user_func([$handler, 'supportCategories']) : false;
if ($parentModuleId) {
@@ -62,8 +65,9 @@ class Module extends Model
'support_categories' => $supportCategories,
'alias' => $alias,
'module_settings' => json_encode($settings),
'parent_id' => $parentModuleId,
'enabled' => 1
'parent_id' => $parentModuleId ? $parentModuleId : null,
'enabled' => 1,
'is_template' => $isTemplate
]);
// install something module-specific
@@ -73,4 +77,31 @@ class Module extends Model
return $module;
}
public function uninstall() {
// check if user does not want to install module in runtime
if (!App::runningInConsole()) {
throw new \ErrorException('Modules can be uninstalled only via Artisan!');
}
// delete everything in /resources/views/visitor
$directories = \File::directories(resource_path('views/visitor'));
foreach ($directories as $directory) {
$success = \File::deleteDirectory($directory);
if (!$success) {
throw new \ErrorException('Cannot delete '.$directory);
}
}
$handler = $this->handler;
if ($handler) {
call_user_func([$handler, 'uninstall'], $this);
}
$this->delete();
}
}