Skip to content

Instantly share code, notes, and snippets.

@gdevdeiv
Created October 25, 2017 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gdevdeiv/0cb95e4800a162d1b03e1f00ca71bf7d to your computer and use it in GitHub Desktop.
Save gdevdeiv/0cb95e4800a162d1b03e1f00ca71bf7d to your computer and use it in GitHub Desktop.
@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">&times;</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