mirror of
https://github.com/linuxserver/Heimdall.git
synced 2026-02-24 21:50:32 +09:00
Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b4583c59c | ||
|
|
6a836f9151 | ||
|
|
c7b92ad945 | ||
|
|
a05b7a43bd | ||
|
|
929346b2f1 | ||
|
|
23ceed01cb | ||
|
|
2ccf9a1110 | ||
|
|
4917d8e47b | ||
|
|
a0963e5d92 | ||
|
|
e2731b532a | ||
|
|
eccd6056bd | ||
|
|
c1273a4b01 | ||
|
|
017752b06e | ||
|
|
9abb7a04ac | ||
|
|
9533b9d887 | ||
|
|
f1a6feeb8f | ||
|
|
35930f2ffb | ||
|
|
0a1e8a2f8b | ||
|
|
4f9315132b | ||
|
|
196a843148 | ||
|
|
9778875d52 | ||
|
|
fdeb812333 | ||
|
|
e21e12e737 | ||
|
|
52d2322955 | ||
|
|
5ea8f7df33 | ||
|
|
7a9c73df3f | ||
|
|
3ad8a366a6 |
10
app/Item.php
10
app/Item.php
@@ -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,
|
||||
@@ -144,7 +148,7 @@ class Item extends Model
|
||||
}
|
||||
}
|
||||
|
||||
public function getTargetAttribute()
|
||||
public function getLinkTargetAttribute()
|
||||
{
|
||||
if((int)$this->type === 1) {
|
||||
return '';
|
||||
|
||||
12
app/SupportedApps/Dokuwiki.php
Normal file
12
app/SupportedApps/Dokuwiki.php
Normal 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';
|
||||
}
|
||||
}
|
||||
12
app/SupportedApps/Gitea.php
Normal file
12
app/SupportedApps/Gitea.php
Normal 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';
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
94
app/SupportedApps/Runeaudio.php
Normal file
94
app/SupportedApps/Runeaudio.php
Normal 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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
12
app/SupportedApps/Sickrage.php
Normal file
12
app/SupportedApps/Sickrage.php
Normal 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';
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ return [
|
||||
*/
|
||||
|
||||
'name' => env('APP_NAME', 'Heimdall'),
|
||||
'version' => '1.4.3',
|
||||
'version' => '1.4.6',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -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)',
|
||||
|
||||
57
public/css/app.css
vendored
57
public/css/app.css
vendored
@@ -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
|
||||
---------------------------------------------- */
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
25
readme.md
25
readme.md
@@ -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,26 +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
|
||||
- Mcmyadmin
|
||||
- Lidarr
|
||||
- McMyAdmin
|
||||
- Medusa
|
||||
- NZBGet
|
||||
- NZBHydra
|
||||
- NZBhydra & NZBhydra2
|
||||
- Netdata
|
||||
- Nextcloud
|
||||
- Openhab
|
||||
- Pihole
|
||||
- Ombi
|
||||
- OpenHAB
|
||||
- Plex
|
||||
- Plexpy
|
||||
- Plexrequests
|
||||
- Portainer
|
||||
- Sabnzbd
|
||||
- Radarr
|
||||
- SickRage
|
||||
- Sonarr
|
||||
- TT-RSS
|
||||
- Traefik
|
||||
- UniFi
|
||||
- pFsense
|
||||
- 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
16
resources/assets/sass/_rune.scss
vendored
Normal 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); }
|
||||
}
|
||||
1
resources/assets/sass/app.scss
vendored
1
resources/assets/sass/app.scss
vendored
@@ -10,6 +10,7 @@
|
||||
|
||||
// Bootstrap
|
||||
@import "app";
|
||||
@import "rune";
|
||||
|
||||
// Huebee
|
||||
@import "huebee";
|
||||
|
||||
89
resources/lang/nl/app.php
Normal file
89
resources/lang/nl/app.php
Normal 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.',
|
||||
|
||||
|
||||
];
|
||||
19
resources/lang/nl/auth.php
Normal file
19
resources/lang/nl/auth.php
Normal 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.',
|
||||
|
||||
];
|
||||
19
resources/lang/nl/pagination.php
Normal file
19
resources/lang/nl/pagination.php
Normal 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' => '« Vorige',
|
||||
'next' => 'Volgende »',
|
||||
|
||||
];
|
||||
22
resources/lang/nl/passwords.php
Normal file
22
resources/lang/nl/passwords.php
Normal 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.",
|
||||
|
||||
];
|
||||
121
resources/lang/nl/validation.php
Normal file
121
resources/lang/nl/validation.php
Normal 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' => [],
|
||||
|
||||
];
|
||||
80
resources/lang/pl/app.php
Normal file
80
resources/lang/pl/app.php
Normal 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',
|
||||
|
||||
|
||||
];
|
||||
19
resources/lang/pl/auth.php
Normal file
19
resources/lang/pl/auth.php
Normal 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.',
|
||||
|
||||
];
|
||||
19
resources/lang/pl/pagination.php
Normal file
19
resources/lang/pl/pagination.php
Normal 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' => '« Poprzedni',
|
||||
'next' => 'Następny »',
|
||||
|
||||
];
|
||||
22
resources/lang/pl/passwords.php
Normal file
22
resources/lang/pl/passwords.php
Normal 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',
|
||||
|
||||
];
|
||||
121
resources/lang/pl/validation.php
Normal file
121
resources/lang/pl/validation.php
Normal 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' => [],
|
||||
|
||||
];
|
||||
@@ -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>
|
||||
|
||||
|
||||
11
resources/views/supportedapps/plexpy.blade.php
Normal file
11
resources/views/supportedapps/plexpy.blade.php
Normal 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>
|
||||
21
resources/views/supportedapps/runeaudio.blade.php
Normal file
21
resources/views/supportedapps/runeaudio.blade.php
Normal 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>
|
||||
BIN
storage/app/public/supportedapps/dokuwiki.png
Normal file
BIN
storage/app/public/supportedapps/dokuwiki.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
BIN
storage/app/public/supportedapps/gitea.png
Normal file
BIN
storage/app/public/supportedapps/gitea.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
BIN
storage/app/public/supportedapps/runeaudio.png
Normal file
BIN
storage/app/public/supportedapps/runeaudio.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
BIN
storage/app/public/supportedapps/sickrage.png
Normal file
BIN
storage/app/public/supportedapps/sickrage.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
Reference in New Issue
Block a user