[zeam.form.silva][Sylvain Viollon] Test new iframe code.

[email protected]
Newsgroups gmane.comp.web.zope.silva.cvs
Message-ID <[email protected]>
author:    Sylvain Viollon
date:      Mon Jul 29 14:29:42 2013 +0200
revision:  415:69da39ba67e7 in zeam.form.silva
branch:    2.4
details:   https://hg.infrae.com/zeam.form.silva?cmd=changeset;node=69da39ba67e7
modified:  src/zeam/form/silva/widgets/file.py src/zeam/form/silva/widgets/static/upload.js src/zeam/form/silva/widgets/static/upload.min.js
added:     
removed:   
log:       Test new iframe code.


diffstat:

 src/zeam/form/silva/widgets/file.py              |   7 +-
 src/zeam/form/silva/widgets/static/upload.js     |  55 +++++++++++++----------
 src/zeam/form/silva/widgets/static/upload.min.js |   2 +-
 3 files changed, 34 insertions(+), 30 deletions(-)

diffs (119 lines):

diff -r d8dff88194c8 -r 69da39ba67e7 src/zeam/form/silva/widgets/file.py
--- a/src/zeam/form/silva/widgets/file.py	Mon Jul 29 13:38:18 2013 +0200
+++ b/src/zeam/form/silva/widgets/file.py	Mon Jul 29 14:29:42 2013 +0200
@@ -193,14 +193,13 @@
         """ get information about file upload
         """
         info = self.request.environ['infrae.fileupload.current'].get_status()
-        info['message'] = 'File uploaded'
         return """
             <html>
                 <body>
                     <script>
-                        var $ = window.parent.jQuery;
-                        $(window.parent.document).trigger(
-                            'done-%s-upload', %s);
+                        (function($, document) {
+                            $(document).trigger('upload-%s-done', %s);
+                        })(window.parent.jQuery, window.parent.document);
                     </script>
                 </body>
             </html>
diff -r d8dff88194c8 -r 69da39ba67e7 src/zeam/form/silva/widgets/static/upload.js
--- a/src/zeam/form/silva/widgets/static/upload.js	Mon Jul 29 13:38:18 2013 +0200
+++ b/src/zeam/form/silva/widgets/static/upload.js	Mon Jul 29 14:29:42 2013 +0200
@@ -16,23 +16,28 @@
     })();
 
 
-    var on_iframe_load = function($iframe, handler)  {
+    var IFrameLoad = function($iframe, name)  {
         // helper to bind an event on iframe load
         var iframe = $iframe.get(0),
             iframe_window = iframe.contentWindow,
-            iframe_document = iframe_window.document;
-        var invoke = function() {
-            setTimeout(handler, 50);
+            iframe_document = iframe_window.document,
+            deferred = $.Deferred();
+
+        var fail = function() {
+            deferred.reject();
         };
-        if (iframe_document.readyState == "complete" && iframe.src != 'about:blank') {
-            invoke();
-        } else if (iframe_window.addEventListener) {
-            iframe_window.addEventListener("load", invoke, false);
-            iframe_window.addEventListener("error", invoke, false);
+
+        $(document).one(name, function(event, data) {
+            deferred.resolve(data);
+        });
+        if (iframe_window.addEventListener) {
+            iframe_window.addEventListener("load", fail, false);
+            iframe_window.addEventListener("error", fail, false);
         } else {
-            iframe_window.attachEvent("onload", invoke);
-            iframe_window.attachEvent("onerror", invoke);
+            iframe_window.attachEvent("onload", fail);
+            iframe_window.attachEvent("onerror", fail);
         };
+        return deferred.promise();
     };
 
     var UploadStatusMessage = function($display) {
@@ -266,16 +271,16 @@
             },
             api = {
                 start: function() {
-                    $(document).one('done-' + identifier + '-upload', function(event, data) {
-                        result.resolve(data);
-                    });
                     $('body').append($upload);
                     $field.attr('form', 'upload-' + identifier + '-form');
-                    $upload.find('form').submit();
                     start.done(function() {
-                        on_iframe_load($upload.find('iframe'), function() {
-                            result.reject({message: 'Upload failed (file too big or server error).'});
-                        });
+                        IFrameLoad($upload.find('iframe'), 'upload-' + identifier + '-done').fail(
+                            function() {
+                                result.reject({message: 'Upload failed (file too big or server error).'});
+                            }).done(function (data) {
+                                result.resolve(data);
+                            });
+                        $upload.find('form').submit();
                     }).resolve({
                         'uploaded-length': 0, 'content-type': 'n/a', 'request-length': 0, 'filename': ''});
                 },
@@ -358,15 +363,15 @@
             api = {
                 start: function() {
                     var send = function() {
-                        $(document).one('done-' + identifier + '-upload', function(event, data) {
-                            result.resolve(data);
-                        });
-                        $popup.find('form').submit();
                         start.done(function() {
                             $popup.dialog('close');
-                            on_iframe_load($popup.find('iframe'), function() {
-                                result.reject({message: 'Upload failed (file too big or server error).'});
-                            });
+                            IFrameLoad($popup.find('iframe'), 'upload-' + identifier + '-done').fail(
+                                function() {
+                                    result.reject({message: 'Upload failed (file too big or server error).'});
+                                }).done(function (data) {
+                                    result.resolve(data);
+                                });
+                            $popup.find('form').submit();
                         }).resolve({
                             'uploaded-length': 0, 'content-type': 'n/a', 'request-length': 0, 'filename': ''});
                     };
diff -r d8dff88194c8 -r 69da39ba67e7 src/zeam/form/silva/widgets/static/upload.min.js
--- a/src/zeam/form/silva/widgets/static/upload.min.js	Mon Jul 29 13:38:18 2013 +0200
+++ b/src/zeam/form/silva/widgets/static/upload.min.js	Mon Jul 29 14:29:42 2013 +0200
@@ -1,1 +1,1 @@
-(function($,jsontemplate){var POLL_NETWORK_RETRIES=5,POLL_NETWORK_DELAY=500,POLL_MISSING_RETRIES=20,DONT_NEED_POPUP=function(){var $test=$('<div style="display:none;"><form id="testform1"><input type="file" form="testform2" /></form><form id="testform2"></form></div>'),supported=!1;return $("body").append($test),supported=0===$test.find("#testform1")[0].length&&1===$test.find("#testform2")[0].length,$test.remove(),supported}(),on_iframe_load=function($iframe,handler){var iframe=$iframe.get(0),iframe_window=iframe.contentWindow,iframe_document=iframe_window.document,invoke=function(){setTimeout(handler,50)};"complete"==iframe_document.readyState&&"about:blank"!=iframe.src?invoke():iframe_window.addEventListener?(iframe_window.addEventListener("load",invoke,!1),iframe_window.addEventListene
 r("error",invoke,!1)):(iframe_window.attachEvent("onload",invoke),iframe_window.attachEvent("onerror",invoke))},UploadStatusMessage=function($display){var $empty=$display.children(".upload-d
 isplay-empty"),$uploading=$display.children(".upload-display-uploading"),$done=$display.children(".upload-display-complete"),empty=$empty.children("i").text(),uploading=jsontemplate.Template($uploading.children("i").text(),{}),done=jsontemplate.Template($done.children("i").text(),{}),state="empty",original=$display.data("upload-status"),api={start:function(data){"starting"!=state&&($uploading.children("i").text(uploading.expand(data)),$empty.hide(),$done.hide(),$uploading.show(),state="starting")},progress:function(data){"uploading"==state||data.missing||($uploading.children("i").text(uploading.expand(data)),state="uploading")},done:function(data){"done"!=state&&($done.children("i").text(done.expand(data)),$empty.hide(),$uploading.hide(),$done.show(),state="done")},fail:function(data){("e
 mpty"!=state||data.message)&&($empty.children("i").text(data.message||empty),"empty"!=state&&($uploading.hide(),$done.hide(),$empty.show(),state="empty"))}};return original&&api.done(origina
 l),api},UploadProgress=function($progress){var progress=0;return{start:function(){$progress.progressbar({value:0}).show()},progress:function(data){var updated=0;data.missing||(updated=100*data["uploaded-length"]/data["request-length"]),updated!=progress&&($progress.progressbar({value:updated}),progress=updated)},always:function(){$progress.hide(),progress=0}}},UploadUI=function($field,set_objection,get_upload){var $input=$field.children(".upload-input"),$cancel=$field.children(".upload-cancel"),$clear=$field.children(".upload-clear"),upload=null,objection=null,progress=UploadProgress($field.children(".upload-progress")),status=UploadStatusMessage($field.children(".upload-display")),api={get:function(create){return null==upload&&create&&(upload=get_upload(),upload.register(status),upload.r
 egister(progress),upload.register(ui)),upload}},ui={start:function(){void 0!==set_objection&&(objection=$.Deferred(),set_objection(function(){if("pending"==objection.state()){var $dialog=$('
 <div title="Uploading file"><p>Please wait until the upload is finished ...</p><p class="progress"></p></div>'),$progress=$dialog.find("p.progress"),progress=0;return $dialog.dialog({modal:!0,closeOnEscape:!1,resizable:!1,draggable:!1,beforeClose:function(){return!1}}),$progress.progressbar({value:0}),api.get().register({progress:function(data){var updated=0;data.missing||(updated=100*data["uploaded-length"]/data["request-length"]),updated!=progress&&($progress.progressbar({value:updated}),progress=updated)}}),objection.always(function(){$dialog.dialog("close").remove(),objection=null})}return null})),$cancel.show()},done:function(){$input.attr("value",$field.data("upload-identifier"))},always:function(){null!==objection&&objection.resolve(),$cancel.hide(),upload=null}};return $cancel.on(
 "click",function(){var upload=api.get();null!==upload&&upload.cancel()}),$clear.on("click",function(){var upload=api.get(!0);upload.cancel(),$input.attr("value","")}),api},UploadForm=functio
 n($field,identifier,url){var $upload=$('<div style="display:none"><iframe width="0" height="0" style="display:none"src="about:blank" class="upload-iframe" name="upload-'+identifier+'-iframe"></iframe>'+'<form class="upload-form" enctype="multipart/form-data"'+'method="POST" action="'+url+"?identifier="+identifier+'" target="upload-'+identifier+'-iframe" id="upload-'+identifier+'-form">'+'<input type="reset" class="upload-reset" /></form></div>'),poll_retries=POLL_NETWORK_RETRIES,poll_timeout=null,missing_retries=POLL_MISSING_RETRIES,result=$.Deferred().fail(function(){$upload.find(".upload-reset").click(),$upload.find(".upload-iframe").attr("src","javascript:false;")}).always(function(){null!==poll_timeout&&(clearTimeout(poll_timeout),poll_timeout=null),$upload.remove(),$field.removeAttr(
 "form")}),start=$.Deferred().done(function(){poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY)}),poll=function(){$.ajax({type:"GET",dataType:"json",url:url+"?status&identifier="+identifier}).
 then(function(info){result.notify(info),info.missing&&(missing_retries-=1,missing_retries||result.reject({message:"File does not upload. (is it too big ?)"})),!info["upload-finished"]&&"pending"==result.state()&&missing_retries&&(poll_retries=POLL_NETWORK_RETRIES,poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY))},function(){"pending"==result.state()&&(poll_retries?(poll_retries-=1,poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY)):result.reject({message:"Status check failed: cannot upload file."}))})},api={start:function(){$(document).one("done-"+identifier+"-upload",function(event,data){result.resolve(data)}),$("body").append($upload),$field.attr("form","upload-"+identifier+"-form"),$upload.find("form").submit(),start.done(function(){on_iframe_load($upload.find("iframe"),function(){result
 .reject({message:"Upload failed (file too big or server error)."})})}).resolve({"uploaded-length":0,"content-type":"n/a","request-length":0,filename:""})},cancel:function(){result.reject({})
 },register:function(plugin){void 0!==plugin.start&&start.done(plugin.start);for(var event in{progress:1,done:1,fail:1,always:1})void 0!==plugin[event]&&result[event](plugin[event]);return api}};return api},UploadPopup=function(identifier,url){var $popup=$('<div  title="Upload a file"><form class="upload-form" enctype="multipart/form-data"method="POST" action="'+url+"?identifier="+identifier+'" target="upload-'+identifier+'-iframe" id="upload-'+identifier+'-form">'+'<input type="file" name="file-we-are-uploading" class="upload-file" /></form>'+'<iframe width="0" height="0" style="display:none"'+'src="about:blank" class="upload-iframe" name="upload-'+identifier+'-iframe"></iframe></div>'),poll_retries=POLL_NETWORK_RETRIES,poll_timeout=null,missing_retries=POLL_MISSING_RETRIES,result=$.Defer
 red().fail(function(){$popup.find(".upload-iframe").attr("src","javascript:false;")}).always(function(){null!==poll_timeout&&(clearTimeout(poll_timeout),poll_timeout=null),$popup.remove()}),
 start=$.Deferred().done(function(){poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY)}),poll=function(){$.ajax({type:"GET",dataType:"json",url:url+"?status&identifier="+identifier}).then(function(info){result.notify(info),info.missing&&(missing_retries-=1,missing_retries||result.reject({message:"File does not upload. (is it too big ?)"})),!info["upload-finished"]&&"pending"==result.state()&&missing_retries&&(poll_retries=POLL_NETWORK_RETRIES,poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY))},function(){"pending"==result.state()&&(poll_retries?(poll_retries-=1,poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY)):result.reject({message:"Status check failed: cannot upload file."}))})},api={start:function(){var send=function(){$(document).one("done-"+identifier+"-upload",function(event,data){resul
 t.resolve(data)}),$popup.find("form").submit(),start.done(function(){$popup.dialog("close"),on_iframe_load($popup.find("iframe"),function(){result.reject({message:"Upload failed (file too bi
 g or server error)."})})}).resolve({"uploaded-length":0,"content-type":"n/a","request-length":0,filename:""})};$popup.find(".upload-file").on("change",function(){send()}),$popup.dialog({buttons:{Send:function(){send()}}})},cancel:function(){result.reject({})},register:function(plugin){void 0!==plugin.start&&start.done(plugin.start);for(var event in{progress:1,done:1,fail:1,always:1})void 0!==plugin[event]&&result[event](plugin[event]);return api}};return api},UploadField=DONT_NEED_POPUP?function($field,set_objection){var $trigger=$field.children(".upload-trigger"),$file=$field.children(".upload-file-input"),ui=UploadUI($field,set_objection,function(){return UploadForm($file,$field.data("upload-identifier"),$field.data("upload-url")).register({start:function(){$file.hide()},always:function
 (){$file.show()}})});$trigger.remove(),$file.on("change",function(){ui.get(!0).start()})}:function($field,set_objection){var $trigger=$field.children(".upload-trigger"),$file=$field.children
 (".upload-file-input"),ui=UploadUI($field,set_objection,function(){return UploadPopup($field.data("upload-identifier"),$field.data("upload-url")).register({start:function(){$trigger.hide()},always:function(){$trigger.show()}})});$file.detach(),$trigger.show(),$trigger.on("click",function(){ui.get(!0).start()})};$(document).on("loadwidget-smiform",".form-fields-container",function(event,data){$(this).find(".upload-file").each(function(){UploadField($(this),data.set_objection)}),event.stopPropagation()})})(jQuery,jsontemplate);
\ No newline at end of file
+(function($,jsontemplate){var POLL_NETWORK_RETRIES=5,POLL_NETWORK_DELAY=500,POLL_MISSING_RETRIES=20,DONT_NEED_POPUP=function(){var $test=$('<div style="display:none;"><form id="testform1"><input type="file" form="testform2" /></form><form id="testform2"></form></div>'),supported=!1;return $("body").append($test),supported=0===$test.find("#testform1")[0].length&&1===$test.find("#testform2")[0].length,$test.remove(),supported}(),IFrameLoad=function($iframe,name){var iframe=$iframe.get(0),iframe_window=iframe.contentWindow,deferred=(iframe_window.document,$.Deferred()),fail=function(){deferred.reject()};return $(document).one(name,function(event,data){deferred.resolve(data)}),iframe_window.addEventListener?(iframe_window.addEventListener("load",fail,!1),iframe_window.addEventListener("error"
 ,fail,!1)):(iframe_window.attachEvent("onload",fail),iframe_window.attachEvent("onerror",fail)),deferred.promise()},UploadStatusMessage=function($display){var $empty=$display.children(".uplo
 ad-display-empty"),$uploading=$display.children(".upload-display-uploading"),$done=$display.children(".upload-display-complete"),empty=$empty.children("i").text(),uploading=jsontemplate.Template($uploading.children("i").text(),{}),done=jsontemplate.Template($done.children("i").text(),{}),state="empty",original=$display.data("upload-status"),api={start:function(data){"starting"!=state&&($uploading.children("i").text(uploading.expand(data)),$empty.hide(),$done.hide(),$uploading.show(),state="starting")},progress:function(data){"uploading"==state||data.missing||($uploading.children("i").text(uploading.expand(data)),state="uploading")},done:function(data){"done"!=state&&($done.children("i").text(done.expand(data)),$empty.hide(),$uploading.hide(),$done.show(),state="done")},fail:function(data)
 {("empty"!=state||data.message)&&($empty.children("i").text(data.message||empty),"empty"!=state&&($uploading.hide(),$done.hide(),$empty.show(),state="empty"))}};return original&&api.done(ori
 ginal),api},UploadProgress=function($progress){var progress=0;return{start:function(){$progress.progressbar({value:0}).show()},progress:function(data){var updated=0;data.missing||(updated=100*data["uploaded-length"]/data["request-length"]),updated!=progress&&($progress.progressbar({value:updated}),progress=updated)},always:function(){$progress.hide(),progress=0}}},UploadUI=function($field,set_objection,get_upload){var $input=$field.children(".upload-input"),$cancel=$field.children(".upload-cancel"),$clear=$field.children(".upload-clear"),upload=null,objection=null,progress=UploadProgress($field.children(".upload-progress")),status=UploadStatusMessage($field.children(".upload-display")),api={get:function(create){return null==upload&&create&&(upload=get_upload(),upload.register(status),uplo
 ad.register(progress),upload.register(ui)),upload}},ui={start:function(){void 0!==set_objection&&(objection=$.Deferred(),set_objection(function(){if("pending"==objection.state()){var $dialog
 =$('<div title="Uploading file"><p>Please wait until the upload is finished ...</p><p class="progress"></p></div>'),$progress=$dialog.find("p.progress"),progress=0;return $dialog.dialog({modal:!0,closeOnEscape:!1,resizable:!1,draggable:!1,beforeClose:function(){return!1}}),$progress.progressbar({value:0}),api.get().register({progress:function(data){var updated=0;data.missing||(updated=100*data["uploaded-length"]/data["request-length"]),updated!=progress&&($progress.progressbar({value:updated}),progress=updated)}}),objection.always(function(){$dialog.dialog("close").remove(),objection=null})}return null})),$cancel.show()},done:function(){$input.attr("value",$field.data("upload-identifier"))},always:function(){null!==objection&&objection.resolve(),$cancel.hide(),upload=null}};return $cancel
 .on("click",function(){var upload=api.get();null!==upload&&upload.cancel()}),$clear.on("click",function(){var upload=api.get(!0);upload.cancel(),$input.attr("value","")}),api},UploadForm=fun
 ction($field,identifier,url){var $upload=$('<div style="display:none"><iframe width="0" height="0" style="display:none"src="about:blank" class="upload-iframe" name="upload-'+identifier+'-iframe"></iframe>'+'<form class="upload-form" enctype="multipart/form-data"'+'method="POST" action="'+url+"?identifier="+identifier+'" target="upload-'+identifier+'-iframe" id="upload-'+identifier+'-form">'+'<input type="reset" class="upload-reset" /></form></div>'),poll_retries=POLL_NETWORK_RETRIES,poll_timeout=null,missing_retries=POLL_MISSING_RETRIES,result=$.Deferred().fail(function(){$upload.find(".upload-reset").click(),$upload.find(".upload-iframe").attr("src","javascript:false;")}).always(function(){null!==poll_timeout&&(clearTimeout(poll_timeout),poll_timeout=null),$upload.remove(),$field.removeA
 ttr("form")}),start=$.Deferred().done(function(){poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY)}),poll=function(){$.ajax({type:"GET",dataType:"json",url:url+"?status&identifier="+identifie
 r}).then(function(info){result.notify(info),info.missing&&(missing_retries-=1,missing_retries||result.reject({message:"File does not upload. (is it too big ?)"})),!info["upload-finished"]&&"pending"==result.state()&&missing_retries&&(poll_retries=POLL_NETWORK_RETRIES,poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY))},function(){"pending"==result.state()&&(poll_retries?(poll_retries-=1,poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY)):result.reject({message:"Status check failed: cannot upload file."}))})},api={start:function(){$("body").append($upload),$field.attr("form","upload-"+identifier+"-form"),start.done(function(){IFrameLoad($upload.find("iframe"),"upload-"+identifier+"-done").fail(function(){result.reject({message:"Upload failed (file too big or server error)."})}).done(function(d
 ata){result.resolve(data)}),$upload.find("form").submit()}).resolve({"uploaded-length":0,"content-type":"n/a","request-length":0,filename:""})},cancel:function(){result.reject({})},register:
 function(plugin){void 0!==plugin.start&&start.done(plugin.start);for(var event in{progress:1,done:1,fail:1,always:1})void 0!==plugin[event]&&result[event](plugin[event]);return api}};return api},UploadPopup=function(identifier,url){var $popup=$('<div  title="Upload a file"><form class="upload-form" enctype="multipart/form-data"method="POST" action="'+url+"?identifier="+identifier+'" target="upload-'+identifier+'-iframe" id="upload-'+identifier+'-form">'+'<input type="file" name="file-we-are-uploading" class="upload-file" /></form>'+'<iframe width="0" height="0" style="display:none"'+'src="about:blank" class="upload-iframe" name="upload-'+identifier+'-iframe"></iframe></div>'),poll_retries=POLL_NETWORK_RETRIES,poll_timeout=null,missing_retries=POLL_MISSING_RETRIES,result=$.Deferred().fail(
 function(){$popup.find(".upload-iframe").attr("src","javascript:false;")}).always(function(){null!==poll_timeout&&(clearTimeout(poll_timeout),poll_timeout=null),$popup.remove()}),start=$.Def
 erred().done(function(){poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY)}),poll=function(){$.ajax({type:"GET",dataType:"json",url:url+"?status&identifier="+identifier}).then(function(info){result.notify(info),info.missing&&(missing_retries-=1,missing_retries||result.reject({message:"File does not upload. (is it too big ?)"})),!info["upload-finished"]&&"pending"==result.state()&&missing_retries&&(poll_retries=POLL_NETWORK_RETRIES,poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY))},function(){"pending"==result.state()&&(poll_retries?(poll_retries-=1,poll_timeout=setTimeout(poll,POLL_NETWORK_DELAY)):result.reject({message:"Status check failed: cannot upload file."}))})},api={start:function(){var send=function(){start.done(function(){$popup.dialog("close"),IFrameLoad($popup.find("iframe"),"upl
 oad-"+identifier+"-done").fail(function(){result.reject({message:"Upload failed (file too big or server error)."})}).done(function(data){result.resolve(data)}),$popup.find("form").submit()})
 .resolve({"uploaded-length":0,"content-type":"n/a","request-length":0,filename:""})};$popup.find(".upload-file").on("change",function(){send()}),$popup.dialog({buttons:{Send:function(){send()}}})},cancel:function(){result.reject({})},register:function(plugin){void 0!==plugin.start&&start.done(plugin.start);for(var event in{progress:1,done:1,fail:1,always:1})void 0!==plugin[event]&&result[event](plugin[event]);return api}};return api},UploadField=DONT_NEED_POPUP?function($field,set_objection){var $trigger=$field.children(".upload-trigger"),$file=$field.children(".upload-file-input"),ui=UploadUI($field,set_objection,function(){return UploadForm($file,$field.data("upload-identifier"),$field.data("upload-url")).register({start:function(){$file.hide()},always:function(){$file.show()}})});$trig
 ger.remove(),$file.on("change",function(){ui.get(!0).start()})}:function($field,set_objection){var $trigger=$field.children(".upload-trigger"),$file=$field.children(".upload-file-input"),ui=
 UploadUI($field,set_objection,function(){return UploadPopup($field.data("upload-identifier"),$field.data("upload-url")).register({start:function(){$trigger.hide()},always:function(){$trigger.show()}})});$file.detach(),$trigger.show(),$trigger.on("click",function(){ui.get(!0).start()})};$(document).on("loadwidget-smiform",".form-fields-container",function(event,data){$(this).find(".upload-file").each(function(){UploadField($(this),data.set_objection)}),event.stopPropagation()})})(jQuery,jsontemplate);
\ No newline at end of file
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.