webmcp
annotate framework/env/ui/container.lua @ 2:72860d232f32
Version 1.0.2
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
author | jbe/bsw |
---|---|
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 |