Mercurial > ajaxUpload
changeset 8:ccf9d9961e32
Update for change to key/mouse events
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sat, 21 Jul 2012 10:40:23 -0400 |
parents | 35cacb3eaf6e |
children | 663815040fd8 |
files | examples/client.ur src/c/ajaxUpload.c src/ur/ajaxUpload.ur |
diffstat | 3 files changed, 33 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/examples/client.ur Sat Dec 31 15:38:12 2011 -0500 +++ b/examples/client.ur Sat Jul 21 10:40:23 2012 -0400 @@ -11,35 +11,35 @@ return <xml><body> <button value="Create new widget" - onclick={au <- AjaxUpload.render {SubmitLabel = if b then None else Some "Upload it!", - OnBegin = set status <xml>Uploading</xml>, - OnError = set status <xml><b>Upload failed!</b></xml>, - OnSuccess = fn h => - let - fun addImage () = - r <- AjaxUpload.claim h; - case r of - AjaxUpload.NotFound => return None - | AjaxUpload.Found r => - id <- nextval ids; - dml (INSERT INTO images (Id, MimeType, Content) - VALUES ({[id]}, {[r.MimeType]}, {[r.Content]})); - return (Some id) - in - ido <- rpc (addImage ()); - case ido of - None => alert "Newly uploaded image not found!" - | Some id => + onclick={fn _ => au <- AjaxUpload.render {SubmitLabel = if b then None else Some "Upload it!", + OnBegin = set status <xml>Uploading</xml>, + OnError = set status <xml><b>Upload failed!</b></xml>, + OnSuccess = fn h => let - fun image () = - r <- oneRow1 (SELECT images.MimeType, images.Content - FROM images - WHERE images.Id = {[id]}); - returnBlob r.Content (blessMime r.MimeType) + fun addImage () = + r <- AjaxUpload.claim h; + case r of + AjaxUpload.NotFound => return None + | AjaxUpload.Found r => + id <- nextval ids; + dml (INSERT INTO images (Id, MimeType, Content) + VALUES ({[id]}, {[r.MimeType]}, {[r.Content]})); + return (Some id) in - set status <xml><img src={url (image ())}/></xml> - end - end}; + ido <- rpc (addImage ()); + case ido of + None => alert "Newly uploaded image not found!" + | Some id => + let + fun image () = + r <- oneRow1 (SELECT images.MimeType, images.Content + FROM images + WHERE images.Id = {[id]}); + returnBlob r.Content (blessMime r.MimeType) + in + set status <xml><img src={url (image ())}/></xml> + end + end}; set widget au}/> <hr/> <dyn signal={signal widget}/>
--- a/src/c/ajaxUpload.c Sat Dec 31 15:38:12 2011 -0500 +++ b/src/c/ajaxUpload.c Sat Jul 21 10:40:23 2012 -0400 @@ -12,7 +12,7 @@ submitId, "\"); subm.parentNode.target = \"", iframeId, - "\"; var onSub = subm.onmousedown; subm.onmousedown = undefined; subm.parentNode.onsubmit = function() { onSub(); return true; }; subm.withHandle = subm.onkeydown; subm.onkeydown = undefined; subm.withError = subm.onmouseup; subm.onmouseup = undefined; ", + "\"; var onSub = subm.onmousedown; subm.onmousedown = undefined; subm.parentNode.onsubmit = function() { window.top.event = {}; onSub(); return true; }; subm.withHandle = subm.onkeydown; subm.onkeydown = undefined; subm.withError = subm.onmouseup; subm.onmouseup = undefined; ", autoSubmit ? "subm.style.visibility = \"hidden\"; for (var node = subm.previousSibling; node.tagName != \"INPUT\"; node = node.previousSibling); node.onchange = function() { subm.parentNode.submit(); }; " : "", @@ -34,7 +34,7 @@ return uw_Basis_mstrcat(ctx, "<script type=\"text/javascript\">var subm = window.top.document.getElementById(\"", submitId, - "\"); subm.withError(); </script>", + "\"); window.top.event = {}; subm.withError(); </script>", NULL); } @@ -45,6 +45,9 @@ uw_Basis_string uw_AjaxUploadFfi_stringToId(uw_context ctx, uw_Basis_string s) { char *s2 = s; + if (s2[0] == 'u' && s2[1] == 'w') + s2 += 2; + if (*s2 == '-') ++s2;
--- a/src/ur/ajaxUpload.ur Sat Dec 31 15:38:12 2011 -0500 +++ b/src/ur/ajaxUpload.ur Sat Jul 21 10:40:23 2012 -0400 @@ -59,7 +59,7 @@ return <xml> <form> <upload{#File}/> - <submit value={Option.get "" sl} action={upload} id={submitId} onmousedown={ob} onkeydown={os} onmouseup={oe}/> + <submit value={Option.get "" sl} action={upload} id={submitId} onmousedown={fn _ => ob} onkeydown={fn ev => os ev.KeyCode} onmouseup={fn _ => oe}/> </form> {AjaxUploadFfi.tweakForm (Option.isNone sl) iframeId submitId} </xml>