179 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			179 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <div> | ||
|  |     <style> | ||
|  |         .modal-dialog { | ||
|  |             position: relative; | ||
|  |             display: table; | ||
|  |             overflow: auto; | ||
|  |             width: auto; | ||
|  |             min-width: 300px; | ||
|  |         } | ||
|  |         .modal-body { /* Restrict Modal width to 90% */ | ||
|  |             overflow-x: auto !important; | ||
|  |             max-width: 90vw !important; | ||
|  |         } | ||
|  |     </style> | ||
|  | 
 | ||
|  |     <style type="text/css"> | ||
|  |         .jcrop-holder #preview-pane {
 | ||
|  |             display: block; | ||
|  |             position: absolute; | ||
|  |             z-index: 2000; | ||
|  |             top: 10px; | ||
|  |             right: -280px; | ||
|  |             padding: 6px; | ||
|  |             border: 1px rgba(0,0,0,.4) solid; | ||
|  |             background-color: white; | ||
|  | 
 | ||
|  |             -webkit-border-radius: 6px; | ||
|  |             -moz-border-radius: 6px; | ||
|  |             border-radius: 6px; | ||
|  | 
 | ||
|  |             -webkit-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2); | ||
|  |             -moz-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2); | ||
|  |             box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2); | ||
|  |         } | ||
|  | 
 | ||
|  |         /* The Javascript code will set the aspect ratio of the crop | ||
|  |            area based on the size of the thumbnail preview, | ||
|  |            specified here */ | ||
|  |         #preview-pane .preview-container {
 | ||
|  |             width: auto; | ||
|  |             height: 200px !important; | ||
|  |             overflow: hidden; | ||
|  |             opacity: .4; | ||
|  |         } | ||
|  |     </style> | ||
|  | 
 | ||
|  |     <div class="modal fade" id="modaljcrop" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> | ||
|  |         <div class="modal-dialog" role="document"> | ||
|  |             <div class="modal-content"> | ||
|  |                 <div class="modal-header"> | ||
|  |                     <h5 class="modal-title" id="exampleModalLabel">Crop Image</h5> | ||
|  |                     <button type="button" class="close" data-dismiss="modal" aria-label="Close"> | ||
|  |                         <span aria-hidden="true">×</span> | ||
|  |                     </button> | ||
|  |                 </div> | ||
|  |                 <div class="modal-body"> | ||
|  |                     <div class="preview-container"> | ||
|  |                         <img id="cropImage" class="crop" /> | ||
|  |                     </div> | ||
|  |                 </div> | ||
|  |                 <div class="modal-footer"> | ||
|  |                     <button type="button" class="btn btn-primary" data-dismiss="modal">Save</button> | ||
|  |                 </div> | ||
|  |             </div> | ||
|  |         </div> | ||
|  |     </div> | ||
|  | 
 | ||
|  |     <input type="hidden" id="imageX" name="imageX" /> | ||
|  |     <input type="hidden" id="imageY" name="imageY" /> | ||
|  |     <input type="hidden" id="imageW" name="imageW" /> | ||
|  |     <input type="hidden" id="imageH" name="imageH" /> | ||
|  | 
 | ||
|  |     <button type="button" class="btn btn-primary float-left button-edit-crop" style="margin-top:18px;display:none;position:absolute" data-toggle="modal" data-target="#modaljcrop"> | ||
|  |         <i class="fal fa-pencil" aria-hidden="true"></i> | ||
|  |         Edit Crop Image | ||
|  |     </button> | ||
|  | 
 | ||
|  |     @section('scripts_comp') | ||
|  |         <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> | ||
|  |         <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> | ||
|  | 
 | ||
|  |         <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-jcrop/2.0.4/css/Jcrop.min.css"> | ||
|  |         <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-jcrop/2.0.4/js/Jcrop.min.js"></script> | ||
|  | 
 | ||
|  |         <script> | ||
|  |             function updateCoords(c) | ||
|  |             { | ||
|  |                 if ($('#preview-pane').length) { | ||
|  |                     $preview = $('#preview-pane'); | ||
|  |                     $pcnt = $('#preview-pane .preview-container'); | ||
|  |                     $pimg = $('#preview-pane .preview-container img'); | ||
|  | 
 | ||
|  |                     xsize = $pcnt.width(); | ||
|  |                     ysize = $pcnt.height(); | ||
|  | 
 | ||
|  |                     var rx = xsize / c.w; | ||
|  |                     var ry = ysize / c.h; | ||
|  | 
 | ||
|  |                     var realW = $('#cropImage').width(); | ||
|  |                     var realH = $('#cropImage').height(); | ||
|  | 
 | ||
|  |                     if (realW == 0 || realH == 0) { | ||
|  |                         var imageAjust = new Image(); | ||
|  | 
 | ||
|  |                         imageAjust.src = $('#cropImage').attr('src'); | ||
|  | 
 | ||
|  |                         var realW = imageAjust.width; | ||
|  |                         var realH = imageAjust.height; | ||
|  |                     } | ||
|  | 
 | ||
|  |                     $pimg.css({ | ||
|  |                         width: Math.round(rx * realW) + 'px', | ||
|  |                         height: Math.round(ry * realH) + 'px', | ||
|  |                         marginLeft: '-' + Math.round(rx * c.x) + 'px', | ||
|  |                         marginTop: '-' + Math.round(ry * c.y) + 'px' | ||
|  |                     }); | ||
|  |                 } | ||
|  | 
 | ||
|  |                 $('#imageX').val(c.x); | ||
|  |                 $('#imageY').val(c.y); | ||
|  |                 $('#imageW').val(c.w); | ||
|  |                 $('#imageH').val(c.h); | ||
|  |             }; | ||
|  | 
 | ||
|  |             document.getElementById('{{ $fileID }}').addEventListener('change', readURL, true); | ||
|  | 
 | ||
|  |             function readURL(){ | ||
|  |                 var file = document.getElementById("{{ $fileID }}").files[0]; | ||
|  | 
 | ||
|  |                 var reader = new FileReader(); | ||
|  | 
 | ||
|  |                 reader.onload = function(e){ | ||
|  |                     var image = new Image(); | ||
|  | 
 | ||
|  |                     image.src = e.target.result; | ||
|  | 
 | ||
|  |                     $('.jcrop-preview').removeClass('h-100'); | ||
|  |                     $('.jcrop-preview').removeClass('w-100'); | ||
|  | 
 | ||
|  |                     $('#jcrop-preview').attr('src', e.target.result); | ||
|  | 
 | ||
|  |                     image.onload = function() { | ||
|  |                         if ($('#cropImage').data('Jcrop')) { | ||
|  |                             $('#cropImage').data('Jcrop').destroy(); | ||
|  |                         } | ||
|  | 
 | ||
|  |                         $('#modaljcrop').modal('show'); | ||
|  | 
 | ||
|  |                         $('#cropImage').click(); | ||
|  | 
 | ||
|  |                         $('#modaljcrop').on('hidden.bs.modal', function () { | ||
|  |                             $('.button-edit-crop').css('display', 'block'); | ||
|  |                         }); | ||
|  | 
 | ||
|  |                         $('#cropImage').attr('src', e.target.result); | ||
|  |                         var x = this.width/2 - this.width/2; | ||
|  |                         var y = this.height/2 - this.height/2; | ||
|  |                         var x1 = x + this.width; | ||
|  |                         var y1 = y + this.width; | ||
|  | 
 | ||
|  |                         $('.crop').Jcrop({ | ||
|  |                             onSelect: updateCoords, | ||
|  |                             onChange: updateCoords, | ||
|  |                             bgOpacity:   .5, | ||
|  |                             setSelect:   [0, 0, x1, y1], | ||
|  |                             aspectRatio: 2 | ||
|  |                         }); | ||
|  |                     }; | ||
|  |                 } | ||
|  | 
 | ||
|  |                 if (file) { | ||
|  |                     reader.readAsDataURL(file); | ||
|  |                 } else { | ||
|  |                     //
 | ||
|  |                 } | ||
|  |             } | ||
|  |         </script> | ||
|  |     @endsection | ||
|  | </div> |