@extends('layouts.base') @section('title', 'チェックインの修正') @section('content') <div class="container"> <h2>チェックインの修正</h2> <hr> <div class="row justify-content-center mt-5"> <div class="col-lg-6"> <form method="post" action="{{ route('checkin.update', ['id' => $ejaculation->id]) }}"> {{ method_field('PUT') }} {{ csrf_field() }} <div class="form-row"> <div class="form-group col-sm-6"> <label for="date"><span class="oi oi-calendar"></span> 日付</label> <input id="date" name="date" type="text" class="form-control {{ $errors->has('date') || $errors->has('datetime') ? ' is-invalid' : '' }}" pattern="^20[0-9]{2}/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])$" value="{{ old('date') ?? $ejaculation->ejaculated_date->format('Y/m/d') }}" required> @if ($errors->has('date')) <div class="invalid-feedback">{{ $errors->first('date') }}</div> @endif </div> <div class="form-group col-sm-6"> <label for="time"><span class="oi oi-clock"></span> 時刻</label> <input id="time" name="time" type="text" class="form-control {{ $errors->has('time') || $errors->has('datetime') ? ' is-invalid' : '' }}" pattern="^([01][0-9]|2[0-3]):[0-5][0-9]$" value="{{ old('time') ?? $ejaculation->ejaculated_date->format('H:i') }}" required> @if ($errors->has('time')) <div class="invalid-feedback">{{ $errors->first('time') }}</div> @endif </div> @if ($errors->has('datetime')) <div class="form-group col-sm-12" style="margin-top: -1rem;"> <small class="text-danger">{{ $errors->first('datetime') }}</small> </div> @endif </div> <div class="form-row"> <div class="form-group col-sm-12"> <input name="tags" type="hidden" value="{{ old('tags') ?? $ejaculation->textTags() }}"> <label for="tagInput"><span class="oi oi-tags"></span> タグ</label> <div class="form-control {{ $errors->has('tags') ? ' is-invalid' : '' }}"> <ul id="tags" class="list-inline d-inline"></ul> <input id="tagInput" type="text" style="outline: 0; border: 0;"> </div> <small class="form-text text-muted"> Tab, Enter, 半角スペースのいずれかで入力確定します。 </small> @if ($errors->has('tags')) <div class="invalid-feedback">{{ $errors->first('tags') }}</div> @endif </div> </div> <div class="form-row"> <div class="form-group col-sm-12"> <label for="link"><span class="oi oi-link-intact"></span> オカズリンク</label> <input id="link" name="link" type="text" autocomplete="off" class="form-control {{ $errors->has('link') ? ' is-invalid' : '' }}" placeholder="http://..." value="{{ old('link') ?? $ejaculation->link }}"> <small class="form-text text-muted"> オカズのURLを貼り付けて登録することができます。 </small> @if ($errors->has('link')) <div class="invalid-feedback">{{ $errors->first('link') }}</div> @endif </div> </div> <div class="form-row"> <div class="form-group col-sm-12"> <label for="note"><span class="oi oi-comment-square"></span> ノート</label> <textarea id="note" name="note" class="form-control {{ $errors->has('note') ? ' is-invalid' : '' }}" rows="4">{{ old('note') ?? $ejaculation->note }}</textarea> <small class="form-text text-muted"> 最大 500 文字 </small> @if ($errors->has('note')) <div class="invalid-feedback">{{ $errors->first('note') }}</div> @endif </div> </div> <div class="form-row mt-4"> <p>オプション</p> <div class="form-group col-sm-12"> <div class="custom-control custom-checkbox mb-3"> <input id="isPrivate" name="is_private" type="checkbox" class="custom-control-input" {{ (is_bool(old('is_private')) ? old('is_private') : $ejaculation->is_private) ? 'checked' : '' }}> <label class="custom-control-label" for="isPrivate"> <span class="oi oi-lock-locked"></span> このチェックインを非公開にする </label> </div> </div> </div> <div class="text-center"> <button class="btn btn-primary" type="submit">チェックイン</button> </div> </form> </div> </div> </div> @endsection @push('script') <script> function updateTags() { $('input[name=tags]').val( $('#tags') .find('li') .map(function () { return $(this).data('value'); }) .get() .join(' ') ); } function insertTag(value) { $('#tags').append('<li class="list-inline-item badge badge-primary" style="cursor: pointer;" data-value="' + value + '"><span class="oi oi-tag"></span> ' + value + ' | x</li>'); } var initTags = $('input[name=tags]').val(); if (initTags.trim() !== '') { initTags.split(' ').forEach(function (value) { insertTag(value); }); } $('#tagInput').on('keydown', function (ev) { var $this = $(this); if ($this.val().trim() !== '') { switch (ev.key) { case 'Tab': case 'Enter': case ' ': insertTag($this.val().trim()); $this.val(''); updateTags(); ev.preventDefault(); break; } } else if (ev.key === 'Enter') { // 誤爆防止 ev.preventDefault(); } }); $('#tags') .on('click', 'li', function (ev) { $(this).remove(); updateTags(); }) .parent() .on('click', function (ev) { $('#tagInput').focus(); }); </script> @endpush