@ -0,0 +1,12 @@ |
|||||
|
<?php |
||||
|
|
||||
|
function format_bytes($bytes, $is_drive_size = true, $beforeunit = '', $afterunit = '') |
||||
|
{ |
||||
|
$btype = ($is_drive_size === true) ? 1000 : 1024; |
||||
|
$labels = array('B','KB','MB','GB','TB'); |
||||
|
for($x = 0; $bytes >= $btype && $x < (count($labels) - 1); $bytes /= $btype, $x++); // use 1000 rather than 1024 to simulate HD size not real size |
||||
|
if($labels[$x] == "TB") return(round($bytes, 3).$beforeunit.$labels[$x].$afterunit); |
||||
|
elseif($labels[$x] == "GB") return(round($bytes, 2).$beforeunit.$labels[$x].$afterunit); |
||||
|
elseif($labels[$x] == "MB") return(round($bytes, 2).$beforeunit.$labels[$x].$afterunit); |
||||
|
else return(round($bytes, 0).$beforeunit.$labels[$x].$afterunit); |
||||
|
} |
@ -0,0 +1,11 @@ |
|||||
|
<?php namespace App\SupportedApps\Contracts; |
||||
|
|
||||
|
interface Livestats { |
||||
|
|
||||
|
public function configDetails(); |
||||
|
|
||||
|
public function testConfig(); |
||||
|
|
||||
|
public function executeConfig(); |
||||
|
|
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
<?php namespace App\SupportedApps; |
||||
|
|
||||
|
class Jdownloader implements Contracts\Applications { |
||||
|
public function defaultColour() |
||||
|
{ |
||||
|
return '#2b494f'; |
||||
|
} |
||||
|
public function icon() |
||||
|
{ |
||||
|
return 'supportedapps/jdownloader.png'; |
||||
|
} |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
<?php namespace App\SupportedApps; |
||||
|
|
||||
|
class Mcmyadmin implements Contracts\Applications { |
||||
|
public function defaultColour() |
||||
|
{ |
||||
|
return '#30404b'; |
||||
|
} |
||||
|
public function icon() |
||||
|
{ |
||||
|
return 'supportedapps/mcmyadmin.png'; |
||||
|
} |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
<?php namespace App\SupportedApps; |
||||
|
|
||||
|
class Nextcloud implements Contracts\Applications { |
||||
|
public function defaultColour() |
||||
|
{ |
||||
|
return '#0e2c3e'; |
||||
|
} |
||||
|
public function icon() |
||||
|
{ |
||||
|
return 'supportedapps/nextcloud.png'; |
||||
|
} |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
<?php namespace App\SupportedApps; |
||||
|
|
||||
|
class Openhab implements Contracts\Applications { |
||||
|
public function defaultColour() |
||||
|
{ |
||||
|
return '#b7b7b7'; |
||||
|
} |
||||
|
public function icon() |
||||
|
{ |
||||
|
return 'supportedapps/openhab.png'; |
||||
|
} |
||||
|
} |
@ -1,16 +1,70 @@ |
|||||
<?php namespace App\SupportedApps; |
<?php namespace App\SupportedApps; |
||||
|
|
||||
class Pihole implements Contracts\Applications { |
use GuzzleHttp\Exception\GuzzleException; |
||||
|
use GuzzleHttp\Client; |
||||
|
|
||||
|
class Pihole implements Contracts\Applications, Contracts\Livestats { |
||||
public function defaultColour() |
public function defaultColour() |
||||
{ |
{ |
||||
return '#222'; |
return '#352222'; |
||||
} |
} |
||||
public function icon() |
public function icon() |
||||
{ |
{ |
||||
return 'supportedapps/pihole.png'; |
return 'supportedapps/pihole.png'; |
||||
} |
} |
||||
|
|
||||
public function configDetails() |
public function configDetails() |
||||
{ |
{ |
||||
return null; |
return 'pihole'; |
||||
|
} |
||||
|
|
||||
|
public function testConfig() |
||||
|
{ |
||||
|
$res = $this->buildRequest(); |
||||
|
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 = ''; |
||||
|
$res = $this->buildRequest(); |
||||
|
$data = json_decode($res->getBody()); |
||||
|
|
||||
|
$output = ' |
||||
|
<ul class="livestats"> |
||||
|
<li><span class="title">Domains<br />Blocked</span><strong>'.$data->domains_being_blocked.'</strong></li> |
||||
|
<li><span class="title">Blocked<br />Today</span><strong>'.$data->ads_blocked_today.'</span></strong></li> |
||||
|
</ul> |
||||
|
'; |
||||
|
return $output; |
||||
} |
} |
||||
|
|
||||
|
public function buildRequest() |
||||
|
{ |
||||
|
$config = $this->config; |
||||
|
$url = $config->url; |
||||
|
|
||||
|
$api_url = $url.'admin/api.php'; |
||||
|
//die( $api_url.' --- '); |
||||
|
|
||||
|
$client = new Client(['http_errors' => false]); |
||||
|
$res = $client->request('GET', $api_url); |
||||
|
return $res; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
} |
} |
@ -0,0 +1,12 @@ |
|||||
|
<?php namespace App\SupportedApps; |
||||
|
|
||||
|
class Plexpy implements Contracts\Applications { |
||||
|
public function defaultColour() |
||||
|
{ |
||||
|
return '#2d2208'; |
||||
|
} |
||||
|
public function icon() |
||||
|
{ |
||||
|
return 'supportedapps/plexpy.png'; |
||||
|
} |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
<?php namespace App\SupportedApps; |
||||
|
|
||||
|
class Plexrequests implements Contracts\Applications { |
||||
|
public function defaultColour() |
||||
|
{ |
||||
|
return '#845c2c'; |
||||
|
} |
||||
|
public function icon() |
||||
|
{ |
||||
|
return 'supportedapps/plexrequests.png'; |
||||
|
} |
||||
|
} |
@ -0,0 +1,82 @@ |
|||||
|
<?php namespace App\SupportedApps; |
||||
|
|
||||
|
use GuzzleHttp\Exception\GuzzleException; |
||||
|
use GuzzleHttp\Client; |
||||
|
|
||||
|
class Sabnzbd implements Contracts\Applications, Contracts\Livestats { |
||||
|
|
||||
|
public $config; |
||||
|
|
||||
|
public function defaultColour() |
||||
|
{ |
||||
|
return '#3e3924'; |
||||
|
} |
||||
|
public function icon() |
||||
|
{ |
||||
|
return 'supportedapps/sabnzbd.png'; |
||||
|
} |
||||
|
public function configDetails() |
||||
|
{ |
||||
|
return 'sabnzbd'; |
||||
|
} |
||||
|
public function testConfig() |
||||
|
{ |
||||
|
$res = $this->buildRequest('queue'); |
||||
|
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('queue'); |
||||
|
$data = json_decode($res->getBody()); |
||||
|
//$data->result->RemainingSizeMB = '10000000'; |
||||
|
//$data->result->DownloadRate = '100000000'; |
||||
|
$size = $data->queue->mbleft; |
||||
|
$rate = $data->queue->kbpersec; |
||||
|
$queue_size = format_bytes($size*1000*1000, false, ' <span>', '</span>'); |
||||
|
$current_speed = format_bytes($rate*1000, false, ' <span>'); |
||||
|
|
||||
|
if($size > 0 || $rate > 0) { |
||||
|
$output = ' |
||||
|
<ul class="livestats"> |
||||
|
<li><span class="title">Queue</span><strong>'.$queue_size.'</strong></li> |
||||
|
<li><span class="title">Speed</span><strong>'.$current_speed.'/s</span></strong></li> |
||||
|
</ul> |
||||
|
'; |
||||
|
} |
||||
|
return $output; |
||||
|
} |
||||
|
public function buildRequest($endpoint) |
||||
|
{ |
||||
|
$config = $this->config; |
||||
|
$url = $config->url; |
||||
|
$apikey = $config->apikey; |
||||
|
|
||||
|
$api_url = $url.'api?output=json&apikey='.$apikey.'&mode='.$endpoint; |
||||
|
//die( $api_url.' --- '); |
||||
|
|
||||
|
$client = new Client(['http_errors' => false]); |
||||
|
$res = $client->request('GET', $api_url); |
||||
|
return $res; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
<?php namespace App\SupportedApps; |
||||
|
|
||||
|
class Traefik implements Contracts\Applications { |
||||
|
public function defaultColour() |
||||
|
{ |
||||
|
return '#427d8c'; |
||||
|
} |
||||
|
public function icon() |
||||
|
{ |
||||
|
return 'supportedapps/traefik.png'; |
||||
|
} |
||||
|
} |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 7.1 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 15 KiB |
@ -0,0 +1,2 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig> |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 5.2 KiB |
@ -0,0 +1,41 @@ |
|||||
|
{ |
||||
|
"name": "App", |
||||
|
"icons": [ |
||||
|
{ |
||||
|
"src": "\/android-icon-36x36.png", |
||||
|
"sizes": "36x36", |
||||
|
"type": "image\/png", |
||||
|
"density": "0.75" |
||||
|
}, |
||||
|
{ |
||||
|
"src": "\/android-icon-48x48.png", |
||||
|
"sizes": "48x48", |
||||
|
"type": "image\/png", |
||||
|
"density": "1.0" |
||||
|
}, |
||||
|
{ |
||||
|
"src": "\/android-icon-72x72.png", |
||||
|
"sizes": "72x72", |
||||
|
"type": "image\/png", |
||||
|
"density": "1.5" |
||||
|
}, |
||||
|
{ |
||||
|
"src": "\/android-icon-96x96.png", |
||||
|
"sizes": "96x96", |
||||
|
"type": "image\/png", |
||||
|
"density": "2.0" |
||||
|
}, |
||||
|
{ |
||||
|
"src": "\/android-icon-144x144.png", |
||||
|
"sizes": "144x144", |
||||
|
"type": "image\/png", |
||||
|
"density": "3.0" |
||||
|
}, |
||||
|
{ |
||||
|
"src": "\/android-icon-192x192.png", |
||||
|
"sizes": "192x192", |
||||
|
"type": "image\/png", |
||||
|
"density": "4.0" |
||||
|
} |
||||
|
] |
||||
|
} |
@ -1,4 +1,4 @@ |
|||||
{ |
{ |
||||
"/css/app.css": "/css/app.css?id=8c034347751a0b8faeb2", |
"/css/app.css": "/css/app.css?id=a571eeda02c71a01f251", |
||||
"/js/app.js": "/js/app.js?id=559585a774e3f088503a" |
"/js/app.js": "/js/app.js?id=b38be2e595ece6fcef81" |
||||
} |
} |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 5.0 KiB |
@ -0,0 +1,80 @@ |
|||||
|
<?php |
||||
|
|
||||
|
return [ |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| App Language Lines |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
'settings.system' => 'Systemet', |
||||
|
'settings.appearance' => 'Utseende', |
||||
|
'settings.miscellaneous' => 'Diverse', |
||||
|
|
||||
|
'settings.version' => 'Versjon', |
||||
|
'settings.background_image' => 'Bakgrunnsbilde', |
||||
|
'settings.homepage_search' => 'Startside Søk', |
||||
|
'settings.search_provider' => 'Søkemotor', |
||||
|
'settings.language' => 'Språk', |
||||
|
'settings.reset' => 'Tilbakestill tilbake til standard', |
||||
|
'settings.remove' => 'Fjern', |
||||
|
'settings.search' => 'søk', |
||||
|
'settings.no_items' => 'Ingen funn', |
||||
|
|
||||
|
|
||||
|
'settings.label' => 'Merkelapp', |
||||
|
'settings.value' => 'Verdi', |
||||
|
'settings.edit' => 'Endre', |
||||
|
'settings.view' => 'Se', |
||||
|
|
||||
|
'options.none' => '- ikke valgt -', |
||||
|
'options.google' => 'Google', |
||||
|
'options.ddg' => 'DuckDuckGo', |
||||
|
'options.bing' => 'Bing', |
||||
|
'options.yes' => 'Ja', |
||||
|
'options.no' => 'Nei', |
||||
|
|
||||
|
'buttons.save' => 'Lagre', |
||||
|
'buttons.cancel' => 'Avbryt', |
||||
|
'buttons.add' => 'Legg til', |
||||
|
'buttons.upload' => 'Last opp en fil', |
||||
|
|
||||
|
'dash.pin_item' => 'Fest objektet til dashboardet', |
||||
|
'dash.no_apps' => 'Det er for øyeblikket ingen festede applikasjoner, :link1 eller :link2', |
||||
|
'dash.link1' => 'Legg til en applikasjon her', |
||||
|
'dash.link2' => 'Fest et objekt til dashboardet', |
||||
|
'dash.pinned_items' => 'Festede Objekter', |
||||
|
|
||||
|
'apps.app_list' => 'Applikasjonsliste', |
||||
|
'apps.view_trash' => 'Vis papirkurven', |
||||
|
'apps.add_application' => 'Legg til en applikasjon', |
||||
|
'apps.application_name' => 'Applikasjonsnavn', |
||||
|
'apps.colour' => 'Farge', |
||||
|
'apps.icon' => 'Ikon', |
||||
|
'apps.pinned' => 'Festet', |
||||
|
'apps.title' => 'Tittel', |
||||
|
'apps.hex' => 'Hex-farge', |
||||
|
'apps.username' => 'Brukernavn', |
||||
|
'apps.password' => 'Passord', |
||||
|
'apps.config' => 'Konfigurasjon', |
||||
|
'apps.apikey' => 'Api nøkkel', |
||||
|
'apps.enable' => 'Aktiver', |
||||
|
|
||||
|
'url' => 'Url', |
||||
|
'title' => 'Tittel', |
||||
|
'delete' => 'Slett', |
||||
|
'optional' => 'Valgfritt', |
||||
|
'restore' => 'Tilbakestill', |
||||
|
|
||||
|
'alert.success.item_created' => 'Objektet ble opprettet', |
||||
|
'alert.success.item_updated' => 'Objektet ble oppdatert', |
||||
|
'alert.success.item_deleted' => 'Objektet ble slettet', |
||||
|
'alert.success.item_restored' => 'Objektet ble gjenopprettet', |
||||
|
|
||||
|
'alert.success.setting_updated' => 'Du har oppdatert denne innstillingen', |
||||
|
'alert.error.not_exist' => 'Denne innstillingen eksisterer ikke.', |
||||
|
|
||||
|
|
||||
|
]; |
@ -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' => 'Påloggingsinformasjonen stemmer ikke overens med våre data.', |
||||
|
'throttle' => 'For mange påloggingsforsøk. Prøv igjen om :seconds sekunder.', |
||||
|
|
||||
|
]; |
@ -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' => '« Forrige', |
||||
|
'next' => 'Neste »', |
||||
|
|
||||
|
]; |
@ -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' => 'Passord må være minst seks tegn og i samsvar med bekreftelsen.', |
||||
|
'reset' => 'Passordet ditt har blitt tilbakestilt!', |
||||
|
'sent' => 'Vi har sendt deg en e-post med en tilbakestillingslink for ditt passord!', |
||||
|
'token' => 'Denne tilgangstoken er ikke gyldig.', |
||||
|
'user' => "Vi fant ingen med den e-postadressen.", |
||||
|
|
||||
|
]; |
@ -0,0 +1,78 @@ |
|||||
|
<?php |
||||
|
|
||||
|
return [ |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| App Language Lines |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
'settings.system' => 'Sistem', |
||||
|
'settings.appearance' => 'Görünüm', |
||||
|
'settings.miscellaneous' => 'Çeşitli', |
||||
|
|
||||
|
'settings.version' => 'Versiyon', |
||||
|
'settings.background_image' => 'Arkaplan Resmi', |
||||
|
'settings.homepage_search' => 'Anasayfa Arama', |
||||
|
'settings.search_provider' => 'Arama Motoru', |
||||
|
'settings.language' => 'Dil', |
||||
|
'settings.reset' => 'Varsayılana Geri Dön', |
||||
|
'settings.remove' => 'Sil', |
||||
|
'settings.search' => 'ara', |
||||
|
'settings.no_items' => 'Öğe bulunamadı', |
||||
|
|
||||
|
|
||||
|
'settings.label' => 'Etiket', |
||||
|
'settings.value' => 'Değer', |
||||
|
'settings.edit' => 'Düzenle', |
||||
|
'settings.view' => 'Görüntüle', |
||||
|
|
||||
|
'options.none' => '- ayarlanmadı -', |
||||
|
'options.google' => 'Google', |
||||
|
'options.ddg' => 'DuckDuckGo', |
||||
|
'options.bing' => 'Bing', |
||||
|
'options.yes' => 'Evet', |
||||
|
'options.no' => 'Hayır', |
||||
|
|
||||
|
'buttons.save' => 'Kaydet', |
||||
|
'buttons.cancel' => 'İptal', |
||||
|
'buttons.add' => 'Ekle', |
||||
|
'buttons.upload' => 'Dosya yükle', |
||||
|
|
||||
|
'dash.pin_item' => 'Ana panele iğnele', |
||||
|
'dash.no_apps' => 'Ana panele iğneli öğeler, :link1 or :link2', |
||||
|
'dash.link1' => 'Yeni uygulama ekle', |
||||
|
'dash.link2' => 'Ana panele iğnele', |
||||
|
'dash.pinned_items' => 'İğnelenen öğeler', |
||||
|
|
||||
|
'apps.app_list' => 'Uygulama listesi', |
||||
|
'apps.view_trash' => 'Çöpü görüntüle', |
||||
|
'apps.add_application' => 'Uygulama ekle', |
||||
|
'apps.application_name' => 'Uygulama adı', |
||||
|
'apps.colour' => 'Renk', |
||||
|
'apps.icon' => 'İkon', |
||||
|
'apps.pinned' => 'İğneli', |
||||
|
'apps.title' => 'Başlık', |
||||
|
'apps.hex' => 'Hex değeri', |
||||
|
'apps.username' => 'Kullanıcı adı', |
||||
|
'apps.password' => 'Şifre', |
||||
|
'apps.config' => 'Yapılandırma', |
||||
|
|
||||
|
'url' => 'Adres', |
||||
|
'title' => 'Başlık', |
||||
|
'delete' => 'Sil', |
||||
|
'optional' => 'İsteğe bağlı', |
||||
|
'restore' => 'Eski haline getir', |
||||
|
|
||||
|
'alert.success.item_created' => 'Öğe yaratıldı', |
||||
|
'alert.success.item_updated' => 'Öğe güncellendi', |
||||
|
'alert.success.item_deleted' => 'Öğe silindi', |
||||
|
'alert.success.item_restored' => 'Öğe eski haline getirildi', |
||||
|
|
||||
|
'alert.success.setting_updated' => 'Ayarlama kaydedildi', |
||||
|
'alert.error.not_exist' => 'Böyle bir seçenek yok.', |
||||
|
|
||||
|
|
||||
|
]; |
@ -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' => 'Kimlik bilgileri doğru değil.', |
||||
|
'throttle' => 'Çok fazla girişim. :seconds saniye sonra tekrar deneyin.', |
||||
|
|
||||
|
]; |
@ -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' => '« Önceki', |
||||
|
'next' => 'Sonraki »', |
||||
|
|
||||
|
]; |
@ -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' => 'Şifre en az altı karakter olmalı ve onaylamasına uymalıdır.', |
||||
|
'reset' => 'Şifreniz sıfırlandı!', |
||||
|
'sent' => 'Şifre sıfırlama bağlantısı eposta adresinize yollandı!', |
||||
|
'token' => 'Şifre sıfırlama simgesi geçerli değil.', |
||||
|
'user' => "Adresle ilişkili kullanıcı adı bulunamadı.", |
||||
|
|
||||
|
]; |
@ -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 kabul edilmelidir.', |
||||
|
'active_url' => ':attribute geçerli bir adres değil.', |
||||
|
'after' => ':attribute :date tarihinden sonra olmalıdır.', |
||||
|
'after_or_equal' => ':attribute :date ile aynı veya daha sonra tarihte olmalıdır.', |
||||
|
'alpha' => ':attribute sadece harf içerebilir.', |
||||
|
'alpha_dash' => ':attribute sadece harf, rakam, veya tire içerebilir.', |
||||
|
'alpha_num' => ':attribute sadece harf ve rakam içerebilir.', |
||||
|
'array' => ':attribute dizi olmalıdır.', |
||||
|
'before' => ':attribute :date tarihinden önce olmalıdır.', |
||||
|
'before_or_equal' => ':attribute :date ile aynı ya da daha önce tarihte olmalıdır.', |
||||
|
'between' => [ |
||||
|
'numeric' => ':attribute :min ile :max arasında olmalıdır.', |
||||
|
'file' => ':attribute :min ile :max kilobayt arasında olmalıdır.', |
||||
|
'string' => ':attribute :min ile :max arasında karakter içermelidir.', |
||||
|
'array' => ':attribute :min ile :max arasi öğe içermelidir.', |
||||
|
], |
||||
|
'boolean' => ':attribute alanı doğru ya da yanlış olmalıdır.', |
||||
|
'confirmed' => ':attribute onaylamasına uymuyor.', |
||||
|
'date' => ':attribute geçerli bir tarih değil.', |
||||
|
'date_format' => ':attribute :format düzenine uymuyor.', |
||||
|
'different' => ':attribute ve :other farklı olmalı.', |
||||
|
'digits' => ':attribute :digits haneli olmalıdır.', |
||||
|
'digits_between' => ':attribute :min ile :max arası haneli olmalıdır.', |
||||
|
'dimensions' => ':attribute resim boyutları geçersiz.', |
||||
|
'distinct' => ':attribute alan değeri zaten mevcut.', |
||||
|
'email' => ':attribute geçerli bir eposta adresi olmalıdır.', |
||||
|
'exists' => 'Seçili :attribute geçersiz.', |
||||
|
'file' => ':attribute dosya olmalıdır.', |
||||
|
'filled' => ':attribute alanı değer içermelidir.', |
||||
|
'image' => ':attribute resim olmalıdır.', |
||||
|
'in' => 'Seçili :attribute geçersiz.', |
||||
|
'in_array' => ':attribute :other içinde bulunmalıdır.', |
||||
|
'integer' => ':attribute tamsayı olmalıdır.', |
||||
|
'ip' => ':attribute geçerli IP adresi olmalıdır.', |
||||
|
'ipv4' => ':attribute geçerli IPv4 adresi olmalıdır.', |
||||
|
'ipv6' => ':attribute geçerli IPv6 adresi olmalıdır.', |
||||
|
'json' => ':attribute geçerli JSON dizesi olmalıdır.', |
||||
|
'max' => [ |
||||
|
'numeric' => ':attribute :max sayısından küçük olmalıdır.', |
||||
|
'file' => ':attribute :max kilobayttan küçük olmalıdır.', |
||||
|
'string' => ':attribute :max haneden az olmalıdır.', |
||||
|
'array' => ':attribute :max öğeden az içermelidir.', |
||||
|
], |
||||
|
'mimes' => 'Geçerli :attribute dosya tipi: :values.', |
||||
|
'mimetypes' => 'Geçerli :attribute dosya tipi: :values.', |
||||
|
'min' => [ |
||||
|
'numeric' => ':attribute en az :min olmalıdır.', |
||||
|
'file' => ':attribute en az :min kilobayt olmalıdır.', |
||||
|
'string' => ':attribute en az :min haneli olmalıdır.', |
||||
|
'array' => ':attribute en az :min öğe içermelidir.', |
||||
|
], |
||||
|
'not_in' => 'Seçili :attribute geçersiz.', |
||||
|
'numeric' => ':attribute sayı olmalıdır.', |
||||
|
'present' => ':attribute alanı dolu olmalı.', |
||||
|
'regex' => ':attribute düzeni geçersiz.', |
||||
|
'required' => ':attribute alanı gereklidir.', |
||||
|
'required_if' => ':other :value ise :attribute alanı gereklidir.', |
||||
|
'required_unless' => ':other :values içinde değilse :attribute alanı gereklidir.', |
||||
|
'required_with' => ':values dolu ise :attribute alanı gereklidir.', |
||||
|
'required_with_all' => ':values dolu ise :attribute alanı gereklidir.', |
||||
|
'required_without' => ':values boş ise :attribute alanı gereklidir.', |
||||
|
'required_without_all' => ':values değerlerinin tamamı boş ise :attribute alanı gereklidir.', |
||||
|
'same' => ':attribute ve :other aynı olmalı.', |
||||
|
'size' => [ |
||||
|
'numeric' => ':attribute :size olmalıdır.', |
||||
|
'file' => ':attribute :size kilobayt olmalıdır.', |
||||
|
'string' => ':attribute :size haneli olmalıdır.', |
||||
|
'array' => ':attribute :size öğe içermelidir.', |
||||
|
], |
||||
|
'string' => ':attribute dize olmalıdır.', |
||||
|
'timezone' => ':attribute geçerli bir zaman dilimi olmalıdır.', |
||||
|
'unique' => ':attribute zaten kullanımda.', |
||||
|
'uploaded' => ':attribute yüklenemedi.', |
||||
|
'url' => ':attribute düzeni geçersiz.', |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| 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' => [], |
||||
|
|
||||
|
]; |
@ -1,12 +1,15 @@ |
|||||
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }})</h2> |
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }})</h2> |
||||
<div class="items"> |
<div class="items"> |
||||
<input type="hidden" name="config[type]" value="\App\SupportedApps\Nzbget" /> |
<input type="hidden" data-config="type" class="config-item" name="config[type]" value="\App\SupportedApps\Nzbget" /> |
||||
<div class="input"> |
<div class="input"> |
||||
<label>{{ __('app.apps.username') }}</label> |
<label>{{ __('app.apps.username') }}</label> |
||||
{!! Form::text('config[username]', null, array('placeholder' => __('app.apps.username'), 'class' => 'form-control')) !!} |
{!! Form::text('config[username]', null, array('placeholder' => __('app.apps.username'), 'data-config' => 'username', 'class' => 'form-control config-item')) !!} |
||||
</div> |
</div> |
||||
<div class="input"> |
<div class="input"> |
||||
<label>{{ __('app.apps.password') }}</label> |
<label>{{ __('app.apps.password') }}</label> |
||||
{!! Form::text('config[password]', null, array('placeholder' => __('app.apps.password'), 'class' => 'form-control')) !!} |
{!! Form::text('config[password]', null, array('placeholder' => __('app.apps.password'), 'data-config' => 'password', 'class' => 'form-control config-item')) !!} |
||||
|
</div> |
||||
|
<div class="input"> |
||||
|
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button> |
||||
</div> |
</div> |
||||
</div> |
</div> |
@ -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\Pihole" /> |
||||
|
<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> |
@ -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\Sabnzbd" /> |
||||
|
<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> |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 8.9 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 41 KiB |
@ -0,0 +1,5 @@ |
|||||
|
phpunit.xml |
||||
|
composer.lock |
||||
|
build |
||||
|
vendor |
||||
|
coverage.clover |
@ -0,0 +1,46 @@ |
|||||
|
before_commands: |
||||
|
- "composer install --prefer-source" |
||||
|
|
||||
|
tools: |
||||
|
external_code_coverage: |
||||
|
timeout: 600 |
||||
|
php_code_coverage: |
||||
|
enabled: true |
||||
|
test_command: ./vendor/bin/phpunit |
||||
|
php_code_sniffer: |
||||
|
enabled: true |
||||
|
config: |
||||
|
standard: PSR2 |
||||
|
filter: |
||||
|
paths: ["src/*", "tests/*"] |
||||
|
php_cpd: |
||||
|
enabled: true |
||||
|
excluded_dirs: ["build/*", "tests", "vendor"] |
||||
|
php_cs_fixer: |
||||
|
enabled: true |
||||
|
config: |
||||
|
level: all |
||||
|
filter: |
||||
|
paths: ["src/*", "tests/*"] |
||||
|
php_loc: |
||||
|
enabled: true |
||||
|
excluded_dirs: ["build", "tests", "vendor"] |
||||
|
php_mess_detector: |
||||
|
enabled: true |
||||
|
config: |
||||
|
ruleset: phpmd.xml.dist |
||||
|
design_rules: { eval_expression: false } |
||||
|
filter: |
||||
|
paths: ["src/*"] |
||||
|
php_pdepend: |
||||
|
enabled: true |
||||
|
excluded_dirs: ["build", "tests", "vendor"] |
||||
|
php_analyzer: |
||||
|
enabled: true |
||||
|
filter: |
||||
|
paths: ["src/*", "tests/*"] |
||||
|
php_hhvm: |
||||
|
enabled: true |
||||
|
filter: |
||||
|
paths: ["src/*", "tests/*"] |
||||
|
sensiolabs_security_checker: true |
@ -0,0 +1,14 @@ |
|||||
|
#!/bin/sh |
||||
|
set -x |
||||
|
if [ "$TRAVIS_PHP_VERSION" = 'hhvm' ] || [ "$TRAVIS_PHP_VERSION" = 'hhvm-nightly' ] ; then |
||||
|
curl -sS https://getcomposer.org/installer > composer-installer.php |
||||
|
hhvm composer-installer.php |
||||
|
hhvm -v ResourceLimit.SocketDefaultTimeout=30 -v Http.SlowQueryThreshold=30000 composer.phar update --prefer-source |
||||
|
elif [ "$TRAVIS_PHP_VERSION" = '5.3.3' ] ; then |
||||
|
composer self-update |
||||
|
composer update --prefer-source --no-dev |
||||
|
composer dump-autoload |
||||
|
else |
||||
|
composer self-update |
||||
|
composer update --prefer-source |
||||
|
fi |