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> |