webmcp
annotate framework/env/ui/container.lua @ 3:795b764629ca
Version 1.0.3
Important bugfix related to internal forwards (Bug was introduced by the restriction of views with underscore prefix in Version 1.0.2)
Important bugfix related to internal forwards (Bug was introduced by the restriction of views with underscore prefix in Version 1.0.2)
author | jbe |
---|---|
date | Thu Dec 10 12:00:00 2009 +0100 (2009-12-10) |
parents | 9fdfb27f8e67 |
children | a29c8ffb3f82 |
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@0 | 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 |