mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 10:08:08 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			184 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			184 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| @section('header')
 | |
|     @parent
 | |
|     <link href="/vendors/css/dropzone.min.css" rel="stylesheet">
 | |
|     <link href="/vendors/css/dropzone-basic.min.css" rel="stylesheet">
 | |
|     <link href="/vendors/css/sweetalert.css" rel="stylesheet">
 | |
|     <style>
 | |
|         .dropzone {
 | |
|             background: white;
 | |
|             border-radius: 5px;
 | |
|             border: 2px dashed rgb(0, 135, 247);
 | |
|             border-image: none;
 | |
|             max-width: 500px;
 | |
|             margin-left: auto;
 | |
|             margin-right: auto;
 | |
|         }
 | |
|         .dropzone .dz-preview .dz-image {
 | |
|           width: 250px;
 | |
|           height: 250px;
 | |
|         }
 | |
|     </style>
 | |
| @stop
 | |
| <div id="dropzone">
 | |
|     <form class="dropzone needsclick" id="demo-upload">
 | |
|     	<div class="dz-message needsclick">    
 | |
|         	{{ ctrans('texts.dropzone_default_message')}}<br>
 | |
|       	</div>
 | |
|     </form>
 | |
| </div>
 | |
| @push('scripts')
 | |
|     <script src="/vendors/js/dropzone.min.js"></script>
 | |
|     <script src="/vendors/js/sweetalert.min.js"></script>
 | |
|     <script>
 | |
| 
 | |
|         var contact = {!! auth()->user() !!};
 | |
| 
 | |
|     	Dropzone.autoDiscover = false;
 | |
| 		window.countUploadingDocuments = 0;
 | |
| 
 | |
| 		window.dropzone = new Dropzone('.dropzone', {
 | |
| 		    url: '{!! $url !!}',
 | |
| 		    params: {
 | |
| 		        '_token': '{{ csrf_token() }}',
 | |
|         		@foreach($params as $key => $value)
 | |
|         		'{!! $key !!}' : '{!! $value !!}', 
 | |
|     			@endforeach
 | |
| 		    },
 | |
|             thumbnailWidth: 250,
 | |
|             thumbnailHeight: 250,
 | |
| 		    addRemoveLinks: true,
 | |
| 		    dictRemoveFileConfirmation: "{{ctrans('texts.are_you_sure')}}",
 | |
|             dictDefaultMessage : "{{ctrans('texts.dropzone_default_message')}}",
 | |
|             dictFallbackMessage : "{{ctrans('texts.dropzone_fallback_message')}}",
 | |
|             dictFallbackText : "{{ctrans('texts.dropzone_fallback_text')}}",
 | |
|             dictFileTooBig : "{{ctrans('texts.dropzone_file_too_big')}}",
 | |
|             dictInvalidFileType : "{{ctrans('texts.dropzone_invalid_file_type')}}",
 | |
|             dictResponseError : "{{ctrans('texts.dropzone_response_error')}}",
 | |
|             dictCancelUpload : "{{ctrans('texts.dropzone_cancel_upload')}}",
 | |
|             dictCancelUploadConfirmation : "{{ctrans('texts.dropzone_cancel_upload_confirmation')}}",
 | |
|             dictRemoveFile : "{{ctrans('texts.dropzone_remove_file')}}",
 | |
| 		    parallelUploads: 1,
 | |
| 		    maxFiles: {{ $multi_upload ? 100000 : 1 }},
 | |
| 		    clickable: true,
 | |
| 		    maxfilesexceeded: function(file) {
 | |
| 		        this.removeAllFiles();
 | |
| 		        this.addFile(file);
 | |
| 		    },
 | |
| 			    init: function(){
 | |
| 	          //  this.on("addedfile", handleFileAdded);
 | |
| 	          //  this.on("removedfile", handleFileRemoved);
 | |
| 	            this.on("error", function(file){if (!file.accepted) this.removeFile(file);});
 | |
| 	        },
 | |
| 		});
 | |
| 
 | |
| 
 | |
| 		if (dropzone instanceof Dropzone) {
 | |
| 
 | |
| 		    dropzone.on('addedfile', handleDocumentAdded);
 | |
| 		    dropzone.on('removedfile', handleDocumentRemoved);
 | |
| 		    dropzone.on('success', handleDocumentUploaded);
 | |
| 		    //dropzone.on('canceled', handleDocumentCanceled);
 | |
| 		    dropzone.on('error', handleDocumentError);
 | |
| 
 | |
|             var mockFile = makeMockFile();
 | |
| 
 | |
|             if(contact.avatar) {
 | |
|                 dropzone.emit('addedfile', mockFile);
 | |
|                 dropzone.emit('complete', mockFile);
 | |
|             }
 | |
|             var documentType = contact.avatar_type;
 | |
|             var previewUrl = contact.avatar;
 | |
|             var documentUrl = contact.avatar;
 | |
| 
 | |
|             if (contact && previewUrl) {
 | |
|                 dropzone.emit('thumbnail', mockFile, previewUrl);
 | |
|             } else if (documentType == 'jpeg' || documentType == 'png' || documentType == 'svg') {
 | |
|                 dropzone.emit('thumbnail', mockFile, documentUrl);
 | |
|             }
 | |
| 
 | |
|             dropzone.files.push(mockFile);
 | |
| 
 | |
| 		}
 | |
| 
 | |
|     function makeMockFile()
 | |
|     {
 | |
|         var mockFile = {
 | |
|             name: contact.avatar,
 | |
|             size: contact.avatar_size,
 | |
|             type: contact.avatar_type,
 | |
|             status: Dropzone.SUCCESS,
 | |
|             accepted: true,
 | |
|             url: contact.avatar,
 | |
|             mock: true
 | |
|         };
 | |
| 
 | |
|         return mockFile;
 | |
|     }
 | |
| 
 | |
| 	function handleDocumentError(file, responseText) {
 | |
| 	    
 | |
|         dropzone.removeFile(file);
 | |
| 
 | |
|         for (var error in responseText.errors) {
 | |
| 
 | |
|             swal({title: '{{ctrans('texts.error')}}', text: responseText.errors[error]});
 | |
| 
 | |
|         }
 | |
|            
 | |
| 	}
 | |
| 
 | |
|     function handleDocumentAdded(file){
 | |
| 
 | |
|         if (contact.avatar) {
 | |
|             file.previewElement.addEventListener("click", function() {
 | |
|                 window.open(contact.avatar, '_blank');
 | |
|             });
 | |
|         }
 | |
|         if(file.mock)return;
 | |
|         if (window.addDocument) {
 | |
|             addDocument(file);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function handleDocumentUploaded(file, response){
 | |
| 
 | |
|         contact = response;
 | |
|         dropzone.files = [];
 | |
| 
 | |
|         var mockFile = makeMockFile();
 | |
| 
 | |
|         if(contact.avatar) {
 | |
|             dropzone.emit('complete', mockFile);
 | |
|         }
 | |
|         var documentType = contact.avatar_type;
 | |
|         var previewUrl = contact.avatar;
 | |
|         var documentUrl = contact.avatar;
 | |
| 
 | |
|         if (contact && previewUrl) {
 | |
|             dropzone.emit('thumbnail', mockFile, previewUrl);
 | |
|         } else if (documentType == 'jpeg' || documentType == 'png' || documentType == 'svg') {
 | |
|             dropzone.emit('thumbnail', mockFile, documentUrl);
 | |
|         }
 | |
| 
 | |
|         dropzone.files.push(mockFile);
 | |
| 
 | |
|     }
 | |
| 
 | |
|     function handleDocumentRemoved(file){
 | |
|         if (window.deleteDocument) {
 | |
|             deleteDocument(file);
 | |
|         }
 | |
|         $.ajax({
 | |
|             url: '{!! $url !!}',
 | |
|             type: 'DELETE',
 | |
|             headers: {
 | |
|                 'X-CSRF-TOKEN': '{{ csrf_token() }}'
 | |
|             },
 | |
|             success: function(result) {
 | |
|                 // Do something with the result
 | |
|             }
 | |
|         });
 | |
|     }
 | |
|     </script>
 | |
| @endpush
 |