353 lines
19 KiB
PHP
353 lines
19 KiB
PHP
@extends('backend.admin-master')
|
||
@section('site-title')
|
||
{{__('Image Gallery')}}
|
||
@endsection
|
||
@section('style')
|
||
<link rel="stylesheet" href="{{asset('assets/backend/css/dropzone.css')}}">
|
||
<link rel="stylesheet" href="{{asset('assets/backend/css/media-uploader.css')}}">
|
||
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.css">
|
||
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.18/css/dataTables.bootstrap4.min.css">
|
||
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/responsive/2.2.3/css/responsive.bootstrap.min.css">
|
||
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/responsive/2.2.3/css/responsive.jqueryui.min.css">
|
||
<style>
|
||
.dataTables_wrapper .dataTables_paginate .paginate_button{
|
||
padding: 0 !important;
|
||
}
|
||
div.dataTables_wrapper div.dataTables_length select {
|
||
width: 60px;
|
||
display: inline-block;
|
||
}
|
||
</style>
|
||
@endsection
|
||
@section('content')
|
||
<div class="col-lg-12 col-ml-12 padding-bottom-30">
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<div class="margin-top-40"></div>
|
||
@include('backend.partials.message')
|
||
@if($errors->any())
|
||
<div class="alert alert-danger">
|
||
<ul>
|
||
@foreach($errors->all() as $error)
|
||
<li>{{$error}}</li>
|
||
@endforeach
|
||
</ul>
|
||
</div>
|
||
@endif
|
||
</div>
|
||
|
||
<div class="col-lg-6 mt-5">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<h4 class="header-title">{{__('Image Gallery')}}</h4>
|
||
<div class="bulk-delete-wrapper">
|
||
<div class="select-box-wrap">
|
||
<select name="bulk_option" id="bulk_option">
|
||
<option value="">{{{__('Bulk Action')}}}</option>
|
||
<option value="delete">{{{__('Delete')}}}</option>
|
||
</select>
|
||
<button class="btn btn-primary btn-sm" id="bulk_delete_btn">{{__('Apply')}}</button>
|
||
</div>
|
||
</div>
|
||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
||
@php $a=0; @endphp
|
||
@foreach($all_gallery_images as $key => $image)
|
||
<li class="nav-item">
|
||
<a class="nav-link @if($a == 0) active @endif" data-toggle="tab" href="#slider_tab_{{$key}}" role="tab" aria-controls="home" aria-selected="true">{{get_language_by_slug($key)}}</a>
|
||
</li>
|
||
@php $a++; @endphp
|
||
@endforeach
|
||
</ul>
|
||
<div class="tab-content margin-top-40" >
|
||
@php $b=0; @endphp
|
||
@foreach($all_gallery_images as $key => $galleries)
|
||
<div class="tab-pane fade @if($b == 0) show active @endif" id="slider_tab_{{$key}}" role="tabpanel" >
|
||
<div class="table-wrap table-responsive">
|
||
<table class="table table-default" id="all_blog_table">
|
||
<thead>
|
||
<th class="no-sort">
|
||
<div class="mark-all-checkbox">
|
||
<input type="checkbox" class="all-checkbox">
|
||
</div>
|
||
</th>
|
||
<th>{{__('ID')}}</th>
|
||
<th>{{__('Title')}}</th>
|
||
<th>{{__('Image')}}</th>
|
||
<th>{{__('Category')}}</th>
|
||
<th>{{__('Action')}}</th>
|
||
</thead>
|
||
<tbody>
|
||
@foreach($galleries as $data)
|
||
<tr>
|
||
<td>
|
||
<div class="bulk-checkbox-wrapper">
|
||
<input type="checkbox" class="bulk-checkbox" name="bulk_delete[]" value="{{$data->id}}">
|
||
</div>
|
||
</td>
|
||
<td>{{$data->id}}</td>
|
||
<td>{{$data->title}}</td>
|
||
<td> @php
|
||
$testimonial_img = get_attachment_image_by_id($data->image,null,true);
|
||
@endphp
|
||
@if (!empty($testimonial_img))
|
||
<div class="attachment-preview">
|
||
<div class="thumbnail">
|
||
<div class="centered">
|
||
<img class="avatar user-thumb" src="{{$testimonial_img['img_url']}}" alt="">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
@php $img_url = $testimonial_img['img_url']; @endphp
|
||
@endif
|
||
</td>
|
||
<td>{{get_image_category_name_by_id($data->cat_id)}}</td>
|
||
<td>
|
||
<x-delete-popover :url="route('admin.gallery.delete',$data->id)"/>
|
||
|
||
<a href="#"
|
||
data-toggle="modal"
|
||
data-target="#testimonial_item_edit_modal"
|
||
class="btn btn-xs btn-primary btn-xs mb-3 mr-1 testimonial_edit_btn"
|
||
data-id="{{$data->id}}"
|
||
data-title="{{$data->title}}"
|
||
data-imageid="{{$data->image}}"
|
||
data-image="{{$img_url}}"
|
||
data-lang="{{$data->lang}}"
|
||
data-catid="{{$data->cat_id}}"
|
||
>
|
||
<i class="ti-pencil"></i>
|
||
</a>
|
||
</td>
|
||
</tr>
|
||
@endforeach
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
@php $b++; @endphp
|
||
@endforeach
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-lg-6 mt-5">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<h4 class="header-title">{{__('Add New Image')}}</h4>
|
||
<form action="{{route('admin.gallery.new')}}" method="post" enctype="multipart/form-data">
|
||
@csrf
|
||
<div class="form-group">
|
||
<label for="lang">{{__('Languages')}}</label>
|
||
<select name="lang" class="form-control">
|
||
@foreach($all_languages as $lang)
|
||
<option value="{{$lang->slug}}" @if($lang->slug == get_default_language()) selected @endif>{{$lang->name}}</option>
|
||
@endforeach
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="title">{{__('Title')}}</label>
|
||
<input type="text" name="title" id="title" class="form-control">
|
||
</div>
|
||
<div class="form-group">
|
||
<label for="cat_id">{{__('Category')}}</label>
|
||
<select name="cat_id" class="form-control">
|
||
@foreach($all_categories as $cat)
|
||
<option value="{{$cat->id}}" >{{$cat->title}}</option>
|
||
@endforeach
|
||
</select>
|
||
</div>
|
||
<div class="form-group">
|
||
<label for="image">{{__('Image')}}</label>
|
||
<div class="media-upload-btn-wrapper">
|
||
<div class="img-wrap"></div>
|
||
<input type="hidden" name="image">
|
||
<button type="button" class="btn btn-info media_upload_form_btn" data-btntitle="Select Image" data-modaltitle="Upload Image" data-toggle="modal" data-target="#media_upload_modal">
|
||
{{__('Upload Image')}}
|
||
</button>
|
||
</div>
|
||
<small>{{__('1000x1000 px image recommended')}}</small>
|
||
</div>
|
||
<button type="submit" class="btn btn-primary mt-4 pr-4 pl-4">{{__('Add New Image')}}</button>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="modal fade" id="testimonial_item_edit_modal" aria-hidden="true">
|
||
<div class="modal-dialog">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h5 class="modal-title">{{__('Edit Testimonial Item')}}</h5>
|
||
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
||
</div>
|
||
<form action="{{route('admin.gallery.update')}}" id="testimonial_edit_modal_form" method="post" enctype="multipart/form-data">
|
||
<div class="modal-body">
|
||
@csrf
|
||
<input type="hidden" name="id" id="gallery_id" value="">
|
||
<div class="form-group">
|
||
<label for="lang">{{__('Languages')}}</label>
|
||
<select name="lang" class="form-control">
|
||
@foreach($all_languages as $lang)
|
||
<option value="{{$lang->slug}}" >{{$lang->name}}</option>
|
||
@endforeach
|
||
</select>
|
||
</div>
|
||
<div class="form-group">
|
||
<label for="title">{{__('Title')}}</label>
|
||
<input type="text" name="title" id="edit_title" class="form-control">
|
||
</div>
|
||
<div class="form-group">
|
||
<label for="cat_id">{{__('Category')}}</label>
|
||
<select name="cat_id" class="form-control">
|
||
@foreach($all_categories as $cat)
|
||
<option value="{{$cat->id}}" >{{$cat->title}}</option>
|
||
@endforeach
|
||
</select>
|
||
</div>
|
||
<div class="form-group">
|
||
<label for="image">{{__('Image')}}</label>
|
||
<div class="media-upload-btn-wrapper">
|
||
<div class="img-wrap"></div>
|
||
<input type="hidden" id="edit_image" name="image" value="">
|
||
<button type="button" class="btn btn-info media_upload_form_btn" data-btntitle="Select Image" data-modaltitle="Upload Image" data-toggle="modal" data-target="#media_upload_modal">
|
||
{{__('Upload Image')}}
|
||
</button>
|
||
</div>
|
||
<small>{{__('1000x1000 px image recommended')}}</small>
|
||
</div>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-secondary" data-dismiss="modal">{{__('Close')}}</button>
|
||
<button type="submit" class="btn btn-primary">{{__('Save Changes')}}</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
@include('backend.partials.media-upload.media-upload-markup')
|
||
@endsection
|
||
@section('script')
|
||
|
||
<script>
|
||
$(document).ready(function () {
|
||
|
||
$(document).on('click','#bulk_delete_btn',function (e) {
|
||
e.preventDefault();
|
||
|
||
var bulkOption = $('#bulk_option').val();
|
||
var allCheckbox = $('.bulk-checkbox:checked');
|
||
var allIds = [];
|
||
allCheckbox.each(function(index,value){
|
||
allIds.push($(this).val());
|
||
});
|
||
if(allIds != '' && bulkOption == 'delete'){
|
||
$(this).text('{{__('Deleting...')}}');
|
||
$.ajax({
|
||
'type' : "POST",
|
||
'url' : "{{route('admin.gallery.bulk.action')}}",
|
||
'data' : {
|
||
_token: "{{csrf_token()}}",
|
||
ids: allIds
|
||
},
|
||
success:function (data) {
|
||
location.reload();
|
||
}
|
||
});
|
||
}
|
||
|
||
});
|
||
|
||
$('.all-checkbox').on('change',function (e) {
|
||
e.preventDefault();
|
||
var value = $('.all-checkbox').is(':checked');
|
||
var allChek = $(this).parent().parent().parent().parent().parent().find('.bulk-checkbox');
|
||
//have write code here fr
|
||
if( value == true){
|
||
allChek.prop('checked',true);
|
||
}else{
|
||
allChek.prop('checked',false);
|
||
}
|
||
});
|
||
|
||
$(document).on('click','.testimonial_edit_btn',function(){
|
||
var el = $(this);
|
||
var id = el.data('id');
|
||
var image = el.data('image');
|
||
var imageid = el.data('imageid');
|
||
var catid = el.data('catid');
|
||
var lang = el.data('lang');
|
||
|
||
var form = $('#testimonial_edit_modal_form');
|
||
form.find('#gallery_id').val(id);
|
||
form.find('#edit_title').val(el.data('title'));
|
||
form.find('select[name="lang"] option[value="'+lang+'"]').attr('selected',true);
|
||
$.ajax({
|
||
url : "{{route('admin.gallery.category.by.lang')}}",
|
||
type: "POST",
|
||
data: {
|
||
_token : "{{csrf_token()}}",
|
||
lang: lang
|
||
},
|
||
success:function (data) {
|
||
form.find('select[name="cat_id"]').html('');
|
||
$.each(data,function (index,value) {
|
||
var selected = value.id == catid ? 'selected' : '';
|
||
form.find('select[name="cat_id"]').append('<option '+selected+' value="'+value.id+'">'+value.title+'</option>');
|
||
})
|
||
}
|
||
});
|
||
form.find('select[name="lang"] option[value="'+lang+'"]').attr('selected',false);
|
||
|
||
if(imageid != ''){
|
||
form.find('.media-upload-btn-wrapper .img-wrap').html('<div class="attachment-preview"><div class="thumbnail"><div class="centered"><img class="avatar user-thumb" src="'+image+'" > </div></div></div>');
|
||
form.find('.media-upload-btn-wrapper input').val(imageid);
|
||
form.find('.media-upload-btn-wrapper .media_upload_form_btn').text('Change Image');
|
||
}
|
||
});
|
||
$(document).on('change','select[name="lang"]',function (e) {
|
||
e.preventDefault();
|
||
var el = $(this);
|
||
var selectedLang = $(this).val();
|
||
$.ajax({
|
||
url : "{{route('admin.gallery.category.by.lang')}}",
|
||
type: "POST",
|
||
data: {
|
||
_token : "{{csrf_token()}}",
|
||
lang: selectedLang
|
||
},
|
||
success:function (data) {
|
||
var galCat = $('select[name="cat_id"]');
|
||
galCat.html('');
|
||
$.each(data,function (index,value) {
|
||
galCat.append('<option value="'+value.id+'">'+value.title+'</option>');
|
||
})
|
||
}
|
||
});
|
||
});
|
||
});
|
||
</script>
|
||
<!-- Start datatable js -->
|
||
<script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
|
||
<script src="//cdn.datatables.net/1.10.18/js/jquery.dataTables.min.js"></script>
|
||
<script src="//cdn.datatables.net/1.10.18/js/dataTables.bootstrap4.min.js"></script>
|
||
<script src="//cdn.datatables.net/responsive/2.2.3/js/dataTables.responsive.min.js"></script>
|
||
<script src="//cdn.datatables.net/responsive/2.2.3/js/responsive.bootstrap.min.js"></script>
|
||
<script>
|
||
$(document).ready(function() {
|
||
$('.table-wrap > table').DataTable( {
|
||
"order": [[ 1, "desc" ]],
|
||
'columnDefs' : [{
|
||
'targets' : 'no-sort',
|
||
'orderable' : false
|
||
}]
|
||
} );
|
||
} );
|
||
</script>
|
||
<script src="{{asset('assets/backend/js/dropzone.js')}}"></script>
|
||
@include('backend.partials.media-upload.media-js')
|
||
@endsection
|