Besseres CSS; News
This commit is contained in:
15
app/Http/Controllers/BlogController.php
Normal file
15
app/Http/Controllers/BlogController.php
Normal file
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Blog;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\App;
|
||||
|
||||
class BlogController extends Controller
|
||||
{
|
||||
|
||||
public static function blogPaginated(){
|
||||
return Blog::where('language', App::getLocale())->where('published', 1)->orderBy('id', 'desc')->paginate(5);
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,16 @@ class TickerController extends Controller
|
||||
{
|
||||
public function deleteTicker(Request $request){
|
||||
if(Auth::check()){
|
||||
$toDelete = $request->input('delete')[0];
|
||||
try{
|
||||
foreach($toDelete as $item){
|
||||
$ticker = TickerMessages::find($item);
|
||||
$ticker->delete();
|
||||
}
|
||||
return ["messageStatus" => "success", "errorMessage" => ""];
|
||||
} catch(\Exception $e){
|
||||
return ["messageStatus" => "failure", "errorMessage" => $e->getMessage()];
|
||||
}
|
||||
|
||||
}
|
||||
abort(404);
|
||||
@@ -18,7 +28,18 @@ class TickerController extends Controller
|
||||
|
||||
public function addTicker(Request $request){
|
||||
if(Auth::check()){
|
||||
$toAdd = $request->input('insert');
|
||||
$lang = $request->input('lang');
|
||||
|
||||
try {
|
||||
$ticker = new TickerMessages();
|
||||
$ticker->message = $toAdd;
|
||||
$ticker->language = $lang;
|
||||
$ticker->save();
|
||||
return ["messageStatus" => "success", "errorMessage" => ""];
|
||||
} catch(\Exception $e){
|
||||
return ["messageStatus" => "failure", "errorMessage" => $e->getMessage()];
|
||||
}
|
||||
}
|
||||
abort(404);
|
||||
}
|
||||
@@ -26,9 +47,13 @@ class TickerController extends Controller
|
||||
public static function getTicker(){
|
||||
$t = "";
|
||||
foreach(TickerMessages::getMessages(App::getLocale())->get() as $message){
|
||||
$t .= " -- " . $message->message;
|
||||
$t .= " -- $message->message";
|
||||
}
|
||||
|
||||
if(!empty($t)){
|
||||
$t .= " -- ";
|
||||
}
|
||||
|
||||
return $t;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ class WebsiteController extends Controller
|
||||
}
|
||||
|
||||
public function news(Request $request){
|
||||
return view('content.news');
|
||||
return view('content.news', ['blogs' => BlogController::blogPaginated()]);
|
||||
}
|
||||
|
||||
public function services(Request $request){
|
||||
|
||||
13
app/Models/Blog.php
Normal file
13
app/Models/Blog.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Blog extends Model
|
||||
{
|
||||
//
|
||||
protected $table = 'blogs';
|
||||
|
||||
|
||||
}
|
||||
33
database/migrations/2026_03_24_220010_create_blogs_table.php
Normal file
33
database/migrations/2026_03_24_220010_create_blogs_table.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('blogs', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->unsignedBigInteger('published_by');
|
||||
$table->foreign('published_by')->references('id')->on('users');
|
||||
$table->string('language');
|
||||
$table->string('title');
|
||||
$table->text('body');
|
||||
$table->boolean('published')->default(false);
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('blogs');
|
||||
}
|
||||
};
|
||||
@@ -2,6 +2,7 @@ html, body {
|
||||
margin: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: #4b0600;
|
||||
}
|
||||
|
||||
.ticker {
|
||||
@@ -61,23 +62,56 @@ html, body {
|
||||
|
||||
|
||||
.main {
|
||||
float: left;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin: 0;
|
||||
height: 77vh;
|
||||
min-height: 77vh;
|
||||
width: 100vw;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
float: left;
|
||||
background-color: #ccc;
|
||||
height: 77vh;
|
||||
width: 20vw;
|
||||
}
|
||||
|
||||
.content {
|
||||
float: left;
|
||||
background-color: #dcccaa;
|
||||
height: 77vh;
|
||||
width: 79vw;
|
||||
width: 80vw;
|
||||
padding-left: 1vw;
|
||||
}
|
||||
|
||||
.eingabemaske {
|
||||
border: 5px inset;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.eingabemaske table, th, td {
|
||||
border: 4px outset;
|
||||
}
|
||||
|
||||
.eingabemaske input {
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.eingabemaske button {
|
||||
padding: 1em;
|
||||
border: 4px outset;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
#fehlermeldung {
|
||||
border: 4px outset;
|
||||
width: 50vw;
|
||||
}
|
||||
|
||||
nav {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.w-5 {
|
||||
width: 5vw;
|
||||
}
|
||||
|
||||
.h-5 {
|
||||
height: 5vh;
|
||||
}
|
||||
|
||||
10
public/css/ticker/ticker.css
Normal file
10
public/css/ticker/ticker.css
Normal file
@@ -0,0 +1,10 @@
|
||||
.split-left {
|
||||
float: left;
|
||||
width: 21%;
|
||||
}
|
||||
.split-right {
|
||||
float: left;
|
||||
width: 50%;
|
||||
border-left: 1px dotted #000;
|
||||
padding-left: 30px;
|
||||
}
|
||||
12
public/js/intern.js
Normal file
12
public/js/intern.js
Normal file
@@ -0,0 +1,12 @@
|
||||
function setzeFehlermeldung(alertType, message){
|
||||
let f = $("#fehlermeldung");
|
||||
switch(alertType){
|
||||
case "success":
|
||||
f.css("border-color", "#0033cc");
|
||||
break;
|
||||
case "failure":
|
||||
f.css("border-color", "#cc3300");
|
||||
break;
|
||||
}
|
||||
f.html(message);
|
||||
}
|
||||
@@ -1,12 +1,3 @@
|
||||
function setzeFehlermeldung(alertType, message){
|
||||
let f = $("#fehlermeldung");
|
||||
|
||||
f.removeClass('alert-success').removeClass('alert-danger').removeClass('alert-primary');
|
||||
f.addClass('alert-' + alertType);
|
||||
f.html(message);
|
||||
}
|
||||
|
||||
|
||||
function login(){
|
||||
let data = {};
|
||||
data.mail = $("#mail").val();
|
||||
@@ -24,15 +15,15 @@ function login(){
|
||||
location.reload();
|
||||
break;
|
||||
case "failure":
|
||||
setzeFehlermeldung("danger", "Es ist ein Fehler geschehen: " + d.errorMessage);
|
||||
setzeFehlermeldung("failure", "Es ist ein Fehler geschehen: " + d.errorMessage);
|
||||
break;
|
||||
case "not permitted":
|
||||
setzeFehlermeldung("warning", "Sie sind nicht berechtigt diese Funktion zu nutzen.");
|
||||
setzeFehlermeldung("failure", "Sie sind nicht berechtigt diese Funktion zu nutzen.");
|
||||
break;
|
||||
}
|
||||
},
|
||||
error: function(d, status, errorThrown) {
|
||||
setzeFehlermeldung("danger", "Es ist ein Fehler geschehen: " + errorThrown);
|
||||
setzeFehlermeldung("failure", "Es ist ein Fehler geschehen: " + errorThrown);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -1,12 +1,3 @@
|
||||
function setzeFehlermeldung(alertType, message){
|
||||
let f = $("#fehlermeldung");
|
||||
|
||||
f.removeClass('alert-success').removeClass('alert-danger').removeClass('alert-primary');
|
||||
f.addClass('alert-' + alertType);
|
||||
f.html(message);
|
||||
}
|
||||
|
||||
|
||||
function abschicken(){
|
||||
let data = {};
|
||||
data.mail = $("#mail").val();
|
||||
@@ -16,7 +7,7 @@ function abschicken(){
|
||||
|
||||
if(data.password !== $("#password_repeat").val()) {
|
||||
|
||||
setzeFehlermeldung("danger", "Ihr Kennwort stimmt nicht überein.");
|
||||
setzeFehlermeldung("failure", "Ihr Kennwort stimmt nicht überein.");
|
||||
for(let i=0; i<Math.random() * 10; i++){
|
||||
alert("Ihr Kennwort stimmt nicht überein.");
|
||||
}
|
||||
@@ -33,15 +24,15 @@ function abschicken(){
|
||||
setzeFehlermeldung("success", "Sie wurden erfolgreich registriert.")
|
||||
break;
|
||||
case "failure":
|
||||
setzeFehlermeldung("danger", "Es ist ein Fehler geschehen: " + d.errorMessage);
|
||||
setzeFehlermeldung("failure", "Es ist ein Fehler geschehen: " + d.errorMessage);
|
||||
break;
|
||||
case "not permitted":
|
||||
setzeFehlermeldung("warning", "Sie sind nicht berechtigt diese Funktion zu nutzen.");
|
||||
setzeFehlermeldung("failure", "Sie sind nicht berechtigt diese Funktion zu nutzen.");
|
||||
break;
|
||||
}
|
||||
},
|
||||
error: function(d, status, errorThrown) {
|
||||
setzeFehlermeldung("danger", "Es ist ein Fehler geschehen: " + errorThrown);
|
||||
setzeFehlermeldung("failure", "Es ist ein Fehler geschehen: " + errorThrown);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,11 +1,57 @@
|
||||
function remove(lang){
|
||||
let s = [];
|
||||
let data = {};
|
||||
data["delete"] = [];
|
||||
$("#ticker_" + lang).each(function(){
|
||||
s.push($(this).val());
|
||||
data["delete"].push($(this).val());
|
||||
});
|
||||
console.log(JSON.stringify(data));
|
||||
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url: "/intern/ticker/remove",
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success: function (d) {
|
||||
switch(d.messageStatus){
|
||||
case "success":
|
||||
setzeFehlermeldung(d.messageStatus, "Löschen erfolgreich!");
|
||||
location.reload();
|
||||
break;
|
||||
case "failure":
|
||||
setzeFehlermeldung(d.messageStatus, d.errorMessage);
|
||||
break;
|
||||
}
|
||||
},
|
||||
error: function (d, status, error) {
|
||||
setzeFehlermeldung("failure", error);
|
||||
}
|
||||
});
|
||||
console.log(JSON.stringify(s));
|
||||
}
|
||||
|
||||
function insert(lang){
|
||||
|
||||
let data = {};
|
||||
data.insert = $("#insert_" + lang).val();
|
||||
data.lang = lang;
|
||||
|
||||
$.ajax({
|
||||
type: "PUT",
|
||||
url: "/intern/ticker/add",
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success: function (d) {
|
||||
switch(d.messageStatus){
|
||||
case "success":
|
||||
setzeFehlermeldung(d.messageStatus, "Einfügen erfolgreich!");
|
||||
location.reload();
|
||||
break;
|
||||
case "failure":
|
||||
setzeFehlermeldung(d.messageStatus, d.errorMessage);
|
||||
break;
|
||||
}
|
||||
},
|
||||
error: function (d, status, error) {
|
||||
setzeFehlermeldung("failure", error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3,5 +3,16 @@
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
<h1>{{ __('app.nav.news') }}</h1>
|
||||
@foreach($blogs as $blog)
|
||||
<h2>{{ $blog->title }}</h2>
|
||||
<b>{{ $blog->created_at }}</b><br />
|
||||
<p>{!! $blog->body !!}</p>
|
||||
<br />
|
||||
<hr>
|
||||
<br />
|
||||
@endforeach
|
||||
<br /><br />
|
||||
{{ $blogs->links() }}
|
||||
<br /><br />
|
||||
@endsection
|
||||
|
||||
@@ -9,22 +9,20 @@
|
||||
@yield('scripts')
|
||||
</head>
|
||||
<body>
|
||||
<div class="grid">
|
||||
<div class="ticker row">
|
||||
<div class="col">
|
||||
|
||||
<div class="ticker">
|
||||
<marquee>{{\App\Http\Controllers\TickerController::getTicker()}}</marquee>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header row">
|
||||
<div class="header-main col">
|
||||
<div class="header">
|
||||
<div class="header-main">
|
||||
<a href="/">
|
||||
<img id="logo" src="{{ asset("Bilder/logo.png") }}" alt="{{ __('app.logo') }}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="banner col-8 text-center">
|
||||
<div class="banner">
|
||||
<img src="{{ asset("Bilder/banner2.gif") }}" alt="{{ __("app.banner") }}">
|
||||
</div>
|
||||
<div class="language-area col">
|
||||
<div class="language-area">
|
||||
<div class="language">
|
||||
<img alt="{{ __('app.language.de') }}" onclick="setLanguage('de')" src="{{ asset("Bilder/deutsch.gif") }}">
|
||||
<img alt="{{ __('app.language.en') }}" onclick="setLanguage('en')" src="{{ asset("Bilder/englisch.gif") }}">
|
||||
@@ -33,8 +31,8 @@
|
||||
<div class="login-status">{{ __('app.signed_in_as') }} {{Auth::user()->name ?? __("app.guest")}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main row">
|
||||
<div class="navbar col-2">
|
||||
<div class="main">
|
||||
<div class="navbar">
|
||||
<ul>
|
||||
<li><a href="{{ route('about') }}">{{ __('app.nav.about') }}</a></li>
|
||||
<li><a href="{{ route('services') }}">{{ __('app.nav.services') }}</a></li>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
@extends('layout.app')
|
||||
@section('scripts')
|
||||
<script src="{{ asset("js/intern.js") }}"></script>
|
||||
<script src="{{ asset("js/login/login.js") }}"></script>
|
||||
@endsection
|
||||
|
||||
@@ -9,21 +10,26 @@
|
||||
<span>
|
||||
|
||||
@guest
|
||||
<div id="fehlermeldung" class="alert alert-primary">Bitte melden Sie sich an.</div>
|
||||
<div id="fehlermeldung"></div>
|
||||
|
||||
<label class="form-label" for="mail">Elektronische Postadresse:</label>
|
||||
<input class="form-control" type="text" id="mail" pattern="^[0-9A-Za-z+_\-]+@[0-9A-Za-z_\-]+\.[0-9A-Za-z]+$"
|
||||
title="Nur echte Adressen der elektronischen Post verwenden!"/>
|
||||
|
||||
<label class="form-label" for="password">Kennwort:</label>
|
||||
<input class="form-control" type="password" id="password">
|
||||
<table class="eingabemaske">
|
||||
<tr>
|
||||
<td><label for="mail">Elektronische Postadresse:</label></td>
|
||||
<td><input size="32" type="text" id="mail" pattern="^[0-9A-Za-z+_\-]+@[0-9A-Za-z_\-]+\.[0-9A-Za-z]+$"
|
||||
title="Nur echte Adressen der elektronischen Post verwenden!"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="password">Kennwort:</label></td>
|
||||
<td><input size="32" type="password" id="password"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br/><br/>
|
||||
<button onclick="login()">Anmelden</button>
|
||||
<button class="eingabemaske" onclick="login()">Anmelden</button>
|
||||
|
||||
@endguest
|
||||
@auth
|
||||
<div id="fehlermeldung" class="alert alert-success">Sie sind angemeldet.</div>
|
||||
<div id="fehlermeldung">Sie sind angemeldet.</div>
|
||||
<a href="{{ route('logout') }}"><button>Abmelden</button></a>
|
||||
@endauth
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
@extends('layout.app')
|
||||
@section('scripts')
|
||||
<script src="{{ asset("js/intern.js") }}"></script>
|
||||
<script src="{{ asset("js/login/registrieren.js") }}"></script>
|
||||
@endsection
|
||||
|
||||
@@ -10,24 +11,32 @@
|
||||
|
||||
<div id="fehlermeldung" class="alert alert-primary">Bitte registrieren Sie sich.</div>
|
||||
|
||||
<label class="form-label" for="mail">Elektronische Postadresse:</label>
|
||||
<input class="form-control" type="text" id="mail" pattern="^[0-9A-Za-z+_\-]+@[0-9A-Za-z_\-]+\.[0-9A-Za-z]+$"
|
||||
title="Nur echte Adressen der elektronischen Post verwenden!"/>
|
||||
|
||||
<label class="form-label" for="username">(Vollständiger) Name:</label>
|
||||
<input class="form-control" type="text" id="username"/>
|
||||
|
||||
<label class="form-label" for="password">Kennwort:</label>
|
||||
<input class="form-control" type="password" id="password">
|
||||
|
||||
<label class="form-label" for="password_repeat">Kennwort wiederholen:</label>
|
||||
<input class="form-control" type="password" id="password_repeat">
|
||||
|
||||
<label class="form-label" for="register_token">Registrierungsnummer:</label>
|
||||
<input class="form-control" type="text" id="register_token">
|
||||
<table class="eingabemaske">
|
||||
<tr>
|
||||
<td><label for="mail">Elektronische Postadresse:</label></td>
|
||||
<td><input size="32" type="text" id="mail" pattern="^[0-9A-Za-z+_\-]+@[0-9A-Za-z_\-]+\.[0-9A-Za-z]+$"
|
||||
title="Nur echte Adressen der elektronischen Post verwenden!"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="username">(Vollständiger) Name:</label></td>
|
||||
<td><input size="32" type="text" id="username"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="password">Kennwort:</label></td>
|
||||
<td><input size="32" type="password" id="password"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="password_repeat">Kennwort wiederholen:</label></td>
|
||||
<td><input size="32" type="password" id="password_repeat"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="register_token">Registrierungsnummer:</label></td>
|
||||
<td><input size="32" type="text" id="register_token"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br/><br/>
|
||||
<button onclick="abschicken()" class="btn btn-success">Registrieren</button>
|
||||
<button class="eingabemaske" onclick="abschicken()">Registrieren</button>
|
||||
|
||||
</span>
|
||||
@endsection
|
||||
|
||||
@@ -1,44 +1,48 @@
|
||||
@extends('layout.app')
|
||||
@section('scripts')
|
||||
<link rel="stylesheet" href="{{ asset("css/ticker/ticker.css") }}">
|
||||
<script src="{{ asset("js/intern.js") }}"></script>
|
||||
<script src="{{ asset("js/ticker/edit.js") }}"></script>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<h1>Ticker bearbeiten</h1>
|
||||
<br />
|
||||
<div id="fehlermeldung">Hier kann der Ticker verändert werden.</div>
|
||||
<div class="split-left">
|
||||
<h2>Deutsch</h2>
|
||||
<label for="ticker_de">Aktive Tickernachrichten:</label>
|
||||
<select class="form-control" name="ticker_de" id="ticker_de" multiple>
|
||||
<label for="ticker_de">Aktive Tickernachrichten:</label><br /><br />
|
||||
<select name="ticker_de" id="ticker_de" multiple>
|
||||
@foreach(\App\Models\TickerMessages::where('language', 'de')->orderBy('updated_at', 'desc')->get() as $tm)
|
||||
<option value="{{$tm->id}}">{{$tm->message}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<br />
|
||||
<br /><br />
|
||||
<button onclick="remove('de')">Ausgewählte Tickernachricht löschen</button>
|
||||
<br /><br /><br />
|
||||
|
||||
<label for="insert_de">Tickernachricht:</label>
|
||||
<input class="form-control" type="text" id="insert_de">
|
||||
<br />
|
||||
<label for="insert_de">Tickernachricht erstellen: </label><br />
|
||||
<input size="32" type="text" id="insert_de">
|
||||
<br /><br />
|
||||
<button onclick="insert('de')">Tickernachricht hinzufügen</button>
|
||||
|
||||
<br />
|
||||
<hr />
|
||||
<br />
|
||||
|
||||
</div>
|
||||
<div class="split-right">
|
||||
<h2>Englisch</h2>
|
||||
<label for="ticker_en">Aktive Tickernachrichten:</label>
|
||||
<select class="form-control" name="ticker_en" id="ticker_en" multiple>
|
||||
<label for="ticker_en">Aktive Tickernachrichten:</label><br /><br />
|
||||
<select name="ticker_en" id="ticker_en" multiple>
|
||||
@foreach(\App\Models\TickerMessages::where('language', 'en')->orderBy('updated_at', 'desc')->get() as $tm)
|
||||
<option value="{{$tm->id}}">{{$tm->message}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<br />
|
||||
<br /><br />
|
||||
<button onclick="remove('en')">Ausgewählte Tickernachricht löschen</button>
|
||||
<br /><br /><br />
|
||||
|
||||
<label for="insert_en">Tickernachricht:</label>
|
||||
<input class="form-control" type="text" id="insert_en">
|
||||
<br />
|
||||
<label for="insert_de">Tickernachricht erstellen: </label><br />
|
||||
<input size="32" type="text" id="insert_en">
|
||||
<br /><br />
|
||||
<button onclick="insert('en')">Tickernachricht hinzufügen</button>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@endsection
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
use App\Http\Controllers\LoginController;
|
||||
use App\Http\Controllers\WebsiteController;
|
||||
use App\Http\Controllers\TickerController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
|
||||
@@ -26,4 +27,8 @@ Route::get('/intern/abmelden', function(){
|
||||
})->name('logout');
|
||||
|
||||
Route::get('/intern/ticker', [WebsiteController::class, 'editTicker'])->name('editTicker');
|
||||
Route::delete('/intern/ticker/remove', [TickerController::class, 'deleteTicker']);
|
||||
Route::put('/intern/ticker/add', [TickerController::class, 'addTicker']);
|
||||
|
||||
|
||||
Route::get('/intern/nachrichten', [WebsiteController::class, 'editNews'])->name('editNews');
|
||||
|
||||
Reference in New Issue
Block a user