Mercurial > urweb
changeset 1731:27e731a65934
Include JavaScript files properly in error handler pages
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sat, 28 Apr 2012 12:00:35 -0400 |
parents | 02533f681ad2 |
children | 4a03aa3251cb |
files | src/cjr_print.sml tests/onerrorJs.ur tests/onerrorJs.urp tests/onerrorJs.urs |
diffstat | 4 files changed, 32 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cjr_print.sml Sat Apr 28 11:35:12 2012 -0400 +++ b/src/cjr_print.sml Sat Apr 28 12:00:35 2012 -0400 @@ -2905,6 +2905,19 @@ val app_js = OS.Path.joinDirFile {dir = Settings.getUrlPrefix (), file = "app." ^ timestamp ^ ".js"} + val allScripts = + let + val scripts = + "<script type=\\\"text/javascript\\\" src=\\\"" + ^ app_js + ^ "\\\"></script>\\n" + in + foldl (fn (x, scripts) => + scripts + ^ "<script type=\\\"text/javascript\\\" src=\\\"" ^ x ^ "\\\"></script>\\n") + scripts (Settings.getScripts ()) + end + fun p_page (ek, s, n, ts, ran, side, tellSig) = let val (ts, defInputs, inputsVar, fields) = @@ -3032,18 +3045,7 @@ val scripts = case side of ServerOnly => "" - | _ => - let - val scripts = - "<script type=\\\"text/javascript\\\" src=\\\"" - ^ app_js - ^ "\\\"></script>\\n" - in - foldl (fn (x, scripts) => - scripts - ^ "<script type=\\\"text/javascript\\\" src=\\\"" ^ x ^ "\\\"></script>\\n") - scripts (Settings.getScripts ()) - end + | _ => allScripts in string scripts end, @@ -3129,6 +3131,7 @@ val expunge = ref 0 val initialize = ref 0 val prepped = ref [] + val hasJs = ref false val _ = foldl (fn (d, env) => ((case #1 d of @@ -3136,6 +3139,7 @@ dbstring := x; expunge := y; initialize := z) + | DJavaScript _ => hasJs := true | DTable (s, xts, _, _) => tables := (s, map (fn (x, t) => (x, sql_type_in env t)) xts) :: !tables | DView (s, xts, _) => views := (s, map (fn (x, t) => @@ -3499,6 +3503,13 @@ else box [string "uw_cutErrorLocation(msg);", newline], + if !hasJs then + box [string "uw_set_script_header(ctx, \"", + string allScripts, + string "\");", + newline] + else + box [], box [string "uw_write(ctx, ", p_enamed env n, string "(ctx, msg, 0));",
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/onerrorJs.ur Sat Apr 28 12:00:35 2012 -0400 @@ -0,0 +1,4 @@ +fun main n = + case n of + 0 => error <xml>Zero is bad! <button value="Capische?" onclick={alert "GOOD!"}/></xml> + | _ => return <xml/>