[pLog-svn] r6190 - in plog/trunk: js/ui templates/admin

mark at devel.lifetype.net mark at devel.lifetype.net
Wed Feb 27 05:24:24 EST 2008


Author: mark
Date: 2008-02-27 05:24:24 -0500 (Wed, 27 Feb 2008)
New Revision: 6190

Modified:
   plog/trunk/js/ui/upload.js
   plog/trunk/templates/admin/edittemplate.template
   plog/trunk/templates/admin/newtemplatefile_form.template
Log:
It is a quite big change.

I need to modify the upload.js to follow the new event model of SWFupload 2.0.2.

Modified: plog/trunk/js/ui/upload.js
===================================================================
--- plog/trunk/js/ui/upload.js	2008-02-27 08:00:18 UTC (rev 6189)
+++ plog/trunk/js/ui/upload.js	2008-02-27 10:24:24 UTC (rev 6190)
@@ -36,42 +36,40 @@
 {
 	Lifetype.UI.Upload.swfu = new SWFUpload({
 		// Backend settings
-		upload_target_url: params.url,	// Relative to the SWF file
+		upload_url: params.url,	// Relative to the SWF file
 		file_post_name: params.fieldName,
 
 		// Flash file settings
 		file_size_limit : (params.fileSizeLimit / 1024 ),
-		file_types : "*.*",	// or you could use something like: "*.doc;*.wpd;*.pdf",
-		file_types_description : "All Files",
-		//file_upload_limit : "1",
-		begin_upload_on_queue : false,
-		use_server_data_event : true,
-		validate_files: true,
+		file_types : params.validFiles,	// or you could use something like: "*.doc;*.wpd;*.pdf",
+		file_types_description : "Template Files",
 
 		// Event handler settings
 		file_queued_handler: Lifetype.UI.Upload.fileQueued,
-		file_progress_handler : Lifetype.UI.Upload.uploadProgress,
-		file_complete_handler : Lifetype.UI.Upload.uploadFileComplete,
-		queue_complete_handler : Lifetype.UI.Upload.uploadQueueComplete,
-		error_handler : Lifetype.UI.Upload.uploadError,
-		file_validation_handler : Lifetype.UI.Upload.fileValidator,
+		file_queue_error_handler: Lifetype.UI.Upload.fileQueueError,
 
+		// Upload handler settings
+		upload_progress_handler : Lifetype.UI.Upload.uploadProgress,
+		upload_success_handler : Lifetype.UI.Upload.uploadSuccess,
+		upload_error_handler : Lifetype.UI.Upload.uploadError,
+
+		// Queue handler settings
+		upload_complete_handler : Lifetype.UI.Upload.uploadComplete,
+
 		// Flash Settings
-		flash_url : Lifetype.Config.getValue( "base_url") + "/flash/swfupload/swfupload-r6.2.swf",	// Relative to this file
+		flash_url : Lifetype.Config.getValue( "base_url") + "/flash/swfupload/swfupload_f9.swf",	// Relative to this file
 
+		// Graceful Degradation settings
+		swfupload_element_id : params.swfuploadElement,
+		degraded_element_id : params.degradedElement,
+
 		// UI settings
-        ui_function: Lifetype.UI.Upload.showUI,
-		ui_container_id : params.container,
-		degraded_container_id : "degradedUI",
+		swfupload_loaded_handler: Lifetype.UI.Upload.showUI,
 
 		// Debug settings
 		debug: false
 	});
 
-    // This is a setting that my Handlers will use. It's not part of SWFUpload
-    // But I can add it to the SWFUpload object and then use it where I need to
-    Lifetype.UI.Upload.swfu.addSetting("progress_target", "fsUploadProgress");
-
 	// reset the counter
 	Lifetype.UI.Upload.totalSize = 0;
 	
@@ -87,7 +85,7 @@
 	// place our 'browse...' link
 	var browseLink = document.createElement( 'a' );
 	browseLink.href = '#';
-	browseLink.onclick = Lifetype.UI.Upload.browse;
+	browseLink.onclick = Lifetype.UI.Upload.selectFiles;
 	browseLink.appendChild( document.createTextNode( tr("browse" )));
 	
 	// place our container for the queue
@@ -97,7 +95,7 @@
 	queueContainer.appendChild( ul );
 	
     // append all the elements to the main container
-	var container = Lifetype.Dom.$( Lifetype.UI.Upload.params.container );
+	var container = Lifetype.Dom.$( Lifetype.UI.Upload.params.swfuploadElement );
 	container.appendChild( browseLink );	
 	container.appendChild( queueContainer );
 	
@@ -108,22 +106,12 @@
 	upload.type = 'button';
 	upload.name = btn.name;
 	upload.value = btn.value;
-	upload.onclick = Lifetype.UI.Upload.uploadQueue;
+	upload.onclick = Lifetype.UI.Upload.startUpload;
 	upload.className = btn.className;
 	btn.parentNode.replaceChild( upload, btn );
-		
-	this.showUI();  // Let SWFUpload finish loading the UI.
 }
 
 /**
- * Validates file names against the given pattern
- */
-Lifetype.UI.Upload.fileValidator = function( file )
-{
-	return( true );
-}
-
-/**
  * Queue a new file 
  */
 Lifetype.UI.Upload.fileQueued = function( file, queuelength ) 
@@ -141,11 +129,6 @@
 
 	listingfiles.appendChild(li);
 	
-	var queueinfo = document.getElementById("queueinfo");
-	queueinfo.innerHTML = queuelength + " files queued";
-	document.getElementById(Lifetype.UI.Upload.swfu.movieName + "UploadBtn").style.display = "block";
-	document.getElementById("cancelqueuebtn").style.display = "block";
-	
 	// increase the total size
 	Lifetype.UI.Upload.totalSize += file.size;
 }
@@ -166,7 +149,7 @@
 /**
  * Starts the upload process
  */
-Lifetype.UI.Upload.uploadQueue = function()
+Lifetype.UI.Upload.startUpload = function()
 {
 	Lifetype.UI.Upload.swfu.startUpload();
 }
@@ -174,9 +157,9 @@
 /**
  * Show the browse dialog
  */
-Lifetype.UI.Upload.browse = function()
+Lifetype.UI.Upload.selectFiles = function()
 {
-	Lifetype.UI.Upload.swfu.browse();
+	Lifetype.UI.Upload.swfu.selectFiles();
 }
 
 /**
@@ -188,81 +171,73 @@
  *
  * :TODO: this needs to be improved
  */
-Lifetype.UI.Upload.uploadError = function(error_code, fileObj, message) 
+Lifetype.UI.Upload.uploadError = function(file, error_code, message) 
 {
-	var file = fileObj;
 	switch(error_code) {
-		case SWFUpload.ERROR_CODE_QUEUE_LIMIT_EXCEEDED:
-			alert( tr( 'swfu_error_queue_limit_exceeded' ));
-			return;
+		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
+			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_http_error' ));
 			break;
-		case SWFUpload.ERROR_CODE_MISSING_UPLOAD_TARGET:
-			alert( tr( 'swfu_error_configuration_error' ));
-			this.debugMessage("Error Code: No backend file, File name: " + file.name + ", Message: " + message);
-			return;
+		case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
+			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_missing_upload_failed' ));			
 			break;
-		case SWFUpload.ERROR_CODE_FILE_EXCEEDS_SIZE_LIMIT:
-			alert( pr( 'swfu_error_file_too_big',  Lifetype.UI.Misc.nicerFileSize( Lifetype.UI.Upload.swfu.getSetting( 'file_size_limit' ) * 1024 )));
-			this.debugMessage("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
-			return;
+		case SWFUpload.UPLOAD_ERROR.IO_ERROR:
+			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_io_error' ));			
 			break;
-		case SWFUpload.ERROR_CODE_ZERO_BYTE_FILE:
-			alert( tr( 'swfu_error_empty_file' ));
-			this.debugMessage("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
-			return;
+		case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
+			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_security_error' ));			
 			break;
-		case SWFUpload.ERROR_CODE_UPLOAD_LIMIT_EXCEEDED:
-			alert( tr( 'swfu_error_upload_limit_exceeded' ));
-			this.debugMessage("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
-			return;
+		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
+			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_upload_limit_exceeded' ));			
 			break;
-		case SWFUpload.ERROR_CODE_INVALID_FILETYPE:
-			alert( tr( 'swfu_error_invalid_filetype' ));
-			this.debugMessage("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
-			return;
+		case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
+			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_upload_failed' ));			
 			break;
-		case SWFUpload.ERROR_CODE_HTTP_ERROR:
-			//alert( pr( 'swfu_error_http_error', file.name ));
-			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_http_error' ));
-			this.debugMessage("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
+		case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:
+			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_specified_fiel_id_not_found' ));			
 			break;
-		case SWFUpload.ERROR_CODE_UPLOAD_FAILED:
-			//alert( pr( 'swfu_error_upload_failed', file.name ));
-			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_upload_failed' ));			
-			this.debugMessage("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
+		case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
+			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_file_validation_failed' ));			
 			break;
-		case SWFUpload.ERROR_CODE_IO_ERROR:
-			//alert( pr( 'swfu_error_server_error', file.name ));
-			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_server_error' ));			
-			this.debugMessage("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
+		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
+			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_file_cacnelled' ));			
 			break;
-		case SWFUpload.ERROR_CODE_SECURITY_ERROR:
-			//alert( pr( 'swfu_error_security', file.name ));
-			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_security' ));			
-			this.debugMessage("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
+		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
+			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_upload_stopped' ));			
 			break;
 		default:
-			//alert( pr( 'swfu_error_generic', file.name ));
 			Lifetype.UI.Upload._setFileError( file, tr( 'swfu_error_generic' ));			
-			this.debugMessage("Error Code: " + error_code + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
-			return;
 			break;				
 	}
 }
 
 /**
- * @param file
- * @param position
- * @param queuelength
+ * Error handler
+ *
+ * @param error_code
+ * @param fileObj
+ * @param message
+ *
+ * :TODO: this needs to be improved
  */
-Lifetype.UI.Upload.uploadFileStart = function(file, position, queuelength) 
+Lifetype.UI.Upload.fileQueueError = function(file, error_code, message) 
 {
-	var li = document.getElementById(file.id);
-	li.className += " fileUploading";
-	
-	// hide the cancel button, we don't allow to cancel at this point anymore
-	var cancelButton = Lifetype.Dom.$( 'deletebtn' );
-	cancelButton.style.display = 'none';
+	switch(error_code) {
+		case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
+			alert(file.name+': '+tr( 'swfu_error_queue_limit_exceeded' ));
+			break;
+		case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
+			alert(file.name+': '+tr( 'swfu_error_file_exceeds_size_limit' ));
+			break;
+		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
+			alert(file.name+': '+tr( 'swfu_error_zero_byte_file' ));
+			break;
+		case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
+			alert(file.name+': '+tr( 'swfu_error_invalid_filetype' ));
+			break;
+		default:
+			alert(file.name+': '+tr( 'swfu_error_generic' ));
+			break;				
+	}
 }
 
 /**
@@ -300,7 +275,7 @@
  * @param serverData If use_server_data_event is set to 'true', this will contain
  * the output that was returned by the server
  */
-Lifetype.UI.Upload.uploadFileComplete = function( file, serverData ) 
+Lifetype.UI.Upload.uploadSuccess = function( file, serverData ) 
 {
 	// if the file was loaded in one go, uploadProgress will not be called,
 	// so we need to make sure that we fill the progress bar completely to
@@ -364,8 +339,10 @@
 /**
  * Event generated when the whole queue has been uploaded
  */
-Lifetype.UI.Upload.uploadQueueComplete = function() 
+Lifetype.UI.Upload.uploadComplete = function() 
 {
 	// notify other code that the queue has been completely uploaded
-	Lifetype.UI.Upload.Events.allFilesUploaded.fire( { upload:Lifetype.UI.Upload.swfu } );
+	var stats = Lifetype.UI.Upload.swfu.getStats();
+	if( stats.files_queued == 0 )
+		Lifetype.UI.Upload.Events.allFilesUploaded.fire( { upload:Lifetype.UI.Upload.swfu } );
 }
\ No newline at end of file

Modified: plog/trunk/templates/admin/edittemplate.template
===================================================================
--- plog/trunk/templates/admin/edittemplate.template	2008-02-27 08:00:18 UTC (rev 6189)
+++ plog/trunk/templates/admin/edittemplate.template	2008-02-27 10:24:24 UTC (rev 6190)
@@ -3,7 +3,9 @@
 <link rel="stylesheet" href="js/editor/lifetypeeditor.css" type="text/css" />
 <link rel="stylesheet" href="js/ui/assets/upload/upload.css" type="text/css" />
 {js src="js/editor/lifetypeeditor.js"}
-{js src="js/swfupload/swfupload-r6.2.js"}
+{js src="js/swfupload/swfupload.js"}
+{js src="js/swfupload/plugins/swfupload.graceful_degradation.js"}
+{js src="js/swfupload/plugins/swfupload.queue.js"}
 {js src="js/ui/upload.js"}
 {js src="js/ui/pages/templateeditor.js"}
 {check_perms adminperm=add_template}

Modified: plog/trunk/templates/admin/newtemplatefile_form.template
===================================================================
--- plog/trunk/templates/admin/newtemplatefile_form.template	2008-02-27 08:00:18 UTC (rev 6189)
+++ plog/trunk/templates/admin/newtemplatefile_form.template	2008-02-27 10:24:24 UTC (rev 6190)
@@ -11,13 +11,16 @@
 	</div>			
 	{** container for the flash-based uploader **}		
 	<div id="flashUI" style="display: none;">
+	  {eval var=$smarty.cookies.$session assign=sessionId}
 	  <script type="text/javascript">
 		Lifetype.UI.Upload.init( {literal}{{/literal} 
-			container:'flashUI', 
-			fieldName:'templateFile', 
+			swfuploadElement:'flashUI',
+			degradedElement:'degradedUI',
+			fieldName:'templateFile',
 			uploadButton:'addFile', 
 			fileSizeLimit: {$config->getValue("maximum_file_upload_size")},
-			validFiles: '{$config->getValue("template_editor_editable_extensions")}',				url:'{$url->getAdminUrl()}?op=uploadTemplateFile&path='+Lifetype.Dom.$('currentPath').value+'&output=flash&templateId='+Lifetype.Dom.$('templateId').value+'&{$session}={$smarty.cookies.LThttplocalhosttrunk}'{literal}}{/literal});
+			validFiles: '{$config->getValue("template_editor_editable_extensions")}',
+			url:'{$url->getAdminUrl()}?op=uploadTemplateFile&path='+Lifetype.Dom.$('currentPath').value+'&output=flash&templateId='+Lifetype.Dom.$('templateId').value+'&{$session}={$sessionId}'{literal}}{/literal});
 	  </script>			
 	</div>
   </div>



More information about the pLog-svn mailing list