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 |