Explorar o código

Article control panel

axkuhta hai 1 ano
pai
achega
812e15e9dd

+ 14 - 1
app/Http/Controllers/ArticleController.php

@@ -7,8 +7,21 @@ use App\Models\Article;
 
 class ArticleController extends Controller
 {
+	function published() {
+		return view("published", ["rows" => Article::published()->get()]);
+	}
+
 	function index() {
-		return view("articles", ["rows" => Article::published()->get()]);
+		$all = Article::all()->groupBy("status");
+
+		$args = [
+			"drafts" => $all[Article::STATUS_DRAFT] ?? null,
+			"pending" => $all[Article::STATUS_PENDING] ?? null,
+			"published" => $all[Article::STATUS_PUBLISHED] ?? null,
+			"archive" => $all[Article::STATUS_ARCHIVE] ?? null
+		];
+
+		return view("articles", $args);
 	}
 
 	function add() {

+ 91 - 10
resources/views/articles.blade.php

@@ -1,17 +1,98 @@
 @extends("layouts.app")
 
 @section("content")
-<h1>Все публикации</h1>
+<h1>Панель управления публикациями</h1>
+<p>Здесь представлены все публикации в базе данных.</p>
+<p><a href="/article/add">Добавить публикацию</a></p>
 
-@foreach ($rows as $row)
-	<div class="article-list-entry">
-		<div class="article-list-title">{{$row->title}}</div>
-		<div class="article-list-time">{{$row->publish_at}}</div>
-		<div class="article-list-description">{{$row->description}}</div>
-		<div class="article-list-link"><a href="/article/{{$row->id}}">ОТКРЫТЬ</a></div>
-	</div>
-@endforeach
+<h3>Черновики</h3>
+<table>
+	<tr>
+		<th>Название</th>
+		<th>Изменено</th>
+	</tr>
+	@if (!$drafts)
+		<tr>
+			<td colspan=2 class="td-empty">Пусто</td>
+		</tr>
+	@else
+	@foreach ($drafts as $row)
+		<tr>
+			<td><a href="/article/{{$row->id}}">{{$row->title}}</a></td>
+			<td>{{$row->updated_at}}</td>
+		</tr>
+	@endforeach
+	@endif
+</table>
+<br>
 
-<p><a href="/article/add">Добавить публикацию</a></p>
+<h3>Ждут публикации</h3>
+<table>
+	<tr>
+		<th>Название</th>
+		<th>Изменено</th>
+		<th>Опубликовать в</th>
+	</tr>
+	@if (!$pending)
+		<tr>
+			<td colspan=3 class="td-empty">Пусто</td>
+		</tr>
+	@else
+	@foreach ($pending as $row)
+		<tr>
+			<td><a href="/article/{{$row->id}}">{{$row->title}}</a></td>
+			<td>{{$row->updated_at}}</td>
+			<td>{{$row->publish_at}}</td>
+		</tr>
+	@endforeach
+	@endif
+</table>
+<br>
+
+<h3>Опубликованы</h3>
+<table>
+	<tr>
+		<th>Название</th>
+		<th>Изменено</th>
+		<th>Опубликовано</th>
+	</tr>
+	@if (!$published)
+		<tr>
+			<td colspan=3 class="td-empty">Пусто</td>
+		</tr>
+	@else
+	@foreach ($published as $row)
+		<tr>
+			<td><a href="/article/{{$row->id}}">{{$row->title}}</a></td>
+			<td>{{$row->updated_at}}</td>
+			<td>{{$row->publish_at}}</td>
+		</tr>
+	@endforeach
+	@endif
+</table>
+<br>
+
+<h3>Архив</h3>
+<table>
+	<tr>
+		<th>Название</th>
+		<th>Изменено</th>
+		<th>Снято с публикации</th>
+	</tr>
+	@if (!$archive)
+		<tr>
+			<td colspan=3 class="td-empty">Пусто</td>
+		</tr>
+	@else
+	@foreach ($archive as $row)
+		<tr>
+			<td><a href="/article/{{$row->id}}">{{$row->title}}</a></td>
+			<td>{{$row->updated_at}}</td>
+			<td>{{$row->unpublish_at}}</td>
+		</tr>
+	@endforeach
+	@endif
+</table>
+<br>
 
 @endsection

+ 4 - 0
resources/views/layouts/app.blade.php

@@ -139,6 +139,10 @@
 				white-space: pre-wrap;
 			}
 
+			.td-empty {
+				text-align: center;
+			}
+
 			pre {
 				overflow: scroll;
 			}

+ 17 - 0
resources/views/published.blade.php

@@ -0,0 +1,17 @@
+@extends("layouts.app")
+
+@section("content")
+<h1>Все публикации</h1>
+
+@foreach ($rows as $row)
+	<div class="article-list-entry">
+		<div class="article-list-title">{{$row->title}}</div>
+		<div class="article-list-time">{{$row->publish_at}}</div>
+		<div class="article-list-description">{{$row->description}}</div>
+		<div class="article-list-link"><a href="/article/{{$row->id}}">ОТКРЫТЬ</a></div>
+	</div>
+@endforeach
+
+<p><a href="/article/add">Добавить публикацию</a></p>
+
+@endsection

+ 1 - 0
routes/web.php

@@ -46,6 +46,7 @@ Route::get('/api/books', function() { return Resources\BookResource::collection(
 
 // Публикации
 Route::get('/articles', [Controllers\ArticleController::class, 'index']);
+Route::get('/articles/full', [Controllers\ArticleController::class, 'full_index']);
 Route::get('/article/add', [Controllers\ArticleController::class, 'add']);
 Route::get('/article/{article}', [Controllers\ArticleController::class, 'view']);
 Route::get('/article/{article}/delete', [Controllers\ArticleController::class, 'drop']);