Thank you, but now the next problem:
I read, qx.constant is no longer necessary, but in the source are statements
like

qx.constant.Type.STRING
qx.constant.Net.METHOD_POST
qx.constant.Core.EMPTY
qx.constant.Event.SENDING
qx.constant.Event.COMPLETED

What to do with them?



Sebastian Werner wrote:
> 
> Hi!
> 
> qx.sys.Client was renamed to qx.core.Client. You need to modify this in 
> classes which use the old style.
> 
> Sebastian
> 
> 
> 
> westor schrieb:
>> Hi list, Hi Dietrich,
>> 
>> searching for a file upload button I tryed to implement this solution.
>> But with qooxdoo-0.6.5 I get the follwing error:
>> TypeError - qx.sys has no properties  at .../UploadForm.js:33
>> 
>> Really, there is no qx.sys.Client.
>> I'm new to QOOXDOO, pleas could you or someone help to make this working
>> out?
>> 
>> Many thanx.
>> Torsten Wesolek
>> 
>> 
>> Dietrich Streifert wrote:
>>> Hi Frederic,
>>>
>>> I don't know if this widget will make its way into official qooxdoo. The 
>>> classes are not widely tested but they work for me.
>>>
>>> And yes, if someone wants to adopt them to qooxdoo ore asks me if I want 
>>> to do this the answer is yes and yes.
>>>
>>> I've attached a zip archive containing all four files again and changed 
>>> the extension to zi_ so you have to change it back to zip.
>>>
>>> I hope it finds its way to you now.
>>>
>>> frederic schrieb:
>>>> Hello Dietrich,
>>>> Thanks for this widget ! I use Nabble forum to read the mailinglist
>>>> (http://www.nabble.com/Experimental-file-upload-implementation-tf2630085.html)
>>>> and the test file Upload_1.html was not included in the forum.
>>>> Please, could you send the source code of Upload_1.html in an email to
>>>> the
>>>> mailinglist ?
>>>> Is it planned to include your widget natively in Qooxdoo soon or this
>>>> widget
>>>> will stay as an third-party ?
>>>>
>>>> cheers,
>>>> frederic
>>>>
>>>>
>>>>
>>>> Dietrich Streifert wrote:
>>>>   
>>>>> Hello List!
>>>>>
>>>>> I created a file upload widget built of three classes
>>>>>
>>>>> UploadForm: creates a form tag of and a hidden iframe which is the 
>>>>> target for the form submission
>>>>> UploadButton: highly inspired from David Gerlich which creates a 
>>>>> qx.ui.form.button which overlays an input tag of type file and allows
>>>>> a 
>>>>> file selection button which is a normal qooxdoo button.
>>>>> UploadFile: combines a readonly textfield which holds the selected 
>>>>> filepath and a uploadbutton in a horizontal layout widget.
>>>>>
>>>>> UploadForm: fires a sending and completed event while UploadFile fires
>>>>> a 
>>>>> changeValue event on file selection. There is a setParameter method 
>>>>> which creates hidden input tags as childs of the form tag.
>>>>>
>>>>> I'm using this for a single file upload manager who automatically
>>>>> starts 
>>>>> uploading after file selection. This is done by attaching an 
>>>>> eventlistener of type changeValue to UploadFile which then calls 
>>>>> UploadForm.send().
>>>>>
>>>>> The three classes and a testfile is attached to this mail.
>>>>>
>>>>> Please copy all the files to the
>>>>> qooxdoo/frontend/demo/source/html/test 
>>>>> directory.
>>>>>
>>>>> You have to provide the url to your upload cgi script in the testfile 
>>>>> Upload_1.html
>>>>>
>>>>> One known Problem is that the form tag which is created by UploadForm
>>>>> is 
>>>>> not well stylable so there are some browser independant height and top 
>>>>> position placement problems.
>>>>>
>>>>> -- 
>>>>> Mit freundlichen Grüßen
>>>>> Dietrich Streifert
>>>>> Visionet GmbH
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>   
>>>>>   qooxdoo » Demo
>>>>>   
>>>>>   
>>>>>   
>>>>>
>>>>>
>>>>>   
>>>>>
>>>>>   
>>>>>   
>>>>>   
>>>>>   
>>>>>   
>>>>>     Experimental UploadForm and UploadFile Implementation. 
>>>>>     The class UploadForm creates a hidden iframe which is used
>>>>>     as a target for the form submit. 
>>>>>     An event of type qx.constant.Event.SENDING is fired after submit. 
>>>>>     On completion (iframe completed loading) a
>>>>> qx.constant.Event.COMPLETED
>>>>>     event is fired. 
>>>>>     Upload form implements the methods getIframeTextContent,
>>>>> getIframeHtmlContent
>>>>>     and getIframeXmlContent to get the content of the iframe 
>>>>>     UploadFile fires a "changeValue" event after the selection thruogh
>>>>> the
>>>>> OS fileselector is
>>>>>     completed 
>>>>>     Multiple UploadFile instances are possible. The text field is
>>>>> readonly 
>>>>>   
>>>>>
>>>>>   
>>>>>
>>>>>
>>>>> /*
>>>>> ************************************************************************
>>>>>
>>>>>    qooxdoo - the new era of web development
>>>>>
>>>>>    http://qooxdoo.org
>>>>>
>>>>>    Copyright:
>>>>>      2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
>>>>>
>>>>>    License:
>>>>>      LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
>>>>>
>>>>>    Authors:
>>>>>      * David Gerlich (dgerlich)
>>>>>      * Dietrich Streifert (dietrich)
>>>>>
>>>>> ************************************************************************
>>>>> */
>>>>>
>>>>> /*
>>>>> ************************************************************************
>>>>>
>>>>> #module(ui_io)
>>>>>
>>>>> ************************************************************************
>>>>> */
>>>>>
>>>>> qx.OO.defineClass("qx.visionet.ui.io.UploadButton",
>>>>> qx.ui.layout.CanvasLayout,
>>>>> function(vName, vText, vIcon, vIconWidth, vIconHeight, vFlash)
>>>>> {
>>>>>   qx.ui.layout.CanvasLayout.call(this);
>>>>>   this.set({height:"auto",width:"auto",overflow:"hidden"});
>>>>>
>>>>>   if(vName) {
>>>>>     this.setName(vName);
>>>>>   }
>>>>>
>>>>>   this._button = new qx.ui.form.Button(vText, vIcon, vIconHeight,
>>>>> vFlash);
>>>>>   this.add(this._button);
>>>>>
>>>>>   this._value = '';
>>>>>     
>>>>>   this.addEventListener(qx.constant.Event.MOUSEOVER,
>>>>> this._onmouseover);
>>>>>   this.addEventListener(qx.constant.Event.MOUSEOUT, this._onmouseout);
>>>>>   this.addEventListener(qx.constant.Event.MOUSEDOWN,
>>>>> this._onmousedown);
>>>>>   this.addEventListener(qx.constant.Event.MOUSEUP, this._onmouseup);
>>>>>
>>>>>   this.addEventListener(qx.constant.Event.APPEAR,
>>>>> this._createInputFileTag);
>>>>> });
>>>>>
>>>>>
>>>>> /*
>>>>> ---------------------------------------------------------------------------
>>>>>   PROPERTIES
>>>>> ---------------------------------------------------------------------------
>>>>> */
>>>>>
>>>>> qx.OO.addProperty({ name : "name", type : qx.constant.Type.STRING,
>>>>> defaultValue : qx.constant.Core.EMPTY });
>>>>> qx.OO.addProperty({ name : "value", type : qx.constant.Type.STRING,
>>>>> defaultValue : qx.constant.Core.EMPTY });
>>>>>  
>>>>>  
>>>>> /*
>>>>> ---------------------------------------------------------------------------
>>>>>   MODIFIERS
>>>>> ---------------------------------------------------------------------------
>>>>> */
>>>>>
>>>>> qx.Proto._modifyValue = function(propValue, propOldValue, propData) {
>>>>>   if(this._valueInputOnChange) {
>>>>>     delete this._valueInputOnChange;
>>>>>   }
>>>>>   else {
>>>>>     if (!propValue || propValue == '') {
>>>>>       if (qx.sys.Client.getInstance().isMshtml()) {
>>>>>         this._createInputFileTag();
>>>>>       }
>>>>>       else {
>>>>>         this._input.value = '';
>>>>>       }
>>>>>     }
>>>>>     else {
>>>>>       throw new error("Unable to set value to non null or non
>>>>> empty!");
>>>>>     }    
>>>>>   }
>>>>>   
>>>>>   return true;
>>>>> };
>>>>>
>>>>>
>>>>> qx.Proto._modifyName = function(propValue, propOldValue, propData) {
>>>>>   if(this._input) {
>>>>>     this._input.name = propValue;
>>>>>   }  
>>>>>   return true;
>>>>> };
>>>>>
>>>>>
>>>>> qx.Proto._modifyElement = function(propValue, propOldValue, propData)
>>>>> {
>>>>>   if (propValue) {  
>>>>>           try {  
>>>>>                   var element = this.getElement();
>>>>>      
>>>>> this.setStyleProperty(qx.ui.core.Widget.TAB_PROPERTY_MOZUSERFOCUS,
>>>>> qx.ui.core.Widget.TAB_VALUE_IGNORE);                                      
>>>>>                                                         
>>>>>       this.setStyleProperty("cursor","pointer");                          
>>>>>                                                                           
>>>>>           
>>>>>       this.setStyleProperty("cursor","hand");                             
>>>>>                                                                           
>>>>>                   
>>>>>       this.setStyleProperty("left","0px");                                
>>>>>                                                                           
>>>>>                           
>>>>>       
>>>>>           }
>>>>>           catch (ex) {
>>>>>       this.error("error: ", ex);                          
>>>>>           }               
>>>>>   }
>>>>>   
>>>>>   qx.ui.form.Button.prototype._modifyElement.call(this, propValue,
>>>>> propOldValue, propData);  
>>>>>     
>>>>>   return true;            
>>>>> };
>>>>>
>>>>>
>>>>>
>>>>> /*
>>>>> ---------------------------------------------------------------------------
>>>>>   EVENT-HANDLER
>>>>> ---------------------------------------------------------------------------
>>>>> */
>>>>>
>>>>> qx.Proto._onmouseover = function(e) {
>>>>>   this._button.addState(qx.ui.core.Widget.STATE_OVER);
>>>>>   return  this._button._onmouseover.call(this, e);                
>>>>> };
>>>>>
>>>>>
>>>>> qx.Proto._onmouseup = function(e) {
>>>>>   return  qx.ui.form.Button.prototype._onmouseup.call(this, e);           
>>>>> };
>>>>>
>>>>>
>>>>> qx.Proto._onmousedown = function(e) {
>>>>>   return  qx.ui.form.Button.prototype._onmousedown.call(this, e);         
>>>>> };
>>>>>
>>>>>
>>>>> qx.Proto._onmouseout = function(e) {
>>>>>   this._button.removeState(qx.ui.core.Widget.STATE_OVER);
>>>>>   return  qx.ui.form.Button.prototype._onmouseout.call(this, e);          
>>>>> };
>>>>>
>>>>>
>>>>> qx.Proto._createInputFileTag = function(e) {
>>>>>   if(this._input) {
>>>>>     this._input.name += "_tmp_"; 
>>>>>     this._input.parentNode.removeChild(this._input);
>>>>>     this._input = null;
>>>>>   }
>>>>>
>>>>>   var input = this._input = document.createElement("input");
>>>>>   input.type = "file";
>>>>>   input.name      = this.getName();       
>>>>>   input.style.position = "absolute";      
>>>>>   input.style.left                = "-860px";
>>>>>   input.style.height              = "27px";       
>>>>>   input.style.fontSize = "60px";  
>>>>>   input.style.clip        = "rect(auto, " + 860 + 
>>>>> this._button.getWidthValue()
>>>>> +
>>>>> "px, auto, 860px)";       
>>>>>   input.style.zIndex      = "100";        
>>>>>   input.style.cursor      = "hand";               
>>>>>   input.style.cursor      = "pointer";                    
>>>>>   input.style.filter      = "alpha(opacity=0)";           
>>>>>   input.style.opacity     = "0";          
>>>>>   input.style.MozOutlinestyle     = "none"; 
>>>>>   input.style.hidefocus                           = "true";       
>>>>>   
>>>>>   var _this = this;
>>>>>   input.onchange = function(e) { return _this._onchange(e); };
>>>>>   
>>>>>   this.getElement().appendChild(input);
>>>>> };
>>>>>
>>>>>
>>>>> qx.Proto._onchange = function(e) {
>>>>>   this._valueInputOnChange = true;
>>>>>   this.setValue(this._input.value);  
>>>>> };
>>>>>
>>>>>
>>>>> /*
>>>>> ---------------------------------------------------------------------------
>>>>>   DISPOSER
>>>>> ---------------------------------------------------------------------------
>>>>> */
>>>>>
>>>>> qx.Proto.dispose = function()
>>>>> {
>>>>>   if (this.getDisposed()) {
>>>>>     return;
>>>>>   }
>>>>>
>>>>>   this.removeEventListener(qx.constant.Event.MOUSEOVER,
>>>>> this._onmouseover);
>>>>>   this.removeEventListener(qx.constant.Event.MOUSEOUT,
>>>>> this._onmouseout);
>>>>>   this.removeEventListener(qx.constant.Event.MOUSEDOWN,
>>>>> this._onmousedown);
>>>>>   this.removeEventListener(qx.constant.Event.MOUSEUP,
>>>>> this._onmouseup);
>>>>>   this.removeEventListener(qx.constant.Event.APPEAR,
>>>>> this._createInputFileTag);
>>>>>
>>>>>   if(this._input) {
>>>>>     this._input.parentNode.removeChild(this._input);
>>>>>     this._input.onchange = null;
>>>>>     this._input = null;
>>>>>   }
>>>>>     
>>>>>   this._button.dispose();
>>>>>   this._button = null;
>>>>>
>>>>>   qx.ui.layout.CanvasLayout.prototype.dispose.call(this);
>>>>> };
>>>>>
>>>>>
>>>>> /*
>>>>> ************************************************************************
>>>>>
>>>>>    qooxdoo - the new era of web development
>>>>>
>>>>>    http://qooxdoo.org
>>>>>
>>>>>    Copyright:
>>>>>      2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
>>>>>
>>>>>    License:
>>>>>      LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
>>>>>
>>>>>    Authors:
>>>>>      * David Gerlich (dgerlich)
>>>>>      * Dietrich Streifert (dietrich)
>>>>>
>>>>> ****************
>>> -- 
>>> Mit freundlichen Grüßen
>>> Dietrich Streifert
>>> Visionet GmbH
>>>
>>>
>>>  
>>> -------------------------------------------------------------------------
>>> Take Surveys. Earn Cash. Influence the Future of IT
>>> Join SourceForge.net's Techsay panel and you'll get the chance to share
>>> your
>>> opinions on IT & business topics through brief surveys - and earn cash
>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>> _______________________________________________
>>> qooxdoo-devel mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>>
>>>
>> 
> 
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share
> your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> qooxdoo-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Experimental-file-upload-implementation-tf2630085.html#a9328866
Sent from the qooxdoo-devel mailing list archive at Nabble.com.


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to