webmcp
annotate framework/env/ui_deprecated/form.lua @ 6:5cba83b3f411
Version 1.0.6
Bugfix: class_prototype:add_reference{...} uses now qualified names in SQL queries to allow JOINs
Fixes in the documentation of slot.put_into and trace.debug
Bugfix: class_prototype:add_reference{...} uses now qualified names in SQL queries to allow JOINs
Fixes in the documentation of slot.put_into and trace.debug
| author | jbe/bsw |
|---|---|
| date | Fri Jan 22 12:00:00 2010 +0100 (2010-01-22) |
| parents | 9fdfb27f8e67 |
| children |
| rev | line source |
|---|---|
| jbe/bsw@0 | 1 -- |
| jbe/bsw@0 | 2 -- Creates a formular |
| jbe/bsw@0 | 3 -- |
| jbe/bsw@0 | 4 -- record (record) Take field values from this object (optional) |
| jbe/bsw@0 | 5 -- class (string) Style class (optional) |
| jbe/bsw@0 | 6 -- method (string) Submit method ['post', 'get'] (optional) |
| jbe/bsw@0 | 7 -- module (string) The module to submit to |
| jbe/bsw@0 | 8 -- action (string) The action to submit to |
| jbe/bsw@0 | 9 -- params (table) The GET parameter to be send with |
| jbe/bsw@0 | 10 -- content (function) Function for the content of the form |
| jbe/bsw@0 | 11 -- |
| jbe/bsw@0 | 12 -- Example: |
| jbe/bsw@0 | 13 -- |
| jbe/bsw@0 | 14 -- ui_deprecated.form({ |
| jbe/bsw@0 | 15 -- object = client, |
| jbe/bsw@0 | 16 -- class = 'form_class', |
| jbe/bsw@0 | 17 -- method = 'post', |
| jbe/bsw@0 | 18 -- module = 'client', |
| jbe/bsw@0 | 19 -- action = 'update', |
| jbe/bsw@0 | 20 -- params = { |
| jbe/bsw@0 | 21 -- id = client.id |
| jbe/bsw@0 | 22 -- }, |
| jbe/bsw@0 | 23 -- redirect_to = { |
| jbe/bsw@0 | 24 -- ok = { |
| jbe/bsw@0 | 25 -- module = 'client', |
| jbe/bsw@0 | 26 -- view = 'list' |
| jbe/bsw@0 | 27 -- }, |
| jbe/bsw@0 | 28 -- error = { |
| jbe/bsw@0 | 29 -- module = 'client', |
| jbe/bsw@0 | 30 -- view = 'edit', |
| jbe/bsw@0 | 31 -- params = { |
| jbe/bsw@0 | 32 -- id = client.id |
| jbe/bsw@0 | 33 -- } |
| jbe/bsw@0 | 34 -- } |
| jbe/bsw@0 | 35 -- }, |
| jbe/bsw@0 | 36 -- }) |
| jbe/bsw@0 | 37 |
| jbe/bsw@0 | 38 function ui_deprecated.form(args) |
| jbe/bsw@0 | 39 local slot_state = slot.get_state_table() |
| jbe/bsw@0 | 40 if slot_state.form_opened then |
| jbe/bsw@0 | 41 error("Cannot open a form inside a form.") |
| jbe/bsw@0 | 42 end |
| jbe/bsw@0 | 43 slot_state.form_opened = true |
| jbe/bsw@0 | 44 local old_record = slot_state.form_record |
| jbe/bsw@0 | 45 slot_state.form_record = args.record or {} -- TODO: decide what really should happen when no record is specified |
| jbe/bsw@0 | 46 |
| jbe/bsw@0 | 47 local params = {} |
| jbe/bsw@0 | 48 if args.params then |
| jbe/bsw@0 | 49 for key, value in pairs(args.params) do |
| jbe/bsw@0 | 50 params[key] = value |
| jbe/bsw@0 | 51 end |
| jbe/bsw@0 | 52 end |
| jbe/bsw@0 | 53 ui_deprecated._prepare_redirect_params(params, args.redirect_to) |
| jbe/bsw@0 | 54 |
| jbe/bsw@0 | 55 local attr_action = args.url or encode.url{ |
| jbe/bsw@0 | 56 module = args.module, |
| jbe/bsw@0 | 57 view = args.view, |
| jbe/bsw@0 | 58 action = args.action, |
| jbe/bsw@0 | 59 id = args.id, |
| jbe/bsw@0 | 60 params = params |
| jbe/bsw@0 | 61 } |
| jbe/bsw@0 | 62 |
| jbe/bsw@0 | 63 local base = request.get_relative_baseurl() |
| jbe/bsw@0 | 64 local attr_class = table.concat({ 'ui_form', args.class }, ' ') |
| jbe/bsw@0 | 65 local attr_method = args.method or 'POST' -- TODO: uppercase/sanatize method |
| jbe/bsw@0 | 66 |
| jbe/bsw@0 | 67 slot.put( |
| jbe/bsw@0 | 68 '<form', |
| jbe/bsw@0 | 69 ' action="', attr_action, '"', |
| jbe/bsw@0 | 70 ' class="', attr_class, '"', |
| jbe/bsw@0 | 71 ' method="', attr_method, '"', |
| jbe/bsw@0 | 72 '>\n' |
| jbe/bsw@0 | 73 ) |
| jbe/bsw@0 | 74 |
| jbe/bsw@0 | 75 if type(args.content) == 'function' then |
| jbe/bsw@0 | 76 args.content() |
| jbe/bsw@0 | 77 else |
| jbe/bsw@0 | 78 error('No content function') |
| jbe/bsw@0 | 79 end |
| jbe/bsw@0 | 80 |
| jbe/bsw@0 | 81 slot.put('</form>') |
| jbe/bsw@0 | 82 slot_state.form_record = old_record |
| jbe/bsw@0 | 83 slot_state.form_opened = false |
| jbe/bsw@0 | 84 |
| jbe/bsw@0 | 85 end |