Compare commits

...

17 Commits
1.4.5 ... 1.4.6

Author SHA1 Message Date
KodeStar
8b4583c59c update version 2018-03-01 19:21:18 +00:00
KodeStar
6a836f9151 Merge pull request #118 from Futos/add-new-foundationApps
Add new foundation apps
2018-03-01 10:16:43 +00:00
Futos
c7b92ad945 fix(SupportedApps): fixed class name 2018-02-28 13:04:45 +01:00
Futos
a05b7a43bd feat(SupportedApps): Added DokuWiki to Foundation Apps
Closes #104
2018-02-28 13:03:17 +01:00
Futos
929346b2f1 feat(SupportedApps): Added SickRage to Foundation Apps
Closes #102
2018-02-28 12:58:00 +01:00
Futos
23ceed01cb feat(SupportedApps): Added Gitea to Foundation Apps
Closes #101
2018-02-28 12:52:11 +01:00
KodeStar
2ccf9a1110 Merge pull request #115 from mrquatsch/runeaudio
Add Runeaudio to list of foundation apps
2018-02-26 12:02:35 +00:00
mrquatsch
4917d8e47b updated runeaudio scss to bump keyframes outside of the title-marquee 2018-02-25 20:44:24 -06:00
mrquatsch
a0963e5d92 add Runeaudio to app/Item list 2018-02-25 20:41:19 -06:00
KodeStar
e2731b532a Update readme.md 2018-02-25 20:26:33 +00:00
KodeStar
eccd6056bd Merge pull request #112 from mrquatsch/runeaudio
enhanced runeaudio app - displays artist and song
2018-02-25 16:39:20 +00:00
mrquatsch
c1273a4b01 new rune scss - imported in app.scss 2018-02-25 08:23:45 -06:00
KodeStar
017752b06e Merge pull request #113 from Ephelyon/master
Add Dutch translation
2018-02-25 11:45:13 +00:00
KodeStar
9abb7a04ac Merge pull request #114 from mrquatsch/patch-1
Rename plexpy.blade.app to plexpy.blade.php
2018-02-25 11:44:37 +00:00
mrquatsch
9533b9d887 Rename plexpy.blade.app to plexpy.blade.php 2018-02-24 13:58:54 -06:00
Ephelyon
f1a6feeb8f Add Dutch translation 2018-02-24 18:54:31 +00:00
mrquatsch
0a1e8a2f8b enhanced runeaudio app - displays artist and song 2018-02-22 13:41:30 -06:00
22 changed files with 514 additions and 9 deletions

View File

@@ -27,8 +27,10 @@ class Item extends Model
{
return [
'Deluge' => \App\SupportedApps\Deluge::class,
'Dokuwiki' => \App\SupportedApps\Dokuwiki::class,
'Duplicati' => \App\SupportedApps\Duplicati::class,
'Emby' => \App\SupportedApps\Emby::class,
'Gitea' => \App\SupportedApps\Gitea::class,
'Graylog' => \App\SupportedApps\Graylog::class,
'Home Assistant' => \App\SupportedApps\HomeAssistant::class,
'Jackett' => \App\SupportedApps\Jackett::class,
@@ -40,9 +42,8 @@ class Item extends Model
'Netdata' => \App\SupportedApps\Netdata::class,
'Nextcloud' => \App\SupportedApps\Nextcloud::class,
'Nzbhydra' => \App\SupportedApps\Nzbhydra::class,
'Ttrss' => \App\SupportedApps\Ttrss::class,
'Ombi' => \App\SupportedApps\Ombi::class,
'OPNSense' => \App\SupportedApps\Opnsense::class,
'Ombi' => \App\SupportedApps\Ombi::class,
'Openhab' => \App\SupportedApps\Openhab::class,
'Pihole' => \App\SupportedApps\Pihole::class,
'Plex' => \App\SupportedApps\Plex::class,
@@ -51,9 +52,12 @@ class Item extends Model
'Portainer' => \App\SupportedApps\Portainer::class,
'Proxmox' => \App\SupportedApps\Proxmox::class,
'Radarr' => \App\SupportedApps\Radarr::class,
'Runeaudio' => \App\SupportedApps\Runeaudio::class,
'Sabnzbd' => \App\SupportedApps\Sabnzbd::class,
'Sickrage' => \App\SupportedApps\Sickrage::class,
'Sonarr' => \App\SupportedApps\Sonarr::class,
'Traefik' => \App\SupportedApps\Traefik::class,
'Ttrss' => \App\SupportedApps\Ttrss::class,
'UniFi' => \App\SupportedApps\Unifi::class,
'pFsense' => \App\SupportedApps\Pfsense::class,
'ruTorrent' => \App\SupportedApps\ruTorrent::class,

View File

@@ -0,0 +1,12 @@
<?php namespace App\SupportedApps;
class Dokuwiki implements Contracts\Applications {
public function defaultColour()
{
return '#9d7056';
}
public function icon()
{
return 'supportedapps/dokuwiki.png';
}
}

View File

@@ -0,0 +1,12 @@
<?php namespace App\SupportedApps;
class Gitea implements Contracts\Applications {
public function defaultColour()
{
return '#585e52';
}
public function icon()
{
return 'supportedapps/gitea.png';
}
}

View File

@@ -0,0 +1,94 @@
<?php namespace App\SupportedApps;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
class Runeaudio implements Contracts\Applications, Contracts\Livestats {
public function defaultColour()
{
return '#05A';
}
public function icon()
{
return 'supportedapps/runeaudio.png';
}
public function configDetails()
{
return 'runeaudio';
}
public function testConfig()
{
$res = $this->buildRequest('status');
switch($res->getStatusCode()) {
case 200:
echo 'Successfully connected to the API';
break;
case 401:
echo 'Failed: Invalid credentials';
break;
case 404:
echo 'Failed: Please make sure your URL is correct and that there is a trailing slash';
break;
default:
echo 'Something went wrong... Code: '.$res->getStatusCode();
break;
}
}
public function executeConfig()
{
$output = '';
$artist = '';
$song_title = '';
$res = $this->buildRequest('currentsong');
$array = explode("\n", $res->getBody());
foreach($array as $item) {
$item_array = explode(": ", $item);
if ($item_array[0] == 'Artist') {
$artist = $item_array[1];
} elseif ($item_array[0] == 'Title') {
$song_title = $item_array[1];
}
}
$output = '<ul class="livestats">';
if (strlen($artist) > 12) {
$output = $output.'<li><span class="title-marquee"><span>'.$artist.'</span></span></li>';
} else {
$output = $output.'<li><span class="title">'.$artist.'</span></li>';
}
$output = $output.'</ul><ul class="livestats">';
if (strlen($song_title) > 12) {
$output = $output.'<li><span class="title-marquee"><span>'.$song_title.'</span></span></li>';
} else {
$output = $output.'<li><span class="title">'.$song_title.'</span></li>';
}
$output = $output.'</ul>';
return $output;
}
public function buildRequest($endpoint)
{
$config = $this->config;
$url = $config->url;
$url = rtrim($url, '/');
$api_url = $url.'/command/?cmd='.$endpoint;
//die( $api_url.' --- ');
$client = new Client(['http_errors' => false]);
$res = $client->request('GET', $api_url);
return $res;
}
}

View File

@@ -0,0 +1,12 @@
<?php namespace App\SupportedApps;
class Sickrage implements Contracts\Applications {
public function defaultColour()
{
return '#6185a6';
}
public function icon()
{
return 'supportedapps/sickrage.png';
}
}

View File

@@ -14,7 +14,7 @@ return [
*/
'name' => env('APP_NAME', 'Heimdall'),
'version' => '1.4.3',
'version' => '1.4.6',
/*
|--------------------------------------------------------------------------

57
public/css/app.css vendored
View File

@@ -1169,6 +1169,63 @@ select:-webkit-autofill:focus {
color: #2f313a !important;
}
.title-marquee {
width: 125px;
overflow: hidden;
}
.title-marquee span {
white-space: nowrap;
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
-webkit-animation: marquee 8s linear;
animation: marquee 8s linear;
}
@-webkit-keyframes marquee {
0% {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
}
20% {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
}
95% {
-webkit-transform: translate(-200%, 0);
transform: translate(-200%, 0);
}
100% {
-webkit-transform: translate(-200%, 0);
transform: translate(-200%, 0);
}
}
@keyframes marquee {
0% {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
}
20% {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
}
95% {
-webkit-transform: translate(-200%, 0);
transform: translate(-200%, 0);
}
100% {
-webkit-transform: translate(-200%, 0);
transform: translate(-200%, 0);
}
}
/*! Huebee v2.0.0
http://huebee.buzz
---------------------------------------------- */

View File

@@ -1,4 +1,4 @@
{
"/css/app.css": "/css/app.css?id=353c513dd97a5fa0607d",
"/css/app.css": "/css/app.css?id=7e76b8c135b6dbd38363",
"/js/app.js": "/js/app.js?id=24ea5e5c1fbea3461a14"
}

View File

@@ -9,6 +9,9 @@ ____
___
Visit the website - https://heimdall.site
___
## About
As the name suggests Heimdall Application Dashboard is a dashboard for all your web applications. It doesn't need to be limited to applications though, you can add links to anything you like.
@@ -31,29 +34,32 @@ You can use the app to link to any site or application, but Foundation apps will
**Foundation**
- Deluge
- DokuWiki
- Duplicati
- Emby
- Gitea
- Graylog
- Jdownloader
- Lidarr
- McMyAdmin
- Medusa
- NZBhydra & NZBhydra2
- Netdata
- Nextcloud
- NZBhydra & NZBhydra2
- Ombi
- OpenHAB
- pfSense
- Plex
- Plexpy
- Plexrequests
- Portainer
- Radarr
- rTorrent/ruTorrent
- SickRage
- Sonarr
- Traefik
- TT-RSS
- Traefik
- UniFI
- pfSense
- rTorrent/ruTorrent
## Installing
Apart from the Laravel dependencies, namely PHP >= 7.0.0, OpenSSL PHP Extension, PDO PHP Extension, Mbstring PHP Extension, Tokenizer PHP Extension and XML PHP Extension, the only other thing Heimdall needs is sqlite support.

16
resources/assets/sass/_rune.scss vendored Normal file
View File

@@ -0,0 +1,16 @@
.title-marquee {
width: 125px;
overflow: hidden;
span {
white-space: nowrap;
transform: translate(0, 0);
animation: marquee 8s linear;
}
}
@keyframes marquee {
0% { transform: translate(0, 0); }
20% { transform: translate(0, 0); }
95% { transform: translate(-200%, 0); }
100% { transform: translate(-200%, 0); }
}

View File

@@ -10,6 +10,7 @@
// Bootstrap
@import "app";
@import "rune";
// Huebee
@import "huebee";

89
resources/lang/nl/app.php Normal file
View File

@@ -0,0 +1,89 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| App Language Lines
|--------------------------------------------------------------------------
|
*/
'settings.system' => 'Systeem',
'settings.appearance' => 'Uiterlijk',
'settings.miscellaneous' => 'Overige',
'settings.version' => 'Versie',
'settings.background_image' => 'Achtergrondafbeelding',
'settings.homepage_search' => 'Zoeken op thuispagina',
'settings.search_provider' => 'Zoekaanbieder',
'settings.language' => 'Taal',
'settings.reset' => 'Op standaard instellen',
'settings.remove' => 'Verwijderen',
'settings.search' => 'zoeken',
'settings.no_items' => 'Geen items gevonden',
'settings.label' => 'Label',
'settings.value' => 'Waarde',
'settings.edit' => 'Bewerken',
'settings.view' => 'Weergeven',
'options.none' => '- niet ingesteld -',
'options.google' => 'Google',
'options.ddg' => 'DuckDuckGo',
'options.bing' => 'Bing',
'options.yes' => 'Ja',
'options.no' => 'Nee',
'buttons.save' => 'Opslaan',
'buttons.cancel' => 'Annuleren',
'buttons.add' => 'Toevoegen',
'buttons.upload' => 'Bestand uploaden',
'dash.pin_item' => 'Item aan dashboard vastmaken',
'dash.no_apps' => 'Er zijn momenteel geen vastgemaakte toepassingen, :link1 of :link2',
'dash.link1' => 'Voeg hier een toepassing toe',
'dash.link2' => 'Een item aan het dashboard vastmaken',
'dash.pinned_items' => 'Vastgemaakte Items',
'apps.app_list' => 'Lijst met toepassingen',
'apps.view_trash' => 'Prullenbak weergeven',
'apps.add_application' => 'Toepassing toevoegen',
'apps.application_name' => 'Naam van toepassing',
'apps.colour' => 'Kleur',
'apps.icon' => 'Pictogram',
'apps.pinned' => 'Vastgemaakt',
'apps.title' => 'Titel',
'apps.hex' => 'Hex-kleur',
'apps.username' => 'Gebruikersnaam',
'apps.password' => 'Wachtwoord',
'apps.config' => 'Configuratie',
'apps.apikey' => 'API-sleutel',
'apps.enable' => 'Inschakalen',
'apps.tag_list' => 'Lijst met tags',
'apps.add_tag' => 'Tag toevoegen',
'apps.tag_name' => 'Naam van tag',
'apps.tags' => 'Tags',
'url' => 'URL',
'title' => 'Titel',
'delete' => 'Verwijderen',
'optional' => 'Optioneel',
'restore' => 'Herstellen',
'alert.success.item_created' => 'Item met succes aangemaakt',
'alert.success.item_updated' => 'Item met succes bewerkt',
'alert.success.item_deleted' => 'Item met succes verwijderd',
'alert.success.item_restored' => 'Item met succes hersteld',
'alert.success.tag_created' => 'Tag met succes aangemaakt',
'alert.success.tag_updated' => 'Tag met succes bewerkt',
'alert.success.tag_deleted' => 'Tag met succes verwijderd',
'alert.success.tag_restored' => 'Tag met succes hersteld',
'alert.success.setting_updated' => 'Deze instelling is met succes gewijzigd',
'alert.error.not_exist' => 'Deze instelling bestaat niet.',
];

View File

@@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
'failed' => 'De door u opgegeven referenties komen niet overeen met onze gegevens.',
'throttle' => 'Te veel aanmeldpogingen. Probeer het over :seconds seconden opnieuw.',
];

View File

@@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
'previous' => '&laquo; Vorige',
'next' => 'Volgende &raquo;',
];

View File

@@ -0,0 +1,22 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
'password' => 'Wachtwoorden moeten tenminste zes karakters bevatten en overeenkomen met de bevestiging.',
'reset' => 'Uw wachtwoord is opnieuw ingesteld!',
'sent' => 'De link voor het opnieuw instellen van uw wachtwoord is naar u gemaild!',
'token' => 'Deze token voor het opnieuw instellen van een wachtwoord is ongeldig.',
'user' => "Er bestaat geen gebruiker met het opgegeven e-mailadres.",
];

View File

@@ -0,0 +1,121 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => ':attribute moet geaccepteerd worden.',
'active_url' => ':attribute is geen geldige URL.',
'after' => ':attribute moet een datum na :date zijn.',
'after_or_equal' => ':attribute moet een datum op of na :date zijn.',
'alpha' => ':attribute mag alleen letters bevatten.',
'alpha_dash' => ':attribute mag alleen letters, cijfers en streepjes bevatten.',
'alpha_num' => ':attribute mag alleen letters en cijfers bevatten.',
'array' => ':attribute moet een array zijn.',
'before' => ':attribute moet een datum voor :date zijn.',
'before_or_equal' => ':attribute moet een datum op of voor :date zijn.',
'between' => [
'numeric' => ':attribute moet tussen :min en :max liggen.',
'file' => ':attribute moet tussen :min en :max kilobyte in omvang zijn.',
'string' => ':attribute moet tussen :min en :max karakters bevatten.',
'array' => ':attribute moet tussen :min en :max items bevatten.',
],
'boolean' => 'Het veld :attribute moet waar of onwaar zijn.',
'confirmed' => 'De bevestiging voor :attribute komt niet overeen.',
'date' => ':attribute is geen geldige datum.',
'date_format' => ':attribute komt niet overeen met het formaat :format.',
'different' => ':attribute en :other moeten verschillen.',
'digits' => ':attribute moet :digits getallen bevatten.',
'digits_between' => ':attribute moet tussen :min en :max getallen bevatten.',
'dimensions' => ':attribute heeft ongeldige afbeeldingsafmetingen.',
'distinct' => 'Het veld :attribute heeft een dubbele waarde.',
'email' => ':attribute moet een geldig e-mailadres zijn.',
'exists' => 'Geselecteerde :attribute is ongeldig.',
'file' => ':attribute moet een bestand zijn.',
'filled' => 'Het veld :attribute moet een waarde bevatten.',
'image' => ':attribute moet een afbeelding zijn.',
'in' => 'Geselecteerde :attribute is ongeldig.',
'in_array' => 'Het veld :attribute bestaat niet in :other.',
'integer' => ':attribute moet een geheel getal zijn.',
'ip' => ':attribute moet een geldig IP-adres zijn.',
'ipv4' => ':attribute moet een geldig IPv4-adres zijn.',
'ipv6' => ':attribute moet een geldig IPv6-adres zijn.',
'json' => ':attribute moet een geldige JSON-reeks zijn.',
'max' => [
'numeric' => ':attribute mag niet groter dan :max zijn.',
'file' => ':attribute mag niet groter dan :max kilobyte in omvang zijn.',
'string' => ':attribute mag niet meer dan :max karakters bevatten.',
'array' => ':attribute mag niet meer dan :max items bevatten.',
],
'mimes' => ':attribute moet een bestand zijn van type: :values.',
'mimetypes' => ':attribute moet een bestand zijn van type: :values.',
'min' => [
'numeric' => ':attribute moet tenminste :min zijn.',
'file' => ':attribute moet tenminste :min kilobyte in omvang zijn.',
'string' => ':attribute moet tenminste :min karakters bevatten.',
'array' => ':attribute moet tenminste :min items bevatten.',
],
'not_in' => 'Geselecteerde :attribute is ongeldig.',
'numeric' => ':attribute moet een getal zijn.',
'present' => 'Het veld :attribute moet aanwezig zijn.',
'regex' => 'Het formaat van :attribute is ongeldig.',
'required' => 'Het veld :attribute is vereist.',
'required_if' => 'Het veld :attribute is vereist wanneer :other :value is.',
'required_unless' => 'Het veld :attribute is vereist tenzij :other in :values aanwezig is.',
'required_with' => 'Het veld :attribute is vereist wanneer :values aanwezig is.',
'required_with_all' => 'Het veld :attribute is vereist wanneer :values aanwezig is.',
'required_without' => 'Het veld :attribute is vereist wanneer :values niet aanwezig is.',
'required_without_all' => 'Het veld :attribute is vereist wanneer geen van :values aanwezig zijn.',
'same' => ':attribute en :other moeten overeenkomen.',
'size' => [
'numeric' => ':attribute moet :size zijn.',
'file' => ':attribute moet :size kilobyte in omvang zijn.',
'string' => ':attribute moet :size karakters bevatten.',
'array' => ':attribute moet :size items bevatten.',
],
'string' => ':attribute moet een reekswaarde zijn.',
'timezone' => ':attribute moet een geldige zone bevatten.',
'unique' => ':attribute is reeds in gebruik.',
'uploaded' => 'Het uploaden van :attribute is niet gelukt.',
'url' => 'Het formaat van :attribute is ongeldig.',
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/
'attributes' => [],
];

View File

@@ -8,4 +8,4 @@
<div class="input">
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
</div>
</div>
</div>

View File

@@ -0,0 +1,21 @@
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }})</h2>
<div class="items">
<input type="hidden" data-config="type" class="config-item" name="config[type]" value="\App\SupportedApps\Runeaudio" />
<input type="hidden" data-config="dataonly" class="config-item" name="config[dataonly]" value="1" />
<div class="input">
<label>{{ __('app.apps.enable') }}</label>
{!! Form::hidden('config[enabled]', '0') !!}
<label class="switch">
<?php
$checked = false;
if(isset($item->config->enabled) && (bool)$item->config->enabled === true) $checked = true;
$set_checked = ($checked) ? ' checked="checked"' : '';
?>
<input type="checkbox" name="config[enabled]" value="1"<?php echo $set_checked;?> />
<span class="slider round"></span>
</label>
</div>
<div class="input">
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
</div>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB