Browse Source

[FEATURE] wysiwyg editor for imprint/Tos/privacy (#669)

Dennis 2 years ago
parent
commit
6263f163f9

+ 42 - 0
app/Http/Controllers/Admin/LegalController.php

@@ -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"));
+    }
+}

+ 7 - 0
routes/web.php

@@ -8,6 +8,7 @@ use App\Classes\Settings\System;
 use App\Http\Controllers\Admin\ActivityLogController;
 use App\Http\Controllers\Admin\ApplicationApiController;
 use App\Http\Controllers\Admin\InvoiceController;
+use App\Http\Controllers\Admin\LegalController;
 use App\Http\Controllers\Admin\OverViewController;
 use App\Http\Controllers\Admin\PaymentController;
 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 () {
 
         //overview
+        Route::get('legal', [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');
 
@@ -178,6 +181,10 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () {
         Route::get('usefullinks/datatable', [UsefulLinkController::class, 'datatable'])->name('usefullinks.datatable');
         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
         Route::get('vouchers/datatable', [VoucherController::class, 'datatable'])->name('vouchers.datatable');
         Route::get('vouchers/{voucher}/usersdatatable', [VoucherController::class, 'usersdatatable'])->name('vouchers.usersdatatable');

+ 113 - 0
themes/default/views/admin/legal/index.blade.php

@@ -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

+ 8 - 0
themes/default/views/layouts/main.blade.php

@@ -379,6 +379,14 @@
                                 </a>
                             </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-item">