@ -0,0 +1,193 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Controllers; |
|||
|
|||
use Illuminate\Http\Request; |
|||
use App\Item; |
|||
use DB; |
|||
|
|||
class TagController extends Controller |
|||
{ |
|||
/** |
|||
* Display a listing of the resource. |
|||
* |
|||
* @return \Illuminate\Http\Response |
|||
*/ |
|||
public function index(Request $request) |
|||
{ |
|||
$trash = (bool)$request->input('trash'); |
|||
|
|||
$data['apps'] = Item::ofType('tag')->orderBy('title', 'asc')->get(); |
|||
$data['trash'] = Item::ofType('tag')->onlyTrashed()->get(); |
|||
if($trash) { |
|||
return view('tags.trash', $data); |
|||
} else { |
|||
return view('tags.list', $data); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* Show the form for creating a new resource. |
|||
* |
|||
* @return \Illuminate\Http\Response |
|||
*/ |
|||
public function create() |
|||
{ |
|||
$data = []; |
|||
return view('tags.create', $data); |
|||
} |
|||
|
|||
/** |
|||
* Store a newly created resource in storage. |
|||
* |
|||
* @param \Illuminate\Http\Request $request |
|||
* @return \Illuminate\Http\Response |
|||
*/ |
|||
public function store(Request $request) |
|||
{ |
|||
$validatedData = $request->validate([ |
|||
'title' => 'required|max:255', |
|||
]); |
|||
|
|||
if($request->hasFile('file')) { |
|||
$path = $request->file('file')->store('icons'); |
|||
$request->merge([ |
|||
'icon' => $path |
|||
]); |
|||
} |
|||
|
|||
$slug = str_slug($request->title, '-'); |
|||
|
|||
// set item type to tag |
|||
$request->merge([ |
|||
'type' => '1', |
|||
'url' => $slug |
|||
]); |
|||
//die(print_r($request->all())); |
|||
Item::create($request->all()); |
|||
|
|||
$route = route('dash', [], false); |
|||
return redirect($route) |
|||
->with('success', __('app.alert.success.tag_created')); |
|||
} |
|||
|
|||
/** |
|||
* Display the specified resource. |
|||
* |
|||
* @param int $id |
|||
* @return \Illuminate\Http\Response |
|||
*/ |
|||
public function show($slug) |
|||
{ |
|||
$item = Item::whereUrl($slug)->first(); |
|||
//print_r($item); |
|||
$data['apps'] = $item->children()->pinned()->orderBy('order', 'asc')->get(); |
|||
$data['all_apps'] = $item->children; |
|||
return view('welcome', $data); |
|||
} |
|||
|
|||
/** |
|||
* Show the form for editing the specified resource. |
|||
* |
|||
* @param int $id |
|||
* @return \Illuminate\Http\Response |
|||
*/ |
|||
public function edit($id) |
|||
{ |
|||
// Get the item |
|||
$item = Item::find($id); |
|||
|
|||
// show the edit form and pass the nerd |
|||
return view('tags.edit') |
|||
->with('item', $item); |
|||
} |
|||
|
|||
/** |
|||
* Update the specified resource in storage. |
|||
* |
|||
* @param \Illuminate\Http\Request $request |
|||
* @param int $id |
|||
* @return \Illuminate\Http\Response |
|||
*/ |
|||
public function update(Request $request, $id) |
|||
{ |
|||
$validatedData = $request->validate([ |
|||
'title' => 'required|max:255', |
|||
]); |
|||
|
|||
if($request->hasFile('file')) { |
|||
$path = $request->file('file')->store('icons'); |
|||
$request->merge([ |
|||
'icon' => $path |
|||
]); |
|||
} |
|||
|
|||
$slug = str_slug($request->title, '-'); |
|||
// set item type to tag |
|||
$request->merge([ |
|||
'url' => $slug |
|||
]); |
|||
|
|||
Item::find($id)->update($request->all()); |
|||
|
|||
$route = route('dash', [], false); |
|||
return redirect($route) |
|||
->with('success',__('app.alert.success.tag_updated')); |
|||
} |
|||
|
|||
/** |
|||
* Remove the specified resource from storage. |
|||
* |
|||
* @param int $id |
|||
* @return \Illuminate\Http\Response |
|||
*/ |
|||
public function destroy(Request $request, $id) |
|||
{ |
|||
// |
|||
$force = (bool)$request->input('force'); |
|||
if($force) { |
|||
Item::withTrashed() |
|||
->where('id', $id) |
|||
->forceDelete(); |
|||
} else { |
|||
Item::find($id)->delete(); |
|||
} |
|||
|
|||
$route = route('tags.index', [], false); |
|||
return redirect($route) |
|||
->with('success',__('app.alert.success.item_deleted')); |
|||
} |
|||
|
|||
/** |
|||
* Restore the specified resource from soft deletion. |
|||
* |
|||
* @param int $id |
|||
* @return \Illuminate\Http\Response |
|||
*/ |
|||
public function restore($id) |
|||
{ |
|||
// |
|||
Item::withTrashed() |
|||
->where('id', $id) |
|||
->restore(); |
|||
$route = route('tags.index', [], false); |
|||
return redirect($route) |
|||
->with('success',__('app.alert.success.item_restored')); |
|||
} |
|||
|
|||
public function add($tag, $item) |
|||
{ |
|||
$output = 0; |
|||
$tag = Item::find($tag); |
|||
$item = Item::find($item); |
|||
if($tag && $item) { |
|||
// only add items, not cats |
|||
if((int)$item->type === 0) { |
|||
$tag->children()->attach($item); |
|||
return 1; |
|||
} |
|||
} |
|||
return $output; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Deluge implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#357'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/deluge.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Graylog implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#158'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/graylog.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class HomeAssistant implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#073c52'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/homeassistant.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Jackett implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#484814'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/jackett.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Lidarr implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#183c18'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/lidarr.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Medusa implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#4b5e55'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/medusa.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Netdata implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#543737'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/netdata.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Nzbhydra implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#53644d'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/nzbhydra.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Ombi implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#150f09'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/ombi.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Opnsense implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#211914'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/opnsense.png'; |
|||
} |
|||
} |
@ -0,0 +1,80 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
use GuzzleHttp\Exception\GuzzleException; |
|||
use GuzzleHttp\Client; |
|||
|
|||
class Proxmox implements Contracts\Applications, Contracts\Livestats { |
|||
public function defaultColour() |
|||
{ |
|||
return '#542e0a'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/proxmox.png'; |
|||
} |
|||
|
|||
public function configDetails() |
|||
{ |
|||
//return 'proxmox'; |
|||
return null; |
|||
} |
|||
|
|||
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; |
|||
}*/ |
|||
return null; |
|||
} |
|||
|
|||
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; |
|||
*/ |
|||
return null; |
|||
} |
|||
|
|||
public function buildRequest($endpoint='') |
|||
{ |
|||
$config = $this->config; |
|||
|
|||
$username = $config->username; |
|||
$password = $config->password; |
|||
|
|||
$url = $config->url; |
|||
$url = rtrim($url, '/'); |
|||
|
|||
$api_url = $url.'/api2/json/'.$endpoint.'?username='.$username.'&password='.$password; |
|||
//die( $api_url.' --- '); |
|||
|
|||
$client = new Client(['http_errors' => false, 'verify' => false ]); |
|||
$res = $client->request('GET', $api_url); |
|||
return $res; |
|||
|
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Radarr implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#3e3726'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/radarr.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Sonarr implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#163740'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/sonarr.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class Ttrss implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#9d704c'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/tt-rss.png'; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php namespace App\SupportedApps; |
|||
|
|||
class ruTorrent implements Contracts\Applications { |
|||
public function defaultColour() |
|||
{ |
|||
return '#004'; |
|||
} |
|||
public function icon() |
|||
{ |
|||
return 'supportedapps/rutorrent.png'; |
|||
} |
|||
} |
@ -0,0 +1,32 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Support\Facades\Schema; |
|||
use Illuminate\Database\Schema\Blueprint; |
|||
use Illuminate\Database\Migrations\Migration; |
|||
|
|||
class AddColumnsToItemsForGroups extends Migration |
|||
{ |
|||
/** |
|||
* Run the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function up() |
|||
{ |
|||
Schema::table('items', function (Blueprint $table) { |
|||
$table->integer('type')->default(0)->index(); // 0 = item, 1 = category |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::table('items', function (Blueprint $table) { |
|||
$table->dropColumn(['type']); |
|||
}); |
|||
} |
|||
} |
@ -0,0 +1,35 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Support\Facades\Schema; |
|||
use Illuminate\Database\Schema\Blueprint; |
|||
use Illuminate\Database\Migrations\Migration; |
|||
|
|||
class ItemTag extends Migration |
|||
{ |
|||
/** |
|||
* Run the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function up() |
|||
{ |
|||
Schema::create('item_tag', function (Blueprint $table) { |
|||
$table->integer('item_id')->unsigned()->index(); |
|||
$table->foreign('item_id')->references('id')->on('items')->onDelete('cascade'); |
|||
|
|||
$table->integer('tag_id')->unsigned()->index(); |
|||
$table->foreign('tag_id')->references('id')->on('items')->onDelete('cascade'); |
|||
$table->timestamps(); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::dropIfExists('item_tag'); |
|||
} |
|||
} |
@ -0,0 +1,3 @@ |
|||
{ |
|||
"/css/app.css": "/css/app.css" |
|||
} |
@ -1,4 +1,4 @@ |
|||
{ |
|||
"/css/app.css": "/css/app.css?id=a571eeda02c71a01f251", |
|||
"/js/app.js": "/js/app.js?id=b38be2e595ece6fcef81" |
|||
"/css/app.css": "/css/app.css?id=353c513dd97a5fa0607d", |
|||
"/js/app.js": "/js/app.js?id=24ea5e5c1fbea3461a14" |
|||
} |
@ -0,0 +1,486 @@ |
|||
.select2-container { |
|||
box-sizing: border-box; |
|||
display: inline-block; |
|||
margin: 0; |
|||
position: relative; |
|||
vertical-align: middle; } |
|||
.select2-container .select2-selection--single { |
|||
box-sizing: border-box; |
|||
cursor: pointer; |
|||
display: block; |
|||
height: 28px; |
|||
user-select: none; |
|||
-webkit-user-select: none; } |
|||
.select2-container .select2-selection--single .select2-selection__rendered { |
|||
display: block; |
|||
padding-left: 8px; |
|||
padding-right: 20px; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
white-space: nowrap; } |
|||
.select2-container .select2-selection--single .select2-selection__clear { |
|||
position: relative; } |
|||
.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { |
|||
padding-right: 8px; |
|||
padding-left: 20px; } |
|||
.select2-container .select2-selection--multiple { |
|||
box-sizing: border-box; |
|||
cursor: pointer; |
|||
display: block; |
|||
min-height: 39px; |
|||
user-select: none; |
|||
-webkit-user-select: none; } |
|||
.select2-container .select2-selection--multiple .select2-selection__rendered { |
|||
display: inline-block; |
|||
overflow: hidden; |
|||
padding-left: 8px; |
|||
text-overflow: ellipsis; |
|||
white-space: nowrap; } |
|||
.select2-container .select2-search--inline { |
|||
float: left; } |
|||
.select2-container .select2-search--inline .select2-search__field { |
|||
box-sizing: border-box; |
|||
border: none; |
|||
font-size: 100%; |
|||
margin-top: 5px; |
|||
padding: 0; } |
|||
.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { |
|||
-webkit-appearance: none; } |
|||
|
|||
.select2-dropdown { |
|||
background-color: white; |
|||
border: 1px solid #aaa; |
|||
border-radius: 4px; |
|||
box-sizing: border-box; |
|||
display: block; |
|||
position: absolute; |
|||
left: -100000px; |
|||
width: 100%; |
|||
z-index: 1051; } |
|||
|
|||
.select2-results { |
|||
display: block; } |
|||
|
|||
.select2-results__options { |
|||
list-style: none; |
|||
margin: 0; |
|||
padding: 0; } |
|||
|
|||
.select2-results__option { |
|||
padding: 6px; |
|||
user-select: none; |
|||
-webkit-user-select: none; } |
|||
.select2-results__option[aria-selected] { |
|||
cursor: pointer; } |
|||
|
|||
.select2-container--open .select2-dropdown { |
|||
left: 0; } |
|||
|
|||
.select2-container--open .select2-dropdown--above { |
|||
border-bottom: none; |
|||
border-bottom-left-radius: 0; |
|||
border-bottom-right-radius: 0; } |
|||
|
|||
.select2-container--open .select2-dropdown--below { |
|||
border-top: none; |
|||
border-top-left-radius: 0; |
|||
border-top-right-radius: 0; } |
|||
|
|||
.select2-search--dropdown { |
|||
display: block; |
|||
padding: 4px; } |
|||
.select2-search--dropdown .select2-search__field { |
|||
padding: 4px; |
|||
width: 100%; |
|||
box-sizing: border-box; } |
|||
.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { |
|||
-webkit-appearance: none; } |
|||
.select2-search--dropdown.select2-search--hide { |
|||
display: none; } |
|||
|
|||
.select2-close-mask { |
|||
border: 0; |
|||
margin: 0; |
|||
padding: 0; |
|||
display: block; |
|||
position: fixed; |
|||
left: 0; |
|||
top: 0; |
|||
min-height: 100%; |
|||
min-width: 100%; |
|||
height: auto; |
|||
width: auto; |
|||
opacity: 0; |
|||
z-index: 99; |
|||
background-color: #fff; |
|||
filter: alpha(opacity=0); } |
|||
|
|||
.select2-hidden-accessible { |
|||
border: 0 !important; |
|||
clip: rect(0 0 0 0) !important; |
|||
-webkit-clip-path: inset(50%) !important; |
|||
clip-path: inset(50%) !important; |
|||
height: 1px !important; |
|||
overflow: hidden !important; |
|||
padding: 0 !important; |
|||
position: absolute !important; |
|||
width: 1px !important; |
|||
white-space: nowrap !important; } |
|||
|
|||
.select2-container--default .select2-selection--single { |
|||
background-color: #fff; |
|||
border: 1px solid #aaa; |
|||
border-radius: 4px; } |
|||
.select2-container--default .select2-selection--single .select2-selection__rendered { |
|||
color: #444; |
|||
line-height: 28px; } |
|||
.select2-container--default .select2-selection--single .select2-selection__clear { |
|||
cursor: pointer; |
|||
float: right; |
|||
font-weight: bold; } |
|||
.select2-container--default .select2-selection--single .select2-selection__placeholder { |
|||
color: #999; } |
|||
.select2-container--default .select2-selection--single .select2-selection__arrow { |
|||
height: 26px; |
|||
position: absolute; |
|||
top: 1px; |
|||
right: 1px; |
|||
width: 20px; } |
|||
.select2-container--default .select2-selection--single .select2-selection__arrow b { |
|||
border-color: #888 transparent transparent transparent; |
|||
border-style: solid; |
|||
border-width: 5px 4px 0 4px; |
|||
height: 0; |
|||
left: 50%; |
|||
margin-left: -4px; |
|||
margin-top: -2px; |
|||
position: absolute; |
|||
top: 50%; |
|||
width: 0; } |
|||
|
|||
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { |
|||
float: left; } |
|||
|
|||
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { |
|||
left: 1px; |
|||
right: auto; } |
|||
|
|||
.select2-container--default.select2-container--disabled .select2-selection--single { |
|||
background-color: #eee; |
|||
cursor: default; } |
|||
.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { |
|||
display: none; } |
|||
|
|||
.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { |
|||
border-color: transparent transparent #888 transparent; |
|||
border-width: 0 4px 5px 4px; } |
|||
|
|||
.select2-container--default .select2-selection--multiple { |
|||
background-color: white; |
|||
border: 1px solid #dedfe2; |
|||
border-radius: 4px; |
|||
cursor: text; } |
|||
.select2-container--default .select2-selection--multiple .select2-selection__rendered { |
|||
box-sizing: border-box; |
|||
list-style: none; |
|||
margin: 0; |
|||
padding: 0 5px; |
|||
width: 100%; } |
|||
.select2-container--default .select2-selection--multiple .select2-selection__rendered li { |
|||
list-style: none; } |
|||
.select2-container--default .select2-selection--multiple .select2-selection__placeholder { |
|||
color: #999; |
|||
margin-top: 5px; |
|||
float: left; } |
|||
.select2-container--default .select2-selection--multiple .select2-selection__clear { |
|||
cursor: pointer; |
|||
float: right; |
|||
font-weight: bold; |
|||
margin-top: 5px; |
|||
margin-right: 10px; } |
|||
.select2-container--default .select2-selection--multiple .select2-selection__choice { |
|||
background-color: #f2f3f6; |
|||
border: 1px solid #dedfe2; |
|||
border-radius: 4px; |
|||
cursor: default; |
|||
float: left; |
|||
margin-right: 5px; |
|||
font-size: 13px; |
|||
font-weight: 300; |
|||
margin-top: 5px; |
|||
padding: 5px; } |
|||
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { |
|||
color: #999; |
|||
cursor: pointer; |
|||
display: inline-block; |
|||
font-weight: bold; |
|||
margin-right: 2px; } |
|||
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { |
|||
color: #333; } |
|||
|
|||
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { |
|||
float: right; } |
|||
|
|||
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { |
|||
margin-left: 5px; |
|||
margin-right: auto; } |
|||
|
|||
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { |
|||
margin-left: 2px; |
|||
margin-right: auto; } |
|||
|
|||
.select2-container--default.select2-container--focus .select2-selection--multiple { |
|||
border: solid #dedfe2 1px; |
|||
outline: 0; } |
|||
|
|||
.select2-container--default.select2-container--disabled .select2-selection--multiple { |
|||
background-color: #eee; |
|||
cursor: default; } |
|||
|
|||
.select2-container--default.select2-container--disabled .select2-selection__choice__remove { |
|||
display: none; } |
|||
|
|||
.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { |
|||
border-top-left-radius: 0; |
|||
border-top-right-radius: 0; } |
|||
|
|||
.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { |
|||
border-bottom-left-radius: 0; |
|||
border-bottom-right-radius: 0; } |
|||
|
|||
.select2-container--default .select2-search--dropdown .select2-search__field { |
|||
border: 1px solid #aaa; } |
|||
|
|||
.select2-container--default .select2-search--inline .select2-search__field { |
|||
background: transparent; |
|||
border: none; |
|||
outline: 0; |
|||
box-shadow: none; |
|||
-webkit-appearance: textfield; } |
|||
|
|||
.select2-container--default .select2-results > .select2-results__options { |
|||
max-height: 200px; |
|||
overflow-y: auto; } |
|||
|
|||
.select2-container--default .select2-results__option[role=group] { |
|||
padding: 0; } |
|||
|
|||
.select2-container--default .select2-results__option[aria-disabled=true] { |
|||
color: #999; } |
|||
|
|||
.select2-container--default .select2-results__option[aria-selected=true] { |
|||
background-color: #ddd; } |
|||
|
|||
.select2-container--default .select2-results__option .select2-results__option { |
|||
padding-left: 1em; } |
|||
.select2-container--default .select2-results__option .select2-results__option .select2-results__group { |
|||
padding-left: 0; } |
|||
.select2-container--default .select2-results__option .select2-results__option .select2-results__option { |
|||
margin-left: -1em; |
|||
padding-left: 2em; } |
|||
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { |
|||
margin-left: -2em; |
|||
padding-left: 3em; } |
|||
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { |
|||
margin-left: -3em; |
|||
padding-left: 4em; } |
|||
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { |
|||
margin-left: -4em; |
|||
padding-left: 5em; } |
|||
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { |
|||
margin-left: -5em; |
|||
padding-left: 6em; } |
|||
|
|||
.select2-container--default .select2-results__option--highlighted[aria-selected] { |
|||
background-color: #5897fb; |
|||
color: white; } |
|||
|
|||
.select2-container--default .select2-results__group { |
|||
cursor: default; |
|||
display: block; |
|||
padding: 6px; } |
|||
|
|||
.select2-container--classic .select2-selection--single { |
|||
background-color: #f7f7f7; |
|||
border: 1px solid #aaa; |
|||
border-radius: 4px; |
|||
outline: 0; |
|||
background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); |
|||
background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); |
|||
background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); |
|||
background-repeat: repeat-x; |
|||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } |
|||
.select2-container--classic .select2-selection--single:focus { |
|||
border: 1px solid #5897fb; } |
|||
.select2-container--classic .select2-selection--single .select2-selection__rendered { |
|||
color: #444; |
|||
line-height: 28px; } |
|||
.select2-container--classic .select2-selection--single .select2-selection__clear { |
|||
cursor: pointer; |
|||
float: right; |
|||
font-weight: bold; |
|||
margin-right: 10px; } |
|||
.select2-container--classic .select2-selection--single .select2-selection__placeholder { |
|||
color: #999; } |
|||
.select2-container--classic .select2-selection--single .select2-selection__arrow { |
|||
background-color: #ddd; |
|||
border: none; |
|||
border-left: 1px solid #aaa; |
|||
border-top-right-radius: 4px; |
|||
border-bottom-right-radius: 4px; |
|||
height: 26px; |
|||
position: absolute; |
|||
top: 1px; |
|||
right: 1px; |
|||
width: 20px; |
|||
background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); |
|||
background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); |
|||
background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); |
|||
background-repeat: repeat-x; |
|||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } |
|||
.select2-container--classic .select2-selection--single .select2-selection__arrow b { |
|||
border-color: #888 transparent transparent transparent; |
|||
border-style: solid; |
|||
border-width: 5px 4px 0 4px; |
|||
height: 0; |
|||
left: 50%; |
|||
margin-left: -4px; |
|||
margin-top: -2px; |
|||
position: absolute; |
|||
top: 50%; |
|||
width: 0; } |
|||
|
|||
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { |
|||
float: left; } |
|||
|
|||
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { |
|||
border: none; |
|||
border-right: 1px solid #aaa; |
|||
border-radius: 0; |
|||
border-top-left-radius: 4px; |
|||
border-bottom-left-radius: 4px; |
|||
left: 1px; |
|||
right: auto; } |
|||
|
|||
.select2-container--classic.select2-container--open .select2-selection--single { |
|||
border: 1px solid #5897fb; } |
|||
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { |
|||
background: transparent; |
|||
border: none; } |
|||
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { |
|||
border-color: transparent transparent #888 transparent; |
|||
border-width: 0 4px 5px 4px; } |
|||
|
|||
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { |
|||
border-top: none; |
|||
border-top-left-radius: 0; |
|||
border-top-right-radius: 0; |
|||
background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); |
|||
background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); |
|||
background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); |
|||
background-repeat: repeat-x; |
|||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } |
|||
|
|||
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { |
|||
border-bottom: none; |
|||
border-bottom-left-radius: 0; |
|||
border-bottom-right-radius: 0; |
|||
background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); |
|||
background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); |
|||
background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); |
|||
background-repeat: repeat-x; |
|||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } |
|||
|
|||
.select2-container--classic .select2-selection--multiple { |
|||
background-color: white; |
|||
border: 1px solid #aaa; |
|||
border-radius: 4px; |
|||
cursor: text; |
|||
outline: 0; } |
|||
.select2-container--classic .select2-selection--multiple:focus { |
|||
border: 1px solid #5897fb; } |
|||
.select2-container--classic .select2-selection--multiple .select2-selection__rendered { |
|||
list-style: none; |
|||
margin: 0; |
|||
padding: 0 5px; } |
|||
.select2-container--classic .select2-selection--multiple .select2-selection__clear { |
|||
display: none; } |
|||
.select2-container--classic .select2-selection--multiple .select2-selection__choice { |
|||
background-color: #e4e4e4; |
|||
border: 1px solid #aaa; |
|||
border-radius: 4px; |
|||
cursor: default; |
|||
float: left; |
|||
margin-right: 5px; |
|||
margin-top: 5px; |
|||
padding: 0 5px; } |
|||
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { |
|||
color: #888; |
|||
cursor: pointer; |
|||
display: inline-block; |
|||
font-weight: bold; |
|||
margin-right: 2px; } |
|||
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { |
|||
color: #555; } |
|||
|
|||
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { |
|||
float: right; |
|||
margin-left: 5px; |
|||
margin-right: auto; } |
|||
|
|||
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { |
|||
margin-left: 2px; |
|||
margin-right: auto; } |
|||
|
|||
.select2-container--classic.select2-container--open .select2-selection--multiple { |
|||
border: 1px solid #5897fb; } |
|||
|
|||
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { |
|||
border-top: none; |
|||
border-top-left-radius: 0; |
|||
border-top-right-radius: 0; } |
|||
|
|||
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { |
|||
border-bottom: none; |
|||
border-bottom-left-radius: 0; |
|||
border-bottom-right-radius: 0; } |
|||
|
|||
.select2-container--classic .select2-search--dropdown .select2-search__field { |
|||
border: 1px solid #aaa; |
|||
outline: 0; } |
|||
|
|||
.select2-container--classic .select2-search--inline .select2-search__field { |
|||
outline: 0; |
|||
box-shadow: none; } |
|||
|
|||
.select2-container--classic .select2-dropdown { |
|||
background-color: white; |
|||
border: 1px solid transparent; } |
|||
|
|||
.select2-container--classic .select2-dropdown--above { |
|||
border-bottom: none; } |
|||
|
|||
.select2-container--classic .select2-dropdown--below { |
|||
border-top: none; } |
|||
|
|||
.select2-container--classic .select2-results > .select2-results__options { |
|||
max-height: 200px; |
|||
overflow-y: auto; } |
|||
|
|||
.select2-container--classic .select2-results__option[role=group] { |
|||
padding: 0; } |
|||
|
|||
.select2-container--classic .select2-results__option[aria-disabled=true] { |
|||
color: grey; } |
|||
|
|||
.select2-container--classic .select2-results__option--highlighted[aria-selected] { |
|||
background-color: #3875d7; |
|||
color: white; } |
|||
|
|||
.select2-container--classic .select2-results__group { |
|||
cursor: default; |
|||
display: block; |
|||
padding: 6px; } |
|||
|
|||
.select2-container--classic.select2-container--open .select2-dropdown { |
|||
border-color: #5897fb; } |
@ -0,0 +1,80 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| App Language Lines |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
*/ |
|||
|
|||
'settings.system' => 'Sistema', |
|||
'settings.appearance' => 'Aspetto', |
|||
'settings.miscellaneous' => 'Miscellaneous', |
|||
|
|||
'settings.version' => 'Versione', |
|||
'settings.background_image' => 'Immagine di sfondo', |
|||
'settings.homepage_search' => 'Ricerca in homepage', |
|||
'settings.search_provider' => 'Motore di ricerca', |
|||
'settings.language' => 'Lingua', |
|||
'settings.reset' => 'Ripristina le impostazioni di default', |
|||
'settings.remove' => 'Rimuovi', |
|||
'settings.search' => 'Cerca', |
|||
'settings.no_items' => 'Nessun elemento trovato', |
|||
|
|||
|
|||
'settings.label' => 'Etichetta', |
|||
'settings.value' => 'Valore', |
|||
'settings.edit' => 'Modifica', |
|||
'settings.view' => 'Vista', |
|||
|
|||
'options.none' => '- non impostato -', |
|||
'options.google' => 'Google', |
|||
'options.ddg' => 'DuckDuckGo', |
|||
'options.bing' => 'Bing', |
|||
'options.yes' => 'Si', |
|||
'options.no' => 'No', |
|||
|
|||
'buttons.save' => 'Salva', |
|||
'buttons.cancel' => 'Annulla', |
|||
'buttons.add' => 'Aggiungi', |
|||
'buttons.upload' => 'Aggiungi un file', |
|||
|
|||
'dash.pin_item' => 'Fissa un elemento sulla dashboard', |
|||
'dash.no_apps' => 'Non ci sono applicazioni fissate, :link1 o :link2', |
|||
'dash.link1' => 'Aggiungi un\'applicazione qui', |
|||
'dash.link2' => 'Fissa un elemento alla dashboard', |
|||
'dash.pinned_items' => 'Elementi fissati', |
|||
|
|||
'apps.app_list' => 'Lista delle applicazioni', |
|||
'apps.view_trash' => 'Guarda il cestino', |
|||
'apps.add_application' => 'Aggiungi applicazione', |
|||
'apps.application_name' => 'Nome dell\'applicazione', |
|||
'apps.colour' => 'Colore', |
|||
'apps.icon' => 'Icona', |
|||
'apps.pinned' => 'Fissato', |
|||
'apps.title' => 'Titolo', |
|||
'apps.hex' => 'Colore esadecimale', |
|||
'apps.username' => 'Nome utente', |
|||
'apps.password' => 'Password', |
|||
'apps.config' => 'Configurazione', |
|||
'apps.apikey' => 'Api Key', |
|||
'apps.enable' => 'Abilitato', |
|||
|
|||
'url' => 'Url', |
|||
'title' => 'Titolo', |
|||
'delete' => 'Elimina', |
|||
'optional' => 'Opzionale', |
|||
'restore' => 'Ripristina', |
|||
|
|||
'alert.success.item_created' => 'Elemento creato con successo', |
|||
'alert.success.item_updated' => 'Elemento aggiornato con successo', |
|||
'alert.success.item_deleted' => 'Elemento cancellato con successo', |
|||
'alert.success.item_restored' => 'Elemento ripristinato con successo', |
|||
|
|||
'alert.success.setting_updated' => 'Hai modificato questi settaggi', |
|||
'alert.error.not_exist' => 'Questi settaggi non esistono.', |
|||
|
|||
|
|||
]; |
@ -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', |
|||
|
|||
|
|||
]; |
@ -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.', |
|||
|
|||
]; |
@ -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 »', |
|||
|
|||
]; |
@ -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', |
|||
|
|||
]; |
@ -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' => [], |
|||
|
|||
]; |
@ -0,0 +1,15 @@ |
|||
<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\Proxmox" /> |
|||
<div class="input"> |
|||
<label>{{ __('app.apps.username') }}</label> |
|||
{!! Form::text('config[username]', null, array('placeholder' => __('app.apps.username'), 'data-config' => 'username', 'class' => 'form-control config-item')) !!} |
|||
</div> |
|||
<div class="input"> |
|||
<label>{{ __('app.apps.password') }}</label> |
|||
<input type="password" name="config[password]" value="{{ $item->config->password or '' }}" placeholder="{{ __('app.apps.password') }}" class="form-control config-item" data-config="password" /> |
|||
</div> |
|||
<div class="input"> |
|||
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button> |
|||
</div> |
|||
</div> |
@ -0,0 +1,12 @@ |
|||
@extends('app') |
|||
|
|||
@section('content') |
|||
|
|||
{!! Form::open(array('route' => 'tags.store', 'id' => 'itemform', 'files' => true, 'method'=>'POST')) !!} |
|||
@include('tags.form') |
|||
{!! Form::close() !!} |
|||
|
|||
@endsection |
|||
@section('scripts') |
|||
@include('tags.scripts') |
|||
@endsection |
@ -0,0 +1,12 @@ |
|||
@extends('app') |
|||
|
|||
@section('content') |
|||
|
|||
{!! Form::model($item, ['method' => 'PATCH', 'id' => 'itemform', 'files' => true, 'route' => ['tags.update', $item->id]]) !!} |
|||
@include('tags.form') |
|||
{!! Form::close() !!} |
|||
|
|||
@endsection |
|||
@section('scripts') |
|||
@include('tags.scripts') |
|||
@endsection |
@ -0,0 +1,76 @@ |
|||
<section class="module-container"> |
|||
<header> |
|||
<div class="section-title">{{ __('app.apps.add_tag') }}</div> |
|||
<div class="module-actions"> |
|||
<button type="submit"class="button"><i class="fa fa-save"></i><span>{{ __('app.buttons.save') }}</span></button> |
|||
<a href="{{ route('tags.index', [], false) }}" class="button"><i class="fa fa-ban"></i><span>{{ __('app.buttons.cancel') }}</span></a> |
|||
</div> |
|||
</header> |
|||
<div id="create" class="create"> |
|||
{!! csrf_field() !!} |
|||
|
|||
<div class="input"> |
|||
<label>{{ __('app.apps.tag_name') }} *</label> |
|||
{!! Form::text('title', null, array('placeholder' => __('app.apps.title'), 'class' => 'form-control')) !!} |
|||
<hr /> |
|||
<label>{{ __('app.apps.pinned') }}</label> |
|||
{!! Form::hidden('pinned', '0') !!} |
|||
<label class="switch"> |
|||
<?php |
|||
$checked = false; |
|||
if(isset($item->pinned) && (bool)$item->pinned === true) $checked = true; |
|||
$set_checked = ($checked) ? ' checked="checked"' : ''; |
|||
?> |
|||
<input type="checkbox" name="pinned" value="1"<?php echo $set_checked;?> /> |
|||
<span class="slider round"></span> |
|||
</label> |
|||
</div> |
|||
<div class="input"> |
|||
<label>{{ __('app.apps.colour') }} *</label> |
|||
{!! Form::text('colour', null, array('placeholder' => __('app.apps.hex'),'class' => 'form-control color-picker')) !!} |
|||
<hr /> |
|||
</div> |
|||
<div class="input"> |
|||
<label>{{ __('app.apps.icon') }}</label> |
|||
<div class="icon-container"> |
|||
<div id="appimage"> |
|||
@if(isset($item->icon) && !empty($item->icon) || old('icon')) |
|||
<?php |
|||
if(isset($item->icon)) $icon = $item->icon; |
|||
else $icon = old('icon'); |
|||
?> |
|||
<img src="{{ asset('storage/'.$icon) }}" /> |
|||
{!! Form::hidden('icon', $icon, ['class' => 'form-control']) !!} |
|||
@else |
|||
<img src="/img/heimdall-icon-small.png" /> |
|||
@endif |
|||
</div> |
|||
<div class="upload-btn-wrapper"> |
|||
<button class="btn">{{ __('app.buttons.upload')}} </button> |
|||
<input type="file" id="upload" name="file" /> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
@if(isset($item) && isset($item->config->view)) |
|||
<div id="sapconfig" style="display: block;"> |
|||
@if(isset($item)) |
|||
@include('supportedapps.'.$item->config->view) |
|||
@endif |
|||
</div> |
|||
@else |
|||
<div id="sapconfig"></div> |
|||
@endif |
|||
|
|||
</div> |
|||
<footer> |
|||
<div class="section-title"> </div> |
|||
<div class="module-actions"> |
|||
<button type="submit"class="button"><i class="fa fa-save"></i><span>{{ __('app.buttons.save') }}</span></button> |
|||
<a href="{{ route('tags.index', [], false) }}" class="button"><i class="fa fa-ban"></i><span>{{ __('app.buttons.cancel') }}</span></a> |
|||
</div> |
|||
</footer> |
|||
|
|||
</section> |
|||
|
|||
|
@ -0,0 +1,56 @@ |
|||
@extends('app') |
|||
|
|||
@section('content') |
|||
<section class="module-container"> |
|||
<header> |
|||
<div class="section-title"> |
|||
{{ __('app.apps.tag_list') }} |
|||
@if( isset($trash) && $trash->count() > 0 ) |
|||
<a class="trashed" href="{{ route('tags.index', ['trash' => true], false) }}">{{ __('app.apps.view_trash') }} ({{ $trash->count() }})</a> |
|||
@endif |
|||
|
|||
</div> |
|||
<div class="module-actions"> |
|||
<a href="{{ route('tags.create', [], false) }}" title="" class="button"><i class="fa fa-plus"></i><span>{{ __('app.buttons.add') }}</span></a> |
|||
<a href="{{ route('dash', [], false) }}" class="button"><i class="fa fa-ban"></i><span>{{ __('app.buttons.cancel') }}</span></a> |
|||
</div> |
|||
</header> |
|||
|
|||
<table class="table table-hover"> |
|||
<thead> |
|||
<tr> |
|||
<th>{{ __('app.title') }}</th> |
|||
<th>{{ __('app.url') }}</th> |
|||
<th class="text-center" width="100">{{ __('app.settings.edit') }}</th> |
|||
<th class="text-center" width="100">{{ __('app.delete') }}</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
@if($apps->first()) |
|||
@foreach($apps as $app) |
|||
<tr> |
|||
<td>{{ $app->title }}</td> |
|||
<td><a{{ $app->target }} href="{{ $app->url }}">{{ $app->link }}</a></td> |
|||
<td class="text-center"><a href="{!! route('tags.edit', [$app->id], false) !!}" title="{{ __('app.settings.edit') }} {!! $app->title !!}"><i class="fas fa-edit"></i></a></td> |
|||
<td class="text-center"> |
|||
{!! Form::open(['method' => 'DELETE','route' => ['tags.destroy', $app->id],'style'=>'display:inline']) !!} |
|||
<button class="link" type="submit"><i class="fa fa-trash-alt"></i></button> |
|||
{!! Form::close() !!} |
|||
</td> |
|||
</tr> |
|||
@endforeach |
|||
@else |
|||
<tr> |
|||
<td colspan="4" class="form-error text-center"> |
|||
<strong>{{ __('app.settings.no_items') }}</strong> |
|||
</td> |
|||
</tr> |
|||
@endif |
|||
|
|||
|
|||
</tbody> |
|||
</table> |
|||
</section> |
|||
|
|||
|
|||
@endsection |
@ -0,0 +1,10 @@ |
|||
<script> |
|||
$( function() { |
|||
|
|||
var elem = $('.color-picker')[0]; |
|||
var hueb = new Huebee( elem, { |
|||
// options |
|||
}); |
|||
|
|||
}); |
|||
</script> |
@ -0,0 +1,52 @@ |
|||
@extends('app') |
|||
|
|||
@section('content') |
|||
<section class="module-container"> |
|||
<header> |
|||
<div class="section-title"> |
|||
Showing Deleted Applications |
|||
</div> |
|||
<div class="module-actions"> |
|||
<a href="{{ route('tags.index', [], false) }}" title="" class="button"><i class="fa fa-ban"></i><span>{{ __('app.buttons.cancel') }}</span></a> |
|||
</div> |
|||
</header> |
|||
|
|||
<table class="table table-hover"> |
|||
<thead> |
|||
<tr> |
|||
<th>{{ __('app.title') }}</th> |
|||
<th>Url</th> |
|||
<th class="text-center" width="100">{{ __('app.restore') }}</th> |
|||
<th class="text-center" width="100">{{ __('app.delete') }}</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
@if($trash->first()) |
|||
@foreach($trash as $app) |
|||
<tr> |
|||
<td>{{ $app->title }}</td> |
|||
<td>{{ __('app.url') }}</td> |
|||
<td class="text-center"><a href="{!! route('tags.restore', [ $app->id ], false) !!}" title="{{ __('app.restore') }} {!! $app->title !!}"><i class="fas fa-undo"></i></a></td> |
|||
<td class="text-center"> |
|||
{!! Form::open(['method' => 'DELETE','route' => ['tags.destroy', $app->id],'style'=>'display:inline']) !!} |
|||
<input type="hidden" name="force" value="1" /> |
|||
<button type="submit"><i class="fa fa-trash-alt"></i></button> |
|||
{!! Form::close() !!} |
|||
</td> |
|||
</tr> |
|||
@endforeach |
|||
@else |
|||
<tr> |
|||
<td colspan="5" class="form-error text-center"> |
|||
<strong>{{ __('app.settings.no_items') }}</strong> |
|||
</td> |
|||
</tr> |
|||
@endif |
|||
|
|||
|
|||
</tbody> |
|||
</table> |
|||
</section> |
|||
|
|||
|
|||
@endsection |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 19 KiB |