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