[Checkins] SVN: z3c.widget/trunk/ using passed config url instead of hard coded flashuploadvars.xml

Bernd Roessl bernd.roessl at lovelysystems.com
Mon Sep 3 09:46:30 EDT 2007


Log message for revision 79449:
  using passed config url instead of hard coded flashuploadvars.xml

Changed:
  U   z3c.widget/trunk/CHANGES.txt
  U   z3c.widget/trunk/flash/fla/upload.fla
  U   z3c.widget/trunk/flash/src/z3c/widget/flashupload/Upload.as
  U   z3c.widget/trunk/setup.py
  U   z3c.widget/trunk/src/z3c/widget/flashupload/resources/upload.js
  U   z3c.widget/trunk/src/z3c/widget/flashupload/resources/upload.swf
  U   z3c.widget/trunk/src/z3c/widget/flashupload/upload.py
  U   z3c.widget/trunk/src/z3c/widget/flashupload/uploadform.pt

-=-
Modified: z3c.widget/trunk/CHANGES.txt
===================================================================
--- z3c.widget/trunk/CHANGES.txt	2007-09-03 12:27:08 UTC (rev 79448)
+++ z3c.widget/trunk/CHANGES.txt	2007-09-03 13:46:30 UTC (rev 79449)
@@ -3,20 +3,23 @@
 ======================
 
 
-After:
-======
+2007/09/03 0.1.2
+================
 
+ - using passed config url instead of hard coded flashuploadvars.xml
+
+
 2007/08/06 0.1.1
 ================
 
-- flashupload: better skinnability for upload.swf. cleanup folder
-  structure for flash stuff.
+ - flashupload: better skinnability for upload.swf. cleanup folder
+   structure for flash stuff.
 
 
 2007/06/14 0.1.0:
 =================
 
-- z3c.widget.image: added translations for es
+ - z3c.widget.image: added translations for es
 
-- update to newest bootstrap.py version
+ - update to newest bootstrap.py version
 

Modified: z3c.widget/trunk/flash/fla/upload.fla
===================================================================
(Binary files differ)

Modified: z3c.widget/trunk/flash/src/z3c/widget/flashupload/Upload.as
===================================================================
--- z3c.widget/trunk/flash/src/z3c/widget/flashupload/Upload.as	2007-09-03 12:27:08 UTC (rev 79448)
+++ z3c.widget/trunk/flash/src/z3c/widget/flashupload/Upload.as	2007-09-03 13:46:30 UTC (rev 79449)
@@ -1,24 +1,24 @@
 /**
-    Widget for uploading one or more Files to a Zope3 Server. 
+    Widget for uploading one or more Files to a Zope3 Server.
 
     for autentication we need to get a ticket id befor sending the post request.
-    
+
     step1: get the ticket:
-    
+
     ./ticket.html/filename=myfile.jpg
     this returns us a target path:
-    targeturl=http://...... 
+    targeturl=http://......
     this is the target where we post the file
-    
+
     step2: send file to the given url
-    
+
     configuration:
     on _level0 we receive the information about where to get the ticket - inside
-    the ticket we receive the url where to upload. 
-    
+    the ticket we receive the url where to upload.
+
     _level0.target_path -> where to get the ticket
-    _level0.allowed_types -> space seperated files of allowed types. 
-    
+    _level0.allowed_types -> space seperated files of allowed types.
+
     _level0.allowed_types = "Images (all jpgs and pngs); jpg jpeg png gif|
 
     @author <manfred.schwendinger at lovelysystems.com>
@@ -29,64 +29,64 @@
 import flash.net.FileReference;
 
 class z3c.widget.flashupload.Upload extends MovieClip{
-   
-    
+
+
     private var info_mc:MovieClip;
-        
+
     private var file_array:Array;
     private var fileref:FileReferenceList;
     private var file:FileReference; // currently active file for upload
-    
+
     private var allowed_types:Array;
     private var debug_txt:TextField;
-    
+
     private var upload_complete_str:String;
-    
+
     private var load_vars:LoadVars;
-    
+
     private var overall_total:Number;
     private var overall_loaded:Number;
-    
+
     private var file_counter:Number;
     private var file_amount:Number;
-	
+
 	private var data_xml:XML;
-    
+
 	private var error_msg:String;
-	
-	private var js_command_queue:Array; // only one getURL can be called inside one frame. so lets make a queue to avoid troubles. 
-	
+
+	private var js_command_queue:Array; // only one getURL can be called inside one frame. so lets make a queue to avoid troubles.
+
     public function Upload(){
-        
 
+
         allowed_types = new Array();
 		js_command_queue = new Array();
-        
+
 		overall_total = 0;
         overall_loaded = 0;
         file_counter = 0;
-        
+
 		log("initialize. target: "+_level0.target_path);
-    
+
         // allow upload from the local host
         System.security.allowDomain("http://localhost/");
-        
+
         fileref = new FileReferenceList();
         fileref.addListener(this);
-        
+
 		// we do not want to have an overall info if there is only 1 file uploading...
 		info_mc.overallinfo_mc._visible = false;
-		
+
         info_mc.fileinfo_mc.progress_mc.bar_mc.gotoAndStop(1);
         info_mc.overallinfo_mc.progress_mc.bar_mc.gotoAndStop(1);
-                
+
         info_mc._visible = false;
 
         this.onResize();
         Stage.addListener(this)
-            
-		var xml_url:String = _level0.site_path+"/@@flashuploadvars.xml";
-		
+
+		var xml_url:String = _level0.config_path;
+
 		data_xml = new XML();
 		data_xml["ptr"] = this;
 		data_xml.ignoreWhite = true;
@@ -94,44 +94,44 @@
 		data_xml.load(xml_url);
 		//log("vars url: "+xml_url);
 
-        
+
     }
 
     private function onResize(){
 
         var margin:Number = 5;
         var width:Number = Stage.width - 2*margin;
-        
+
 		// position of the file info (current file name + number)
-		info_mc.filenum_txt._x = width - info_mc.filenum_txt._width; 
-		info_mc.filename_txt._width = info_mc.filenum_txt._x - info_mc.filename_txt._x;		
+		info_mc.filenum_txt._x = width - info_mc.filenum_txt._width;
+		info_mc.filename_txt._width = info_mc.filenum_txt._x - info_mc.filename_txt._x;
 		info_mc.progress_txt.text = "";
 		info_mc.progress_txt._x = width - info_mc.progress_txt._width;
-		
+
 		// file progress positions
 		this.setProgressSize(info_mc.fileinfo_mc, width);
 		// overall progress positions
 		this.setProgressSize(info_mc.overallinfo_mc, width);
     }
-    
+
 	/*
 		sets the size of a bar line (overall and file bars)
 	*/
 	private function setProgressSize(mc:MovieClip, width:Number):Void{
 		mc.label_txt._width = width - mc.progress_txt._width;
 		mc.progress_txt._x = width - mc.progress_txt._width;
-		mc.progress_mc._width = width;			
+		mc.progress_mc._width = width;
 	}
-	
-	
+
+
 	/**
-		parses the language dependend strings. 
+		parses the language dependend strings.
 	*/
 	private function parseDataXML(obj_xml:XML):Void{
 		log("xml loaded: "+obj_xml.firstChild);
 		var nodes = obj_xml.firstChild.childNodes;
 		for (var i=0; i<nodes.length; i++){
-			var nodeval:String = nodes[i].firstChild.nodeValue; 
+			var nodeval:String = nodes[i].firstChild.nodeValue;
 			switch(nodes[i].attributes.name){
 				case "file_progress" :
 					info_mc.fileinfo_mc.label_txt.text = nodeval;
@@ -159,12 +159,12 @@
 			}
 		}
 	}
-	
-	
+
+
     /**
         creates an array with all allowed types
         the data gets parsed from the variable of _level0.allowed_types
-        
+
         var file:FileReference;
 
         var allTypes:Array = new Array();
@@ -177,19 +177,19 @@
         textTypes.description = "Text Files (*.txt, *.rtf)";
         textTypes.extension = "*.txt;*.rtf";
         allTypes.push(textTypes);
-        
+
         arr = [{description:'a description', extension:'*.jpg'}, .....]
     */
     public function saveAllowedTypes(arr:Array):Void{
         allowed_types = arr;
     }
-    
+
     /**
         starts the browsing process for uploading files
     */
     public function browse():Void{
 		js_command_queue.push("javascript:z3cFlashUploadDisableBrowseButton()");
-        
+
         if (allowed_types.length>0){
             log("browse with limited filetypes: "+allowed_types);
             var allTypes:Array = new Array();
@@ -208,24 +208,24 @@
             log("browse");
             fileref.browse();
         }
-        
+
     }
 
     /**
         starts the upload queue
     */
     public function onSelect(fileRefList:FileReferenceList):Void{
-        
+
 		file_array = fileRefList.fileList;
-		log("uploadFiles: "+file_array.length);        
-        
-		// overall progress should be visible on mutliple fileupload only. 
+		log("uploadFiles: "+file_array.length);
+
+		// overall progress should be visible on mutliple fileupload only.
 		info_mc.overallinfo_mc._visible = (file_array.length > 1);
-		
+
         for (var i=0; i<file_array.length; i++){
             overall_total+=file_array[i].size;
         }
-        
+
         if (file_array.length>0){
             info_mc._visible = true;
             file_counter = 0;
@@ -233,10 +233,10 @@
             loadNextTicket();
         }
     }
-    
+
     /**
         loads the next upload ticket via loadvars
-        the ticket holds some security information which 
+        the ticket holds some security information which
         are required for the upload
     */
     public function loadNextTicket():Void{
@@ -245,17 +245,17 @@
         // fired because the file was so small that onProgress was
         // never fired
         this.updateFileProgress(100);
-        
+
         if (file_array.length == 0){
             log("all files uploaded.");
 			// all files uploaded. Fire JavaScript Event
 			js_command_queue.push("javascript:z3cFlashUploadOnUploadCompleteFEvent()");
-			
+
 			info_mc.filename_txt.text = upload_complete_str;
             this.updateOverallProgress(100);
             return;
         }
-        
+
         load_vars = new LoadVars();
         load_vars["ptr"] = this;
         load_vars.onData = function(d:String){
@@ -264,52 +264,52 @@
         }
         load_vars.load(_level0.target_path+"/@@ticket");
     }
-    
-	
+
+
     /**
         loads the next file inside the file_array
     */
-    public function loadNextFile(ticket:String):Void{        
+    public function loadNextFile(ticket:String):Void{
         file = FileReference(file_array.pop());
-        
+
         var url:String = _level0.target_path+"?ticket="+ticket;
-        
+
         log("uploadNextFile: "+url);
-        
+
         file.addListener(this);
         file.upload(url);
     }
-    
-	
+
+
     public function log(msg:String):Void{
         trace(msg);
-		
+
 		if (msg.length>500) msg = msg.substring(msg.length-100, msg.length);
-		
+
         _level0.debug_txt.text+=msg+"\n";
 		_level0.debug_txt.scroll = _level0.debug_mc.debug_txt.maxscroll;
     }
-    
-	
-	
+
+
+
     /**
         FileReference Listeners....
     */
     public function onProgress(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void{
-        
+
 		var percent:Number = Math.round(bytesLoaded/bytesTotal * 100);
 		if (percent>100) percent=100; // for any strange reason, the totalbytes can be smaller then the loade bytes :)
         log("onProgress " + bytesLoaded + " bytesTotal: " + bytesTotal+" = "+percent+"%");
 
         this.updateFileProgress(percent);
-       
+
         var percent_complete:Number = Math.round((overall_loaded+bytesLoaded) / overall_total * 100);
 
         // hack for waiting time after last upload is done
-        // 100% should only be displayed when the LAST object fired his READY event. 
-        if (percent_complete > 95) percent_complete = 95; 
+        // 100% should only be displayed when the LAST object fired his READY event.
+        if (percent_complete > 95) percent_complete = 95;
 		this.updateOverallProgress(percent_complete);
-        
+
 		info_mc.progress_txt.text = getByteString(overall_loaded + bytesLoaded) + "/" + getByteString(overall_total);
     }
 
@@ -318,13 +318,13 @@
         info_mc.fileinfo_mc.progress_mc.bar_mc.gotoAndStop(percent);
         info_mc.fileinfo_mc.progress_txt.text = percent+"%";
     }
-    
+
     public function updateOverallProgress(percent:Number):Void{
         if (percent>100) percent = 100;
         info_mc.overallinfo_mc.progress_mc.bar_mc.gotoAndStop(percent);
         info_mc.overallinfo_mc.progress_txt.text = percent+"%";
     }
-    
+
 	/**
 		returns a nice prepared string
 	*/
@@ -342,14 +342,14 @@
 			return String(Math.round(bytes/1024)+"KB");
 		}
 	}
-	
+
     public function onComplete(file:FileReference):Void{
         log("file upload complete");
-        
+
         overall_loaded+=file.size;
         this.loadNextTicket();
-		
-		// tell javascript that the file is uploaded. 
+
+		// tell javascript that the file is uploaded.
 		js_command_queue.push("javascript:z3cFlashUploadOnFileCompleteFEvent('"+file.name+"')");
     }
 
@@ -357,11 +357,11 @@
         log("onCancel");
 		js_command_queue.push("javascript:z3cFlashUploadOnCancelFEvent()");
     }
-    
+
     public function onOpen(file:FileReference):Void{
         log("onOpen: "+file.name+" : "+file.size);
         file_counter++;
-        
+
         info_mc.filename_txt.text = file.name +" ("+Math.round(file.size/1024)+"kb)";
         info_mc.filenum_txt.text = file_counter+"/"+file_amount;
     }
@@ -373,12 +373,12 @@
 
     public function onIOError(file:FileReference):Void {
         log("onIOError: " + file.name);
-		js_command_queue.push("javascript:z3cFlashUploadOnErrorFEvent('"+this.error_msg+"')");		
+		js_command_queue.push("javascript:z3cFlashUploadOnErrorFEvent('"+this.error_msg+"')");
     }
-    
+
     public function onSecurityError(file:FileReference, errorString:String):Void {
         log("onSecurityError: " + file.name + " errorString: " + errorString);
-		js_command_queue.push("javascript:z3cFlashUploadOnErrorFEvent('"+this.error_msg+"')");		
+		js_command_queue.push("javascript:z3cFlashUploadOnErrorFEvent('"+this.error_msg+"')");
     }
 
     public function onEnterFrame():Void{
@@ -387,12 +387,12 @@
             _level0.startBrowse = "";
             this.browse();
         }
-		
+
 		if (js_command_queue.length>0){
 			var command = js_command_queue.shift();
 			getURL(command);
 		}
-		
+
     }
-	
+
 }
Modified: z3c.widget/trunk/setup.py
===================================================================
--- z3c.widget/trunk/setup.py	2007-09-03 12:27:08 UTC (rev 79448)
+++ z3c.widget/trunk/setup.py	2007-09-03 13:46:30 UTC (rev 79449)
@@ -2,7 +2,7 @@
 from setuptools import setup, find_packages
 
 setup(name='z3c.widget',
-      version='0.1.1',
+      version='0.1.2',
       author = "Zope Community",
       author_email = "zope3-dev at zope.org",
       description = "Additional Zope3 Widgets",

Modified: z3c.widget/trunk/src/z3c/widget/flashupload/resources/upload.js
===================================================================
--- z3c.widget/trunk/src/z3c/widget/flashupload/resources/upload.js	2007-09-03 12:27:08 UTC (rev 79448)
+++ z3c.widget/trunk/src/z3c/widget/flashupload/resources/upload.js	2007-09-03 13:46:30 UTC (rev 79449)
@@ -4,7 +4,7 @@
         window.document["fuploader"].SetVariable("startBrowse", "go");
     }else if(document.fuploader){
         document.fuploader.SetVariable("startBrowse", "go");
-    }         
+    }
 }
 
 function z3cFlashUploadDisableBrowseButton(){
@@ -28,24 +28,28 @@
 
 /**
     called when the user presses the cancel button while browsing
-*/  
+*/
 function z3cFlashUploadOnCancelFEvent(){
     if (typeof(z3cFlashUploadOnCancelEvent) =="function"){
         z3cFlashUploadOnCancelEvent();
-    }    
+    }
 }
 
 /**
-    called if an error occured during the upload progress 
+    called if an error occured during the upload progress
 */
 function z3cFlashUploadOnErrorFEvent(error_str){
     if (typeof(z3cFlashUploadOnErrorEvent) =="function"){
         z3cFlashUploadOnErrorEvent(error_str);
-    }    
+    }
 }
+
+function prepareUrlForFlash(url){
+    return escape(url).split("+").join("%2B");
+}
 /**
     creates a instance of the multifile upload widget
-    insidde the target div. 
+    insidde the target div.
     Required global variable: swf_upload_target_path
 */
 function createFlashUpload()
@@ -55,12 +59,12 @@
     so.addParam("wmode", "transparent");
 
     // we need to manually quote the "+" signs to make sure they do not
-    // result in a " " sign inside flash    
-    var quoted_location_url = escape(window.location.href).split("+").join("%2B");
-    so.addVariable("target_path", swf_upload_target_path);
-    so.addVariable("base_path", quoted_location_url);
-    so.addVariable("site_path", swf_upload_site_url);
+    // result in a " " sign inside flash
 
+    so.addVariable("target_path", prepareUrlForFlash(swf_upload_target_path));
+    so.addVariable("site_path", prepareUrlForFlash(swf_upload_site_url));
+    so.addVariable("config_path", prepareUrlForFlash(swf_upload_config_url));
+
     var success = so.write("flashuploadtarget");
 
     if (!success){

Modified: z3c.widget/trunk/src/z3c/widget/flashupload/resources/upload.swf
===================================================================
(Binary files differ)

Modified: z3c.widget/trunk/src/z3c/widget/flashupload/upload.py
===================================================================
--- z3c.widget/trunk/src/z3c/widget/flashupload/upload.py	2007-09-03 12:27:08 UTC (rev 79448)
+++ z3c.widget/trunk/src/z3c/widget/flashupload/upload.py	2007-09-03 13:46:30 UTC (rev 79449)
@@ -27,19 +27,19 @@
     to configure the flash upload swf"""
 
     allowedFileTypes = () # empty tuple for all file types
-    
-    
 
+
+
 class UploadFile(object):
     """handles file upload for the flash client.
     flash client sends the data via post as u'Filedata'
     the filename gets sent as: u'Filename'
     """
     interface.implements(IUploadFileView)
-    
+
     def __call__(self):
         ticket = self.request.form.get('ticket',None)
-       
+
         url = None
         if ticket is None:
             # we cannot set post headers in flash, so get the
@@ -65,33 +65,35 @@
         # get the namechooser for the container by adapting the
         # container to INameChooser
         nameChooser = INameChooser(self.context)
-        
+
         # namechooser selects a name for us
         name = nameChooser.chooseName(fileName, f)
 
         # check precondition
         checkObject(self.context, name, f)
-        
+
         # store the file inside the container
         removeSecurityProxy(self.context)[name]=f
 
         event.notify(FlashUploadedEvent(f))
         return "filename=%s" %name
-        
-        
+
+
 class UploadForm(BrowserView):
     """displays the swf for uploading files
     """
-    
+
     template = ViewPageTemplateFile('uploadform.pt')
     interface.implements(IFlashUploadForm)
 
     @property
+    def configUrl(self):
+        return '%s/@@flashuploadvars.xml' % self.siteUrl
+
+    @property
     def siteUrl(self):
-        import pdb; pdb.set_trace()
+        return absoluteURL(ISite(None), self.request)
 
-        return absoluteURL(ISite(None), self.request)
-    
     def __call__(self, *args, **kw):
         if haveResourceLibrary:
             resourcelibrary.need('z3c.widget.flashupload')

Modified: z3c.widget/trunk/src/z3c/widget/flashupload/uploadform.pt
===================================================================
--- z3c.widget/trunk/src/z3c/widget/flashupload/uploadform.pt	2007-09-03 12:27:08 UTC (rev 79448)
+++ z3c.widget/trunk/src/z3c/widget/flashupload/uploadform.pt	2007-09-03 13:46:30 UTC (rev 79449)
@@ -12,6 +12,7 @@
         var swf_upload_url='${context/++resource++upload.swf}';
         var swf_upload_target_path='${context/@@absolute_url/url:quote}/uploadfile';
         var swf_upload_site_url='${view/siteUrl}';
+        var swf_upload_config_url = '${view/configUrl}';
         ">   
    </script>
    



More information about the Checkins mailing list