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