Annotation of loncom/javascriptlib/file_upload.js, revision 1.1
1.1 ! musolffc 1: /*
! 2: The LearningOnline Network with CAPA
! 3: JavaScript functions handling file uploading
! 4:
! 5: $Id: $
! 6:
! 7: Copyright Michigan State University Board of Trustees
! 8:
! 9: This file is part of the LearningOnline Network with CAPA (LON-CAPA).
! 10:
! 11: LON-CAPA is free software; you can redistribute it and/or modify
! 12: it under the terms of the GNU General Public License as published by
! 13: the Free Software Foundation; either version 2 of the License, or
! 14: (at your option) any later version.
! 15:
! 16: LON-CAPA is distributed in the hope that it will be useful,
! 17: but WITHOUT ANY WARRANTY; without even the implied warranty of
! 18: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 19: GNU General Public License for more details.
! 20:
! 21: You should have received a copy of the GNU General Public License
! 22: along with LON-CAPA; if not, write to the Free Software
! 23: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
! 24:
! 25: /home/httpd/html/adm/gpl.txt
! 26:
! 27: http://www.lon-capa.org/
! 28: */
! 29:
! 30:
! 31:
! 32: /*
! 33: This function accepts a file input element and a maximum upload size. If the
! 34: file(s) is too large, an alert is shown and the input is cleared. It is better
! 35: to do this check on the client before uploading.
! 36:
! 37: INPUT:
! 38: fileInput -
! 39: <input type="file" class="flUpload" />
! 40: Using the class "flUpload" is needed to use the event handlers below.
! 41: maxSize -
! 42: Maximum upload size in bytes. It is usually calculated from quota and
! 43: disk usage.
! 44: */
! 45: function checkUploadSize (fileInput, maxSize) {
! 46: try {
! 47: var fileSize = 0;
! 48: if ('files' in fileInput) {
! 49: if (fileInput.files.length > 0) {
! 50: for (var i = 0; i < fileInput.files.length; i++) {
! 51: fileSize += fileInput.files[i].size;
! 52: }
! 53: if (fileSize > maxSize) {
! 54: alert("File(s) too large to be attached");
! 55: clearFileInput(fileInput);
! 56: }
! 57: }
! 58: } else { alert("no files in upFiles");}
! 59: } catch (e) { alert("Error is: " + e); }
! 60: }
! 61:
! 62: /*
! 63: This function clears the contents of a file input element.
! 64:
! 65: INPUT:
! 66: ctrl -
! 67: <input type="file" />
! 68: */
! 69: function clearFileInput(ctrl) {
! 70: try {
! 71: ctrl.value = null;
! 72: } catch(ex) { }
! 73: if (ctrl.value) {
! 74: ctrl.parentNode.replaceChild(ctrl.cloneNode(true), ctrl);
! 75: }
! 76: }
! 77:
! 78: /*
! 79: This block adds event listeners to file upload elements. It looks for input
! 80: elements with class="flUpload".
! 81:
! 82: <input type="file" class="flUpload" />
! 83:
! 84: It also looks for a hidden element with id="free_space" that contains the maximum
! 85: upload size.
! 86:
! 87: <input type="hidden" id="free_space" value="$free_space" />
! 88:
! 89: When the contents of the input element change, the function checkUploadSize()
! 90: checks if it is allowed based on size.
! 91: */
! 92: $( document ).ready(function() {
! 93: var maxSize = $( "#free_space" ).val();
! 94: var upload_elements = $( ".flUpload" );
! 95: for (var i=0; i<upload_elements.length; i++) {
! 96: upload_elements[i].addEventListener( "change", function(){
! 97: checkUploadSize(this, maxSize);
! 98: });
! 99: }
! 100: });
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>