/** * upload.js * * handles large file uploading. * version : 1.5 */ 'use strict'; 'use strict'; //create global variable var max_file_size = 0; var max_file_size_display = 0; var adv_max_file_size_display = 0; var default_action; var default_url; var blobSlice; var requestFileSystem; var up_plupload; var msgProgLabel = document.createElement("label"); msgProgLabel.className = "pLabel"; var msgProgress = document.createElement("progress"); var msgProgressDiv = document.createElement("div"); msgProgressDiv.className = "progress"; msgProgressDiv.appendChild(msgProgLabel); msgProgressDiv.appendChild(msgProgress); //This is to enable the ID3 tag reader for plupload files. (function(ns) { ns["mOxieFileAPIReader"] = function(file) { return function(url, fncCallback, fncError) { var reader = new mOxie.FileReader(); reader.onload = function(event) { var base_pos = this.result.search(/;base64,/); var result = this.result.slice(base_pos+8); var bin_file = new D(window.atob(result)); //D is BinaryFile in the src fncCallback(bin_file); }; reader.readAsDataURL (file); } }; })(this); var registerLog = function (str, className) { jQuery('
' + 'Use advanced uploader
'; var upload_js = document.getElementById('tmpl-uploader-inline'); if (upload_js !== null) { var pattern = new RegExp(max_file_size_display+'|'+max_file_size_display.replace(/ /,''),'i'); var maxPos = upload_js.innerHTML.search(pattern); var pPos = upload_js.innerHTML.indexOf('', maxPos); upload_js.innerHTML = upload_js.innerHTML.substring(0, maxPos) + max + upload_js.innerHTML.substring(maxPos+max_file_size_display.length,pPos+4) + check_box + upload_js.innerHTML.substring(pPos+4); } var upload = jQuery('.max-upload-size').html(); if (typeof upload === 'string') { var pattern = new RegExp(max_file_size_display+'|'+max_file_size_display.replace(/ /,''),'i'); var maxPos = upload.search(pattern); jQuery('.max-upload-size').html(upload.substring(0, maxPos) + max + upload.substring(maxPos+max_file_size_display.length)) .after(check_box); } jQuery(document).on('click','#adv_uploader_checkbox_p',show_hide_uploader); jQuery(document).on('click','.media-menu-item',function (e) { if (e.target.textContent == 'Upload Files') if ((!adv_uploader && jQuery('#adv_uploader_checkbox').attr('checked') == 'checked') || (adv_uploader && jQuery('#adv_uploader_checkbox').attr('checked') == undefined)) jQuery('#adv_uploader_checkbox_p').click(); }); } }); function show_hide_uploader (e) { if (e.target.id.indexOf('adv_uploader_checkbox') == -1) return; if (e.target.type == 'checkbox') var adv_checkbox = e.target; else { var adv_checkbox = document.getElementById('adv_uploader_checkbox'); if (adv_checkbox.checked) adv_checkbox.checked = false; else adv_checkbox.checked = true; } if (adv_checkbox.checked) { adv_uploader = true; up_plupload.settings.filters.max_file_size = adv_max_file_size; up_plupload.settings.chunk_size = max_file_size; var max = jQuery('.max-upload-size').html(); max = max.replace (max_file_size_display, adv_max_file_size_display); jQuery('.max-upload-size').html(max); } else { adv_uploader = false; up_plupload.settings.filters.max_file_size = max_file_size; up_plupload.settings.chunk_size = 0; var max = jQuery('.max-upload-size').html(); max = max.replace (adv_max_file_size_display, max_file_size_display); jQuery('.max-upload-size').html(max); } jQuery.ajax({'type' : "post",'url' : ajaxurl,'data' : {'action': "adv_file_upload_set_loader", 'loader': adv_uploader }}); } var createThumbImage = function (file, name, callback, src) { var tempImg = new Image(); tempImg.src = src; tempImg.onload = function() { var tempW = tempImg.width; var tempH = tempImg.height; if (tempH > sizes['thumbnail']['height'] || tempW > sizes['thumbnail']['width']) { var imageMeta = new Object(); var dataURL = new Object(); var keys = new Array(); var imageH = tempH; var imageW = tempW; var nameslist = ''; for (var key in sizes) { var tempH = imageH; var tempW = imageW; //get thumbnail size var MAX_WIDTH = sizes[key]['width']; var MAX_HEIGHT = sizes[key]['height']; if (tempH > MAX_HEIGHT || tempW > MAX_WIDTH) { if (tempW > imageH) { if (tempW > MAX_WIDTH) { tempH *= MAX_WIDTH / tempW; tempW = MAX_WIDTH; } } else { if (tempH > MAX_HEIGHT) { tempW *= MAX_HEIGHT / tempH; tempH = MAX_HEIGHT; } } //round down image dimesions tempW = Math.round(tempW); tempH = Math.round(tempH); //set thumbnail filename var filename = name.replace(/\.(jpg|jpeg|png)$/i, "-"+tempW+"x"+tempH+".jpg"); if (nameslist.search(filename) == -1) { nameslist += filename + ';'; var canvas = document.createElement('canvas'); canvas.width = tempW; canvas.height = tempH; var ctx = canvas.getContext("2d"); ctx.drawImage(this, 0, 0, tempW, tempH); keys.push(key); dataURL[key] = canvas.toDataURL("image/jpeg",0.9); } imageMeta[key] = new Object(); imageMeta[key].file = filename; imageMeta[key].width = tempW; imageMeta[key].height = tempH; } } callback (dataURL, imageMeta, keys); } else callback (null, null, new Array()); }; }; var pdf = function (file, name, callback) { // // Disable workers to avoid yet another cross-origin issue (workers need the URL of // the script to be loaded, and currently do not allow cross-origin scripts) // PDFJS.disableWorker = true; var pdfDoc = null; // // Get page info from document, resize canvas accordingly, and render page // function renderPage(num) { // Using promise to fetch the page pdfDoc.getPage(num).then(function(page) { var keys = new Array(); for (var key in sizes) keys.push(key); createPDFthumb (page, '', keys, new Array(), new Object(), new Object()); }); } // // create thumbnail images // function createPDFthumb (page, nameslist, imageSizes, keys, imageMeta, dataURL) { var key = imageSizes.pop(); var wScale = sizes[key]['width'] / page.getViewport(1.0).width; var hScale = sizes[key]['height'] / page.getViewport(1.0).height; var scale = wScale>hScale?hScale:wScale; var viewport = page.getViewport(scale); var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; //set thumbnail filename var filename = name+"-"+canvas.width+"x"+canvas.height+".png"; imageMeta[key] = new Object(); imageMeta[key].file = filename; imageMeta[key].width = canvas.width; imageMeta[key].height = canvas.height; if (nameslist.search(filename) == -1) { nameslist += filename + ';'; // Render PDF page into canvas context var renderContext = { canvasContext: ctx, viewport: viewport }; page.render(renderContext).then(function (){ keys.push(key); dataURL[key] = canvas.toDataURL("image/png"); if (imageSizes.length > 0) createPDFthumb (page, nameslist, imageSizes, keys, imageMeta, dataURL); else { callback (dataURL, imageMeta, keys); } }); } else { if (imageSizes.length > 0) createPDFthumb (page, nameslist, imageSizes, keys, imageMeta, dataURL); else { callback (dataURL, imageMeta, keys); } } } var parameters = {}; // Read the local file into a Uint8Array. var fileReader = new FileReader(); fileReader.onload = function webViewerChangeFileReaderOnload(evt) { var buffer = evt.target.result; parameters.data = new Uint8Array(buffer); PDFJS.getDocument(parameters).then(function getPdfForm(_pdfDoc) { pdfDoc = _pdfDoc; renderPage(1); }); }; //fileReader.readAsArrayBuffer(file); // Fetch the PDF document from the URL using promices PDFJS.getDocument(file).then(function getPdfForm(_pdfDoc) { pdfDoc = _pdfDoc; renderPage(1); }); }; function handleDragOver(evt) { evt.stopPropagation(); evt.preventDefault(); evt.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy. } function handleDragEnter(evt) { evt.currentTarget.classList.add('drag-over'); } function handleDragLeave(evt) { evt.currentTarget.classList.remove('drag-over'); } function selectDestination (files, callback) { if (files.length == 0) { return; } //destinations options var options = ''; var group = ""; for (var i=0; iSelect destination for all files'; else var content = '
Select destination for ' + files[0].name; content += ''; content += 'Gallery name: '; content += ''; content += '
'; if (files.length > 1) { content += ''; content += 'Or select destination for each file
'; for (var i=0; i < files.length; i++) { content += '