webmcp
annotate framework/env/ui_deprecated/input.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 |
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 |