From 4fb59385b7daed74aac379aa42ac21ae7cdc9fd0 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 19 Oct 2018 15:10:05 +0100 Subject: [PATCH] work on applications --- app/Application.php | 21 +++++ app/Apps/.gitignore | 0 app/EnhancedApps.php | 11 +++ app/Http/Controllers/ItemController.php | 37 ++++----- app/Item.php | 76 ------------------- config/app.php | 3 + ...10_18_110905_create_applications_table.php | 4 +- resources/views/items/scripts.blade.php | 4 +- 8 files changed, 54 insertions(+), 102 deletions(-) delete mode 100644 app/Apps/.gitignore create mode 100644 app/EnhancedApps.php diff --git a/app/Application.php b/app/Application.php index c0b8274c..4a8ae835 100644 --- a/app/Application.php +++ b/app/Application.php @@ -7,4 +7,25 @@ use Illuminate\Database\Eloquent\Model; class Application extends Model { // + public function icon() + { + $path = public_path('storage/apps/'.$this->icon); + if(!file_exists($path)) { + Storage::putFileAs('apps', new File(app_path('Apps/'.$this->name.'/'.$this->icon)), $this->icon); + } + return asset('storage/apps/'.$this->icon); + } + + public function defaultColour() + { + // check if light or dark + if($this->tile_background == 'light') return '#fafbfc'; + return '#161b1f'; + } + + public function class() + { + $class = '\App\SupportedApps\\'.$this->name; + return $class; + } } diff --git a/app/Apps/.gitignore b/app/Apps/.gitignore deleted file mode 100644 index e69de29b..00000000 diff --git a/app/EnhancedApps.php b/app/EnhancedApps.php new file mode 100644 index 00000000..1e69ea87 --- /dev/null +++ b/app/EnhancedApps.php @@ -0,0 +1,11 @@ +with('success',__('app.alert.success.item_restored')); } - public function isSupportedAppByKey($app) - { - $output = false; - $all_supported = Item::supportedList(); - if(array_key_exists($app, $all_supported)) { - $output = new $all_supported[$app]; - } - return $output; - } - /** * Return details for supported apps * @@ -291,19 +281,20 @@ class ItemController extends Controller public function appload(Request $request) { $output = []; - $app = $request->input('app'); - - if(($app_details = $this->isSupportedAppByKey($app)) !== false) { - // basic details - $output['icon'] = $app_details->icon(); - $output['colour'] = $app_details->defaultColour(); - - // live details - if($app_details instanceof \App\SupportedApps\Contracts\Livestats) { - $output['config'] = $app_details->configDetails(); - } else { - $output['config'] = null; - } + $appname = $request->input('app'); + + $app_details = Application::where('name', $appname)->firstOrFail(); + $app = new $appname->class(); + + // basic details + $output['icon'] = $app_details->icon(); + $output['colour'] = $app_details->defaultColour(); + + // live details + if($app_details instanceof \App\SupportedApps\EnhancedApps) { + $output['config'] = $app->configDetails(); + } else { + $output['config'] = null; } return json_encode($output); diff --git a/app/Item.php b/app/Item.php index 6e34878a..5bc172c8 100644 --- a/app/Item.php +++ b/app/Item.php @@ -34,82 +34,6 @@ class Item extends Model */ protected $dates = ['deleted_at']; - public static function supportedList() - { - return [ - 'AirSonic' => \App\SupportedApps\AirSonic::class, - 'Cardigann' => \App\SupportedApps\Cardigann::class, - 'CouchPotato' => \App\SupportedApps\CouchPotato::class, - 'Bazarr' => \App\SupportedApps\Bazarr::class, - 'Bitwarden' => \App\SupportedApps\Bitwarden::class, - 'Booksonic' => \App\SupportedApps\Booksonic::class, - 'BookStack' => \App\SupportedApps\BookStack::class, - 'Deluge' => \App\SupportedApps\Deluge::class, - 'Dokuwiki' => \App\SupportedApps\Dokuwiki::class, - 'Duplicati' => \App\SupportedApps\Duplicati::class, - 'Emby' => \App\SupportedApps\Emby::class, - 'Flood' => \App\SupportedApps\Flood::class, - 'FreshRSS' => \App\SupportedApps\FreshRSS::class, - 'Gitea' => \App\SupportedApps\Gitea::class, - 'Glances' => \App\SupportedApps\Glances::class, - 'Grafana' => \App\SupportedApps\Grafana::class, - 'Graylog' => \App\SupportedApps\Graylog::class, - 'Headphones' => \App\SupportedApps\Headphones::class, - 'Home Assistant' => \App\SupportedApps\HomeAssistant::class, - 'Jackett' => \App\SupportedApps\Jackett::class, - 'Jdownloader' => \App\SupportedApps\Jdownloader::class, - 'Krusader' => \App\SupportedApps\Krusader::class, - 'LibreNMS' => \App\SupportedApps\LibreNMS::class, - 'Lidarr' => \App\SupportedApps\Lidarr::class, - 'Mailcow' => \App\SupportedApps\Mailcow::class, - 'Mcmyadmin' => \App\SupportedApps\Mcmyadmin::class, - 'Medusa' => \App\SupportedApps\Medusa::class, - 'Monica' => \App\SupportedApps\Monica::class, - 'MusicBrainz' => \App\SupportedApps\MusicBrainz::class, - 'Mylar' => \App\SupportedApps\Mylar::class, - 'NZBGet' => \App\SupportedApps\Nzbget::class, - 'Netdata' => \App\SupportedApps\Netdata::class, - 'Nextcloud' => \App\SupportedApps\Nextcloud::class, - 'Now Showing' => \App\SupportedApps\NowShowing::class, - 'Nzbhydra' => \App\SupportedApps\Nzbhydra::class, - 'OPNSense' => \App\SupportedApps\Opnsense::class, - 'Ombi' => \App\SupportedApps\Ombi::class, - 'Openhab' => \App\SupportedApps\Openhab::class, - 'OpenMediaVault' => \App\SupportedApps\OpenMediaVault::class, - 'Pihole' => \App\SupportedApps\Pihole::class, - 'Plex' => \App\SupportedApps\Plex::class, - 'Plexpy' => \App\SupportedApps\Plexpy::class, - 'Plexrequests' => \App\SupportedApps\Plexrequests::class, - 'Portainer' => \App\SupportedApps\Portainer::class, - 'Proxmox' => \App\SupportedApps\Proxmox::class, - 'Radarr' => \App\SupportedApps\Radarr::class, - 'Rancher' => \App\SupportedApps\Rancher::class, - 'Runeaudio' => \App\SupportedApps\Runeaudio::class, - 'Sabnzbd' => \App\SupportedApps\Sabnzbd::class, - 'Sickrage' => \App\SupportedApps\Sickrage::class, - 'Sonarr' => \App\SupportedApps\Sonarr::class, - 'Syncthing' => \App\SupportedApps\Syncthing::class, - 'Tautulli' => \App\SupportedApps\Tautulli::class, - 'Transmission' => \App\SupportedApps\Transmission::class, - 'Traefik' => \App\SupportedApps\Traefik::class, - 'tt-rss' => \App\SupportedApps\Ttrss::class, - 'TVheadend' => \App\SupportedApps\TVheadend::class, - 'UniFi' => \App\SupportedApps\Unifi::class, - 'unRAID' => \App\SupportedApps\Unraid::class, - 'pfSense' => \App\SupportedApps\Pfsense::class, - 'pyLoad' => \App\SupportedApps\pyLoad::class, - 'ruTorrent' => \App\SupportedApps\ruTorrent::class, - 'Virtualmin' => \App\SupportedApps\Virtualmin::class, - 'Watcher3' => \App\SupportedApps\Watcher3::class, - 'Webmin' => \App\SupportedApps\Webmin::class, - 'WebTools' => \App\SupportedApps\WebTools::class, - ]; - } - public static function supportedOptions() - { - return array_keys(self::supportedList()); - } - /** * Scope a query to only include pinned items. * diff --git a/config/app.php b/config/app.php index 75b16bdd..0859d885 100644 --- a/config/app.php +++ b/config/app.php @@ -229,6 +229,9 @@ return [ 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, + 'SupportedApps' => App\SupportedApps::class, + 'EnhancedApps' => App\EnhancedApps::class, + ], ]; diff --git a/database/migrations/2018_10_18_110905_create_applications_table.php b/database/migrations/2018_10_18_110905_create_applications_table.php index 76a790d8..44f76f6f 100644 --- a/database/migrations/2018_10_18_110905_create_applications_table.php +++ b/database/migrations/2018_10_18_110905_create_applications_table.php @@ -14,14 +14,16 @@ class CreateApplicationsTable extends Migration public function up() { Schema::create('applications', function (Blueprint $table) { + $table->increments('id'); $table->string('name')->unique(); - $table->string('sha'); + $table->string('sha')->unique()->nullable(); $table->string('icon')->nullable(); $table->string('website')->nullable(); $table->string('license')->nullable(); $table->mediumText('description')->nullable(); $table->boolean('enhanced')->default(false); + $table->string('tile_background')->default('dark'); $table->timestamps(); }); diff --git a/resources/views/items/scripts.blade.php b/resources/views/items/scripts.blade.php index 7dcf402a..5493be37 100644 --- a/resources/views/items/scripts.blade.php +++ b/resources/views/items/scripts.blade.php @@ -1,4 +1,4 @@ - +