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
