webmcp
annotate framework/env/ui/container.lua @ 31:1cd9e69b85cb
add execute.load_chunk(args)
load_chunk loads the content of a lua file and returns the code.
It can construct the path name easily so you can put helper code in
seperate files for DRYness.
load_chunk loads the content of a lua file and returns the code.
It can construct the path name easily so you can put helper code in
seperate files for DRYness.
| author | Daniel Poelzleithner <poelzi@poelzi.org> | 
|---|---|
| date | Tue Oct 05 02:34:04 2010 +0200 (2010-10-05) | 
| parents | a29c8ffb3f82 | 
| children | a2ff42a66212 | 
| rev | line source | 
|---|---|
| jbe/bsw@0 | 1 --[[-- | 
| jbe/bsw@0 | 2 ui.container{ | 
| jbe/bsw@0 | 3 auto_args = auto_args, | 
| jbe/bsw@0 | 4 attr = attr, -- HTML attributes for the surrounding div or fieldset | 
| jbe/bsw@0 | 5 label = label, -- text to be used as label | 
| jbe/bsw@0 | 6 label_for = label_for, -- DOM id of element to which the label should refer | 
| jbe/bsw@0 | 7 label_attr = label_attr, -- extra HTML attributes for a label tag | 
| jbe/bsw@0 | 8 legend = legend, -- text to be used as legend | 
| jbe/bsw@0 | 9 legend_attr = legend_attr, -- HTML attributes for a legend tag | 
| jbe/bsw@0 | 10 content_first = content_first, -- set to true to place label or legend after the content | 
| jbe/bsw@0 | 11 content = function() | 
| jbe/bsw@14 | 12 ... | 
| jbe/bsw@0 | 13 end | 
| jbe/bsw@0 | 14 } | 
| jbe/bsw@0 | 15 | 
| jbe/bsw@0 | 16 This function encloses content in a div element (or a fieldset element, if 'legend' is given). An additional 'label' or 'legend' can be placed before the content or after the content. The argument 'auto_args' is set by other ui helper functions when calling ui.container automatically. | 
| jbe/bsw@0 | 17 | 
| jbe/bsw@0 | 18 --]]-- | 
| jbe/bsw@0 | 19 | 
| jbe/bsw@0 | 20 function ui.container(args) | 
| jbe/bsw@0 | 21 local attr, label, label_attr, legend, legend_attr, content | 
| jbe/bsw@0 | 22 local auto_args = args.auto_args | 
| jbe/bsw@0 | 23 if auto_args then | 
| jbe/bsw@0 | 24 attr = auto_args.container_attr | 
| jbe/bsw@0 | 25 label = auto_args.label | 
| jbe/bsw@0 | 26 label_attr = auto_args.label_attr | 
| jbe/bsw@0 | 27 legend = auto_args.legend | 
| jbe/bsw@0 | 28 legend_attr = auto_args.legend_attr | 
| jbe/bsw@0 | 29 if label and auto_args.attr and auto_args.attr.id then | 
| jbe/bsw@0 | 30 label_attr = table.new(label_attr) | 
| jbe/bsw@0 | 31 label_attr["for"] = auto_args.attr.id | 
| jbe/bsw@0 | 32 end | 
| jbe/bsw@0 | 33 else | 
| jbe/bsw@0 | 34 attr = args.attr | 
| jbe/bsw@0 | 35 label = args.label | 
| jbe/bsw@0 | 36 label_attr = args.label_attr or {} | 
| jbe/bsw@0 | 37 legend = args.legend | 
| jbe/bsw@0 | 38 legend_attr = args.legend_attr | 
| jbe/bsw@0 | 39 content = content | 
| jbe/bsw@0 | 40 if args.label_for then | 
| jbe/bsw@0 | 41 label_attr["for"] = args.label_for | 
| jbe/bsw@0 | 42 end | 
| jbe/bsw@0 | 43 end | 
| jbe/bsw@0 | 44 local content = args.content | 
| jbe/bsw@0 | 45 if label and not legend then | 
| jbe/bsw@0 | 46 return ui.tag { | 
| jbe/bsw@0 | 47 tag = "div", | 
| jbe/bsw@0 | 48 attr = attr, | 
| jbe/bsw@0 | 49 content = function() | 
| jbe/bsw@0 | 50 if not args.content_first then | 
| jbe/bsw@0 | 51 ui.tag{ tag = "label", attr = label_attr, content = label } | 
| jbe/bsw@0 | 52 slot.put(" ") | 
| jbe/bsw@0 | 53 end | 
| jbe/bsw@0 | 54 if type(content) == "function" then | 
| jbe/bsw@0 | 55 content() | 
| jbe/bsw@0 | 56 elseif content then | 
| jbe/bsw@0 | 57 slot.put(encode.html(content)) | 
| jbe/bsw@0 | 58 end | 
| jbe/bsw@0 | 59 if args.content_first then | 
| jbe/bsw@0 | 60 slot.put(" ") | 
| jbe/bsw@0 | 61 ui.tag{ tag = "label", attr = label_attr, content = label } | 
| jbe/bsw@0 | 62 end | 
| jbe/bsw@0 | 63 end | 
| jbe/bsw@0 | 64 } | 
| jbe/bsw@0 | 65 elseif legend and not label then | 
| jbe/bsw@0 | 66 return ui.tag { | 
| jbe/bsw@0 | 67 tag = "fieldset", | 
| jbe/bsw@0 | 68 attr = attr, | 
| jbe/bsw@0 | 69 content = function() | 
| jbe/bsw@0 | 70 if not args.content_first then | 
| jbe/bsw@0 | 71 ui.tag{ tag = "legend", attr = legend_attr, content = legend } | 
| jbe/bsw@0 | 72 slot.put(" ") | 
| jbe/bsw@0 | 73 end | 
| jbe/bsw@0 | 74 if type(content) == "function" then | 
| jbe/bsw@0 | 75 content() | 
| jbe/bsw@0 | 76 elseif content then | 
| jbe/bsw@0 | 77 slot.put(encode.html(content)) | 
| jbe/bsw@0 | 78 end | 
| jbe/bsw@0 | 79 if args.content_first then | 
| jbe/bsw@0 | 80 slot.put(" ") | 
| jbe/bsw@0 | 81 ui.tag{ tag = "legend", attr = legend_attr, content = legend } | 
| jbe/bsw@0 | 82 end | 
| jbe/bsw@0 | 83 end | 
| jbe/bsw@0 | 84 } | 
| jbe/bsw@0 | 85 elseif fieldset and label then | 
| jbe/bsw@0 | 86 error("ui.container{...} may either get a label or a legend.") | 
| jbe/bsw@0 | 87 else | 
| jbe/bsw@0 | 88 return ui.tag{ tag = "div", attr = attr, content = content } | 
| jbe/bsw@0 | 89 end | 
| jbe/bsw@0 | 90 end |