[pLog-svn] r5947 - in plog/trunk: class/action/admin class/view/admin class/view/admin/ajax js/ui js/ui/assets/upload js/ui/pages templates/admin

oscar at devel.lifetype.net oscar at devel.lifetype.net
Sun Sep 23 16:46:56 EDT 2007


Author: oscar
Date: 2007-09-23 16:46:56 -0400 (Sun, 23 Sep 2007)
New Revision: 5947

Added:
   plog/trunk/class/view/admin/adminplainview.class.php
   plog/trunk/js/ui/assets/upload/icon_upload_error-16.png
Modified:
   plog/trunk/class/action/admin/adminuploadblogtemplatefileaction.class.php
   plog/trunk/class/action/admin/adminuploadtemplatefileaction.class.php
   plog/trunk/class/view/admin/ajax/adminajaxview.class.php
   plog/trunk/js/ui/assets/upload/upload.css
   plog/trunk/js/ui/pages/templateeditor.js
   plog/trunk/js/ui/upload.js
   plog/trunk/templates/admin/editblogtemplate.template
   plog/trunk/templates/admin/edittemplate.template
   plog/trunk/templates/admin/newblogtemplatefile_form.template
   plog/trunk/templates/admin/newtemplatefile_form.template
Log:
Improved version of the Lifetype.UI.Upload class that implements a nicer way to upload files, and now it's totally integrated wtih the screen that allows to upload new files via the template editor. It's also reporting errors while uploading next to the file that caused the error rather than with an old fashioned alert() pop-up.


Modified: plog/trunk/class/action/admin/adminuploadblogtemplatefileaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminuploadblogtemplatefileaction.class.php	2007-09-22 09:42:27 UTC (rev 5946)
+++ plog/trunk/class/action/admin/adminuploadblogtemplatefileaction.class.php	2007-09-23 20:46:56 UTC (rev 5947)
@@ -2,6 +2,7 @@
 
 	lt_include( PLOG_CLASS_PATH."class/action/admin/adminbasetemplateeditoraction.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/admin/adminedittemplateview.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/view/admin/adminplainview.class.php" );	
     lt_include( PLOG_CLASS_PATH."class/file/fileuploads.class.php" );	
 	lt_include( PLOG_CLASS_PATH."class/view/admin/adminblogtemplatesetslistview.class.php" );
 	lt_include( PLOG_CLASS_PATH."class/view/admin/admineditblogtemplateview.class.php" );		
@@ -36,7 +37,13 @@
 		
 		function perform()
 		{
-			$this->_view = new AdminEditBlogTemplateView( $this->_blogInfo, $this->_templateId, $this->_path );
+			if( $this->_request->getOutput() == "flash" ) {
+				// in this special case, we're calling from the flash uploader and returning a json response
+				$this->_view = new AdminPlainView( $this->_blogInfo );
+			}
+			else {
+				$this->_view = new AdminEditBlogTemplateView( $this->_blogInfo, $this->_templateId, $this->_path );				
+			}			
 			
 			$this->_log->debug($_FILES["templateFile"]);	
 			
@@ -53,27 +60,36 @@
 			}
 
 			// we can now move the uploaded file to the destination folder
-			$folder = TemplateSetStorage::getTemplateFolder( $this->_templateId, $this->_blogInfo->getId()) . "/" . $this->_path . "/";			
+			$folder = TemplateSetStorage::getTemplateFolder( $this->_templateId, $this->_blogInfo->getId()) . "/" . $this->_path . "/";
 			
 			// check that the destination folder is writable, or else show a different error message
 			if( !File::isWritable( $folder )) {
 				$this->_view->setErrorMessage( $this->_locale->tr("error_cannot_write_to_folder" ));
 				$this->setCommonData();
-				return( false );				
+				return( false );
 			}
 			
 			$result = $uploads->process( $folder );
 			
+			foreach( $result as $r ) 
+				$this->_log->debug($r->getFileName()." - ".$r->getError());
+			
 			// check if the file was correctly saved
             if( $result[0]->getError() != 0 ) {
-                $this->_view->setErrorMessage( $this->_locale->tr("error_uploading_template_file"));
+               	$this->_view->setErrorMessage( $this->_locale->tr("error_uploading_template_file"));
 				$this->setCommonData();
                 return false;
             }
 
-			$this->_view->setSuccessMessage( $this->_locale->tr( "template_file_uploaded_ok" ));			
+			//
+			// somehow we can't return json responses to the flash uploader, so we'll have to just
+			// return the plain string "OK" to indicate successful upload
+			//
+			if( $this->_request->getOutput() == "flash" )
+				$this->_view->setSuccessMessage( "OK" );
+			else
+				$this->_view->setSuccessMessage( $this->_locale->tr( "template_file_uploaded_ok" ));			
 			$this->setCommonData();
-
 			return true;
 		}
 	}

Modified: plog/trunk/class/action/admin/adminuploadtemplatefileaction.class.php
===================================================================
--- plog/trunk/class/action/admin/adminuploadtemplatefileaction.class.php	2007-09-22 09:42:27 UTC (rev 5946)
+++ plog/trunk/class/action/admin/adminuploadtemplatefileaction.class.php	2007-09-23 20:46:56 UTC (rev 5947)
@@ -5,6 +5,7 @@
     lt_include( PLOG_CLASS_PATH."class/file/fileuploads.class.php" );	
 	lt_include( PLOG_CLASS_PATH."class/view/admin/adminsitetemplateslistview.class.php" );	
 	lt_include( PLOG_CLASS_PATH."class/data/validator/uploadvalidator.class.php" );
+	lt_include( PLOG_CLASS_PATH."class/view/admin/adminplainview.class.php" );		
 
 	class AdminUploadTemplateFileAction extends AdminBaseTemplateEditorAction
 	{
@@ -29,7 +30,13 @@
 		
 		function perform()
 		{
-			$this->_view = new AdminEditTemplateView( $this->_blogInfo, $this->_templateId, $this->_path );
+			if( $this->_request->getOutput() == "flash" ) {
+				// in this special case, we're calling from the flash uploader and returning a json response
+				$this->_view = new AdminPlainView( $this->_blogInfo );
+			}
+			else {			
+				$this->_view = new AdminEditTemplateView( $this->_blogInfo, $this->_templateId, $this->_path );
+			}
 
 			// process the files and make sure that we're uploading an allowed file
             $uploads = new FileUploads();			
@@ -43,6 +50,7 @@
 			}
 			
 			// check that the destination folder is writable, or else show a different error message
+			$folder = TemplateSetStorage::getTemplateFolder( $this->_templateId ) . "/" . $this->_path . "/";			
 			if( !File::isWritable( $folder )) {
 				$this->_view->setErrorMessage( $this->_locale->tr("error_cannot_write_to_folder" ));
 				$this->setCommonData();
@@ -59,8 +67,14 @@
 				$this->setCommonData();
                 return false;
             }
-
-			$this->_view->setSuccessMessage( $this->_locale->tr( "template_file_uploaded_ok" ));
+			//
+			// somehow we can't return json responses to the flash uploader, so we'll have to just
+			// return the plain string "OK" to indicate successful upload
+			//
+			if( $this->_request->getOutput() == "flash" )
+				$this->_view->setSuccessMessage( "OK" );
+			else
+				$this->_view->setSuccessMessage( $this->_locale->tr( "template_file_uploaded_ok" ));
 			
 			$this->setCommonData();
 

Added: plog/trunk/class/view/admin/adminplainview.class.php
===================================================================
--- plog/trunk/class/view/admin/adminplainview.class.php	                        (rev 0)
+++ plog/trunk/class/view/admin/adminplainview.class.php	2007-09-23 20:46:56 UTC (rev 5947)
@@ -0,0 +1,42 @@
+<?php
+
+	lt_include( PLOG_CLASS_PATH."class/view/admin/adminplainview.class.php" );
+
+	/**
+	 * \ingroup View
+	 *
+	 * This view does not depend on Smarty to generate its contents
+	 * so it's useful to return plain text strings, for example
+	 */
+	class AdminPlainView extends AdminView
+	{
+	
+		private $_message;
+	
+		function __construct( $blogInfo )
+		{
+			$this->AdminView( $blogInfo );
+		}
+		
+		function setOutput( $message )
+		{
+			$this->_message = $message;
+		}
+		
+		function setErrorMessage( $message )
+		{
+			$this->setOutput( $message );
+		}
+		
+		function setSuccessMessage( $message )
+		{
+			$this->setOutput( $message );
+		}		
+		
+		function render()
+		{
+			echo( $this->_message );
+		}
+	}
+
+?>
\ No newline at end of file

Modified: plog/trunk/class/view/admin/ajax/adminajaxview.class.php
===================================================================
--- plog/trunk/class/view/admin/ajax/adminajaxview.class.php	2007-09-22 09:42:27 UTC (rev 5946)
+++ plog/trunk/class/view/admin/ajax/adminajaxview.class.php	2007-09-23 20:46:56 UTC (rev 5947)
@@ -12,6 +12,11 @@
 			$this->AjaxView();
 		}
 		
+		function setUserInfo( $userInfo )
+		{
+			$this->_params->setValue( "user", $userInfo );
+		}
+		
 		function render()
 		{
 			// simply serialize the array with the parameters as json stream and send it to the client

Added: plog/trunk/js/ui/assets/upload/icon_upload_error-16.png
===================================================================
(Binary files differ)


Property changes on: plog/trunk/js/ui/assets/upload/icon_upload_error-16.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: plog/trunk/js/ui/assets/upload/upload.css
===================================================================
--- plog/trunk/js/ui/assets/upload/upload.css	2007-09-22 09:42:27 UTC (rev 5946)
+++ plog/trunk/js/ui/assets/upload/upload.css	2007-09-23 20:46:56 UTC (rev 5947)
@@ -31,12 +31,17 @@
 	
 }
 
+.Lifetype_UI_Upload_UploadErrorMessage
+{
+	color: red;
+}
+
 span.Lifetype_UI_ProgressBar {
 	background-color:#FFFFFF;
 	display:block;
 	font-size:10px;
 	height:4px;
-	margin-bottom:10px;
+	margin-bottom:2px;
 	margin-top:2px;
-	width:200px;
+	width:400px;
 }
\ No newline at end of file

Modified: plog/trunk/js/ui/pages/templateeditor.js
===================================================================
--- plog/trunk/js/ui/pages/templateeditor.js	2007-09-22 09:42:27 UTC (rev 5946)
+++ plog/trunk/js/ui/pages/templateeditor.js	2007-09-23 20:46:56 UTC (rev 5947)
@@ -269,4 +269,7 @@
 	// reload the list when successfully deleting an item and processing one of the forms
 	Lifetype.Forms.Events.performRequestSuccessEvent.subscribe( function() { Lifetype.UI.DataTable.reload( Lifetype.UI.Pages.TemplateEditor.currentUrl ); });
 	Lifetype.Forms.Events.formProcessorSuccessEvent.subscribe( function() { Lifetype.UI.DataTable.reload(  Lifetype.UI.Pages.TemplateEditor.currentUrl ); });
+	
+	// and also when successfully uploading files
+	Lifetype.UI.Upload.Events.allFilesUploaded.subscribe( function() { Lifetype.UI.DataTable.reload( Lifetype.UI.Pages.TemplateEditor.currentUrl ); });
 });
\ No newline at end of file

Modified: plog/trunk/js/ui/upload.js
===================================================================
--- plog/trunk/js/ui/upload.js	2007-09-22 09:42:27 UTC (rev 5946)
+++ plog/trunk/js/ui/upload.js	2007-09-23 20:46:56 UTC (rev 5947)
@@ -9,8 +9,9 @@
  * Events generated by this class, to which other code can hook up to
  */
 Lifetype.UI.Upload.Events = function() {}
-Lifetype.UI.Upload.Events.allFilesUploaded = new YAHOO.util.CustomEvent('allFilesUploaded');
-Lifetype.UI.Upload.Events.fileUploaded = new YAHOO.util.CustomEvent('fileUploaded');
+Lifetype.UI.Upload.Events.allFilesUploaded = new YAHOO.util.CustomEvent('allFilesUploaded');  // all uploads completed
+Lifetype.UI.Upload.Events.fileUploaded = new YAHOO.util.CustomEvent('fileUploaded'); // one file uploaded
+Lifetype.UI.Upload.Events.uploadError = new YAHOO.util.CustomEvent('uploadError'); // error during the upload
 
 /**
  * The Flash upload object
@@ -39,13 +40,13 @@
 		file_post_name: params.fieldName,
 
 		// Flash file settings
-		file_size_limit : "10240",	// 10 MB
+		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 : false,
-		validate_files: false,
+		use_server_data_event : true,
+		validate_files: true,
 
 		// Event handler settings
 		file_queued_handler: Lifetype.UI.Upload.fileQueued,
@@ -53,6 +54,7 @@
 		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,
 
 		// Flash Settings
 		flash_url : Lifetype.Config.getValue( "base_url") + "/flash/swfupload/swfupload-r6.2.swf",	// Relative to this file
@@ -63,7 +65,7 @@
 		degraded_container_id : "degradedUI",
 
 		// Debug settings
-		debug: true
+		debug: false
 	});
 
     // This is a setting that my Handlers will use. It's not part of SWFUpload
@@ -114,6 +116,14 @@
 }
 
 /**
+ * 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 ) 
@@ -180,7 +190,7 @@
  */
 Lifetype.UI.Upload.uploadError = function(error_code, fileObj, message) 
 {
-
+	var file = fileObj;
 	switch(error_code) {
 		case SWFUpload.ERROR_CODE_QUEUE_LIMIT_EXCEEDED:
 			alert( tr( 'swfu_error_queue_limit_exceeded' ));
@@ -212,23 +222,28 @@
 			return;
 			break;
 		case SWFUpload.ERROR_CODE_HTTP_ERROR:
-			alert( pr( 'swfu_error_http_error', file.name ));
+			//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);
 			break;
 		case SWFUpload.ERROR_CODE_UPLOAD_FAILED:
-			alert( pr( 'swfu_error_upload_failed', file.name ));
+			//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);
 			break;
 		case SWFUpload.ERROR_CODE_IO_ERROR:
-			alert( pr( 'swfu_error_server_error', file.name ));
+			//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);
 			break;
 		case SWFUpload.ERROR_CODE_SECURITY_ERROR:
-			alert( pr( 'swfu_error_security', file.name ));
+			//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);
 			break;
 		default:
-			alert( pr( 'swfu_error_generic', file.name ));
+			//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;				
@@ -273,7 +288,7 @@
 	
 	// display the progress bar
 	var progress = Lifetype.Dom.$( file.id + "progress" );
-	var percent = Math.ceil(( bytesLoaded / file.size ) * 200 );	
+	var percent = Math.ceil(( bytesLoaded / file.size ) * 400 );	
 	progress.style.width = percent + "px";
 	progress.style.backgroundColor = "green";
 }
@@ -285,36 +300,72 @@
  * @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.uploadFileComplete = 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
 	// indicate completion
 	Lifetype.UI.Upload.uploadProgress( file, file.size );
 	
+	// throw our custom event for successful uploads
+	var eventParams = { file:file, upload:Lifetype.UI.Upload.swfu, serverData:serverData };	
+
+	if( serverData == "OK" ) {
+		Lifetype.UI.Upload._setFileSuccess( file, serverData );
+		
+		// fire the event indicating that the upload failed because of an error message
+		// coming from the server
+		Lifetype.UI.Upload.Events.uploadError.fire( eventParams );		
+	}
+	else {
+		Lifetype.UI.Upload._setFileError( file, serverData );
+		
+		// fire the event to indicate successful upload
+		Lifetype.UI.Upload.Events.fileUploaded.fire( eventParams );		
+	}
+}
+
+Lifetype.UI.Upload._setFileSuccess = function( file, serverData )
+{
 	// modify the <li> element that contains the file name
 	var li = document.getElementById(file.id);
 	li.className = "Lifetype_UI_Upload_uploadCompleted";
+
+	// get the delete icon, it's needed below
+	var deleteBtn = Lifetype.Dom.$( file.id + 'deletebtn' );
+	deleteBtn.onclick = '';
+	var deleteIcon = Lifetype.Dom.$( file.id + 'delete_icon' );	
 	
 	// change the 'delete' button into an 'success' button
+	deleteIcon.src = Lifetype.Config.getValue( 'base_url' ) + '/js/ui/assets/upload/icon_success-16.png';
+}
+
+Lifetype.UI.Upload._setFileError = function( file, serverData )
+{
+	// modify the <li> element that contains the file name
+	var li = document.getElementById(file.id);
+	li.className = "Lifetype_UI_Upload_uploadCompleted";
+
+	// get the delete icon, it's needed below
 	var deleteBtn = Lifetype.Dom.$( file.id + 'deletebtn' );
 	deleteBtn.onclick = '';
-	var deleteIcon = Lifetype.Dom.$( file.id + 'delete_icon' );
-	deleteIcon.src = Lifetype.Config.getValue( 'base_url' ) + '/js/ui/assets/upload/icon_success-16.png';
+	var deleteIcon = Lifetype.Dom.$( file.id + 'delete_icon' );	
 	
-	// throw our custom event
-	Lifetype.UI.Upload.Events.fileUploaded.fire( { file:file, upload:Lifetype.UI.Uploads.swfu } );
+	// change the 'delete' button into an 'error' button
+	deleteIcon.src = Lifetype.Config.getValue( 'base_url' ) + '/js/ui/assets/upload/icon_upload_error-16.png';		
+	
+	// show the error message
+	var errorMsg = document.createElement( 'span' );
+	errorMsg.className = 'Lifetype_UI_Upload_UploadErrorMessage';
+	errorMsg.appendChild( document.createTextNode( serverData ));
+	li.appendChild( errorMsg );
 }
 
 /**
  * Event generated when the whole queue has been uploaded
  */
-Lifetype.UI.Upload.uploadQueueComplete = function(file) 
+Lifetype.UI.Upload.uploadQueueComplete = function() 
 {
-	/*var div = document.getElementById("queueinfo");
-	div.innerHTML = "All files uploaded..."
-	document.getElementById("cancelqueuebtn").style.display = "none";*/
-
 	// notify other code that the queue has been completely uploaded
-	Lifetype.UI.Upload.Events.allFilesUploaded.fire( { file:file, upload:Lifetype.UI.Uploads.swfu } );
+	Lifetype.UI.Upload.Events.allFilesUploaded.fire( { upload:Lifetype.UI.Upload.swfu } );
 }
\ No newline at end of file

Modified: plog/trunk/templates/admin/editblogtemplate.template
===================================================================
--- plog/trunk/templates/admin/editblogtemplate.template	2007-09-22 09:42:27 UTC (rev 5946)
+++ plog/trunk/templates/admin/editblogtemplate.template	2007-09-23 20:46:56 UTC (rev 5947)
@@ -3,9 +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/ui/pages/templateeditor.js"}
 {js src="js/swfupload/swfupload-r6.2.js"}
 {js src="js/ui/upload.js"}
+{js src="js/ui/pages/templateeditor.js"}
 {check_perms perm=add_blog_template}
 <div class="extraFunctions">
 	<div class="left">		

Modified: plog/trunk/templates/admin/edittemplate.template
===================================================================
--- plog/trunk/templates/admin/edittemplate.template	2007-09-22 09:42:27 UTC (rev 5946)
+++ plog/trunk/templates/admin/edittemplate.template	2007-09-23 20:46:56 UTC (rev 5947)
@@ -1,7 +1,10 @@
 {include file="$blogtemplate/header.template"}
 {include file="$blogtemplate/navigation.template" showOpt=siteTemplates title=$locale->tr("siteTemplates")}
 <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/ui/upload.js"}
 {js src="js/ui/pages/templateeditor.js"}
 {check_perms adminperm=add_template}
 <div class="extraFunctions">

Modified: plog/trunk/templates/admin/newblogtemplatefile_form.template
===================================================================
--- plog/trunk/templates/admin/newblogtemplatefile_form.template	2007-09-22 09:42:27 UTC (rev 5946)
+++ plog/trunk/templates/admin/newblogtemplatefile_form.template	2007-09-23 20:46:56 UTC (rev 5947)
@@ -12,7 +12,12 @@
 		{** container for the flash-based uploader **}		
 		<div id="flashUI" style="display: none;">
 		  <script type="text/javascript">
-			Lifetype.UI.Upload.init( {literal}{{/literal} container:'flashUI', fieldName:'templateFile', uploadButton:'addFile', url:'{$url->getAdminUrl()}?op=uploadBlogTemplateFile&path='+Lifetype.Dom.$('currentPath').value+'&output=flash&templateId='+Lifetype.Dom.$('templateId').value+'&{$session}={$smarty.cookies.LThttplocalhosttrunk}'{literal}}{/literal});
+			Lifetype.UI.Upload.init( {literal}{{/literal} 
+				container:'flashUI', 
+				fieldName:'templateFile', 
+				uploadButton:'addFile', 
+				fileSizeLimit: {$config->getValue("maximum_file_upload_size")},
+				validFiles: '{$config->getValue("template_editor_editable_extensions")}',				url:'{$url->getAdminUrl()}?op=uploadBlogTemplateFile&path='+Lifetype.Dom.$('currentPath').value+'&output=flash&templateId='+Lifetype.Dom.$('templateId').value+'&{$session}={$smarty.cookies.LThttplocalhosttrunk}'{literal}}{/literal});
 		  </script>			
 		</div>
   </div>

Modified: plog/trunk/templates/admin/newtemplatefile_form.template
===================================================================
--- plog/trunk/templates/admin/newtemplatefile_form.template	2007-09-22 09:42:27 UTC (rev 5946)
+++ plog/trunk/templates/admin/newtemplatefile_form.template	2007-09-23 20:46:56 UTC (rev 5947)
@@ -5,16 +5,26 @@
     <label for="resourceFile_1">{$locale->tr("file")}</label>
 	<span class="required">*</span>
 	<div class="formHelp">{$locale->tr("new_template_file_help")}</div>  
-    <input type="file" id="templateFile" name="templateFile" />
+	{** used whenever flash or javascript are not available **}
+	<div id="degradedUI">
+		<input type="file" id="templateFile" name="templateFile" />
+	</div>			
+	{** container for the flash-based uploader **}		
+	<div id="flashUI" style="display: none;">
+	  <script type="text/javascript">
+		Lifetype.UI.Upload.init( {literal}{{/literal} 
+			container:'flashUI', 
+			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});
+	  </script>			
+	</div>
   </div>
   </fieldset>
   <div class="buttons" id="buttons">
     <input type="reset" name="resetButton" value="{$locale->tr("reset")}" />
-    <input type="submit" name="addFile" onclick="showProgressBar('buttons')" value="{$locale->tr("add")}" />
+    <input type="submit" name="addFile" value="{$locale->tr("add")}" id="addFile" />
     <input type="hidden" name="op" value="uploadTemplateFile" />
   </div>
-  <div class="status_bar" id="status_bar" style="display:none">
-    {$locale->tr("upload_in_progress")}&nbsp;
-    <img src="imgs/admin/spinner_small.gif" alt="Spinner" />    
-  </div>
  </form>
\ No newline at end of file



More information about the pLog-svn mailing list