webmcp

annotate framework/env/ui/container.lua @ 14:a29c8ffb3f82

New function ui.filters{...}

Also changed version information to "1.0.8"
author jbe/bsw
date Sat Feb 20 21:00:58 2010 +0100 (2010-02-20)
parents 9fdfb27f8e67
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

Impressum / About Us