approve news items

This commit is contained in:
HolgerHatGarKeineNode
2023-02-11 15:55:12 +01:00
parent 504b635977
commit b5c76730c5
2 changed files with 58 additions and 9 deletions

View File

@@ -5,9 +5,24 @@ namespace App\Http\Livewire\News;
use App\Models\LibraryItem; use App\Models\LibraryItem;
use Livewire\Component; use Livewire\Component;
use RalphJSmit\Laravel\SEO\Support\SEOData; use RalphJSmit\Laravel\SEO\Support\SEOData;
use WireUi\Traits\Actions;
class ArticleOverview extends Component class ArticleOverview extends Component
{ {
use Actions;
public function approve($id)
{
$libraryItem = LibraryItem::find($id);
$libraryItem->approved = true;
$libraryItem->save();
$this->notification()
->success(__('Article approved'));
$this->emit('$reload');
}
public function render() public function render()
{ {
return view('livewire.news.article-overview', [ return view('livewire.news.article-overview', [
@@ -19,11 +34,22 @@ class ArticleOverview extends Component
]) ])
->where('type', 'markdown_article') ->where('type', 'markdown_article')
->when(app()->environment('production'), ->when(app()->environment('production'),
fn($query) => $query function ($query) {
->whereHas('createdBy.roles', if (auth()->user() && auth()
fn($query) => $query->where('roles.name', 'news-editor')) ->user()
->hasRole('news-editor')) {
}
if (auth()->user() && !auth()
->user()
->hasRole('news-editor')) {
$query
->whereHas('createdBy.roles',
fn($query) => $query->where('roles.name', 'news-editor'))
->where('approved', true);
}
}
) )
->where('approved', true)
->orderByDesc('created_at') ->orderByDesc('created_at')
->get(), ->get(),
])->layout('layouts.app', [ ])->layout('layouts.app', [

View File

@@ -64,12 +64,35 @@
<span>{{ $libraryItem->read_time }} {{ __('min read') }}</span> <span>{{ $libraryItem->read_time }} {{ __('min read') }}</span>
@endif @endif
</div> </div>
<div class="flex space-x-1 text-sm text-gray-500 justify-end"> <div class="flex space-x-1 text-sm text-gray-500 justify-end items-end">
@if($libraryItem->created_by == auth()->id() || auth()->user()?->hasRole('news-editor')) @if($libraryItem->created_by == auth()->id() || auth()->user()?->hasRole('news-editor'))
<x-button xs :href="route('news.form', ['libraryItem' => $libraryItem])"> <div>
<i class="fa fa-thin fa-edit"></i> @if(auth()->user()?->hasRole('news-editor'))
{{ __('Edit') }} @if($libraryItem->approved)
</x-button> <x-badge green>{{ __('approved') }}</x-badge>
@else
<x-badge negative>{{ __('not approved') }}</x-badge>
@endif
@endif
</div>
<div>
@if(!$libraryItem->approved && auth()->user()?->hasRole('news-editor'))
<x-button
xs
wire:click="approve({{ $libraryItem->id }})"
>
<i class="fa fa-thin fa-check"></i>
{{ __('Approve') }}
</x-button>
@endif
</div>
<div>
<x-button xs
:href="route('news.form', ['libraryItem' => $libraryItem])">
<i class="fa fa-thin fa-edit"></i>
{{ __('Edit') }}
</x-button>
</div>
@endif @endif
</div> </div>
</div> </div>