mein-sterntours/resources/views/cms/sidebar/detail.blade.php

328 lines
No EOL
18 KiB
PHP
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@extends('layouts.layout-2')
@section('content')
{!! Form::open(['url' => route('cms_sidebar_detail', [$id]), 'class' => 'form-horizontal']) !!}
<h4 class="font-weight-bold py-3 mb-1">
Sidebar Widget @if($id == "new") <span class="text-primary">anlegen</span> @else {{"(ID: ".$id.")"}} verwalten @endif
<div class="float-right">
<button type="submit" name="action" value="saveAll" class="btn btn-submit btn-sm">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('cms_sidebar')}}" class="btn btn-default btn-sm">{{ __('back') }}</a>
</div>
</h4>
<div class="clearfix"></div>
<input type="hidden" name="id" id="id" value="{{$id}}">
<!-- draft -->
<div class="card mb-2">
<div class="card-body">
<div class="form-row">
<div class="form-group col-sm-8">
<label class="form-label" for="widget_title">{{ __('Name') }}*</label>
{{ Form::text('name', $widget->name, array('placeholder'=>__('Name'), 'class'=>'form-control', 'id'=>'widget_name', 'required'=>true)) }}
</div>
<div class="form-group col-sm-4">
<label class="custom-control custom-checkbox float-right">
{!! Form::checkbox('active', 1, $widget->active, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">{{__('aktiv')}}</span>
</label>
<label for="widget_pos" class="form-label">{{__('Position')}}</label>
{{ Form::text('pos', $widget->pos, array('placeholder'=>__('pos'), 'class'=>'form-control', 'id'=>'widget_pos')) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="component">{{ __('Komponente') }}</label>
<select class="selectpicker" data-style="btn-default" name="component" id="component">
{!! \App\Models\SidebarWidget::getComponentsOptions($widget->component) !!}
</select>
</div>
</div>
<div class="form-row" data-config-panel="html" style="{{ $widget->isStructuredConfigComponent() ? 'display:none;' : '' }}">
<div class="form-group col-sm-12">
<label class="form-label" for="html">{{ __('HTML') }}</label>
{{ Form::textarea('html', $widget->html, ['class' => 'form-control']) }}
<small class="form-text text-muted">
Wird nur genutzt, wenn keine feste Komponente ausgewählt ist oder die Komponente eigene HTML-Inhalte erwartet.
</small>
</div>
</div>
<div data-config-panel="homepage-trips" style="{{ $widget->isHomepageTripsComponent() ? '' : 'display:none;' }}">
<div class="alert alert-info">
Diese Auswahl steuert die Startseiten-Bereiche „Aktuell planbare Reisen" und „Beliebte Kulturreisen".
Die Reihenfolge entspricht der Reihenfolge der ausgewählten Einträge.
</div>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="homepage_page_picker">{{ __('Reise hinzufügen') }}</label>
<div class="input-group">
<select class="selectpicker form-control" data-style="btn-default" name="homepage_page_picker" id="homepage_page_picker" data-live-search="true">
<option value="">{{ __('Bitte Reise wählen') }}</option>
{!! \App\Models\SidebarWidget::getHomepageTravelPageOptions($widget->getHomepagePageIds()) !!}
</select>
<span class="input-group-append">
<button class="btn btn-primary" type="button" id="homepage_add_page">{{ __('hinzufügen') }}</button>
</span>
</div>
<small class="form-text text-muted">
Wenn keine Reisen hinzugefügt sind, nutzt die DEV-Startseite die automatische Prioritätslogik.
</small>
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label">{{ __('Ausgewählte Reisen') }}</label>
<div class="list-group" id="homepage_selected_pages">
@foreach($widget->getHomepageSelectedTravelPageItems() as $selectedPage)
<div class="list-group-item d-flex align-items-center justify-content-between" data-page-id="{{ $selectedPage['id'] }}">
<input type="hidden" name="homepage_page_ids[]" value="{{ $selectedPage['id'] }}">
<span class="mr-3">
<span class="badge badge-secondary mr-2" data-page-number>{{ $loop->iteration }}</span>
{{ $selectedPage['label'] }}
</span>
<span class="d-flex align-items-center">
<label class="custom-control custom-checkbox mb-0 mr-3">
<input type="checkbox" class="custom-control-input" name="homepage_new_page_ids[]" value="{{ $selectedPage['id'] }}" {{ $selectedPage['is_new'] ? 'checked' : '' }}>
<span class="custom-control-label">
<span class="badge badge-warning">{{ __('Neu') }}</span>
</span>
</label>
<span class="btn-group btn-group-sm mr-2" role="group" aria-label="{{ __('Reihenfolge ändern') }}">
<button class="btn btn-outline-secondary" type="button" data-move-page="up">{{ __('hoch') }}</button>
<button class="btn btn-outline-secondary" type="button" data-move-page="down">{{ __('runter') }}</button>
</span>
<button class="btn btn-sm btn-outline-danger" type="button" data-remove-page>{{ __('entfernen') }}</button>
</span>
</div>
@endforeach
</div>
</div>
</div>
</div>
<div data-config-panel="news" style="{{ $widget->isNewsComponent() ? '' : 'display:none;' }}">
<div class="alert alert-info">
Die Reisenews werden weiterhin automatisch aus dem News-Bereich geladen. Hier wird nur gesteuert,
wie viele Einträge in der Sidebar erscheinen.
</div>
<div class="form-row">
<div class="form-group col-sm-3">
<label class="form-label" for="homepage_news_limit">{{ __('Anzahl Reisenews') }}</label>
<input type="number" min="1" max="12" class="form-control" name="homepage_news_limit" id="homepage_news_limit" value="{{ $widget->getHomepageNewsLimit() }}">
</div>
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="show_at">{{ __('Sichtbar') }}</label>
<select class="selectpicker" data-style="btn-default" name="show_at[]" multiple>
{!! \App\Models\SidebarWidget::getShowsOptions($widget->show_at) !!}
</select>
</div>
</div>
</div>
</div>
<div class="text-left mt-3">
<button type="submit" name="action" value="saveAll" class="btn btn-submit">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('cms_sidebar')}}" class="btn btn-default">{{ __('back') }}</a>
</div>
{!! Form::close() !!}
<script>
$(function () {
var componentSelect = $('#component');
var panels = $('[data-config-panel]');
var homepageTripComponents = ['homepagePlannableTrips', 'homepagePopularTrips'];
var pagePicker = $('#homepage_page_picker');
var selectedPages = $('#homepage_selected_pages');
function updateConfigPanels() {
var component = componentSelect.val();
panels.hide();
if (homepageTripComponents.indexOf(component) !== -1) {
$('[data-config-panel="homepage-trips"]').show();
} else if (component === 'newsSidebarWidget') {
$('[data-config-panel="news"]').show();
} else {
$('[data-config-panel="html"]').show();
}
$('.selectpicker').selectpicker('refresh');
}
function addSelectedPage(pageId, label, isNew) {
if (!pageId || selectedPages.find('[data-page-id="' + pageId + '"]').length) {
return;
}
var item = $('<div class="list-group-item d-flex align-items-center justify-content-between"></div>');
var title = $('<span class="mr-3"></span>');
var controls = $('<span class="d-flex align-items-center"></span>');
var checkboxId = 'homepage_new_page_' + pageId;
var newLabel = $('<label class="custom-control custom-checkbox mb-0 mr-3"></label>');
var newCheckbox = $('<input type="checkbox" class="custom-control-input" name="homepage_new_page_ids[]">')
.attr('id', checkboxId)
.val(pageId);
var moveButtons = $('<span class="btn-group btn-group-sm mr-2" role="group" aria-label="{{ __('Reihenfolge ändern') }}"></span>');
var removeButton = $('<button class="btn btn-sm btn-outline-danger" type="button" data-remove-page>{{ __('entfernen') }}</button>');
if (isNew) {
newCheckbox.prop('checked', true);
}
item.attr('data-page-id', pageId);
item.append($('<input type="hidden" name="homepage_page_ids[]">').val(pageId));
title.append($('<span class="badge badge-secondary mr-2" data-page-number></span>'));
title.append(document.createTextNode(label));
newLabel.append(newCheckbox);
newLabel.append($('<span class="custom-control-label"><span class="badge badge-warning">{{ __('Neu') }}</span></span>'));
controls.append(newLabel);
moveButtons.append($('<button class="btn btn-outline-secondary" type="button" data-move-page="up">{{ __('hoch') }}</button>'));
moveButtons.append($('<button class="btn btn-outline-secondary" type="button" data-move-page="down">{{ __('runter') }}</button>'));
controls.append(moveButtons);
controls.append(removeButton);
item.append(title);
item.append(controls);
selectedPages.append(item);
updateSelectedPageNumbers();
}
function updateSelectedPageNumbers() {
selectedPages.find('[data-page-id]').each(function (index) {
$(this).find('[data-page-number]').text(index + 1);
});
}
componentSelect.on('changed.bs.select change', updateConfigPanels);
$('#homepage_add_page').on('click', function () {
var selectedOption = pagePicker.find('option:selected');
addSelectedPage(selectedOption.val(), selectedOption.data('label') || selectedOption.text(), false);
});
selectedPages.on('click', '[data-remove-page]', function () {
$(this).closest('[data-page-id]').remove();
updateSelectedPageNumbers();
});
selectedPages.on('click', '[data-move-page]', function () {
var item = $(this).closest('[data-page-id]');
if ($(this).data('move-page') === 'up') {
item.prev('[data-page-id]').before(item);
} else {
item.next('[data-page-id]').after(item);
}
updateSelectedPageNumbers();
});
updateSelectedPageNumbers();
updateConfigPanels();
});
</script>
{{--
<!-- Modal template -->
<div class="modal fade" id="modals-class">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('travel_program_class_update') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<input type="hidden" class="form-control" name="program_id" value="{{$widget->id}}">
<div class="modal-header">
<h5 class="modal-title">Programm Katagorie/Klassen <span class="font-weight-light">anlegen/bearbeiten</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label class="custom-control custom-checkbox float-right">
<input type="checkbox" class="custom-control-input" name="standard" checked>
<span class="custom-control-label">{{__('Standard')}}</span>
</label>
<label for="name" class="form-label">Name*</label>
<input type="text" class="form-control" name="name" placeholder="{{__('Description')}}" required>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="description" class="form-label">Beschreibung</label>
<input type="text" class="form-control" name="description" placeholder="{{__('Description')}}">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-draft">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('travel_program_draft_update') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<input type="hidden" class="form-control" name="travel_program_id" value="{{$widget->id}}">
<div class="modal-header">
<h5 class="modal-title">Vorlage Reiseprogramm <span class="font-weight-light">zuordnen</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="draft_id" class="form-label">{{__('Vorlage')}}</label>
<select class="selectpicker" data-style="btn-default" name="draft_id" data-live-search="true" required>
{!! HTMLHelper::getDraftOptions() !!}
</select>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<script>
$( document ).ready(function() {
$('#modals-class').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='name']").val(button.data('name'));
$(this).find(".modal-body input[name='description']").val(button.data('description'));
$(this).find(".modal-body input[name='standard']").prop( "checked", button.data('standard'));
});
$('#modals-draft').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body select[name='draft_id']").val(button.data('draft_id'));
$(this).find(".modal-body select[name='travel_class_id']").val(button.data('travel_class_id'));
$(this).find(".modal-body select[name='weekdays[]']").val(button.data('weekdays'));
$('.selectpicker').selectpicker('refresh');
});
});
</script>
--}}
@endsection