View file resources/views/stories/_form.php

File size: 4.39Kb
<?php

use App\Models\File;
use App\Models\Story;
use League\Plates\Template\Template;
use MotorORM\Collection;

/** @var Template $template */
/** @var Story|null $story */
/** @var Collection<File> $files */

$story ??= null;
?>
<div class="section shadow border p-3 cut">
    <form method="post" action="<?= route($story ? 'story-update' : 'story-store', ['id' => $story->id ?? null]) ?>">
        <input type="hidden" name="_METHOD" value="<?= $story ? 'PUT' : 'POST' ?>">
        <input type="hidden" name="csrf" value="<?= session('csrf') ?>">
        <div class="mb-3">
            <label for="title" class="form-label">Заголовок</label>
            <input type="text" class="form-control<?= hasError('title') ?>" id="title" name="title" value="<?= old('title', $story->title ?? null) ?>" required>
            <div class="invalid-feedback"><?= getError('title') ?></div>
        </div>

        <div class="mb-3">
            <label for="text" class="form-label">Текст</label>
            <textarea class="form-control markItUp<?= hasError('text') ?>" id="text" rows="5" name="text" maxlength="<?= setting('story.text_max_length') ?>" required><?= old('text', $story->text ?? null) ?></textarea>
            <span class="js-textarea-counter"></span>
            <div class="invalid-feedback"><?= getError('text') ?></div>
        </div>

        <?= $this->fetch('app/_upload', compact('story', 'files')) ?>

        <div class="mb-3">
            <label for="tags" class="form-label">Теги</label>

            <?php $tags = old('tags', $story ? $story->tags->pluck('tag')->all() : []); ?>
            <select class="form-select input-tag<?= hasError('tags') ?>" id="tags" name="tags[]" multiple required>
                <option disabled value="">Теги...</option>
                <?php foreach ($tags as $key => $tag): ?>
                <option value="<?= $tag ?>" selected><?= $tag ?></option>
                <?php endforeach; ?>
            </select>
            <div class="invalid-feedback"><?= getError('tags') ?></div>
        </div>

        <?php if (isAdmin()): ?>
            <div class="mb-3">
                <div class="form-check">
                    <input type="hidden" value="0" name="active">
                    <input type="checkbox" class="form-check-input" value="1" name="active" id="active"<?= old('active', $story->active ?? true) ? ' checked' : '' ?>>
                    <label for="active" class="form-check-label">Опубликовать статью</label>
                </div>

                <div class="form-check">
                    <input type="hidden" value="0" name="locked">
                    <input type="checkbox" class="form-check-input" value="1" name="locked" id="locked"<?= old('locked', $story->locked ?? null) ? ' checked' : '' ?>>
                    <label for="locked" class="form-check-label">Закрепить статью</label>
                </div>

                <?php $delay = old('delay') || $story?->created_at > time(); ?>
                <?php $checked = $delay ? ' checked' : ''; ?>
                <?php $display = $delay ? '' : ' style="display: none"'; ?>
                <div class="form-check">
                    <input type="checkbox" class="form-check-input" value="1" name="delay" id="delay"<?= $checked ?> onchange="return showDelayForm(this);">
                    <label for="delay" class="form-check-label">Отложенная публикация</label>
                </div>

                <div class="col-sm-6 col-md-4 my-3 js-created"<?= $display ?>>
                    <label for="created" class="form-label">Дата публикации</label>
                    <input class="form-control<?= hasError('created') ?>" type="datetime-local" name="created" id="created" value="<?= old('created', date('Y-m-d\TH:i', $story?->created_at)) ?>">
                    <div class="invalid-feedback"><?= getError('created') ?></div>
                </div>
            </div>
        <?php endif; ?>

        <button type="submit" class="btn btn-primary"><?= $story ? 'Изменить' : 'Отправить' ?></button>
    </form>
</div>

<?php $template->push('scripts') ?>
    <script>
        showDelayForm = function (el) {
            if($(el).is(":checked")) {
                $('.js-created').show(300);
            } else {
                $('.js-created').hide(200);
            }

            return false;
        };
    </script>
<?php $template->end() ?>