Compare commits

...

10 Commits
1.4.4 ... 1.4.5

Author SHA1 Message Date
KodeStar
35930f2ffb Merge pull request #111 from mrquatsch/enhanced_plexpy
Enhanced Plexpy - display stream count via api token
2018-02-23 11:18:56 +00:00
mrquatsch
4f9315132b Enhanced Plexpy - display stream count via api token 2018-02-22 13:27:44 -06:00
KodeStar
196a843148 Merge pull request #105 from Attoy/master
Update readme.md
2018-02-20 12:23:21 +00:00
KodeStar
9778875d52 Merge branch 'master' into master 2018-02-20 12:23:10 +00:00
KodeStar
fdeb812333 Merge pull request #106 from kehator/master
Add PL translation
2018-02-20 11:51:35 +00:00
KodeStar
e21e12e737 Update SettingsSeeder.php 2018-02-20 11:51:18 +00:00
nuc
52d2322955 Rough translation based on EN translation 2018-02-20 05:40:50 +00:00
KodeStar
5ea8f7df33 Fix target link 2018-02-19 23:15:09 +00:00
Attoy
7a9c73df3f Update readme.md 2018-02-19 20:18:46 +01:00
nuc
3ad8a366a6 Add Polish Translation 2018-02-16 11:22:11 +00:00
11 changed files with 354 additions and 14 deletions

View File

@@ -144,7 +144,7 @@ class Item extends Model
}
}
public function getTargetAttribute()
public function getLinkTargetAttribute()
{
if((int)$this->type === 1) {
return '';

View File

@@ -1,6 +1,12 @@
<?php namespace App\SupportedApps;
class Plexpy implements Contracts\Applications {
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
class Plexpy implements Contracts\Applications, Contracts\Livestats {
public $config;
public function defaultColour()
{
return '#2d2208';
@@ -9,4 +15,62 @@ class Plexpy implements Contracts\Applications {
{
return 'supportedapps/plexpy.png';
}
}
public function configDetails()
{
return 'plexpy';
}
public function testConfig()
{
$res = $this->buildRequest('arnold');
switch($res->getStatusCode()) {
case 200:
$data = json_decode($res->getBody());
if(isset($data->error) && !empty($data->error)) {
echo 'Failed: '.$data->error;
} else {
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 = '';
$res = $this->buildRequest('get_activity');
$data = json_decode($res->getBody());
$stream_count = $data->response->data->stream_count;
$output = '
<ul class="livestats">
<li><span class="title">Stream Count</span><strong>'.$stream_count.'</strong></li>
</ul>
';
return $output;
}
public function buildRequest($endpoint)
{
$config = $this->config;
$url = $config->url;
$apikey = $config->apikey;
$url = rtrim($url, '/');
$api_url = $url.'/api/v2?apikey='.$apikey.'&cmd='.$endpoint;
$client = new Client(['http_errors' => false]);
$res = $client->request('GET', $api_url);
return $res;
}
}

View File

@@ -116,7 +116,8 @@ class SettingsSeeder extends Seeder
'fi' => 'Suomi (Finnish)',
'fr' => 'Français (French)',
'it' => 'Italiano (Italian)',
'no' => 'Norsk (Norwegian)',
'no' => 'Norsk (Norwegian)',
'pl' => 'Polski (Polish)',
'sv' => 'Svenska (Swedish)',
'es' => 'Español (Spanish)',
'tr' => 'Türkçe (Turkish)',

View File

@@ -33,24 +33,27 @@ You can use the app to link to any site or application, but Foundation apps will
- Deluge
- Duplicati
- Emby
- Graylog
- Jdownloader
- Mcmyadmin
- Lidarr
- McMyAdmin
- Medusa
- NZBGet
- NZBHydra
- Netdata
- Nextcloud
- Openhab
- Pihole
- NZBhydra & NZBhydra2
- Ombi
- OpenHAB
- pfSense
- Plex
- Plexpy
- Plexrequests
- Portainer
- Sabnzbd
- TT-RSS
- Radarr
- rTorrent/ruTorrent
- Sonarr
- Traefik
- UniFi
- pFsense
- TT-RSS
- UniFI
## 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.

80
resources/lang/pl/app.php Normal file
View File

@@ -0,0 +1,80 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| App Language Lines
|--------------------------------------------------------------------------
|
*/
'settings.system' => 'System',
'settings.appearance' => 'Wygląd',
'settings.miscellaneous' => 'Różne',
'settings.version' => 'Wersja',
'settings.background_image' => 'Tapeta Pulpitu',
'settings.homepage_search' => 'Strona Domowa Wyszukiwanie',
'settings.search_provider' => 'Operator Wyszukiwania',
'settings.language' => 'Język',
'settings.reset' => 'Przywróć ustawienia domyślne',
'settings.remove' => 'Usuń',
'settings.search' => 'szukaj',
'settings.no_items' => 'Nic nie znaleziono',
'settings.label' => 'Etykieta',
'settings.value' => 'Wartość',
'settings.edit' => 'Edytuj',
'settings.view' => 'Widok',
'options.none' => '- not set -',
'options.google' => 'Google',
'options.ddg' => 'DuckDuckGo',
'options.bing' => 'Bing',
'options.yes' => 'Tak',
'options.no' => 'Nie',
'buttons.save' => 'Zapisz',
'buttons.cancel' => 'Anuluj',
'buttons.add' => 'Dodaj',
'buttons.upload' => 'Prześlij plik',
'dash.pin_item' => 'Przypnij element do pulpitu',
'dash.no_apps' => 'Obecnie nie ma przypiętych aplikacji, :link1 or :link2',
'dash.link1' => 'Dodaj aplikację tutaj',
'dash.link2' => 'Przypnij element do pulpitu',
'dash.pinned_items' => 'Przypięte elementy',
'apps.app_list' => 'Lista aplikacji',
'apps.view_trash' => 'Widok kosza',
'apps.add_application' => 'Dodaj Aplikacje',
'apps.application_name' => 'Nazwa Aplikacji',
'apps.colour' => 'Kolor',
'apps.icon' => 'Ikona',
'apps.pinned' => 'Przypięty',
'apps.title' => 'Tytuł',
'apps.hex' => 'Kolor HEX',
'apps.username' => 'Nazwa Użytkownika',
'apps.password' => 'Hasło',
'apps.config' => 'Ustawienia',
'apps.apikey' => 'Klucz API',
'apps.enable' => 'Włącz',
'url' => 'URL',
'title' => 'Tytuł',
'delete' => 'Usuń',
'optional' => 'Opcjonalny',
'restore' => 'Przywróć',
'alert.success.item_created' => 'Element utworzony',
'alert.success.item_updated' => 'Element zaktualizowany',
'alert.success.item_deleted' => 'Element usunięty',
'alert.success.item_restored' => 'Przywrócono element',
'alert.success.setting_updated' => 'Ustawienie zostało zaktualizowane',
'alert.error.not_exist' => 'Takie ustawienie nie istnieje',
];

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' => 'Nieprawidłowe dane uwierzytelnienia',
'throttle' => 'Zbyt wiele prób logowania. Spróbuj ponownie za :seconds sekund.',
];

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; Poprzedni',
'next' => 'Następny &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' => 'Hasła muszą mieć co najmniej sześć znaków i być zgodne z potwierdzeniem.',
'reset' => 'Twoje hasło zostało zresetowane!',
'sent' => 'Wysłaliśmy e-mailem link do resetowania hasła!',
'token' => 'Ten token resetowania hasła jest nieprawidłowy',
'user' => 'Nie możemy znaleźć użytkownika z tym adresem e-mail',
];

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 musi zostać zaakceptowany.',
'active_url' => ':attribute nie jest prawidłowym adresem URL.',
'after' => ':attribute musi być datą następną po :date.',
'after_or_equal' => ':attribute musi być datą następną lub równą dacie :date.',
'alpha' => ':attribute może zawierać tylko litery.',
'alpha_dash' => ':attribute mogą zawierać tylko litery, cyfry i myślniki.',
'alpha_num' => ':attribute może zawierać tylko litery i cyfry.',
'array' => ':attribute musi być tablicą.',
'before' => ':attribute musi być datą wcześniejszą od daty :date.',
'before_or_equal' => ':attribute musi być datą wcześniejszą lub równą dacie :date.',
'between' => [
'numeric' => 'Numer :attribute musi byc większy niż :min oraz mniejszy niż :max.',
'file' => 'Rozmiar pliku :attribute musi byc większy niż :min oraz mniejszy niż :max kilobajtów.',
'string' => 'Tekst :attribute musi posiadać więcej niż :min oraz mniej niż :max znaków.',
'array' => 'Tablica :attribute musi zawierać więcej niż :min oraz mniej niż :max elementów.',
],
'boolean' => ':attribute musi zwracac wartość logiczną TRUE lub FALSE.',
'confirmed' => ':attribute nie jest zgodny z polem potwierdzenia.',
'date' => ':attribute nieprawidłowy format daty.',
'date_format' => 'Format daty :attribute musi byc zgodny z formatem :format.',
'different' => 'Wartości :attribute oraz :other muszą być różne.',
'digits' => 'Wartość :attribute musi być liczbą o długość :digits znaków.',
'digits_between' => 'Wartość :attribute musi być liczbą o długość co najmniej :min oraz nie więcej niz :max digits.',
'dimensions' => ':attribute ma nieprawidłowe wymiary obrazu.',
'distinct' => 'Pole :attribute ma zduplikowaną wartość.',
'email' => ':attribute musi być prawidłowym adresem e-mail.',
'exists' => 'Wybrnay :attribute nie istnieje.',
'file' => ':attribute musi być plikiem.',
'filled' => 'Pole :attribute nie może być puste.',
'image' => ':attribute musi być obrazem.',
'in' => 'Wybrany :attribute jest nieprawidłowy.',
'in_array' => 'Pole :attribute nie istnieje w :other.',
'integer' => ':attribute musi być liczbą całkowitą.',
'ip' => ':attribute musi być prawidłowym adresem IP.',
'ipv4' => ':attribute musi być prawidłowym adresem IPv4.',
'ipv6' => ':attribute musi być prawidłowym adresem IPv6.',
'json' => ':attribute musi być poprawnym łańcuchem JSON.',
'max' => [
'numeric' => ':attribute nie może być większa niż :max.',
'file' => 'Rozmiar :attribute nie może być większy niż :max kilobajtów.',
'string' => ':attribute nie może zawierać więcej niż :max znaków.',
'array' => ':attribute nie może zawierać więcej niż :max elementów.',
],
'mimes' => ':attribute musi być plikiem typu: :values.',
'mimetypes' => ':attribute musi być plikiem typu: :values.',
'min' => [
'numeric' => ':attribute musi wynosić conajmniej :min.',
'file' => 'Rozmiar :attribute musi być rowny lub większy niż :min kilobajtów.',
'string' => ':attribute musi zawierać conajmniej :min znaków.',
'array' => ':attribute musi zawierać conajmniej :min elementów.',
],
'not_in' => ':attribute jest nieprawidłowy.',
'numeric' => ':attribute musi być liczbą.',
'present' => 'Obecność pola :attribute jest obowiązkowa.',
'regex' => 'Format :attribute jest nieprawidłowy.',
'required' => ':attribute jest wymagany.',
'required_if' => 'Pole :attribute jest wymagane gdy :other wynosi :value.',
'required_unless' => 'Pole :attribute jest wymagane, chyba że :other jest zawarte w :values.',
'required_with' => 'Pole :attribute jest wymagane gdy pole :values jest obecne.',
'required_with_all' => 'Pole :attribute jest wymagane gdy :values jest obecne.',
'required_without' => 'Pole :attribute jest wymagane gdy pole :values NIE jest obecne.',
'required_without_all' => 'Pole :attribute jest wymagane gdy żadne z pól :values NIE jest obecne.',
'same' => 'Pole :attribute oraz :other muszą być takie same.',
'size' => [
'numeric' => ':attribute musi wynosić dokladnie :size.',
'file' => 'Rozmiar :attribute musi być równy :size kilobajtów.',
'string' => ':attribute musi składać się dokładnie z :size znaków.',
'array' => ':attribute musi składać się dokładnie z :size elementów.',
],
'string' => ':attribute musi być łańcuchem znaków.',
'timezone' => ':attribute musi być prawidłową strefą czasową.',
'unique' => ':attribute jest już zajety.',
'uploaded' => 'Nie udało się przesłać :attribute.',
'url' => ':attribute ma nieprawidłowy format.',
/*
|--------------------------------------------------------------------------
| 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' => 'dowlona-wiadomosc',
],
],
/*
|--------------------------------------------------------------------------
| 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

@@ -11,7 +11,7 @@
<div data-id="{{ $app->id }}" data-dataonly="{{ $app->config->dataonly or '0' }}" class="livestats-container"></div>
@endif
</div>
<a class="link"{{ $app->target }} href="{{ $app->link }}"><i class="fas {{ $app->link_icon }}"></i></a>
<a class="link"{{ $app->link_target }} href="{{ $app->link }}"><i class="fas {{ $app->link_icon }}"></i></a>
</div>
<a class="item-edit" href="{{ route($app->link_type.'.edit', [ $app->id ], false) }}"><i class="fas fa-pencil"></i></a>

View File

@@ -0,0 +1,11 @@
<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\Plexpy" />
<div class="input">
<label>{{ __('app.apps.apikey') }}</label>
{!! Form::text('config[apikey]', null, array('placeholder' => __('app.apps.apikey'), 'data-config' => 'apikey', 'class' => 'form-control config-item')) !!}
</div>
<div class="input">
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
</div>
</div>