Hi! Did you notice my mail to this mailing list? It contains an updated version of my upload widgets:

http://www.nabble.com/Re%3A-Experimental-file-upload-implementation-for-qooxdoo-0.6.5-and-0.6.6-tf3354634.html

The new version is attached as a zip archive where the extension was renamed to zi_ to avoid filtering by firewalls etc.



westor schrieb:
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




--
Mit freundlichen Grüßen
Dietrich Streifert
--
Visionet GmbH
Firmensitz: Am Weichselgarten 7, 91058 Erlangen
Registergericht: Handelsregister Fürth, HRB 6573
Geschäftsführer: Stefan Lindner



-------------------------------------------------------------------------
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