mein-sterntours/app/Http/Controllers/CMS/CMSNewsController.php
2025-04-01 10:40:14 +02:00

124 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers\CMS;
use App\Http\Controllers\Controller;
use App\Models\News;
use App\Models\Page;
use Carbon\Carbon;
use IqContent\LaravelFilemanager\Lfm;
use Request;
class CMSNewsController extends Controller
{
/*
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware(['admin', '2fa']);
}
public function index()
{
$data = [
'news' => News::all(),//News::where('lvl', 1)->get(),
];
return view('cms.news.index', $data);
}
public function detail($id)
{
if($id === "new") {
$news = new News();
$id = 'new';
$news->status = 1;
$news->content_new = "";
}else{
$news = News::findOrFail($id);
$id = $news->id;
}
$data = [
'news' => $news,
'id' => $id,
'lfm_helper' => app(Lfm::class),
];
return view('cms.news.detail', $data);
}
public function store($id)
{
$data = Request::all();
if($id === "new") {
$news = new News();
$news->model = 'news';
$news->owner_second = 0;
$news->show_in_navi = 1;
$news->catalog_id = 1;
}else{
$news = News::findOrFail($id);
}
$news->title = $data['title'];
$news->status = isset($data['status']) ? true : false;
$news->slug = $data['slug'];
$news->date = $data['date'];
$news->content_new = $data['content_new'];
$news->box_body = $data['image'];
$news->description = $data['description'];
$news->pagetitle = $data['pagetitle'];
$news->keywords = $data['keywords'];
$news->order = (new Carbon($news->date))->format('Ymd')*-1;
$root_news = News::where('cms_settings', 'news_root')->first();
if($id != $root_news->id){
//root ID = 3126
$news->lvl = 1;
$news->owner = $root_news->id;
$news->parent_id = $root_news->id;
$news->tree_root = $root_news->id;
if($first_news = $root_news->children->first()){
$news->lft = $first_news->lft;
$news->rgt = $first_news->rgt;
}else{
$news->lft = $root_news->lft +1;
$news->rgt = $root_news->lft +2;
}
}
$news->save();
\Session()->flash('alert-save', '1');
return redirect(route('cms_news_detail', [$news->id]));
}
public function delete($id){
$news = News::findOrFail($id);
//TODO
//check for delete, only delete lvl 2 .,...?
if ($news->lvl != 1){
abort(404);
die();
}
$news->delete();
\Session()->flash('alert-success', __('News gelöscht'));
return redirect(route('cms_news'));
}
}