Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.47 KB | None | 0 0
  1. var fBucketDropzone = new Dropzone(document.body, { // Make the whole body a dropzone
  2.     url: uploadRoute, // Set the url
  3.     method: 'POST',
  4.     headers: {
  5.         'x-csrf-token': document.querySelectorAll('meta[name=csrf-token]')[0].getAttributeNode('content').value,
  6.     },
  7.     thumbnailWidth: 96,
  8.     thumbnailHeight: 96,
  9.     parallelUploads: 20,
  10.     previewTemplate: previewTemplate,
  11.     autoQueue: false, // Make sure the files aren't queued until manually added
  12.     previewsContainer: "#previews", // Define the container to display the previews
  13.     clickable: ".fileinput-button", // Define the element that should be used as click trigger to select files.
  14.     paramName: "file",
  15.     maxFilesize: 2000, // MB
  16.     maxFiles: 3,
  17.     // renameFile: function(file) {
  18.     //     let name_base = file.name.replace(/\.[^/.]+$/, ""); // file name without the extension
  19.     //     let name_length = name_base.length;
  20.     //     let new_name = file.name;
  21.     //     if (name_length > 10) {
  22.     //         let fileExt = getFileExtension(file.name);
  23.     //         new_name = name_base.substring(0, 8) + '_.' + fileExt;
  24.  
  25.     //     }
  26.     //     console.log('new_name = ' + new_name);
  27.     //     return new_name;
  28.     // }
  29. });
  30.  
  31. let start_button = document.querySelector('#actions .start');
  32. let cancel_button = document.querySelector('#actions .cancel');
  33. let lead = document.querySelector('.lead');
  34. let upload_all_btn = document.querySelector('#actions .start');
  35. let content = document.querySelector('.content');
  36.  
  37. fBucketDropzone.on("addedfile", function(file) {
  38.     // Hookup the start button
  39.     let file_start_button = file.previewElement.querySelector(".start")
  40.     file_start_button.onclick = function() { fBucketDropzone.enqueueFile(file); };
  41.     let file_options = document.querySelector('.file-options');
  42.     removeClass(file_options, 'invisible');
  43.     // document.querySelector(".cancel").style.opacity = "1";
  44.     let fileExt = getFileExtension(file.name);
  45.     let imageExtensions = ['jpg', 'jpeg', 'png', 'gif'];
  46.     if (!imageExtensions.includes(fileExt)) {
  47.         let thumbnail = file.previewElement.querySelector(".thumbnail");
  48.         let fileIcon = file.previewElement.querySelector('.file-icon');
  49.         addClass(thumbnail, 'd-none');
  50.         removeClass(fileIcon, 'd-none');
  51.     }
  52.  
  53.     removeClass(start_button, 'd-none');
  54.     removeClass(cancel_button, 'd-none');
  55.  
  56.     lead.style['font-size'] = '1.5rem';
  57.     content.style['padding-bottom'] = 0;
  58. });
  59.  
  60. // Update the total progress bar
  61. fBucketDropzone.on("totaluploadprogress", function(progress) {
  62.     document.querySelector("#total-progress .progress-bar").style.width = progress + "%";
  63. });
  64.  
  65. fBucketDropzone.on("sending", function(file, xhr, formData) {
  66.     // Show the total progress bar when upload starts
  67.     document.querySelector("#total-progress").style.opacity = "1";
  68.     // And disable the start button
  69.     file.previewElement.querySelector(".start").setAttribute("disabled", "disabled");
  70.     // Send the 'public' option as well
  71.     // let is_public = document.querySelector('#is-public').value;
  72.     // formData.append("is_public", is_public);
  73.     // console.log('file.upload.filename = ' + file.upload.filename);
  74. });
  75.  
  76. // Hide the total progress bar when nothing's uploading anymore
  77. fBucketDropzone.on("queuecomplete", function(progress) {
  78.     document.querySelector("#total-progress").style.opacity = "0";
  79.     addClass(upload_all_btn, 'd-none');
  80. });
  81.  
  82. // Setup the buttons for all transfers
  83. // The "add files" button doesn't need to be setup because the config
  84. // `clickable` has already been specified.
  85. start_button.onclick = function() {
  86.     fBucketDropzone.enqueueFiles(fBucketDropzone.getFilesWithStatus(Dropzone.ADDED));
  87. };
  88.  
  89. cancel_button.onclick = function() {
  90.     fBucketDropzone.removeAllFiles(true);
  91.     addClass(start_button, 'd-none');
  92.     addClass(cancel_button, 'd-none');
  93.     lead.style['font-size'] = '1.75rem';
  94. };
  95.  
  96. // fBucketDropzone.on("removedfile", function(file) {
  97. //     // Hookup the start button
  98. //     console.log(file);
  99. // });
  100.  
  101. fBucketDropzone.on("success", function(file, response) {
  102.  
  103.     // invalid response from the server
  104.  
  105.     if(response.error) {
  106.         console.log(response.message);
  107.  
  108.  
  109.     }
  110.     else {
  111.         let file_size = file.previewElement.querySelector('p.size');
  112.         // console.log(file);
  113.         // console.log(response);
  114.         let file_name = file.previewElement.querySelector('p.name');
  115.         addClass(file_name, 'd-none');
  116.         let file_url = file.previewElement.querySelector('.file-url');
  117.         removeClass(file_url, 'd-none');
  118.         let file_url_input = file.previewElement.querySelector('.file-url-input');
  119.         file_url_input.value = response.file_url;
  120.  
  121.         // let delete_button = file.previewElement.querySelector('.btn.delete')
  122.         // addClass(delete_button, 'd-none');
  123.  
  124.         // let progressbar_all = document.querySelector('.fileupload-process');
  125.  
  126.         let cancel_button = document.querySelector('.btn.cancel');
  127.         cancel_button.innerHTML = '<i class="fas fa-ban"></i> <span>Clear</span>';
  128.         cancel_button.addEventListener('click', function() {
  129.             cancel_button.innerHTML = '<i class="fas fa-ban"></i> <span>Cancel</span>';
  130.             document.querySelector("#total-progress").style.opacity = "0";
  131.             let file_options = document.querySelector('.file-options');
  132.             addClass(file_options, 'invisible');
  133.         })
  134.  
  135.         let btn = file.previewElement.querySelector('#button-copy-url');
  136.  
  137.         btn.addEventListener('click', function(event) {
  138.             event.preventDefault();
  139.             $('.file-url-input').tooltip();
  140.             copyToClipboard(file_url_input);
  141.  
  142.         });
  143.  
  144.         let btn_view = file.previewElement.querySelector('.btn.view');
  145.         btn_view.href = response.file_url;
  146.         removeClass(btn_view, 'd-none');
  147.  
  148.         // div.appendChild(input);
  149.         // div.appendChild(btn);
  150.         // addClass(div, 'dz-filename');
  151.         file.previewElement.querySelector(".input-group-append").appendChild(btn);
  152.  
  153.         file_size.style["padding-top"] = '21px';
  154.     }
  155.  
  156.  
  157.  
  158. });
  159.  
  160. fBucketDropzone.on("error", function(file, errorMessage) {
  161.     let error_el = file.previewElement.querySelector('.error');
  162.      error_el.textContent = "Error uploading file!";
  163.     error_el.textContent = errorMessage;
  164.  
  165. });
  166.  
  167. function copyToClipboard(el) {
  168.     el.select();
  169.     el.setSelectionRange(0, 99999); /*For mobile devices*/
  170.     document.execCommand("copy");
  171. }
  172.  
  173. function getFileExtension(filename) {
  174.     return filename.split('.').pop();
  175. }
  176.  
  177.  
  178.  
  179. // Night/Day mode
  180.  
  181. let nightLink = document.querySelector('.daynight.night');
  182. let dayLink = document.querySelector('.daynight.day');
  183.  
  184. nightLink.addEventListener('click', function() {
  185.     event.preventDefault();
  186.     removeClass(document.body, 'day');
  187.     addClass(document.body, 'night');
  188.     addClass(nightLink, 'd-none');
  189.     removeClass(dayLink, 'd-none');
  190. });
  191.  
  192. dayLink.addEventListener('click', function() {
  193.     event.preventDefault();
  194.     removeClass(document.body, 'night');
  195.     addClass(dayLink, 'd-none');
  196.     removeClass(nightLink, 'd-none');
  197. });
  198.  
  199. function addClass(el, className) {
  200.     if (el.classList) el.classList.add(className);
  201.     else if (!hasClass(el, className)) el.className += ' ' + className;
  202. }
  203.  
  204. function removeClass(el, className) {
  205.     if (el.classList) el.classList.remove(className);
  206.     else el.className = el.className.replace(new RegExp('\\b'+ className+'\\b', 'g'), '');
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement