mirror of
https://github.com/ad-aures/castopod.git
synced 2026-04-16 21:17:45 +02:00
fix(ux): allow for empty message upon episode publication and warn user on submit
- clarify distiction between the announcement post and the show notes - change "note" occurences in UI by "post" - show warning message explaining why the podcaster should fill the message area - the podcaster can choose to publish the episode with an empty message anyways - redirect user to episode dashboard with error message when episode publication pages are inaccessible instead of showing a 404 error - add a cancel publication button in publish-edit form when episode is scheduled closes #129
This commit is contained in:
parent
8f3e9d90c1
commit
33d01b8d4f
12 changed files with 300 additions and 140 deletions
|
|
@ -388,7 +388,7 @@ class EpisodeController extends BaseController
|
|||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function publish(): string
|
||||
public function publish(): string | RedirectResponse
|
||||
{
|
||||
if ($this->episode->publication_status === 'not_published') {
|
||||
helper(['form']);
|
||||
|
|
@ -405,7 +405,10 @@ class EpisodeController extends BaseController
|
|||
return view('admin/episode/publish', $data);
|
||||
}
|
||||
|
||||
throw PageNotFoundException::forPageNotFound();
|
||||
return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with(
|
||||
'error',
|
||||
lang('Episode.publish_error')
|
||||
);
|
||||
}
|
||||
|
||||
public function attemptPublish(): RedirectResponse
|
||||
|
|
@ -478,7 +481,7 @@ class EpisodeController extends BaseController
|
|||
return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id]);
|
||||
}
|
||||
|
||||
public function publishEdit(): string
|
||||
public function publishEdit(): string | RedirectResponse
|
||||
{
|
||||
if ($this->episode->publication_status === 'scheduled') {
|
||||
helper(['form']);
|
||||
|
|
@ -500,7 +503,11 @@ class EpisodeController extends BaseController
|
|||
]);
|
||||
return view('admin/episode/publish_edit', $data);
|
||||
}
|
||||
throw PageNotFoundException::forPageNotFound();
|
||||
|
||||
return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with(
|
||||
'error',
|
||||
lang('Episode.publish_edit_error')
|
||||
);
|
||||
}
|
||||
|
||||
public function attemptPublishEdit(): RedirectResponse
|
||||
|
|
@ -572,7 +579,44 @@ class EpisodeController extends BaseController
|
|||
return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id]);
|
||||
}
|
||||
|
||||
public function unpublish(): string
|
||||
public function publishCancel(): RedirectResponse
|
||||
{
|
||||
if ($this->episode->publication_status === 'scheduled') {
|
||||
$db = db_connect();
|
||||
$db->transStart();
|
||||
|
||||
$statusModel = new StatusModel();
|
||||
$status = $statusModel
|
||||
->where([
|
||||
'actor_id' => $this->podcast->actor_id,
|
||||
'episode_id' => $this->episode->id,
|
||||
])
|
||||
->first();
|
||||
$statusModel->removeStatus($status);
|
||||
|
||||
$this->episode->published_at = null;
|
||||
|
||||
$episodeModel = new EpisodeModel();
|
||||
if (! $episodeModel->update($this->episode->id, $this->episode)) {
|
||||
$db->transRollback();
|
||||
return redirect()
|
||||
->back()
|
||||
->withInput()
|
||||
->with('errors', $episodeModel->errors());
|
||||
}
|
||||
|
||||
$db->transComplete();
|
||||
|
||||
return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id]);
|
||||
}
|
||||
|
||||
return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with(
|
||||
'error',
|
||||
lang('Episode.publish_cancel_error')
|
||||
);
|
||||
}
|
||||
|
||||
public function unpublish(): string | RedirectResponse
|
||||
{
|
||||
if ($this->episode->publication_status === 'published') {
|
||||
helper(['form']);
|
||||
|
|
@ -589,7 +633,10 @@ class EpisodeController extends BaseController
|
|||
return view('admin/episode/unpublish', $data);
|
||||
}
|
||||
|
||||
throw PageNotFoundException::forPageNotFound();
|
||||
return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with(
|
||||
'error',
|
||||
lang('Episode.unpublish_error')
|
||||
);
|
||||
}
|
||||
|
||||
public function attemptUnpublish(): RedirectResponse
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue