[FEATURE] wysiwyg editor for imprint/Tos/privacy (#669)
This commit is contained in:
parent
fd8dbb10a5
commit
6263f163f9
42
app/Http/Controllers/Admin/LegalController.php
Normal file
42
app/Http/Controllers/Admin/LegalController.php
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\File;
|
||||||
|
use Qirolab\Theme\Theme;
|
||||||
|
|
||||||
|
|
||||||
|
class LegalController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Display
|
||||||
|
*
|
||||||
|
* @return View
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$tos = File::get(Theme::path($path = 'views') . '/information/tos-content.blade.php');
|
||||||
|
$privacy = File::get(Theme::path($path = 'views') . '/information/privacy-content.blade.php');
|
||||||
|
$imprint = File::get(Theme::path($path = 'views') . '/information/imprint-content.blade.php');
|
||||||
|
|
||||||
|
return view('admin.legal.index')->with([
|
||||||
|
"tos" => $tos,
|
||||||
|
"privacy" => $privacy,
|
||||||
|
"imprint" => $imprint,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(Request $request){
|
||||||
|
$tos = $request->tos;
|
||||||
|
$privacy = $request->privacy;
|
||||||
|
$imprint = $request->imprint;
|
||||||
|
|
||||||
|
File::put(Theme::path($path = 'views') . '/information/tos-content.blade.php', $tos);
|
||||||
|
File::put(Theme::path($path = 'views') . '/information/privacy-content.blade.php', $privacy);
|
||||||
|
File::put(Theme::path($path = 'views') . '/information/imprint-content.blade.php', $imprint);
|
||||||
|
|
||||||
|
return back()->with("success",__("Legal pages updated"));
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,7 @@ use App\Classes\Settings\System;
|
||||||
use App\Http\Controllers\Admin\ActivityLogController;
|
use App\Http\Controllers\Admin\ActivityLogController;
|
||||||
use App\Http\Controllers\Admin\ApplicationApiController;
|
use App\Http\Controllers\Admin\ApplicationApiController;
|
||||||
use App\Http\Controllers\Admin\InvoiceController;
|
use App\Http\Controllers\Admin\InvoiceController;
|
||||||
|
use App\Http\Controllers\Admin\LegalController;
|
||||||
use App\Http\Controllers\Admin\OverViewController;
|
use App\Http\Controllers\Admin\OverViewController;
|
||||||
use App\Http\Controllers\Admin\PaymentController;
|
use App\Http\Controllers\Admin\PaymentController;
|
||||||
use App\Http\Controllers\Admin\ProductController;
|
use App\Http\Controllers\Admin\ProductController;
|
||||||
|
@ -118,6 +119,8 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () {
|
||||||
Route::prefix('admin')->name('admin.')->middleware('admin')->group(function () {
|
Route::prefix('admin')->name('admin.')->middleware('admin')->group(function () {
|
||||||
|
|
||||||
//overview
|
//overview
|
||||||
|
Route::get('legal', [OverViewController::class, 'index'])->name('overview.index');
|
||||||
|
|
||||||
Route::get('overview', [OverViewController::class, 'index'])->name('overview.index');
|
Route::get('overview', [OverViewController::class, 'index'])->name('overview.index');
|
||||||
Route::get('overview/sync', [OverViewController::class, 'syncPterodactyl'])->name('overview.sync');
|
Route::get('overview/sync', [OverViewController::class, 'syncPterodactyl'])->name('overview.sync');
|
||||||
|
|
||||||
|
@ -178,6 +181,10 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () {
|
||||||
Route::get('usefullinks/datatable', [UsefulLinkController::class, 'datatable'])->name('usefullinks.datatable');
|
Route::get('usefullinks/datatable', [UsefulLinkController::class, 'datatable'])->name('usefullinks.datatable');
|
||||||
Route::resource('usefullinks', UsefulLinkController::class);
|
Route::resource('usefullinks', UsefulLinkController::class);
|
||||||
|
|
||||||
|
//legal
|
||||||
|
Route::get('legal', [LegalController::class, 'index'])->name('legal.index');
|
||||||
|
Route::patch('legal', [LegalController::class, 'update'])->name('legal.update');
|
||||||
|
|
||||||
//vouchers
|
//vouchers
|
||||||
Route::get('vouchers/datatable', [VoucherController::class, 'datatable'])->name('vouchers.datatable');
|
Route::get('vouchers/datatable', [VoucherController::class, 'datatable'])->name('vouchers.datatable');
|
||||||
Route::get('vouchers/{voucher}/usersdatatable', [VoucherController::class, 'usersdatatable'])->name('vouchers.usersdatatable');
|
Route::get('vouchers/{voucher}/usersdatatable', [VoucherController::class, 'usersdatatable'])->name('vouchers.usersdatatable');
|
||||||
|
|
113
themes/default/views/admin/legal/index.blade.php
Normal file
113
themes/default/views/admin/legal/index.blade.php
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<!-- CONTENT HEADER -->
|
||||||
|
<section class="content-header">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<h1>{{__('Legal')}}</h1>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<ol class="breadcrumb float-sm-right">
|
||||||
|
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
|
||||||
|
<li class="breadcrumb-item"><a class="text-muted"
|
||||||
|
href="{{route('admin.legal.index')}}">{{__('Legal')}}</a></li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<!-- END CONTENT HEADER -->
|
||||||
|
|
||||||
|
<!-- MAIN CONTENT -->
|
||||||
|
<section class="content">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<form method="POST" enctype="multipart/form-data" class="mb-3"
|
||||||
|
action="{{ route('admin.legal.update') }}">
|
||||||
|
@csrf
|
||||||
|
@method('PATCH')
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
{{-- TOS --}}
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col text-center">
|
||||||
|
<h1>{{__("Terms of Service")}}</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="custom-control mb-3 p-0">
|
||||||
|
<textarea x-model="tos" id="tos" name="tos"
|
||||||
|
class="form-control @error('tos') is-invalid @enderror">
|
||||||
|
{{ $tos }}
|
||||||
|
</textarea>
|
||||||
|
@error('motd-message')
|
||||||
|
<div class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
{{-- PRIVACY --}}
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col text-center">
|
||||||
|
<h1>{{__("Privacy Policy")}}</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="custom-control mb-3 p-0">
|
||||||
|
<textarea x-model="privacy" id="privacy" name="privacy"
|
||||||
|
class="form-control @error('privacy') is-invalid @enderror">
|
||||||
|
{{ $privacy }}
|
||||||
|
</textarea>
|
||||||
|
@error('privacy')
|
||||||
|
<div class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
{{-- Imprint --}}
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col text-center">
|
||||||
|
<h1>{{__("Imprint")}}</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="custom-control mb-3 p-0">
|
||||||
|
<textarea x-model="imprint" id="imprint" name="imprint"
|
||||||
|
class="form-control @error('imprint') is-invalid @enderror">
|
||||||
|
{{ $imprint }}
|
||||||
|
</textarea>
|
||||||
|
@error('imprint')
|
||||||
|
<div class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<button class="btn btn-primary ml-3 mt-3">{{ __('Save') }}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- END CUSTOM CONTENT -->
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<!-- END CONTENT -->
|
||||||
|
|
||||||
|
<script>tinymce.init({selector:'textarea',promotion: false,skin: "oxide-dark",
|
||||||
|
content_css: "dark",branding: false, height: 500,
|
||||||
|
plugins: ['image','link'],});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@endsection
|
|
@ -379,6 +379,14 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li class="nav-item">
|
||||||
|
<a href="{{ route('admin.legal.index') }}"
|
||||||
|
class="nav-link @if (Request::routeIs('admin.legal.*')) active @endif">
|
||||||
|
<i class="nav-icon fas fa-link"></i>
|
||||||
|
<p>{{ __('Legal Sites') }}</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li class="nav-header">{{ __('Logs') }}</li>
|
<li class="nav-header">{{ __('Logs') }}</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
|
|
Loading…
Reference in a new issue