webmcp
annotate framework/env/ui_deprecated/input.lua @ 0:9fdfb27f8e67
Version 1.0.0
| author | jbe/bsw | 
|---|---|
| date | Sun Oct 25 12:00:00 2009 +0100 (2009-10-25) | 
| parents | |
| children | 
| rev | line source | 
|---|---|
| jbe/bsw@0 | 1 -- | 
| jbe/bsw@0 | 2 -- Creates an input field in a form | 
| jbe/bsw@0 | 3 -- | 
| jbe/bsw@0 | 4 -- label (string) The label of the input field | 
| jbe/bsw@0 | 5 -- field (string) The name of the record field | 
| jbe/bsw@0 | 6 -- field_type (string) The type of the record field | 
| jbe/bsw@0 | 7 -- | 
| jbe/bsw@0 | 8 -- Example: | 
| jbe/bsw@0 | 9 -- | 
| jbe/bsw@0 | 10 -- ui_deprecated.input({ | 
| jbe/bsw@0 | 11 -- label = _'Comment', | 
| jbe/bsw@0 | 12 -- field = 'comment', | 
| jbe/bsw@0 | 13 -- field_type = 'textarea' | 
| jbe/bsw@0 | 14 -- }) | 
| jbe/bsw@0 | 15 -- | 
| jbe/bsw@0 | 16 local field_type_to_atom_class_map = { | 
| jbe/bsw@0 | 17 text = atom.string, | 
| jbe/bsw@0 | 18 textarea = atom.string, | 
| jbe/bsw@0 | 19 number = atom.number, | 
| jbe/bsw@0 | 20 percentage = atom.number, | 
| jbe/bsw@0 | 21 } | 
| jbe/bsw@0 | 22 | 
| jbe/bsw@0 | 23 function ui_deprecated.input(args) | 
| jbe/bsw@0 | 24 local record = assert(slot.get_state_table(), "ui_deprecated.input was not called within a form.").form_record | 
| jbe/bsw@0 | 25 | 
| jbe/bsw@0 | 26 local field_type = args.field_type or "text" | 
| jbe/bsw@0 | 27 | 
| jbe/bsw@0 | 28 local field_func = assert(ui_deprecated.input_field[field_type], "no field helper for given type '" .. field_type .. "'") | 
| jbe/bsw@0 | 29 | 
| jbe/bsw@0 | 30 local html_name = args.name or args.field | 
| jbe/bsw@0 | 31 local field_html | 
| jbe/bsw@0 | 32 | 
| jbe/bsw@0 | 33 if args.field then | 
| jbe/bsw@0 | 34 local param_type = field_type_to_atom_class_map[field_type] or error('Unkown field type') | 
| jbe/bsw@0 | 35 field_html = field_func{ | 
| jbe/bsw@0 | 36 name = html_name, | 
| jbe/bsw@0 | 37 value = param.get(html_name, param_type) | 
| jbe/bsw@0 | 38 or record[args.field], | 
| jbe/bsw@0 | 39 height = args.height, | 
| jbe/bsw@0 | 40 } | 
| jbe/bsw@0 | 41 | 
| jbe/bsw@0 | 42 elseif args.value then | 
| jbe/bsw@0 | 43 field_html = field_func{ | 
| jbe/bsw@0 | 44 name = html_name, | 
| jbe/bsw@0 | 45 value = args.value, | 
| jbe/bsw@0 | 46 height = args.height, | 
| jbe/bsw@0 | 47 } | 
| jbe/bsw@0 | 48 | 
| jbe/bsw@0 | 49 else | 
| jbe/bsw@0 | 50 field_html = field_func{ | 
| jbe/bsw@0 | 51 name = html_name, | 
| jbe/bsw@0 | 52 value = '', | 
| jbe/bsw@0 | 53 height = args.height, | 
| jbe/bsw@0 | 54 } | 
| jbe/bsw@0 | 55 | 
| jbe/bsw@0 | 56 end | 
| jbe/bsw@0 | 57 | 
| jbe/bsw@0 | 58 slot.put('<div class="ui_field ui_input_', field_type, '">\n') | 
| jbe/bsw@0 | 59 if args.label then | 
| jbe/bsw@0 | 60 slot.put('<div class="label">', encode.html(args.label), '</div>\n') | 
| jbe/bsw@0 | 61 end | 
| jbe/bsw@0 | 62 slot.put('<div class="value">', | 
| jbe/bsw@0 | 63 field_html, | 
| jbe/bsw@0 | 64 '</div>\n', | 
| jbe/bsw@0 | 65 '</div>\n' | 
| jbe/bsw@0 | 66 ) | 
| jbe/bsw@0 | 67 end |