Created
October 25, 2017 13:56
-
-
Save gdevdeiv/0cb95e4800a162d1b03e1f00ca71bf7d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@extends('voyager::master') | |
@section('css') | |
<meta name="csrf-token" content="{{ csrf_token() }}"> | |
@stop | |
@section('page_title', __('voyager.generic.'.(isset($dataTypeContent->id) ? 'edit' : 'add')).' '.$dataType->display_name_singular) | |
@section('page_header') | |
<h1 class="page-title"> | |
<i class="{{ $dataType->icon }}"></i> | |
{{ __('voyager.generic.'.(isset($dataTypeContent->id) ? 'edit' : 'add')).' '.$dataType->display_name_singular }} | |
</h1> | |
@include('voyager::multilingual.language-selector') | |
@stop | |
@section('content') | |
<div class="page-content edit-add container-fluid" id="editAdd"> | |
<div class="row"> | |
<div class="col-md-12"> | |
<div class="panel panel-bordered"> | |
<form role="form" | |
class="form-edit-add" | |
action="@if(isset($dataTypeContent->id)){{ route('voyager.'.$dataType->slug.'.update', $dataTypeContent->id) }}@else{{ route('voyager.'.$dataType->slug.'.store') }}@endif" | |
method="POST" | |
enctype="multipart/form-data" | |
onsubmit="return submitForm(this)"> | |
@if(isset($dataTypeContent->id)) | |
{{ method_field("PUT") }} | |
@endif | |
{{ csrf_field() }} | |
<div class="panel-body"> | |
@if (count($errors) > 0) | |
<div class="alert alert-danger"> | |
<ul> | |
@foreach ($errors->all() as $error) | |
<li>{{ $error }}</li> | |
@endforeach | |
</ul> | |
</div> | |
@endif | |
@php | |
$dataTypeRows = $dataType->{(isset($dataTypeContent->id) ? 'editRows' : 'addRows' )}; | |
$groups = []; | |
@endphp | |
@foreach($dataTypeRows as $row) | |
@php | |
$options = json_decode($row->details); | |
if (isset($options->group)) { | |
$groupOptions = $options->group; | |
if (is_numeric($groupOptions)) | |
{ | |
$groups[$groupOptions]['rows'][] = $row; | |
} | |
else if (is_object($groupOptions)) | |
{ | |
$groups[$groupOptions->id] = [ | |
'id' => isset($groupOptions->id) ? $groupOptions->id : NULL, | |
'title' => isset($groupOptions->title) ? $groupOptions->title : NULL, | |
'icon' => isset($groupOptions->icon) ? $groupOptions->icon : NULL, | |
'rows' => [ | |
$row | |
] | |
]; | |
} | |
} | |
@endphp | |
@endforeach | |
@foreach($groups as $group) | |
<div class="panel panel-primary panel-bordered"> | |
<div class="panel-heading"> | |
<h3 class="panel-title panel-icon"> | |
<i class="{{ $group['icon'] }}"></i> {{ $group['title'] }} | |
</h3> | |
<div class="panel-actions"> | |
<a class="panel-action voyager-resize-full" data-toggle="panel-fullscreen" aria-hidden="true"></a> | |
<a class="panel-action voyager-angle-up" data-toggle="panel-collapse" aria-hidden="true"></a> | |
</div> | |
</div> | |
<div class="panel-body"> | |
@foreach($group['rows'] as $row) | |
@php | |
$options = json_decode($row->details); | |
$display_options = isset($options->display) ? $options->display : NULL; | |
@endphp | |
@if ($options && isset($options->formfields_custom)) | |
@include('voyager::formfields.custom.' . $options->formfields_custom) | |
@else | |
<div class="form-group @if($row->type == 'hidden') hidden @endif @if(isset($display_options->width)){{ 'col-md-' . $display_options->width }}@else{{ '' }}@endif" @if(isset($display_options->id)){{ "id=$display_options->id" }}@endif> | |
{{ $row->slugify }} | |
@if($row->type != 'relationship') | |
<label for="name">{{ $row->display_name }}</label> | |
@endif | |
@include('voyager::multilingual.input-hidden-bread-edit-add') | |
@if($row->type == 'relationship') | |
@include('voyager::formfields.relationship') | |
@else | |
{!! app('voyager')->formField($row, $dataType, $dataTypeContent) !!} | |
@endif | |
@foreach (app('voyager')->afterFormFields($row, $dataType, $dataTypeContent) as $after) | |
{!! $after->handle($row, $dataType, $dataTypeContent) !!} | |
@endforeach | |
</div> | |
@endif | |
@endforeach | |
</div> | |
</div> | |
@endforeach | |
</div> | |
<div class="panel-footer"> | |
<button type="submit" class="btn btn-primary save">{{ __('voyager.generic.save') }}</button> | |
</div> | |
</form> | |
<iframe id="form_target" name="form_target" style="display:none"></iframe> | |
<form id="my_form" action="{{ route('voyager.upload') }}" target="form_target" method="post" | |
enctype="multipart/form-data" style="width:0;height:0;overflow:hidden"> | |
<input name="image" id="upload_file" type="file" | |
onchange="$('#my_form').submit();this.value='';"> | |
<input type="hidden" name="type_slug" id="type_slug" value="{{ $dataType->slug }}"> | |
{{ csrf_field() }} | |
</form> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="modal fade modal-danger" id="confirm_delete_modal"> | |
<div class="modal-dialog"> | |
<div class="modal-content"> | |
<div class="modal-header"> | |
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> | |
<h4 class="modal-title"><i class="voyager-warning"></i> {{ __('voyager.generic.are_you_sure') }}</h4> | |
</div> | |
<div class="modal-body"> | |
<h4>{{ __('voyager.generic.are_you_sure_delete') }} '<span class="confirm_delete_name"></span>'</h4> | |
</div> | |
<div class="modal-footer"> | |
<button type="button" class="btn btn-default" data-dismiss="modal">{{ __('voyager.generic.delete') }}</button> | |
<button type="button" class="btn btn-danger" id="confirm_delete">{{ __('voyager.generic.delete_confirm') }}</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
@stop | |
@section('javascript') | |
<script> | |
var params = {}; | |
var $image; | |
$('document').ready(function () { | |
$('.toggleswitch').bootstrapToggle(); | |
$('.form-group input[type=date]').each(function (idx, elt) { | |
if (elt.type != 'date' || elt.hasAttribute('data-datepicker')) { | |
elt.type = 'text'; | |
$(elt).datetimepicker($(elt).data('datepicker')); | |
} | |
}); | |
@if ($isModelTranslatable) | |
$('.side-body').multilingual({"editing": true}); | |
@endif | |
$('.side-body input[data-slug-origin]').each(function (i, el) { | |
$(el).slugify(); | |
}); | |
$('.form-group').on('click', '.remove-multi-image', function (e) { | |
$image = $(this).siblings('img'); | |
params = { | |
slug: '{{ $dataType->slug }}', | |
image: $image.data('image'), | |
id: $image.data('id'), | |
field: $image.parent().data('field-name'), | |
_token: '{{ csrf_token() }}' | |
}; | |
$('.confirm_delete_name').text($image.data('image')); | |
$('#confirm_delete_modal').modal('show'); | |
}); | |
$('#confirm_delete').on('click', function () { | |
$.post('{{ route('voyager.media.remove') }}', params, function (response) { | |
if (response && response.data && response.data.status && response.data.status == 200) { | |
toastr.success(response.data.message); | |
$image.parent().fadeOut(300, function () { | |
$(this).remove(); | |
}); | |
} else { | |
toastr.error("Error removing image."); | |
} | |
}); | |
$('#confirm_delete_modal').modal('hide'); | |
}); | |
$('[data-toggle="tooltip"]').tooltip(); | |
}); | |
function submitForm(form) { | |
for (var i = 0; i < form.length; i++) { | |
var $el = $(form[i]); | |
var $parent = $el.parents('.relation-forms'); | |
var $panel = $el.closest('.panel'); | |
var $id = $panel.attr('data-id'); | |
if ($parent.length > 0 && $el.attr('data-prepared') != 'true') { | |
$el.attr('name', $parent.attr('data-model') + '[' + $id + '][' + $el.attr('name') + ']'); | |
$el.attr('data-prepared', 'true'); | |
} | |
} | |
return true; | |
} | |
</script> | |
@stop |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment