view src/c/ajaxUpload.c @ 1:f84d5e8aa992

Complete working example with required submit button click
author Adam Chlipala <adam@chlipala.net>
date Thu, 29 Dec 2011 15:26:46 -0500
parents 0c0f903d9440
children df095eecba63
line wrap: on
line source
#include <ctype.h>
#include <stdio.h>

#include <ajaxUpload.h>

uw_Basis_string uw_AjaxUploadFfi_tweakForm(uw_context ctx, uw_Basis_string iframeId, uw_Basis_string submitId) {
  return uw_Basis_mstrcat(ctx,
                          "<iframe id=\"",
                          iframeId,
                          "\" name=\"",
                          iframeId,
                          "\" src=\"#\" style=\"width:0;height:0;border:0px solid #fff;\"></iframe>\n<script type=\"text/javascript\">var subm = document.getElementById(\"",
                          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; </script>",
                          NULL);
}

uw_Basis_string uw_AjaxUploadFfi_notifySuccess(uw_context ctx, uw_Basis_string submitId, uw_Basis_int handle) {
  return uw_Basis_mstrcat(ctx,
                          "<script type=\"text/javascript\">var subm = window.top.document.getElementById(\"",
                          submitId,
                          "\"); window.top.event = {keyCode : ",
                          uw_Basis_htmlifyInt(ctx, handle),
                          "}; subm.withHandle(); </script>",
                          NULL);
}

uw_Basis_string uw_AjaxUploadFfi_idToString(uw_context ctx, uw_Basis_string s) {
  return s;
}

uw_Basis_string uw_AjaxUploadFfi_stringToId(uw_context ctx, uw_Basis_string s) {
  char *s2 = s;

  if (*s2 == '-')
    ++s2;

  for (++s2; *s2; ++s2)
    if (!isdigit(*s2))
      uw_error(ctx, FATAL, "AjaxUploadFfi.stringToId: Invalid ID");

  return s;
}