rev |
line source |
jbe/bsw@0
|
1 --[[--
|
jbe/bsw@0
|
2 ui.script{
|
jbe/bsw@0
|
3 noscript_attr = noscript_attr, -- HTML attributes for noscript tag
|
jbe/bsw@0
|
4 noscript = noscript, -- string or function for noscript content
|
jbe/bsw@0
|
5 attr = attr, -- extra HTML attributes for script tag
|
jbe/bsw@0
|
6 type = type, -- type of script, defaults to "text/javascript"
|
jbe/bsw@0
|
7 script = script, -- string or function for script content
|
jbe/bsw@0
|
8 }
|
jbe/bsw@0
|
9
|
jbe/bsw@9
|
10 This function is used to insert a script into the active slot.
|
jbe/bsw@0
|
11
|
jbe@10
|
12 WARNING: The given script MUST NOT include two closing square brackets directly followed by a greater-than sign, unless the output is interpreted strictly as XHTML. For string literals this is ensured automatically, if being encoded with encode.json{...}.
|
jbe@10
|
13
|
jbe/bsw@0
|
14 --]]--
|
jbe/bsw@0
|
15
|
jbe/bsw@0
|
16 function ui.script(args)
|
jbe/bsw@0
|
17 local args = args or {}
|
jbe/bsw@0
|
18 local noscript_attr = args.noscript_attr
|
jbe/bsw@0
|
19 local noscript = args.noscript
|
jbe/bsw@0
|
20 local attr = table.new(args.attr)
|
jbe/bsw@0
|
21 attr.type = attr.type or args.type or "text/javascript"
|
jbe/bsw@0
|
22 local script = args.script
|
jbe/bsw@4
|
23 if args.external then
|
jbe/bsw@4
|
24 attr.src = encode.url{ external = args.external }
|
jbe/bsw@4
|
25 elseif args.static then
|
jbe/bsw@4
|
26 attr.src = encode.url{ static = args.static }
|
jbe/bsw@4
|
27 end
|
jbe/bsw@0
|
28 if noscript then
|
jbe/bsw@0
|
29 ui.tag{ tag = "noscript", attr = attr, content = noscript }
|
jbe/bsw@0
|
30 end
|
jbe/bsw@4
|
31 if attr.src then
|
jbe/bsw@4
|
32 ui.tag{ tag = "script", attr = attr, content = "" }
|
jbe/bsw@4
|
33 elseif script then
|
jbe/bsw@9
|
34 ui.tag{
|
jbe/bsw@9
|
35 tag = "script",
|
jbe/bsw@9
|
36 attr = attr,
|
jbe/bsw@9
|
37 content = function()
|
jbe/bsw@9
|
38 slot.put("/* <![CDATA[ */")
|
jbe/bsw@9
|
39 local script_string
|
jbe/bsw@9
|
40 if type(script) == "function" then
|
jbe/bsw@9
|
41 script_string = slot.use_temporary(script)
|
jbe/bsw@9
|
42 else
|
jbe/bsw@9
|
43 script_string = script
|
jbe/bsw@9
|
44 end
|
jbe/bsw@9
|
45 -- Using double parenthesis in following command is important
|
jbe/bsw@9
|
46 slot.put((string.gsub(script_string, "]]>", "]]]]><![CDATA[>")))
|
jbe/bsw@9
|
47 slot.put("/* ]]> */")
|
jbe/bsw@9
|
48 end
|
jbe/bsw@9
|
49 }
|
jbe/bsw@0
|
50 end
|
jbe/bsw@0
|
51 end
|