Newer
Older

Yassine Doghri
committed
<?= $this->extend('Modules\Admin\Views\_layout') ?>
<?= $this->section('title') ?>
<?= lang('Episode.edit') ?>
<?= $this->endSection() ?>
<?= $this->section('pageTitle') ?>
<?= lang('Episode.edit') ?>
<?= $this->endSection() ?>
<?= $this->section('content') ?>
<?= form_open_multipart(route_to('episode-edit', $podcast->id, $episode->id), [
'method' => 'post',
'class' => 'flex flex-col',
]) ?>

Yassine Doghri
committed
<div class="inline-flex w-full p-2 mb-4 text-sm font-semibold text-yellow-800 bg-red-100 border border-red-300 rounded" role="alert">

Yassine Doghri
committed
<?= icon('alert', 'mr-2 text-lg flex-shrink-0') .
lang('Episode.form.warning') ?>

Yassine Doghri
committed
</div>
<?= form_section(
lang('Episode.form.info_section_title'),
'<img
src="' .
$episode->image->medium_url .
'"
alt="' .
$episode->title .
'"
class="w-48"
/>',
) ?>

Yassine Doghri
committed
<?= component(
'Forms/Label',
['text' =>
lang('Episode.form.audio_file'), 'hint' => lang('Episode.form.audio_file_hint'),],
['for' => 'audio_file'],

Yassine Doghri
committed
) ?>
<?= form_input([
'id' => 'audio_file',
'name' => 'audio_file',

Yassine Doghri
committed
'class' => 'form-input mb-4',
'type' => 'file',
'accept' => '.mp3,.m4a',
]) ?>

Yassine Doghri
committed
<?= component(
'Forms/Label',
['text' =>
lang('Episode.form.image'), 'hint' => lang('Episode.form.image_hint'), 'isOptional' => true,],
['for' =>
'image',]
<?= form_input([
'id' => 'image',
'name' => 'image',
'class' => 'form-input',
'type' => 'file',
'accept' => '.jpg,.jpeg,.png',
]) ?>
<small class="mb-4 text-gray-600"><?= lang(

Yassine Doghri
committed
'Common.forms.image_size_hint',

Yassine Doghri
committed
<?= component(
'Forms/Label',
['text' =>
lang('Episode.form.title'), 'hint' => lang('Episode.form.title_hint'),],
['for' =>
'title',]
<?= form_input([
'id' => 'title',
'name' => 'title',
'class' => 'form-input mb-4',
'value' => old('title', $episode->title),
'required' => 'required',
'data-slugify' => 'title',
]) ?>

Yassine Doghri
committed
<?= component(
'Forms/Label',
[
'text' => lang('Episode.form.permalink')
],
['for' => 'slug',]
<permalink-edit class="inline-flex items-center mb-4 text-xs" edit-label="<?= lang('Common.edit') ?>" copy-label="<?= lang('Common.copy') ?>" copied-label="<?= lang('Common.copied') ?>">

Yassine Doghri
committed
<span slot="domain"><?= base_url('/@' . $podcast->handle . '/episodes') . '/' ?></span>
<?= form_input([

Yassine Doghri
committed
'id' => 'slug',
'name' => 'slug',
'class' => 'form-input flex-1 w-0 text-xs',
'value' => old('slug', $episode->slug),
'required' => 'required',
'data-slugify' => 'slug',
'slot' => 'slug-input'
]) ?>
</permalink-edit>
<div class="flex flex-col mb-4 gap-x-2 gap-y-4 md:flex-row">
<div class="flex flex-col flex-1">

Yassine Doghri
committed
<?= component('Forms/Label', ['text' => lang('Episode.form.season_number')], ['for' => 'season_number']) ?>
<?= form_input([
'id' => 'season_number',
'name' => 'season_number',
'class' => 'form-input w-full',
'value' => old('season_number', $episode->season_number),
'type' => 'number',
]) ?>
</div>
<div class="flex flex-col flex-1">

Yassine Doghri
committed
<?= component('Forms/Label', ['text' => lang('Episode.form.episode_number')], ['for' => 'episode_number']) ?>
<?= form_input([
'id' => 'episode_number',
'name' => 'episode_number',
'class' => 'form-input w-full',
'value' => old('episode_number', $episode->number),
'type' => 'number',
]) ?>
</div>
</div>
<?= form_fieldset('', ['class' => 'flex mb-4 gap-1']) ?>

Yassine Doghri
committed
<legend>
<?= lang('Episode.form.type.label') .
hint_tooltip(lang('Episode.form.type.hint'), 'ml-1') ?>

Yassine Doghri
committed
</legend>
<?= form_radio(
['id' => 'full', 'name' => 'type', 'class' => 'form-radio-btn'],
'full',
old('type') ? old('type') === 'full' : $episode->type === 'full',
) ?>
<label for="full" class="inline-flex items-center">
<?= lang('Episode.form.type.full') ?>
</label>
<?= form_radio(
['id' => 'trailer', 'name' => 'type', 'class' => 'form-radio-btn'],
'trailer',
old('type') ? old('type') === 'trailer' : $episode->type === 'trailer',
) ?>
<label for="trailer" class="inline-flex items-center">
<?= lang('Episode.form.type.trailer') ?>
</label>
<?= form_radio(
['id' => 'bonus', 'name' => 'type', 'class' => 'form-radio-btn'],
'bonus',
old('type') ? old('type') === 'bonus' : $episode->type === 'bonus',
) ?>
<label for="bonus" class="inline-flex items-center">
<?= lang('Episode.form.type.bonus') ?>
</label>
<?= form_fieldset_close() ?>
<?= form_fieldset('', ['class' => 'mb-6']) ?>

Yassine Doghri
committed
<legend>
<?= lang('Episode.form.parental_advisory.label') .
hint_tooltip(lang('Episode.form.parental_advisory.hint'), 'ml-1') ?>

Yassine Doghri
committed
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
</legend>
<?= form_radio(
[
'id' => 'undefined',
'name' => 'parental_advisory',
'class' => 'form-radio-btn',
],
'undefined',
old('parental_advisory')
? old('parental_advisory') === 'undefined'
: $episode->parental_advisory === null,
) ?>
<label for="undefined"><?= lang(
'Episode.form.parental_advisory.undefined',
) ?></label>
<?= form_radio(
[
'id' => 'clean',
'name' => 'parental_advisory',
'class' => 'form-radio-btn',
],
'clean',
old('parental_advisory')
? old('parental_advisory') === 'clean'
: $episode->parental_advisory === 'clean',
) ?>
<label for="clean"><?= lang(
'Episode.form.parental_advisory.clean',
) ?></label>
<?= form_radio(
[
'id' => 'explicit',
'name' => 'parental_advisory',
'class' => 'form-radio-btn',
],
'explicit',
old('parental_advisory')
? old('parental_advisory') === 'explicit'
: $episode->parental_advisory === 'explicit',
) ?>
<label for="explicit"><?= lang(
'Episode.form.parental_advisory.explicit',
) ?></label>
<?= form_fieldset_close() ?>
<?= form_section_close() ?>
<?= form_section(
lang('Episode.form.show_notes_section_title'),

Yassine Doghri
committed
lang('Episode.form.show_notes_section_subtitle'),
) ?>

Yassine Doghri
committed
<?= component('Forms/Label', ['text' => lang('Episode.form.description')], ['for' => 'description']) ?>
<?= component(
'Forms/MarkdownEditor',
[
'content' => old('description', $episode->description_markdown, false),
],
[
'id' => 'description',
'name' => 'description',
'required' => 'required',
],
) ?>
<div class="mb-4">

Yassine Doghri
committed
<?= component('Forms/Label',
[
'text' => lang('Episode.form.description_footer'),
'hint' => lang('Episode.form.description_footer_hint'),
'isOptional' => true
],
['for' => 'description_footer'],

Yassine Doghri
committed
<?= component(
'Forms/MarkdownEditor',
[
'content' => old(
'description_footer',
$podcast->episode_description_footer_markdown ?? '',
false,
),
],
[
'id' => 'description_footer',
'name' => 'description_footer',
'rows' => 6
],
) ?>
</div>
<?= form_section_close() ?>
<?= form_section(
lang('Episode.form.location_section_title'),

Yassine Doghri
committed
lang('Episode.form.location_section_subtitle'),

Yassine Doghri
committed
<?= component('Forms/Label',
[
'text' => lang('Episode.form.location_name'),
'hint' => lang('Episode.form.location_name_hint'),
'isOptional' => true
],
['for' => 'location_name']
) ?>
<?= form_input([
'id' => 'location_name',
'name' => 'location_name',
'class' => 'form-input mb-4',
'value' => old('location_name', $episode->location_name),
]) ?>
<?= form_section_close() ?>
<?= form_section(
lang('Episode.form.additional_files_section_title'),
lang('Episode.form.additional_files_section_subtitle', [
'podcastNamespaceLink' =>

Yassine Doghri
committed
'“<a href="https://github.com/Podcastindex-org/podcast-namespace" target="_blank" rel="noreferrer noopener" style="text-decoration: underline;">podcast namespace</a>”',

Yassine Doghri
committed
]),
<?= form_fieldset('', ['class' => 'flex flex-col mb-4']) ?>

Yassine Doghri
committed
<legend><?= lang('Episode.form.transcript') .
'<small class="ml-1 lowercase">(' .
lang('Common.optional') .
')</small>' .
hint_tooltip(lang('Episode.form.transcript_hint'), 'ml-1') ?></legend>
<div class="mb-4 form-input-tabs">
<input type="radio" name="transcript-choice" id="transcript-file-upload-choice" aria-controls="transcript-file-upload-choice" value="upload-file" <?= $episode->transcript_file_remote_url
? ''
: 'checked' ?> />
<label for="transcript-file-upload-choice"><?= lang(
'Common.forms.upload_file',
) ?></label>
<input type="radio" name="transcript-choice" id="transcript-file-remote-url-choice" aria-controls="transcript-file-remote-url-choice" value="remote-url" <?= $episode->transcript_file_remote_url
? 'checked'
: '' ?> />
<label for="transcript-file-remote-url-choice"><?= lang(
'Common.forms.remote_url',
) ?></label>
<div class="py-2 tab-panels">
<section id="transcript-file-upload" class="flex items-center tab-panel">
<?php if ($episode->transcript_file) : ?>
<div class="flex justify-between">
<?= anchor(
$episode->transcript_file_url,
icon('file', 'mr-2 text-gray-500') .
$episode->transcript_file,
[
'class' => 'inline-flex items-center text-xs',
'target' => '_blank',
'rel' => 'noreferrer noopener',
],
) .
anchor(
route_to(
'transcript-delete',
$podcast->id,
$episode->id,
),
icon('delete-bin', 'mx-auto'),
[
'class' =>

Yassine Doghri
committed
'p-1 bg-red-200 rounded-full text-red-700 hover:text-red-900',
'data-toggle' => 'tooltip',
'data-placement' => 'bottom',
'title' => lang(
'Episode.form.transcript_file_delete',
),
],
) ?>
</div>
<?php endif; ?>

Yassine Doghri
committed
<?= component( 'Forms/Label',
[
'text' => lang('Episode.form.transcript_file'),
'isOptional' => true
],
['for' => 'transcript_file', 'class' => 'sr-only'],
<?= form_input([
'id' => 'transcript_file',
'name' => 'transcript_file',
'class' => 'form-input',
'type' => 'file',
'accept' => '.txt,.html,.srt,.json',
]) ?>

Yassine Doghri
committed
</section>
<section id="transcript-file-remote-url" class="tab-panel">
<?= component( 'Forms/Label',
[
'text' => lang('Episode.form.transcript_file_remote_url'),
'isOptional' => true
],
['for' => 'transcript_file_remote_url', 'class' => 'sr-only'],
) ?>
<?= form_input([
'id' => 'transcript_file_remote_url',
'name' => 'transcript_file_remote_url',
'class' => 'form-input w-full',
'type' => 'url',
'placeholder' => 'https://...',
'value' => old(
'transcript_file_remote_url',
$episode->transcript_file_remote_url,
),
]) ?>

Yassine Doghri
committed
</section>

Yassine Doghri
committed
</div>
<?= form_fieldset_close() ?>
<?= form_fieldset('', ['class' => 'flex flex-col mb-4']) ?>

Yassine Doghri
committed
<legend><?= lang('Episode.form.chapters') .
'<small class="ml-1 lowercase">(' .
lang('Common.optional') .
')</small>' .
hint_tooltip(lang('Episode.form.chapters_hint'), 'ml-1') ?></legend>
<div class="mb-4 form-input-tabs">
<input type="radio" name="chapters-choice" id="chapters-file-upload-choice" aria-controls="chapters-file-upload-choice" value="upload-file" <?= $episode->chapters_file_remote_url
? ''
: 'checked' ?> />
<label for="chapters-file-upload-choice"><?= lang(
'Common.forms.upload_file',
) ?></label>
<input type="radio" name="chapters-choice" id="chapters-file-remote-url-choice" aria-controls="chapters-file-remote-url-choice" value="remote-url" <?= $episode->chapters_file_remote_url
? 'checked'
: '' ?> />
<label for="chapters-file-remote-url-choice"><?= lang(
'Common.forms.remote_url',
) ?></label>
<div class="py-2 tab-panels">
<section id="chapters-file-upload" class="flex items-center tab-panel">
<?php if ($episode->chapters_file) : ?>
<div class="flex justify-between">
<?= anchor(
$episode->chapters_file_url,
icon('file', 'mr-2') . $episode->chapters_file,
[
'class' => 'inline-flex items-center text-xs',
'target' => '_blank',
'rel' => 'noreferrer noopener',
],
) .
anchor(
route_to(
'chapters-delete',
$podcast->id,
$episode->id,
),
icon('delete-bin', 'mx-auto'),
[
'class' =>

Yassine Doghri
committed
'p-1 bg-red-200 rounded-full text-red-700 hover:text-red-900',
'data-toggle' => 'tooltip',
'data-placement' => 'bottom',
'title' => lang(
'Episode.form.chapters_file_delete',
),
],
) ?>
</div>
<?php endif; ?>

Yassine Doghri
committed
<?= component( 'Forms/Label',
[
'text' => lang('Episode.form.chapters_file'),
'isOptional' => true
],
['for' => 'chapters_file', 'class' => 'sr-only'],
) ?>
<?= form_input([
'id' => 'chapters_file',
'name' => 'chapters_file',
'class' => 'form-input',
'type' => 'file',
'accept' => '.json',
]) ?>

Yassine Doghri
committed
</section>
<section id="chapters-file-remote-url" class="tab-panel">
<?= component( 'Forms/Label',
[
'text' => lang('Episode.form.chapters_file_remote_url'),
'isOptional' => true
],
[
'for' => 'chapters_file_remote_url',
'class' => 'sr-only'
],
<?= form_input([
'id' => 'chapters_file_remote_url',
'name' => 'chapters_file_remote_url',
'class' => 'form-input w-full',
'type' => 'url',
'placeholder' => 'https://...',
'value' => old(
'chapters_file_remote_url',
$episode->chapters_file_remote_url,
),
]) ?>

Yassine Doghri
committed
</section>

Yassine Doghri
committed
</div>
<?= form_fieldset_close() ?>
<?= form_section_close() ?>

Benjamin Bellamy
committed
<?= form_section(
lang('Episode.form.advanced_section_title'),

Yassine Doghri
committed
lang('Episode.form.advanced_section_subtitle'),

Benjamin Bellamy
committed
) ?>

Yassine Doghri
committed
<?= component('Forms/Label',
[
'text' => lang('Episode.form.custom_rss'),
'hint' => lang('Episode.form.custom_rss_hint'),
'isOptional' => true,
],
[
'for' => 'custom_rss',
]
) ?>
<?= component('Forms/XMLEditor',
[
'content' => old('custom_rss', $episode->custom_rss_string)
],
[
'id' => 'custom_rss',
'name' => 'custom_rss',
]

Benjamin Bellamy
committed
) ?>
<?= form_section_close() ?>

Yassine Doghri
committed
<?= component(
'Forms/Toggler',
[
'label' => lang('Episode.form.block'),
'hint' => lang('Episode.form.block_hint')
],
[
'id' => 'block',
'name' => 'block',
'value' => 'yes',
'checked' => old('block', $episode->is_blocked),
]
) ?>
<?= button(
lang('Episode.form.submit_edit'),

Yassine Doghri
committed
'',
['variant' => 'primary'],

Yassine Doghri
committed
['type' => 'submit', 'class' => 'self-end'],
<?= form_close() ?>
<?= $this->endSection() ?>