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