/** * JavaScript used by mod/photos */ $(document).ready(function() { // call initialization file if (window.File && window.FileList && window.FileReader) { UploadInit(); } //$("#photo-edit-newtag").contact_autocomplete(baseurl + '/acl', 'a', false, function(data) { //$("#photo-edit-newtag").val('@' + data.name); //}); $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl?f=&n=1"); $('textarea').editor_autocomplete(baseurl+"/acl"); $('textarea').bbco_autocomplete('bbcode'); showHideBodyTextarea(); }); function showHideBodyTextarea() { if( $('#id_visible').is(':checked')) $('#body-textarea').slideDown(); else $('#body-textarea').slideUp(); } // initialize function UploadInit() { var nickname = $('#invisible-photos-file-upload').data('nickname'); var fileselect = $("#photos-upload-choose"); var filedrag = $("#photos-upload-form"); var submit = $("#dbtn-submit"); var count = 1; $('#invisible-photos-file-upload').fileupload({ url: 'photos/' + nickname, dataType: 'json', dropZone: filedrag, maxChunkSize: 4 * 1024 * 1024, add: function(e,data) { $(data.files).each( function() { this.count = ++ count; prepareHtml(this); }); var allow_cid = ($('#photos-upload-form').data('allow_cid') || []); var allow_gid = ($('#photos-upload-form').data('allow_gid') || []); var deny_cid = ($('#photos-upload-form').data('deny_cid') || []); var deny_gid = ($('#photos-upload-form').data('deny_gid') || []); $('.acl-field').remove(); $(allow_gid).each(function(i,v) { $('#photos-upload-form').append(""); }); $(allow_cid).each(function(i,v) { $('#photos-upload-form').append(""); }); $(deny_gid).each(function(i,v) { $('#photos-upload-form').append(""); }); $(deny_cid).each(function(i,v) { $('#photos-upload-form').append(""); }); data.formData = $('#photos-upload-form').serializeArray(); data.submit(); }, progress: function(e,data) { // there will only be one file, the one we are looking for $(data.files).each( function() { var idx = this.count; // Dynamically update the percentage complete displayed in the file upload list $('#upload-progress-' + idx).html(Math.round(data.loaded / data.total * 100) + '%'); $('#upload-progress-bar-' + idx).css('background-size', Math.round(data.loaded / data.total * 100) + '%'); }); }, stop: function(e,data) { window.location.href = window.location.href; } }); $('#dbtn-submit').click(function(event) { event.preventDefault(); $('#invisible-photos-file-upload').trigger('click'); return false;}); // is XHR2 available? // var xhr = new XMLHttpRequest(); // if (xhr.upload) { // file select // fileselect.attr("multiple", 'multiple'); // fileselect.on("change", UploadFileSelectHandler); // file submit // submit.on("click", fileselect, UploadFileSelectHandler); // file drop // filedrag.on("dragover", DragDropUploadFileHover); // filedrag.on("dragleave", DragDropUploadFileHover); // filedrag.on("drop", DragDropUploadFileSelectHandler); // } // window.filesToUpload = 0; // window.fileUploadsCompleted = 0; } // file drag hover function DragDropUploadFileHover(e) { e.stopPropagation(); e.preventDefault(); e.currentTarget.className = (e.type == "dragover" ? "hover" : ""); } // file selection via drag/drop function DragDropUploadFileSelectHandler(e) { // cancel event and hover styling DragDropUploadFileHover(e); // fetch FileList object var files = e.target.files || e.originalEvent.dataTransfer.files; $('.new-upload').remove(); // process all File objects for (var i = 0, f; f = files[i]; i++) { prepareHtml(f, i); UploadFile(f, i); } } // file selection via input function UploadFileSelectHandler(e) { // fetch FileList object if(e.target.id === 'dbtn-submit') { e.preventDefault(); var files = e.data[0].files; } if(e.target.id === 'photos-upload-choose') { $('.new-upload').remove(); var files = e.target.files; } // process all File objects for (var i = 0, f; f = files[i]; i++) { if(e.target.id === 'photos-upload-choose') prepareHtml(f, i); if(e.target.id === 'dbtn-submit') { UploadFile(f, i); } } } function prepareHtml(f) { var num = f.count - 1; var i = f.count; $('#upload-index #new-upload-progress-bar-' + num.toString()).after( '