%PDF- %PDF-
| Direktori : /www/loslex/demo/resources/views/contests/ |
| Current File : //www/loslex/demo/resources/views/contests/edit.blade.php |
<?php
$filteredmsg = array();
foreach ($errors->toArray() as $field => $data) {
if (preg_match('/(presentation|contest)_(start|end).*/', $field)) {
foreach ($data as $msg) { array_push($filteredmsg, $msg); }
}
}
$errors->add("manualtimetable", $filteredmsg);
?>
@push('scripts')
<script type="module">
$(document).ready(function() {
$('#director_id').select2({ width: 'element', language: { noResults: function(){return ' {{ __('No results found') }}';}}, dropdownCssClass: ':all:', selectionCssClass: ':all:' });
$('#rangemaster_id').select2({ width: 'element', language: { noResults: function(){return ' {{ __('No results found') }}';}}, dropdownCssClass: ':all:', selectionCssClass: ':all:' });
$('#range_id').select2({ width: 'element', language: { noResults: function(){return ' {{ __('No results found') }}';}}, dropdownCssClass: ':all:', selectionCssClass: ':all:' });
});
</script>
@endpush
<x-app-layout>
<x-slot name="pagetitle">@isset ($contest) {{ __('Edit contest') . " - {$contest->contestname}" }} @else {{ __('Create new contest') }}@endisset</x-slot>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight">
@if (request()->routeIs('contest.create')) {{ __('New contest') }} @else {{ __('Edit contest') }} @endif
</h2>
</x-slot>
<section>
<form method="POST" action="{{ request()->routeIs('contest.create') ? route('contest.store') : route('contest.update', ['contest' => $contest->id]) }}" class="space-y-6">
@csrf
@if (request()->routeIs('contest.edit'))
@method('patch')
@endif
{{-- <div>{{ print_r($errors->all()) }}</div> --}}
@if ($errors->any())<x-input-error class="mt-2" :messages="array(__('Fix any invalid fields before form saving.'))" />@endif
<div>
<x-input-label for="contestname" :value="__('Contest name')" />
<x-text-input id="contestname" name="contestname" type="text" class="mt-1 block w-full" :value="old('contestname', $contest?->contestname)" />
<x-input-error class="mt-2" :messages="$errors->get('contestname')" />
</div>
<div>
<x-input-label for="range_id" :value="__('Range')" />
<x-select id="range_id" name="range_id" class="mt-1">
<option value="" selected disabled>{{ __('Select shooting range') }}</option>
@foreach ($ranges as $range)
<option @selected(old('range_id', $contest?->range_id) == $range->id) value="{{ $range->id }}">{{ $range->name }}</option>
@endforeach
</x-select>
<x-input-error class="mt-2" :messages="$errors->get('range_id')" />
</div>
<div class="flex flex-row flex-wrap gap-4"
x-data="{
datevalue: '{{ old('date', $contest?->date->toDateString() ?? '') }}',
startregistration: '{{ old('registration_start', $contest?->registration_start ?? '') }}',
endregistration: '{{ old('registration_end', $contest?->registration_end ?? '') }}',
setEndDate(type) {
let timestamp = 'YYYY-MM-DDTHH:mm';
switch (type) {
case 0: this.endregistration = dayjs(this.datevalue).format(timestamp); break;
case 1: this.endregistration = dayjs(this.datevalue).subtract(6,'h').format(timestamp); break;
case 2: this.endregistration = dayjs(this.datevalue).subtract(12,'h').format(timestamp); break;
case 3: this.endregistration = dayjs(this.datevalue).subtract(24,'h').format(timestamp); break;
case 4: this.endregistration = dayjs(this.datevalue).subtract(48,'h').format(timestamp); break;
}
},
setStartDate(type) {
let timestamp = 'YYYY-MM-DDTHH:mm';
switch (type) {
case 0: this.startregistration = dayjs(this.datevalue).subtract(1, 'M').add(18, 'h').format(timestamp); break;
}
}
}"
>
<div>
<x-input-label for="date" :value="__('Contest date')" />
<x-text-input class="mt-1 dark:[color-scheme:dark]" id="date" x-model="datevalue" name="date" type="date" />
<x-input-error class="mt-2" :messages="$errors->get('date')" />
</div>
<div class="flex flex-row flex-wrap gap-4 w-full"
x-data="{
get showonlinereg() { return this.registration_type == {{ \App\Enums\ContestRegistrationEnum::ONLINE }}},
get showexternalurl() { return this.registration_type == {{ \App\Enums\ContestRegistrationEnum::OFFSITE }}},
registration_type: {{ old('registration_type', $contest?->registration_type ?? \App\Enums\ContestRegistrationEnum::ONLINE) }}
}"
>
<div>
<x-input-label for="registration_type" :value="__('Registration type')" />
<x-select class="mt-1" id="registration_type" name="registration_type" x-model="registration_type">
<option value="" selected disabled>{{ __('Select type of registration') }}</option>
@foreach(\App\Enums\ContestRegistrationEnum::cases() as $regtype)
<option value="{{ $regtype->value }}" @selected(old('registration_type', $contest?->registration_type) == $regtype->value)>{{ __('contest.' . $regtype->name) }}</option>
@endforeach
</x-select>
<x-input-error class="mt-2" :messages="$errors->get('registration_type')" />
</div>
<div class="grow" x-show="showexternalurl">
<x-input-label for="offsiteregurl" :value="__('External registration URL')" />
<x-text-input id="offsiteregurl" name="offsiteregurl" type="text" class="mt-1 block w-full" :value="old('offsiteregurl', $contest?->externalregurl)" />
<x-input-error class="mt-2" :messages="$errors->get('offsiteregurl')" />
</div>
<div x-show="showonlinereg">
<div class="text-sm">
<div class="inline-flex items-center">
<x-input-label for="registration_start" :value="__('Online registration start')" />
<x-dropdown align="right" x-show="datevalue" width="w-max">
<x-slot name="trigger"><x-dropdown-arrow class="fill-red-700" /></x-slot>
<x-slot name="content">
<x-dropdown-button @click="setStartDate(0)">{{ __('One month before contest at 6PM') }}</x-dropdown-button>
</x-slot>
</x-dropdown>
</div>
</div>
<x-text-input class="mt-1 dark:[color-scheme:dark]" x-model="startregistration" id="registration_start" name="registration_start" type="datetime-local" />
<x-input-error class="mt-2" :messages="$errors->get('registration_start')" />
</div>
<div x-show="showonlinereg">
<div class="text-sm">
<div class="inline-flex items-center">
<x-input-label for="registration_end" :value="__('Online registration end')" />
<x-dropdown align="top" x-show="datevalue" width="w-max">
<x-slot name="trigger"><x-dropdown-arrow class="fill-red-700" /></x-slot>
<x-slot name="content">
<x-dropdown-button @click="setEndDate(0)">{{ __('At midnight before contest') }}</x-dropdown-button>
<x-dropdown-button @click="setEndDate(1)">{{ __('At 6PM one day before contest') }}</x-dropdown-button>
<x-dropdown-button @click="setEndDate(2)">{{ __('At noon one day before contest') }}</x-dropdown-button>
<x-dropdown-button @click="setEndDate(3)">{{ __('At midnight one day before contest') }}</x-dropdown-button>
<x-dropdown-button @click="setEndDate(4)">{{ __('At midnight two days before contest') }}</x-dropdown-button>
</x-slot>
</x-dropdown>
</div>
</div>
<x-text-input class="mt-1 dark:[color-scheme:dark]" x-model="endregistration" id="registration_end" name="registration_end" type="datetime-local" />
<x-input-error class="mt-2" :messages="$errors->get('registration_end')" />
</div>
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<x-input-label for="contest_level_id" :value="__('Contest level')" />
<x-select class="mt-1 w-full" id="contest_level_id" name="contest_level_id">
<option value="" selected disabled>{{__('Select contest level')}}</option>
@foreach ($contestlevels as $level)
<option value="{{ $level->id }}" @selected(old('contest_level_id', $contest?->contest_level_id) == $level->id)>{{ __('contest.' . $level->name) }}</option>
@endforeach
</x-select>
<x-input-error class="mt-2" :messages="$errors->get('contest_level_id')" />
</div>
<div>
<x-input-label for="contest_category_id" :value="__('Contest category')" />
<x-select class="mt-1 w-full" id="contest_category_id" name="contest_category_id">
<option value="" selected disabled>{{__('Select contest category')}}</option>
@foreach ($contestcategories as $category)
<option value="{{ $category->id }}" @selected(old('contest_category_id', $contest?->contest_category_id) == $category->id)>{{ __('contest.' . $category->name)}}</option>
@endforeach
</x-select>
<x-input-error class="mt-2" :messages="$errors->get('contest_category_id')" />
</div>
<div>
<x-input-label for="organizer_group_id" :value="__('Organizer')" />
<x-select class="mt-1" id="organizer_group_id" name="organizer_group_id">
<option value="" selected disabled>{{ __('Select organizer group') }}</option>
@foreach ($orggroups as $grp)
<option class="{{ auth()->user()->is_admin && auth()->user()->is_organizer_member($grp->id) ? 'font-bold' : '' }}" value="{{$grp->id}}" @selected($orggroups->count() == 1 || old('organizer_group_id', $contest?->organizer_group_id) == $grp->id)>{{ $grp->name }}</option>
@endforeach
</x-select>
<x-input-error class="mt-2" :messages="$errors->get('organizer_group_id')" />
</div>
<div>
<x-input-label for="organizeremail" :value="__('Organizer email')" />
<x-text-input placeholder="{{ __('If empty, email of contest director will be displayed.') }}" id="organizeremail" name="organizeremail" type="text" class="mt-1 block w-full" :value="old('organizeremail', $contest?->organizeremail)" />
<x-input-error class="mt-2" :messages="$errors->get('organizeremail')" />
</div>
<div>
<x-input-label for="director_id" :value="__('Contest director')" />
<x-select class="mt-1" id="director_id" name="director_id">
<option value="" selected disabled>{{ __('Select person') }}</option>
@foreach ($organizators as $user)
<option value="{{$user->id}}" @selected(old('director_id', $contest?->director_id) == $user->id)>{{ $user->username }} - {{ $user->displayname }}</option>
@endforeach
</x-select>
<x-input-error class="mt-2" :messages="$errors->get('director_id')" />
</div>
<div>
<x-input-label for="rangemaster_id" :value="__('Range master')" />
<x-select class="mt-1" id="rangemaster_id" name="rangemaster_id">
<option value="0" @selected(old('rangemaster_id', $contest?->rangemaster_id) == 0)> === {{__('Will be appointed')}} ===</option>
@foreach ($organizators as $user)
<option value="{{$user->id}}" @selected(old('rangemaster_id', $contest?->rangemaster_id) == $user->id)>{{ $user->username }} - {{ $user->displayname }}</option>
@endforeach
</x-select>
<x-input-error class="mt-2" :messages="$errors->get('rangemaster_id')" />
</div>
</div>
<div class="flex flex-row flex-wrap gap-4">
<div class=>
<x-input-label for="feelex" :value="__('LEX member entry fee')" />
<x-text-input class="mt-1" id="feelex" name="feelex" type="number" :value="old('feelex', $contest?->feelex)" />
<x-input-error class="mt-2" :messages="$errors->get('feelex')" />
</div>
<div>
<x-input-label for="feeothers" :value="__('Other contestants entry fee')" />
<x-text-input class="mt-1" id="feeothers" name="feeothers" type="number" :value="old('feeothers', $contest?->feeothers)" />
<x-input-error class="mt-2" :messages="$errors->get('feeothers')" />
</div>
<div>
<x-input-label for="protestdeposit" :value="__('Protest deposit')" />
<x-text-input class="mt-1" id="protestdeposit" name="protestdeposit" type="number" :value="old('protestdeposit', $contest?->protestdeposit)" />
<x-input-error class="mt-2" :messages="$errors->get('protestdeposit')" />
</div>
</div>
<div class="flex flex-row flex-wrap gap-4">
<div>
<x-input-label class="inline" for="accountnumber" :value="__('Account number')" />
<x-tooltip class="max-w-xs">{{ __('tooltips.bankaccformat') }}</x-tooltip>
<x-text-input class="block mt-1 w-64" id="accountnumber" name="accountnumber" type="text" :value="old('accountnumber', $contest?->accountnumber)" />
<x-input-error class="mt-2" :messages="$errors->get('accountnumber')" />
</div>
<div>
<x-input-label class="inline" for="accvarsym" :value="__('Variable symbol')" />
<x-text-input class="block mt-1 w-64" id="accvarsym" name="accvarsym" type="text" :value="old('accvarsym', $contest?->accvarsym)" />
<x-input-error class="mt-2" :messages="$errors->get('accvarsym')" />
</div>
<div>
<x-input-label class="inline" for="accnote" :value="__('Payment note')" />
<x-tooltip class="max-w-xs">{{ __('tooltips.bankaccnote') }}</x-tooltip>
<x-text-input class="block mt-1 w-64" id="accnote" name="accnote" type="text" :value="old('accnote', $contest?->accnote)" />
<x-input-error class="mt-2" :messages="$errors->get('accnote')" />
</div>
<div>
<x-input-label class="inline" for="acccondition" :value="__('Payment conditions')" />
<x-text-input class="block mt-1 w-64" id="acccondition" name="acccondition" type="text" placeholder="{{ __('E.g. due date for entry fee') }}" :value="old('acccondition', $contest?->acccondition)" />
<x-input-error class="mt-2" :messages="$errors->get('acccondition')" />
</div>
</div>
@include('contests.partials.registration-online')
<fieldset class="text-sm text-gray-700 dark:text-gray-300 font-medium border border-gray-300 dark:border-gray-700 py-2 px-4 grid grid-cols-fitfirst gap-4 rounded-md"
x-data="{
secretstages: '{{ old('secretstages', !is_null($contest) ? $contest->secretstages : '0') }}',
flashlight: '{{ old('flashlight', !is_null($contest) ? $contest->flashlight : '0') }}',
canteen: '{{ old('canteen', !is_null($contest) ? $contest->canteen : '1') }}',
toilet: '{{ old('toilet', !is_null($contest) ? $contest->toilet : '1') }}',
}">
<legend class="px-2 ">{{ __('Contest options') }}</legend>
<div class="col-span-1 sm:col-span-1">{{ __('Secret stages') }}</div>
<div class="col-span-2 sm:col-span-1 space-x-2 text-center sm:text-left">
<div class="inline"><x-text-input type="radio" x-model="secretstages" id="secretstages-no" name="secretstages" value="0" /><x-input-label class="ml-1 inline" for="secretstages-no" :value="__('contest.' . \App\Enums\ContestOptionsEnum::NO->name)" /></div>
<div class="inline"><x-text-input type="radio" x-model="secretstages" id="secretstages-yes" name="secretstages" value="1" /><x-input-label class="ml-1 inline" for="secretstages-yes" :value="__('contest.' . \App\Enums\ContestOptionsEnum::YES->name)" /></div>
<x-input-error class="mt-2" :messages="$errors->get('secretstages')" />
</div>
<div class="col-span-1 sm:col-span-1">{{ __('Flashlight needed') }}</div>
<div class="col-span-2 sm:col-span-1 space-x-2 text-center sm:text-left">
<x-text-input type="radio" x-model="flashlight" id="flashlight-no" name="flashlight" value="{{\App\Enums\ContestOptionsEnum::NO}}" /><x-input-label class="ml-1 inline" for="flashlight-no" :value="__('contest.' . \App\Enums\ContestOptionsEnum::NO->name)" />
<x-text-input type="radio" x-model="flashlight" id="flashlight-maybe" name="flashlight" value="{{\App\Enums\ContestOptionsEnum::POSSIBLY}}" /><x-input-label class="ml-1 inline" for="flashlight-maybe" :value="__('contest.' . \App\Enums\ContestOptionsEnum::POSSIBLY->name)" />
<x-text-input type="radio" x-model="flashlight" id="flashlight-yes" name="flashlight" value="{{\App\Enums\ContestOptionsEnum::YES}}" /><x-input-label class="ml-1 inline" for="flashlight-yes" :value="__('contest.' . \App\Enums\ContestOptionsEnum::YES->name)" />
</div>
<div class="col-span-1 sm:col-span-1">{{ __('Canteen available') }}</div>
<div class="col-span-2 sm:col-span-1 space-x-2 text-center sm:text-left">
<div class="inline"><x-text-input type="radio" x-model="canteen" id="canteen-no" name="canteen" value="0" /><x-input-label class="ml-1 inline" for="canteen-no" :value="__('contest.' . \App\Enums\ContestOptionsEnum::NO->name)" /></div>
<div class="inline"><x-text-input type="radio" x-model="canteen" id="canteen-yes" name="canteen" value="1" /><x-input-label class="ml-1 inline" for="canteen-yes" :value="__('contest.' . \App\Enums\ContestOptionsEnum::YES->name)" /></div>
<x-input-error class="mt-2" :messages="$errors->get('canteen')" />
</div>
<div class="col-span-1 sm:col-span-1">{{ __('Toilet available') }}</div>
<div class="col-span-2 sm:col-span-1 space-x-2 text-center sm:text-left">
<div class="inline"><x-text-input type="radio" x-model="toilet" id="toilet-no" name="toilet" value="0" /><x-input-label class="ml-1 inline" for="toilet-no" :value="__('contest.' . \App\Enums\ContestOptionsEnum::NO->name)" /></div>
<div class="inline"><x-text-input type="radio" x-model="toilet" id="toilet-yes" name="toilet" value="1" /><x-input-label class="ml-1 inline" for="toilet-yes" :value="__('contest.' . \App\Enums\ContestOptionsEnum::YES->name)" /></div>
<x-input-error class="mt-2" :messages="$errors->get('toilet')" />
</div>
<div class="col-span-2">
<x-input-label for="calibrationwpn" :value="__('Calibration weapon/ammunition')" />
<x-text-input id="calibrationwpn" name="calibrationwpn" type="text" class="mt-1 block w-full" :value="old('calibrationwpn', $contest?->calibrationwpn)" />
<x-input-error class="mt-2" :messages="$errors->get('calibrationwpn')" />
</div>
<div class="col-span-2">
<x-input-label for="caliberlimit" :value="__('Caliber or power limitation')" />
<x-text-input id="caliberlimit" name="caliberlimit" type="text" class="mt-1 block w-full" :value="old('caliberlimit', $contest?->caliberlimit)" />
<x-input-error class="mt-2" :messages="$errors->get('caliberlimit')" />
</div>
<div class="col-span-2">
<x-input-label for="instructions" :value="__('Instructions')" />
<textarea
placeholder="{{ __('Specify contest instructions') }}"
x-data="{ resize() { $el.style.height = '6rem'; $el.style.height = 'calc(' + $el.scrollHeight + 'px + 1em)'; }}"
x-init="$nextTick(resize)" x-on:input="resize" x-on:focus="resize" id="instructions" name="instructions"
class="text-sm mt-1 border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-indigo-500 dark:focus:ring-indigo-600 rounded-md shadow-sm w-full">{{ old('instructions', $contest?->instructions) }}</textarea>
<x-input-error class="mt-2" :messages="$errors->get('instructions')" />
</div>
<div class="col-span-2">
<x-input-label for="legend" :value="__('Legend or stages description')" />
<div class="mt-2">
<textarea
placeholder="{{ __('Specify contest legend, stages description or keep empty') }}"
x-data="{ resize() { $el.style.height = '2rem'; $el.style.height = 'calc(' + $el.scrollHeight + 'px + 1em)'; }}"
x-init="$nextTick(resize)" x-on:input="resize" x-on:focus="resize" id="legend" name="legend"
class="text-sm mt-1 border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-indigo-500 dark:focus:ring-indigo-600 rounded-md shadow-sm w-full">{{ old('legend', $contest?->legend) }}</textarea>
<x-input-error class="mt-2" :messages="$errors->get('legend')" />
</div>
</div>
<div class="col-span-2">
<x-input-label for="restrictionstext" :value="__('Other requirements or restrictions')" />
<div class="mt-2">
<textarea
placeholder="{{ __('Specify additional requirements or restrictions or keep empty') }}"
x-data="{ resize() { $el.style.height = '2rem'; $el.style.height = 'calc(' + $el.scrollHeight + 'px + 1em)'; }}"
x-init="$nextTick(resize)" x-on:input="resize" x-on:focus="resize" id="restrictionstext" name="restrictionstext"
class="text-sm mt-1 border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-indigo-500 dark:focus:ring-indigo-600 rounded-md shadow-sm w-full">{{ old('restrictionstext', $contest?->restrictionstext) }}</textarea>
<x-input-error class="mt-2" :messages="$errors->get('restrictionstext')" />
</div>
</div>
</fieldset>
<div class="col-span-2">
<x-input-label for="partners" :value="__('Partners or sponsors')" />
<div class="text-sm">{{ __('One Partner per line or separated by semicolon. Partner name in plain text or format link using brackets [Partner name](URL).') }}</div>
<textarea
placeholder="{{ __('Enter Partners or keep empty.') }}"
x-data="{ resize() { $el.style.height = '2rem'; $el.style.height = 'calc(' + $el.scrollHeight + 'px + 1em)'; }}"
x-init="$nextTick(resize)" x-on:input="resize" x-on:focus="resize" id="partners" name="partners"
class="text-sm mt-1 border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-indigo-500 dark:focus:ring-indigo-600 rounded-md shadow-sm w-full">{{ old('partners', $contest?->partners) }}</textarea>
<x-input-error class="mt-2" :messages="$errors->get('partners')" />
</div>
<div class="col-span-1 sm:col-span-1 text-sm">{{ __('Contest publication status') }}</div>
<div class="col-span-2 sm:col-span-1 space-x-2 text-center"
x-data="{ published: '{{ old('published', !is_null($contest) ? $contest->published : '0') }}' }">
@foreach (\App\Enums\ContestPublicationStatusEnum::cases() as $status)
<div class="inline">
<x-text-input type="radio" x-model="published" id="published-{{$status->value}}" name="published" :value="$status->value"/>
<x-input-label class="!inline ml-1" for="published-{{$status->value}}" :value="__('contest.' . $status->name)" />
</div>
@endforeach
<x-input-error class="block mt-2" :messages="$errors->get('published')" />
</div>
<div class="flex items-center gap-4 justify-end"><x-primary-button class="mr-4">{{ __('Save') }}</x-primary-button></div>
</form>
</section>
</x-app-layout>