Merge pull request #52 from ControlPanel-gg/useful_links_and_menu
Auto stash before revert of "Merge remote-tracking branch 'origin/dev…
This commit is contained in:
commit
1cfdd11f71
|
@ -4,6 +4,10 @@ namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\UsefulLink;
|
use App\Models\UsefulLink;
|
||||||
|
use Illuminate\Contracts\Foundation\Application;
|
||||||
|
use Illuminate\Contracts\View\Factory;
|
||||||
|
use Illuminate\Contracts\View\View;
|
||||||
|
use Illuminate\Http\RedirectResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
|
@ -12,7 +16,7 @@ class UsefulLinkController extends Controller
|
||||||
/**
|
/**
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
*
|
||||||
* @return Response
|
* @return Application|Factory|View|Response
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
|
@ -22,31 +26,37 @@ class UsefulLinkController extends Controller
|
||||||
/**
|
/**
|
||||||
* Show the form for creating a new resource.
|
* Show the form for creating a new resource.
|
||||||
*
|
*
|
||||||
* @return Response
|
|
||||||
*/
|
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
//
|
return view('admin.usefullinks.create');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store a newly created resource in storage.
|
* Store a newly created resource in storage.
|
||||||
*
|
*
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return Response
|
* @return RedirectResponse
|
||||||
*/
|
*/
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
//
|
$request->validate([
|
||||||
|
'icon' => 'required|string',
|
||||||
|
'title' => 'required|string|max:60',
|
||||||
|
'link' => 'required|string|max:191',
|
||||||
|
'description' => 'required|string|max:2000',
|
||||||
|
]);
|
||||||
|
|
||||||
|
UsefulLink::create($request->all());
|
||||||
|
return redirect()->route('admin.usefullinks.index')->with('success', 'link has been created!');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display the specified resource.
|
* Display the specified resource.
|
||||||
*
|
*
|
||||||
* @param UsefulLink $usefulLink
|
* @param UsefulLink $usefullink
|
||||||
* @return Response
|
* @return Response
|
||||||
*/
|
*/
|
||||||
public function show(UsefulLink $usefulLink)
|
public function show(UsefulLink $usefullink)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
@ -54,36 +64,71 @@ class UsefulLinkController extends Controller
|
||||||
/**
|
/**
|
||||||
* Show the form for editing the specified resource.
|
* Show the form for editing the specified resource.
|
||||||
*
|
*
|
||||||
* @param UsefulLink $usefulLink
|
* @param UsefulLink $usefullink
|
||||||
* @return Response
|
* @return Application|Factory|View
|
||||||
*/
|
*/
|
||||||
public function edit(UsefulLink $usefulLink)
|
public function edit(UsefulLink $usefullink)
|
||||||
{
|
{
|
||||||
//
|
return view('admin.usefullinks.edit' , [
|
||||||
|
'link' => $usefullink
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the specified resource in storage.
|
* Update the specified resource in storage.
|
||||||
*
|
*
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @param UsefulLink $usefulLink
|
* @param UsefulLink $usefullink
|
||||||
* @return Response
|
* @return RedirectResponse
|
||||||
*/
|
*/
|
||||||
public function update(Request $request, UsefulLink $usefulLink)
|
public function update(Request $request, UsefulLink $usefullink)
|
||||||
{
|
{
|
||||||
//
|
$request->validate([
|
||||||
|
'icon' => 'required|string',
|
||||||
|
'title' => 'required|string|max:60',
|
||||||
|
'link' => 'required|string|max:191',
|
||||||
|
'description' => 'required|string|max:2000',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$usefullink->update($request->all());
|
||||||
|
return redirect()->route('admin.usefullinks.index')->with('success', 'link has been updated!');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the specified resource from storage.
|
* Remove the specified resource from storage.
|
||||||
*
|
*
|
||||||
* @param UsefulLink $usefulLink
|
* @param UsefulLink $usefullink
|
||||||
* @return Response
|
* @return Response
|
||||||
*/
|
*/
|
||||||
public function destroy(UsefulLink $usefulLink)
|
public function destroy(UsefulLink $usefullink)
|
||||||
{
|
{
|
||||||
dd($usefulLink);
|
$usefullink->delete();
|
||||||
|
return redirect()->back()->with('success', 'product has been removed!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function dataTable()
|
||||||
|
{
|
||||||
|
$query = UsefulLink::query();
|
||||||
|
|
||||||
|
return datatables($query)
|
||||||
|
->addColumn('actions', function (UsefulLink $link) {
|
||||||
|
return '
|
||||||
|
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.usefullinks.edit', $link->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
|
||||||
|
|
||||||
|
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.usefullinks.destroy', $link->id) . '">
|
||||||
|
' . csrf_field() . '
|
||||||
|
' . method_field("DELETE") . '
|
||||||
|
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
|
||||||
|
</form>
|
||||||
|
';
|
||||||
|
})
|
||||||
|
->editColumn('created_at', function (UsefulLink $link) {
|
||||||
|
return $link->created_at ? $link->created_at->diffForHumans() : '';
|
||||||
|
})
|
||||||
|
->editColumn('icon', function (UsefulLink $link) {
|
||||||
|
return "<i class='{$link->icon}'></i>";
|
||||||
|
})
|
||||||
|
->rawColumns(['actions' , 'icon'])
|
||||||
|
->make();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,6 @@ class UsefulLink extends Model
|
||||||
'icon',
|
'icon',
|
||||||
'title',
|
'title',
|
||||||
'link',
|
'link',
|
||||||
'message'
|
'description'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,10 +16,10 @@ class CreateUsefulLinksTable extends Migration
|
||||||
{
|
{
|
||||||
Schema::create('useful_links', function (Blueprint $table) {
|
Schema::create('useful_links', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->string('icon')->default('');
|
$table->string('icon');
|
||||||
$table->string('title')->default('Default Title');
|
$table->string('title');
|
||||||
$table->string('link')->default('https://bitsec.dev');
|
$table->string('link')->nullable();
|
||||||
$table->string('message')->default('Default Message');
|
$table->text('description');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,25 +18,19 @@ class UsefulLinksSeeder extends Seeder
|
||||||
'icon' => 'fas fa-egg',
|
'icon' => 'fas fa-egg',
|
||||||
'title' => 'Pterodactyl Panel',
|
'title' => 'Pterodactyl Panel',
|
||||||
'link' => env('PTERODACTYL_URL', 'http://localhost'),
|
'link' => env('PTERODACTYL_URL', 'http://localhost'),
|
||||||
'message' => 'Use your servers on our pterodactyl panel <small>(You can use the same login details)</small>'
|
'description' => 'Use your servers on our pterodactyl panel <small>(You can use the same login details)</small>'
|
||||||
]);
|
]);
|
||||||
UsefulLink::create([
|
UsefulLink::create([
|
||||||
'icon' => 'fas fa-database',
|
'icon' => 'fas fa-database',
|
||||||
'title' => 'phpMyAdmin',
|
'title' => 'phpMyAdmin',
|
||||||
'link' => env('PHPMYADMIN_URL', 'http://localhost'),
|
'link' => env('PHPMYADMIN_URL', 'http://localhost'),
|
||||||
'message' => 'View your database online using phpMyAdmin'
|
'description' => 'View your database online using phpMyAdmin'
|
||||||
]);
|
]);
|
||||||
UsefulLink::create([
|
UsefulLink::create([
|
||||||
'icon' => 'fab fa-discord',
|
'icon' => 'fab fa-discord',
|
||||||
'title' => 'Discord',
|
'title' => 'Discord',
|
||||||
'link' => env('DISCORD_INVITE_URL'),
|
'link' => env('DISCORD_INVITE_URL'),
|
||||||
'message' => 'Need a helping hand? Want to chat? Got any questions? Join our discord!'
|
'description' => 'Need a helping hand? Want to chat? Got any questions? Join our discord!'
|
||||||
]);
|
|
||||||
UsefulLink::create([
|
|
||||||
'icon' => 'fas fa-link',
|
|
||||||
'title' => 'Useful Links',
|
|
||||||
'link' => '_blank',
|
|
||||||
'message' => 'Want to make your own links that show here? Use the command <code>php artisan create:usefullink</code></br> Delete links via database (for now)'
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
1
public/css/app.css
vendored
1
public/css/app.css
vendored
|
@ -1,4 +1,5 @@
|
||||||
@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback);
|
@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback);
|
||||||
|
::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#3a4047;border-radius:9px}::-webkit-scrollbar-thumb:hover{background:#2e3339}::-webkit-scrollbar-track{background:#343a40;border-radius:10px;box-shadow:inset 7px 10px 12px #343a40}
|
||||||
/*!
|
/*!
|
||||||
* AdminLTE v3.1.0-rc
|
* AdminLTE v3.1.0-rc
|
||||||
* Author: Colorlib
|
* Author: Colorlib
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/plugins/fontawesome-free/css/all.css
vendored
2
public/plugins/fontawesome-free/css/all.css
vendored
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
*/
|
*/
|
||||||
.fa,
|
.fa,
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
*/
|
*/
|
||||||
@font-face {
|
@font-face {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
*/
|
*/
|
||||||
@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands";font-weight:400}
|
@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands";font-weight:400}
|
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
*/
|
*/
|
||||||
.fa,
|
.fa,
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
*/
|
*/
|
||||||
@font-face {
|
@font-face {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
*/
|
*/
|
||||||
@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400}
|
@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400}
|
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
*/
|
*/
|
||||||
@font-face {
|
@font-face {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
*/
|
*/
|
||||||
@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}
|
@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}
|
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
*/
|
*/
|
||||||
svg:not(:root).svg-inline--fa {
|
svg:not(:root).svg-inline--fa {
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
|
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
*/
|
*/
|
||||||
.fa.fa-glass:before {
|
.fa.fa-glass:before {
|
||||||
|
|
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -2,11 +2,11 @@
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||||
<metadata>
|
<metadata>
|
||||||
Created by FontForge 20200314 at Mon Oct 5 09:50:45 2020
|
Created by FontForge 20200314 at Wed Jan 13 11:57:55 2021
|
||||||
By Robert Madole
|
By Robert Madole
|
||||||
Copyright (c) Font Awesome
|
Copyright (c) Font Awesome
|
||||||
</metadata>
|
</metadata>
|
||||||
<!-- Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
|
<!-- Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
|
||||||
<font id="FontAwesome5Brands-Regular" horiz-adv-x="448" >
|
<font id="FontAwesome5Brands-Regular" horiz-adv-x="448" >
|
||||||
<font-face
|
<font-face
|
||||||
font-family="Font Awesome 5 Brands Regular"
|
font-family="Font Awesome 5 Brands Regular"
|
||||||
|
|
Before Width: | Height: | Size: 730 KiB After Width: | Height: | Size: 730 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -2,11 +2,11 @@
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||||
<metadata>
|
<metadata>
|
||||||
Created by FontForge 20200314 at Mon Oct 5 09:50:45 2020
|
Created by FontForge 20200314 at Wed Jan 13 11:57:54 2021
|
||||||
By Robert Madole
|
By Robert Madole
|
||||||
Copyright (c) Font Awesome
|
Copyright (c) Font Awesome
|
||||||
</metadata>
|
</metadata>
|
||||||
<!-- Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
|
<!-- Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
|
||||||
<font id="FontAwesome5Free-Regular" horiz-adv-x="512" >
|
<font id="FontAwesome5Free-Regular" horiz-adv-x="512" >
|
||||||
<font-face
|
<font-face
|
||||||
font-family="Font Awesome 5 Free Regular"
|
font-family="Font Awesome 5 Free Regular"
|
||||||
|
|
Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 141 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -2,11 +2,11 @@
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||||
<metadata>
|
<metadata>
|
||||||
Created by FontForge 20200314 at Mon Oct 5 09:50:45 2020
|
Created by FontForge 20200314 at Wed Jan 13 11:57:55 2021
|
||||||
By Robert Madole
|
By Robert Madole
|
||||||
Copyright (c) Font Awesome
|
Copyright (c) Font Awesome
|
||||||
</metadata>
|
</metadata>
|
||||||
<!-- Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
|
<!-- Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
|
||||||
<font id="FontAwesome5Free-Solid" horiz-adv-x="512" >
|
<font id="FontAwesome5Free-Solid" horiz-adv-x="512" >
|
||||||
<font-face
|
<font-face
|
||||||
font-family="Font Awesome 5 Free Solid"
|
font-family="Font Awesome 5 Free Solid"
|
||||||
|
|
Before Width: | Height: | Size: 896 KiB After Width: | Height: | Size: 896 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
16
resources/css/stylesheet.css
vendored
16
resources/css/stylesheet.css
vendored
|
@ -0,0 +1,16 @@
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
}
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
background: #3A4047;
|
||||||
|
border-radius: 9px;
|
||||||
|
}
|
||||||
|
::-webkit-scrollbar-thumb:hover{
|
||||||
|
background: #2E3339;
|
||||||
|
}
|
||||||
|
::-webkit-scrollbar-track{
|
||||||
|
background: #343a40;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: inset 7px 10px 12px #343a40;
|
||||||
|
}
|
1
resources/sass/app.scss
vendored
1
resources/sass/app.scss
vendored
|
@ -2,6 +2,7 @@
|
||||||
@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback');
|
@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback');
|
||||||
|
|
||||||
// Bootstrap
|
// Bootstrap
|
||||||
|
@import '../css/stylesheet.css';
|
||||||
@import '../css/adminlte.min.css';
|
@import '../css/adminlte.min.css';
|
||||||
@import '../css/slim.min.css';
|
@import '../css/slim.min.css';
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
serverSide: true,
|
serverSide: true,
|
||||||
stateSave: true,
|
stateSave: true,
|
||||||
ajax: "{{route('admin.servers.datatable')}}{{$filter ?? ''}}",
|
ajax: "{{route('admin.servers.datatable')}}{{$filter ?? ''}}",
|
||||||
order: [[ 6, "desc" ]],
|
order: [[ 5, "desc" ]],
|
||||||
columns: [
|
columns: [
|
||||||
{data: 'status' , name : 'servers.suspended'},
|
{data: 'status' , name : 'servers.suspended'},
|
||||||
{data: 'name'},
|
{data: 'name'},
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<h1>Products</h1>
|
<h1>Useful Links</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<ol class="breadcrumb float-sm-right">
|
<ol class="breadcrumb float-sm-right">
|
||||||
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{{route('admin.products.index')}}">Products</a></li>
|
<li class="breadcrumb-item"><a href="{{route('admin.usefullinks.index')}}">Useful Links</a></li>
|
||||||
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.products.create')}}">Create</a>
|
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.usefullinks.create')}}">Create</a>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
|
@ -29,161 +29,69 @@
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form action="{{route('admin.products.store')}}" method="POST">
|
<form action="{{route('admin.usefullinks.store')}}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
<div class="d-flex flex-row-reverse">
|
|
||||||
<div class="custom-control custom-switch">
|
|
||||||
<input type="checkbox" name="disabled" class="custom-control-input custom-control-input-danger" id="switch1">
|
|
||||||
<label class="custom-control-label" for="switch1">Disabled <i data-toggle="popover" data-trigger="hover" data-content="Will hide this option from being selected" class="fas fa-info-circle"></i></label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="name">Name</label>
|
|
||||||
<input value="{{old('name')}}" id="name" name="name" type="text"
|
|
||||||
class="form-control @error('name') is-invalid @enderror"
|
|
||||||
required="required">
|
|
||||||
@error('name')
|
|
||||||
<div class="invalid-feedback">
|
|
||||||
{{$message}}
|
|
||||||
</div>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="price">Price in credits</label>
|
<label for="icon">Icon class name</label>
|
||||||
<input value="{{old('price')}}" id="price" name="price"
|
<input value="{{old('icon')}}" id="icon" name="icon"
|
||||||
type="number"
|
|
||||||
class="form-control @error('price') is-invalid @enderror"
|
|
||||||
required="required">
|
|
||||||
@error('price')
|
|
||||||
<div class="invalid-feedback">
|
|
||||||
{{$message}}
|
|
||||||
</div>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="memory">Memory</label>
|
|
||||||
<input value="{{old('memory')}}" id="memory" name="memory"
|
|
||||||
type="number"
|
|
||||||
class="form-control @error('memory') is-invalid @enderror"
|
|
||||||
required="required">
|
|
||||||
@error('memory')
|
|
||||||
<div class="invalid-feedback">
|
|
||||||
{{$message}}
|
|
||||||
</div>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="cpu">Cpu</label>
|
|
||||||
<input value="{{old('cpu')}}" id="cpu" name="cpu"
|
|
||||||
type="number"
|
|
||||||
class="form-control @error('cpu') is-invalid @enderror"
|
|
||||||
required="required">
|
|
||||||
@error('cpu')
|
|
||||||
<div class="invalid-feedback">
|
|
||||||
{{$message}}
|
|
||||||
</div>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="swap">Swap</label>
|
|
||||||
<input value="{{old('swap')}}" id="swap" name="swap"
|
|
||||||
type="number"
|
|
||||||
class="form-control @error('swap') is-invalid @enderror"
|
|
||||||
required="required">
|
|
||||||
@error('swap')
|
|
||||||
<div class="invalid-feedback">
|
|
||||||
{{$message}}
|
|
||||||
</div>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="description">Description <i data-toggle="popover" data-trigger="hover" data-content="This is what the users sees" class="fas fa-info-circle"></i></label>
|
|
||||||
<textarea id="description" name="description"
|
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control @error('description') is-invalid @enderror"
|
placeholder="fas fa-user"
|
||||||
required="required">{{old('description')}}</textarea>
|
class="form-control @error('icon') is-invalid @enderror"
|
||||||
@error('description')
|
required="required">
|
||||||
|
<div class="text-muted">
|
||||||
|
You can find available free icons <a target="_blank"
|
||||||
|
href="https://fontawesome.com/v5.15/icons?d=gallery&p=2">here</a>
|
||||||
|
</div>
|
||||||
|
@error('icon')
|
||||||
<div class="invalid-feedback">
|
<div class="invalid-feedback">
|
||||||
{{$message}}
|
{{$message}}
|
||||||
</div>
|
</div>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="disk">Disk</label>
|
<label for="title">Title</label>
|
||||||
<input value="{{old('disk') ?? 1000}}" id="disk" name="disk"
|
<input value="{{old('title')}}" id="title" name="title"
|
||||||
type="number"
|
type="text"
|
||||||
class="form-control @error('disk') is-invalid @enderror"
|
class="form-control @error('title') is-invalid @enderror"
|
||||||
required="required">
|
required="required">
|
||||||
@error('disk')
|
@error('title')
|
||||||
<div class="invalid-feedback">
|
<div class="invalid-feedback">
|
||||||
{{$message}}
|
{{$message}}
|
||||||
</div>
|
</div>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="io">IO</label>
|
<label for="link">Link</label>
|
||||||
<input value="{{old('io') ?? 500}}" id="io" name="io"
|
<input value="{{old('link')}}" id="link" name="link"
|
||||||
type="number"
|
type="text"
|
||||||
class="form-control @error('io') is-invalid @enderror"
|
class="form-control @error('link') is-invalid @enderror"
|
||||||
required="required">
|
required="required">
|
||||||
@error('io')
|
@error('link')
|
||||||
<div class="invalid-feedback">
|
<div class="invalid-feedback">
|
||||||
{{$message}}
|
{{$message}}
|
||||||
</div>
|
</div>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="databases">Databases</label>
|
<label for="description">Description</label>
|
||||||
<input value="{{old('databases') ?? 1}}" id="databases"
|
<textarea id="description"
|
||||||
name="databases"
|
name="description"
|
||||||
type="number"
|
type="text"
|
||||||
class="form-control @error('databases') is-invalid @enderror"
|
class="form-control @error('description') is-invalid @enderror">
|
||||||
required="required">
|
{{old('description')}}
|
||||||
@error('databases')
|
</textarea>
|
||||||
<div class="invalid-feedback">
|
@error('description')
|
||||||
|
<div class="text-danger">
|
||||||
{{$message}}
|
{{$message}}
|
||||||
</div>
|
</div>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
|
||||||
<label for="backups">Backups</label>
|
|
||||||
<input value="{{old('backups') ?? 1}}" id="backups"
|
|
||||||
name="backups"
|
|
||||||
type="number"
|
|
||||||
class="form-control @error('backups') is-invalid @enderror"
|
|
||||||
required="required">
|
|
||||||
@error('backups')
|
|
||||||
<div class="invalid-feedback">
|
|
||||||
{{$message}}
|
|
||||||
</div>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="allocations">Allocations</label>
|
|
||||||
<input value="{{old('allocations') ?? 0}}"
|
|
||||||
id="allocations" name="allocations"
|
|
||||||
type="number"
|
|
||||||
class="form-control @error('allocations') is-invalid @enderror"
|
|
||||||
required="required">
|
|
||||||
@error('allocations')
|
|
||||||
<div class="invalid-feedback">
|
|
||||||
{{$message}}
|
|
||||||
</div>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group text-right">
|
<div class="form-group text-right">
|
||||||
<button type="submit" class="btn btn-primary">
|
<button type="submit" class="btn btn-primary">
|
||||||
|
@ -199,7 +107,24 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<!-- END CONTENT -->
|
<!-- END CONTENT -->
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', (event) => {
|
||||||
|
// Summernote
|
||||||
|
$('#description').summernote({
|
||||||
|
height: 100,
|
||||||
|
toolbar: [
|
||||||
|
[ 'style', [ 'style' ] ],
|
||||||
|
[ 'font', [ 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear'] ],
|
||||||
|
[ 'fontname', [ 'fontname' ] ],
|
||||||
|
[ 'fontsize', [ 'fontsize' ] ],
|
||||||
|
[ 'color', [ 'color' ] ],
|
||||||
|
[ 'para', [ 'ol', 'ul', 'paragraph', 'height' ] ],
|
||||||
|
[ 'table', [ 'table' ] ],
|
||||||
|
[ 'insert', [ 'link'] ],
|
||||||
|
[ 'view', [ 'undo', 'redo', 'fullscreen', 'codeview', 'help' ] ]
|
||||||
|
]
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<ol class="breadcrumb float-sm-right">
|
<ol class="breadcrumb float-sm-right">
|
||||||
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{{route('admin.usefullinks.index')}}">Useful Links</a></li>
|
<li class="breadcrumb-item"><a href="{{route('admin.usefullinks.index')}}">Useful Links</a></li>
|
||||||
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.usefullinks.create')}}">Create</a>
|
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.usefullinks.edit' , $link->id)}}">Edit</a>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
|
@ -29,13 +29,14 @@
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form action="{{route('admin.usefullinks.store')}}" method="POST">
|
<form action="{{route('admin.usefullinks.update' , $link->id)}}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
|
@method('PATCH')
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="icon">Icon class name</label>
|
<label for="icon">Icon class name</label>
|
||||||
<input value="{{old('icon')}}" id="icon" name="icon"
|
<input value="{{$link->icon}}" id="icon" name="icon"
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="fas fa-user"
|
placeholder="fas fa-user"
|
||||||
class="form-control @error('icon') is-invalid @enderror"
|
class="form-control @error('icon') is-invalid @enderror"
|
||||||
|
@ -53,7 +54,7 @@
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="title">Title</label>
|
<label for="title">Title</label>
|
||||||
<input value="{{old('title')}}" id="title" name="title"
|
<input value="{{$link->title}}" id="title" name="title"
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control @error('title') is-invalid @enderror"
|
class="form-control @error('title') is-invalid @enderror"
|
||||||
required="required">
|
required="required">
|
||||||
|
@ -66,7 +67,7 @@
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="link">Link</label>
|
<label for="link">Link</label>
|
||||||
<input value="{{old('link')}}" id="link" name="link"
|
<input value="{{$link->link}}" id="link" name="link"
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control @error('link') is-invalid @enderror"
|
class="form-control @error('link') is-invalid @enderror"
|
||||||
required="required">
|
required="required">
|
||||||
|
@ -83,7 +84,7 @@
|
||||||
name="description"
|
name="description"
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control @error('description') is-invalid @enderror">
|
class="form-control @error('description') is-invalid @enderror">
|
||||||
{{old('description')}}
|
{{$link->description}}
|
||||||
</textarea>
|
</textarea>
|
||||||
@error('description')
|
@error('description')
|
||||||
<div class="text-danger">
|
<div class="text-danger">
|
||||||
|
@ -112,7 +113,20 @@
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', (event) => {
|
document.addEventListener('DOMContentLoaded', (event) => {
|
||||||
// Summernote
|
// Summernote
|
||||||
$('#description').summernote()
|
$('#description').summernote({
|
||||||
|
height: 100,
|
||||||
|
toolbar: [
|
||||||
|
[ 'style', [ 'style' ] ],
|
||||||
|
[ 'font', [ 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear'] ],
|
||||||
|
[ 'fontname', [ 'fontname' ] ],
|
||||||
|
[ 'fontsize', [ 'fontsize' ] ],
|
||||||
|
[ 'color', [ 'color' ] ],
|
||||||
|
[ 'para', [ 'ol', 'ul', 'paragraph', 'height' ] ],
|
||||||
|
[ 'table', [ 'table' ] ],
|
||||||
|
[ 'insert', [ 'link'] ],
|
||||||
|
[ 'view', [ 'undo', 'redo', 'fullscreen', 'codeview', 'help' ] ]
|
||||||
|
]
|
||||||
|
})
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -6,17 +6,16 @@
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<h1>Products</h1>
|
<h1>Useful Links</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<ol class="breadcrumb float-sm-right">
|
<ol class="breadcrumb float-sm-right">
|
||||||
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
|
||||||
<li class="breadcrumb-item"><a class="text-muted"
|
<li class="breadcrumb-item"><a class="text-muted"
|
||||||
href="{{route('admin.products.index')}}">Products</a></li>
|
href="{{route('admin.usefullinks.index')}}">Useful Links</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</section>
|
</section>
|
||||||
<!-- END CONTENT HEADER -->
|
<!-- END CONTENT HEADER -->
|
||||||
|
|
||||||
|
@ -28,29 +27,20 @@
|
||||||
|
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="d-flex justify-content-between">
|
<div class="d-flex justify-content-between">
|
||||||
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>Products</h5>
|
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>Useful Links</h5>
|
||||||
<a href="{{route('admin.products.create')}}" class="btn btn-sm btn-primary"><i
|
<a href="{{route('admin.usefullinks.create')}}" class="btn btn-sm btn-primary"><i
|
||||||
class="fas fa-plus mr-1"></i>Create new</a>
|
class="fas fa-plus mr-1"></i>Create new</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-body table-responsive">
|
<div class="card-body table-responsive">
|
||||||
|
|
||||||
<table id="datatable" class="table table-striped">
|
<table id="datatable" class="table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Active</th>
|
<th>description</th>
|
||||||
<th>Name</th>
|
<th width="50">Icon</th>
|
||||||
<th>Price</th>
|
<th>Title</th>
|
||||||
<th>Memory</th>
|
<th>Link</th>
|
||||||
<th>Cpu</th>
|
|
||||||
<th>Swap</th>
|
|
||||||
<th>Disk</th>
|
|
||||||
<th>IO</th>
|
|
||||||
<th>Databases</th>
|
|
||||||
<th>Backups</th>
|
|
||||||
<th>Allocations</th>
|
|
||||||
<th>Servers</th>
|
|
||||||
<th>Created at</th>
|
<th>Created at</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -79,20 +69,13 @@
|
||||||
processing: true,
|
processing: true,
|
||||||
serverSide: true,
|
serverSide: true,
|
||||||
stateSave: true,
|
stateSave: true,
|
||||||
ajax: "{{route('admin.products.datatable')}}",
|
ajax: "{{route('admin.usefullinks.datatable')}}",
|
||||||
|
order: [[ 1, "asc" ]],
|
||||||
columns: [
|
columns: [
|
||||||
{data: 'disabled'},
|
{data: 'description' ,visible: false},
|
||||||
{data: 'name'},
|
{data: 'icon'},
|
||||||
{data: 'price'},
|
{data: 'title'},
|
||||||
{data: 'memory'},
|
{data: 'link'},
|
||||||
{data: 'cpu'},
|
|
||||||
{data: 'swap'},
|
|
||||||
{data: 'disk'},
|
|
||||||
{data: 'io'},
|
|
||||||
{data: 'databases'},
|
|
||||||
{data: 'backups'},
|
|
||||||
{data: 'allocations'},
|
|
||||||
{data: 'servers', sortable: false},
|
|
||||||
{data: 'created_at'},
|
{data: 'created_at'},
|
||||||
{data: 'actions', sortable: false},
|
{data: 'actions', sortable: false},
|
||||||
],
|
],
|
||||||
|
|
|
@ -89,7 +89,7 @@
|
||||||
<i class="{{ $useful_link->icon }} mr-2"></i>{{ $useful_link->title }}
|
<i class="{{ $useful_link->icon }} mr-2"></i>{{ $useful_link->title }}
|
||||||
</a>
|
</a>
|
||||||
</h5>
|
</h5>
|
||||||
{!! $useful_link->message !!}
|
{!! $useful_link->description !!}
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
{{-- <link rel="stylesheet" href="{{asset('css/adminlte.min.css')}}">--}}
|
{{-- <link rel="stylesheet" href="{{asset('css/adminlte.min.css')}}">--}}
|
||||||
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/dt-1.10.24/datatables.min.css"/>
|
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/dt-1.10.24/datatables.min.css"/>
|
||||||
|
|
||||||
|
{{-- summernote --}}
|
||||||
|
<link rel="stylesheet" href="{{asset('plugins/summernote/summernote-bs4.min.css')}}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="{{asset('css/app.css')}}">
|
<link rel="stylesheet" href="{{asset('css/app.css')}}">
|
||||||
<link rel="preload" href="{{asset('plugins/fontawesome-free/css/all.min.css')}}" as="style"
|
<link rel="preload" href="{{asset('plugins/fontawesome-free/css/all.min.css')}}" as="style"
|
||||||
|
@ -45,7 +47,8 @@
|
||||||
<a class="nav-link" data-toggle="dropdown" href="#">
|
<a class="nav-link" data-toggle="dropdown" href="#">
|
||||||
<i class="far fa-bell"></i>
|
<i class="far fa-bell"></i>
|
||||||
@if(Auth::user()->unreadNotifications->count() != 0)
|
@if(Auth::user()->unreadNotifications->count() != 0)
|
||||||
<span class="badge badge-warning navbar-badge">{{Auth::user()->unreadNotifications->count()}}</span>
|
<span
|
||||||
|
class="badge badge-warning navbar-badge">{{Auth::user()->unreadNotifications->count()}}</span>
|
||||||
@endif
|
@endif
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
|
||||||
|
@ -54,19 +57,22 @@
|
||||||
|
|
||||||
@foreach(Auth::user()->unreadNotifications->sortBy('created_at')->take(5) as $notification)
|
@foreach(Auth::user()->unreadNotifications->sortBy('created_at')->take(5) as $notification)
|
||||||
<a href="{{route('notifications.show' , $notification->id)}}" class="dropdown-item">
|
<a href="{{route('notifications.show' , $notification->id)}}" class="dropdown-item">
|
||||||
<span class="d-inline-block text-truncate" style="max-width: 150px;"><i class="fas fa-envelope mr-2"></i>{{$notification->data['title']}}</span>
|
<span class="d-inline-block text-truncate" style="max-width: 150px;"><i
|
||||||
|
class="fas fa-envelope mr-2"></i>{{$notification->data['title']}}</span>
|
||||||
<span
|
<span
|
||||||
class="float-right text-muted text-sm">{{$notification->created_at->longAbsoluteDiffForHumans()}} ago</span>
|
class="float-right text-muted text-sm">{{$notification->created_at->longAbsoluteDiffForHumans()}} ago</span>
|
||||||
</a>
|
</a>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<a href="{{route('notifications.index')}}" class="dropdown-item dropdown-footer">See All Notifications</a>
|
<a href="{{route('notifications.index')}}" class="dropdown-item dropdown-footer">See All
|
||||||
|
Notifications</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item dropdown no-arrow">
|
<li class="nav-item dropdown no-arrow">
|
||||||
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true"
|
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown"
|
||||||
|
aria-haspopup="true"
|
||||||
aria-expanded="false">
|
aria-expanded="false">
|
||||||
<span class="mr-1 d-none d-lg-inline text-gray-600 small">
|
<span class="mr-1 d-none d-lg-inline text-gray-600 small">
|
||||||
{{Auth::user()->name}}
|
{{Auth::user()->name}}
|
||||||
|
@ -115,11 +121,12 @@
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<!-- Sidebar -->
|
<!-- Sidebar -->
|
||||||
<div class="sidebar">
|
<div class="sidebar" style="overflow-y: auto">
|
||||||
|
|
||||||
<!-- Sidebar Menu -->
|
<!-- Sidebar Menu -->
|
||||||
<nav class="mt-2">
|
<nav class="my-2">
|
||||||
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
|
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
|
||||||
|
data-accordion="false">
|
||||||
<!-- Add icons to the links using the .nav-icon class
|
<!-- Add icons to the links using the .nav-icon class
|
||||||
with font-awesome or any other icon font library -->
|
with font-awesome or any other icon font library -->
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
|
@ -130,7 +137,8 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="{{route('servers.index')}}" class="nav-link @if(Request::routeIs('servers.*')) active @endif">
|
<a href="{{route('servers.index')}}"
|
||||||
|
class="nav-link @if(Request::routeIs('servers.*')) active @endif">
|
||||||
<i class="nav-icon fa fa-server"></i>
|
<i class="nav-icon fa fa-server"></i>
|
||||||
<p>Servers
|
<p>Servers
|
||||||
<span
|
<span
|
||||||
|
@ -151,7 +159,8 @@
|
||||||
<li class="nav-header">Admin</li>
|
<li class="nav-header">Admin</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="{{route('admin.users.index')}}" class="nav-link @if(Request::routeIs('admin.users.*')) active @endif">
|
<a href="{{route('admin.users.index')}}"
|
||||||
|
class="nav-link @if(Request::routeIs('admin.users.*')) active @endif">
|
||||||
<i class="nav-icon fas fa-users"></i>
|
<i class="nav-icon fas fa-users"></i>
|
||||||
<p>Users</p>
|
<p>Users</p>
|
||||||
</a>
|
</a>
|
||||||
|
@ -174,7 +183,8 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="{{route('admin.store.index')}}" class="nav-link @if(Request::routeIs('admin.store.*')) active @endif">
|
<a href="{{route('admin.store.index')}}"
|
||||||
|
class="nav-link @if(Request::routeIs('admin.store.*')) active @endif">
|
||||||
<i class="nav-icon fas fa-shopping-basket"></i>
|
<i class="nav-icon fas fa-shopping-basket"></i>
|
||||||
<p>Store</p>
|
<p>Store</p>
|
||||||
</a>
|
</a>
|
||||||
|
@ -183,14 +193,16 @@
|
||||||
<li class="nav-header">Pterodactyl</li>
|
<li class="nav-header">Pterodactyl</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="{{route('admin.nodes.index')}}" class="nav-link @if(Request::routeIs('admin.nodes.*')) active @endif">
|
<a href="{{route('admin.nodes.index')}}"
|
||||||
|
class="nav-link @if(Request::routeIs('admin.nodes.*')) active @endif">
|
||||||
<i class="nav-icon fas fa-sitemap"></i>
|
<i class="nav-icon fas fa-sitemap"></i>
|
||||||
<p>Nodes</p>
|
<p>Nodes</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="{{route('admin.nests.index')}}" class="nav-link @if(Request::routeIs('admin.nests.*')) active @endif">
|
<a href="{{route('admin.nests.index')}}"
|
||||||
|
class="nav-link @if(Request::routeIs('admin.nests.*')) active @endif">
|
||||||
<i class="nav-icon fas fa-th-large"></i>
|
<i class="nav-icon fas fa-th-large"></i>
|
||||||
<p>Nests</p>
|
<p>Nests</p>
|
||||||
</a>
|
</a>
|
||||||
|
@ -242,6 +254,15 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li class="nav-item">
|
||||||
|
<a href="{{route('admin.usefullinks.index')}}"
|
||||||
|
class="nav-link @if(Request::routeIs('admin.usefullinks.*')) active @endif">
|
||||||
|
<i class="nav-icon fas fa-link"></i>
|
||||||
|
<p>Useful Links</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -257,7 +278,8 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- /.content-wrapper -->
|
<!-- /.content-wrapper -->
|
||||||
<footer class="main-footer">
|
<footer class="main-footer">
|
||||||
<strong>Copyright © 2021-{{date('Y')}} <a href="{{url('/')}}">{{env('APP_NAME' , 'Laravel')}}</a>.</strong> All rights
|
<strong>Copyright © 2021-{{date('Y')}} <a href="{{url('/')}}">{{env('APP_NAME' , 'Laravel')}}</a>.</strong>
|
||||||
|
All rights
|
||||||
reserved.
|
reserved.
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
|
@ -277,6 +299,8 @@
|
||||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@10.14.1/dist/sweetalert2.all.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@10.14.1/dist/sweetalert2.all.min.js"></script>
|
||||||
<script src="{{asset('js/app.js')}}"></script>
|
<script src="{{asset('js/app.js')}}"></script>
|
||||||
<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.10.24/datatables.min.js"></script>
|
<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.10.24/datatables.min.js"></script>
|
||||||
|
<!-- Summernote -->
|
||||||
|
<script src="{{asset('plugins/summernote/summernote-bs4.min.js')}}"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
|
|
@ -10,6 +10,7 @@ use App\Http\Controllers\Admin\PaypalProductController;
|
||||||
use App\Http\Controllers\Admin\ProductController;
|
use App\Http\Controllers\Admin\ProductController;
|
||||||
use App\Http\Controllers\Admin\ServerController as AdminServerController;
|
use App\Http\Controllers\Admin\ServerController as AdminServerController;
|
||||||
use App\Http\Controllers\Admin\SettingsController;
|
use App\Http\Controllers\Admin\SettingsController;
|
||||||
|
use App\Http\Controllers\Admin\UsefulLinkController;
|
||||||
use App\Http\Controllers\Admin\UserController;
|
use App\Http\Controllers\Admin\UserController;
|
||||||
use App\Http\Controllers\Auth\SocialiteController;
|
use App\Http\Controllers\Auth\SocialiteController;
|
||||||
use App\Http\Controllers\HomeController;
|
use App\Http\Controllers\HomeController;
|
||||||
|
@ -101,6 +102,9 @@ Route::middleware('auth')->group(function () {
|
||||||
Route::patch('settings/update/icons', [SettingsController::class , 'updateIcons'])->name('settings.update.icons');
|
Route::patch('settings/update/icons', [SettingsController::class , 'updateIcons'])->name('settings.update.icons');
|
||||||
Route::resource('settings', SettingsController::class)->only('index');
|
Route::resource('settings', SettingsController::class)->only('index');
|
||||||
|
|
||||||
|
Route::get('usefullinks/datatable', [UsefulLinkController::class, 'datatable'])->name('usefullinks.datatable');
|
||||||
|
Route::resource('usefullinks', UsefulLinkController::class);
|
||||||
|
|
||||||
Route::get('api/datatable', [ApplicationApiController::class, 'datatable'])->name('api.datatable');
|
Route::get('api/datatable', [ApplicationApiController::class, 'datatable'])->name('api.datatable');
|
||||||
Route::resource('api', ApplicationApiController::class)->parameters([
|
Route::resource('api', ApplicationApiController::class)->parameters([
|
||||||
'api' => 'applicationApi',
|
'api' => 'applicationApi',
|
||||||
|
|
Loading…
Reference in a new issue