public static function isInstalled() { if (!self::isExtensionDriverReady()) { return false; } $pluginManager = Artificer::pluginManager(); $widgetManager = Artificer::widgetManager(); foreach (Artificer::getCoreExtensions() as $coreExtension) { if (!$pluginManager->isInstalled($coreExtension) && !$widgetManager->isInstalled($coreExtension)) { return false; } } return true; }
protected function installCoreExtensions() { $pluginManager = Artificer::pluginManager(); $widgetManager = Artificer::widgetManager(); // Enable install events Artificer::pluginManager()->boot(); Artificer::widgetManager()->boot(); foreach (Artificer::getCoreExtensions() as $coreExtension) { if (!$pluginManager->isInstalled($coreExtension) && !$widgetManager->isInstalled($coreExtension)) { // Todo: know if its plugin or widget $installed = $pluginManager->installer()->install($coreExtension); if (!$installed) { throw new \Exception("Unable to install Artificer core extension {$coreExtension}"); } } } }
/** * Bootstrap the application events. * * @return void */ public function boot() { if (!$this->isBootable) { return; } $this->addPublishableFiles(); // Wait until app is ready for config to be published if (!$this->isPublished()) { return; } $this->addMiddleware(); $this->providers(config('admin.providers')); $this->aliases(config('admin.aliases')); $this->commands(config('admin.commands')); Artificer::assetManager()->add(config('admin.assets', [])); $this->loadViewsFrom(__DIR__ . '/../resources/views/', 'artificer'); if (InstallServiceProvider::isExtensionDriverReady()) { Artificer::pluginManager()->boot(); Artificer::widgetManager()->boot(); } if (!$this->app->routesAreCached()) { require_once __DIR__ . '/../routes/admin.php'; } }
Route::group(['middleware' => 'artificer-installed', 'prefix' => 'install'], function () { Route::get('/', ['as' => 'admin.install', 'uses' => InstallController::class . '@home']); Route::post('/', InstallController::class . '@install'); }); \Mascame\Artificer\Artificer::pluginManager()->outputCoreRoutes(); Route::group(['middleware' => ['artificer-auth']], function () { Route::get('/', ['as' => 'admin.home', 'uses' => HomeController::class . '@home']); Route::get('extensions', ExtensionController::class . '@extensions')->name('admin.extensions'); foreach (['plugins', 'widgets'] as $extensionType) { Route::group(['prefix' => $extensionType], function () use($extensionType) { Route::get('{slug}/install', ExtensionController::class . '@install')->name('admin.' . $extensionType . '.install'); Route::get('{slug}/uninstall', ExtensionController::class . '@uninstall')->name('admin.' . $extensionType . '.uninstall'); }); } Route::group(['prefix' => 'model'], function () { Route::get('{slug}', ModelController::class . '@all')->name('admin.model.all'); Route::get('{slug}/filter', ModelController::class . '@filter')->name('admin.model.filter'); Route::get('{slug}/create', ModelController::class . '@create')->name('admin.model.create'); Route::get('{slug}/{id}', ModelController::class . '@show')->name('admin.model.show'); Route::get('{slug}/{id}/edit', ModelController::class . '@edit')->name('admin.model.edit'); Route::get('{slug}/{id}/edit/{field}', ModelController::class . '@field')->name('admin.model.field.edit'); Route::post('{slug}/store', ModelController::class . '@updateOrCreate')->name('admin.model.store'); Route::put('{slug}/{id}', ModelController::class . '@updateOrCreate')->name('admin.model.update'); Route::delete('{slug}/{id}', ModelController::class . '@destroy')->name('admin.model.destroy'); Route::get('{slug}/{id}/field/{name}', ModelController::class . '@getRelatedFieldOutput')->name('admin.model.field'); }); Route::group(['prefix' => 'plugin'], function () { \Mascame\Artificer\Artificer::pluginManager()->outputRoutes(); }); }); });
/** * @param array|string $plugin * @return bool */ protected function addPlugin($plugin) { return Artificer::pluginManager()->add($this->package, $plugin); }
public function extensions() { return View::make($this->getView('extensions'))->with('packages', Artificer::pluginManager()->getPackages()); }