255 lines
12 KiB
PHP
255 lines
12 KiB
PHP
@extends('layouts.master')
|
|
@section('page-css')
|
|
<link href="https://cdn.jsdelivr.net/npm/summernote@0.9.0/dist/summernote.min.css" rel="stylesheet">
|
|
<link rel="stylesheet" href="{{asset('assets/css/formplugins/dropzone/dropzone.css')}}">
|
|
@endsection
|
|
@section('breadcrumbs')
|
|
<ol class="breadcrumb page-breadcrumb">
|
|
@foreach($breadcrumbs as $dataBread)
|
|
<li class="breadcrumb-item {{@$dataBread['active'] == true ? 'active' : ''}}">
|
|
@if(@$dataBread['url'])
|
|
<a href="{{@$dataBread['url']}}">{{$dataBread['name']}}</a>
|
|
@else
|
|
{{$dataBread['name']}}
|
|
@endif
|
|
</li>
|
|
@endforeach
|
|
</ol>
|
|
@endsection
|
|
@section('content')
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<i class="fal fa-align-justify"></i> {{$title}}
|
|
</div>
|
|
<form action="{{route($route.'.store')}}" method="POST" enctype="multipart/form-data" id="form">
|
|
{{csrf_field()}}
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<input type="hidden" name="secure_id" value="{{@$keyId}}">
|
|
</div>
|
|
|
|
<div class="col-12 mb-3">
|
|
<div class="form-group">
|
|
<label class="col-xl-12 form-label" for="fname">Judul</label>
|
|
<div class="col-12 pr-1">
|
|
<input type="text" value="{{@$item->judul ? @$item->judul : old('judul')}}" name="judul" class="form-control @error('judul') is-invalid @enderror" placeholder="Masukan Judul" required>
|
|
@error('judul')
|
|
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 mb-3">
|
|
<div class="form-group">
|
|
<label class="col-xl-12 form-label" for="fname">Jenis Kegiatan</label>
|
|
<div class="col-12 pr-1">
|
|
<select required class="form-control @error('kategori') is-invalid @enderror" name="kategori" id="">
|
|
<option value="">-- PILIH JENIS KEGIATAN --</option>
|
|
<option {{ @$item->kategori == 'Kota' ? 'selected' : '' }} value="Kota">Kegiatan Kota</option>
|
|
<option {{ @$item->kategori == 'Provinsi' ? 'selected' : '' }} value="Provinsi">Kegiatan Provinsi</option>
|
|
<option {{ @$item->kategori == 'Nasional' ? 'selected' : '' }} value="Nasional">Kegiatan Nasional</option>
|
|
<option {{ @$item->kategori == 'Mandiri' ? 'selected' : '' }} value="Mandiri">Kegiatan Mandiri</option>
|
|
</select>
|
|
@error('kategori')
|
|
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 mb-3">
|
|
<div class="form-group">
|
|
<label class="col-xl-12 form-label" for="fname">Deskripsi</label>
|
|
<div class="col-12 pr-1">
|
|
<textarea name="body" id="summernote" class="form-control @error('body') is-invalid @enderror" cols="30" rows="10" required>{{@$item->body ? @$item->body : old('body')}}</textarea>
|
|
@error('body')
|
|
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 mb-3">
|
|
<div class="form-group">
|
|
<label class="col-xl-12 form-label" for="fname">Image</label>
|
|
<div class="col-12 pr-1">
|
|
{{-- <input type="file" accept=".png,.jpg,.jpeg" name="image" class="form-control @error('image') is-invalid @enderror"> --}}
|
|
<div style="border: 2px dashed #0087F7; padding: 20px;" class="dropzone" id="my-dropzone">
|
|
<div class="dz-message">
|
|
Drop PDF files here or click to upload
|
|
</div>
|
|
</div>
|
|
<div id="uploaded-files" style="margin-top: 20px; display:none;">
|
|
<ul id="file-list">
|
|
</ul>
|
|
</div>
|
|
@error('image')
|
|
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@if(@$item->image)
|
|
<?php
|
|
$image = json_decode($item->image);
|
|
?>
|
|
<div class="col-12 mb-3">
|
|
<div class="form-group">
|
|
<div class="col-12 pr-1">
|
|
<div class="row mb-2">
|
|
@foreach($image as $img)
|
|
<div class="col-3">
|
|
<img src="{{ asset($img) }}" alt="" class="img-fluid">
|
|
<a href="#" data-url="{{ $img }}" data-href="{{ route($route.'.image.delete',encode_id($item->KegiatanId)) }}" class="btn btn-danger btnDeleteImage mt-1 btn-block">Hapus</a>
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
</div>
|
|
</div>
|
|
<div class="card-footer">
|
|
<div class="row">
|
|
<div class="col-md-12 text-right">
|
|
<a href="{{route($route.'.index')}}" class="btn btn-danger"><i class="fal fa-times"></i> Batal</a>
|
|
<button type="submit" class="btn btn-success"><i class="fal fa-save"></i> Simpan</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|
|
@section('page-js')
|
|
<!-- include summernote css/js -->
|
|
<script src="https://cdn.jsdelivr.net/npm/summernote@0.9.0/dist/summernote.min.js"></script>
|
|
<script type="text/javascript" src="{{asset('assets/js/formplugins/dropzone/dropzone.js')}}"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() {
|
|
$('#summernote').summernote();
|
|
});
|
|
$('.btnDeleteImage').on('click',function(){
|
|
var base_url = $(this).attr('data-href');
|
|
var url = $(this).attr('data-url');
|
|
swal({
|
|
title: "Hapus Data!",
|
|
text: "Apa anda yakin ingin menghapus data ini ?",
|
|
type: "warning",
|
|
showCancelButton: true,
|
|
confirmButtonColor: "#DD6B55",
|
|
confirmButtonText: "Ya Hapus Sekarang",
|
|
cancelButtonText: "Tidak",
|
|
closeOnConfirm: true,
|
|
closeOnCancel: true
|
|
},
|
|
function(isConfirm) {
|
|
if(isConfirm){
|
|
|
|
request = $.ajax({
|
|
url: base_url,
|
|
xhrFields: {
|
|
withCredentials: true
|
|
},
|
|
headers: {
|
|
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
|
|
'X-Requested-With': 'XMLHttpRequest'
|
|
},
|
|
data:{
|
|
url:url
|
|
},
|
|
type: "POST",
|
|
});
|
|
|
|
// Callback handler that will be called on success
|
|
request.done(function(response, textStatus, jqXHR){
|
|
console.log(response);
|
|
toastr.success("Berhasil Menhapus Data", 'Berhasil!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
|
|
setInterval(window.location.reload(), 5000);
|
|
});
|
|
|
|
// Callback handler that will be called on failure
|
|
request.fail(function (jqXHR, textStatus, errorThrown){
|
|
toastr.error(
|
|
"Gagal "+textStatus, errorThrown
|
|
);
|
|
});
|
|
}
|
|
});
|
|
return false;
|
|
});
|
|
$(document).ready(function() {
|
|
$('.numberInput').on('input', function() {
|
|
this.value = this.value.replace(/[^0-9]/g, ''); // Hanya angka 0-9
|
|
});
|
|
$('#togglePassword').on('click', function() {
|
|
let passwordField = $('#password');
|
|
let icon = $(this).find('i');
|
|
|
|
// Cek apakah input saat ini bertipe password
|
|
if (passwordField.attr('type') === 'password') {
|
|
passwordField.attr('type', 'text'); // Ubah ke teks
|
|
icon.removeClass('fa-eye').addClass('fa-eye-slash'); // Ganti ikon
|
|
} else {
|
|
passwordField.attr('type', 'password'); // Ubah ke password
|
|
icon.removeClass('fa-eye-slash').addClass('fa-eye'); // Kembalikan ikon
|
|
}
|
|
});
|
|
});
|
|
|
|
const myDropzone = new Dropzone(".dropzone", {
|
|
url: "{{ url('uploadTempImage') }}", // URL ke controller kamu
|
|
method: "POST",
|
|
xhrFields: {
|
|
withCredentials: true
|
|
},
|
|
headers: {
|
|
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
|
|
'X-Requested-With': 'XMLHttpRequest'
|
|
},
|
|
// maxFilesize: 1, // dalam MB
|
|
acceptedFiles: ".png,.jpg,.jpeg",
|
|
paramName: "file", // nama input file yang dikirim ke controller
|
|
params: {
|
|
_token: document.querySelector('meta[name="csrf-token"]').getAttribute('content')
|
|
},
|
|
uploadMultiple: true,
|
|
init: function() {
|
|
this.on("successmultiple", function(files, response) {
|
|
console.log('Upload success multiple:', response);
|
|
|
|
const fileList = document.getElementById('file-list');
|
|
|
|
response.files.forEach(function(fileInfo) {
|
|
const li = document.createElement('li');
|
|
li.innerHTML = `<a>${fileInfo.filename}</a>`;
|
|
fileList.appendChild(li);
|
|
|
|
// Tambahkan ke hidden input kalau perlu
|
|
const hiddenInput = document.createElement('input');
|
|
hiddenInput.type = 'hidden';
|
|
hiddenInput.name = 'input_upload_files[]';
|
|
hiddenInput.class = 'removeFormKriteria';
|
|
hiddenInput.value = fileInfo.filename;
|
|
var elem = '<input type="hidden" name="input_upload_files[]" value="'+fileInfo.filename+'" class="removeFormKriteria uploadedFiles is-required">';
|
|
$('#form').append(elem);
|
|
});
|
|
});
|
|
|
|
this.on("error", function(file, response) {
|
|
console.error('Upload error:', response);
|
|
toastr.error(response, 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
|
|
this.removeFile(file);
|
|
});
|
|
}
|
|
});
|
|
</script>
|
|
@endsection
|