webmcp
annotate framework/env/ui_deprecated/multiselect.lua @ 1:985024b16520
Version 1.0.1
New feature: JSON requests
Changes in ui.paginate: Current page setting is directly fetched from CGI params, instead of view params
Changed behavior of load methods of atom library to accept nil as input
Bugfixes in mondelefant_atom_connector timestamp(tz) loaders
Added global constant _WEBMCP_VERSION containing a version string
New feature: JSON requests
Changes in ui.paginate: Current page setting is directly fetched from CGI params, instead of view params
Changed behavior of load methods of atom library to accept nil as input
Bugfixes in mondelefant_atom_connector timestamp(tz) loaders
Added global constant _WEBMCP_VERSION containing a version string
author | jbe |
---|---|
date | Tue Nov 17 12:00:00 2009 +0100 (2009-11-17) |
parents | 9fdfb27f8e67 |
children |
rev | line source |
---|---|
jbe/bsw@0 | 1 function ui_deprecated.multiselect(args) |
jbe/bsw@0 | 2 local record = assert(slot.get_state_table(), "ui_deprecated.multiselect was not called within a form.").form_record |
jbe/bsw@0 | 3 local name = args.name |
jbe/bsw@0 | 4 local relationship = args.relationship |
jbe/bsw@0 | 5 |
jbe/bsw@0 | 6 local foreign_records = relationship.foreign_records |
jbe/bsw@0 | 7 |
jbe/bsw@0 | 8 local selector = relationship.connected_by_model:new_selector() |
jbe/bsw@0 | 9 selector:add_where{ relationship.connected_by_my_id .. ' = ?', record[relationship.my_id] } |
jbe/bsw@0 | 10 local connected_by_records = selector:exec() |
jbe/bsw@0 | 11 |
jbe/bsw@0 | 12 local connections = {} |
jbe/bsw@0 | 13 for i, connected_by_record in ipairs(connected_by_records) do |
jbe/bsw@0 | 14 connections[connected_by_record[relationship.connected_by_foreign_id]] = connected_by_record |
jbe/bsw@0 | 15 end |
jbe/bsw@0 | 16 |
jbe/bsw@0 | 17 local html = {} |
jbe/bsw@0 | 18 |
jbe/bsw@0 | 19 if args.type == "checkboxes" then |
jbe/bsw@0 | 20 for i, foreign_record in ipairs(foreign_records) do |
jbe/bsw@0 | 21 local selected = '' |
jbe/bsw@0 | 22 if connections[foreign_record[relationship.foreign_id]] then |
jbe/bsw@0 | 23 selected = ' checked="1"' |
jbe/bsw@0 | 24 end |
jbe/bsw@0 | 25 html[#html + 1] = '<input type="checkbox" name="' .. name .. '" value="' .. foreign_record[relationship.foreign_id] .. '"' .. selected .. '> ' .. convert.to_human(foreign_record[relationship.foreign_name], "string") .. '<br />\n' |
jbe/bsw@0 | 26 end |
jbe/bsw@0 | 27 |
jbe/bsw@0 | 28 else |
jbe/bsw@0 | 29 html[#html + 1] = '<select name="' .. name .. '" multiple="1">' |
jbe/bsw@0 | 30 for i, foreign_record in ipairs(foreign_records) do |
jbe/bsw@0 | 31 local selected = '' |
jbe/bsw@0 | 32 if connections[foreign_record[relationship.foreign_id]] then |
jbe/bsw@0 | 33 selected = ' selected="1"' |
jbe/bsw@0 | 34 end |
jbe/bsw@0 | 35 html[#html + 1] = '<option value="' .. foreign_record[relationship.foreign_id] .. '"' .. selected .. '>' .. convert.to_human(foreign_record[relationship.foreign_name], "string") .. '</option>\n' |
jbe/bsw@0 | 36 end |
jbe/bsw@0 | 37 html[#html + 1] = '</select>' |
jbe/bsw@0 | 38 |
jbe/bsw@0 | 39 end |
jbe/bsw@0 | 40 |
jbe/bsw@0 | 41 slot.put('<div class="ui_field ui_multiselect">\n') |
jbe/bsw@0 | 42 if args.label then |
jbe/bsw@0 | 43 slot.put('<div class="label">', encode.html(args.label), '</div>\n') |
jbe/bsw@0 | 44 end |
jbe/bsw@0 | 45 slot.put('<div class="value">', |
jbe/bsw@0 | 46 table.concat(html), |
jbe/bsw@0 | 47 '</div>\n', |
jbe/bsw@0 | 48 '</div>\n' |
jbe/bsw@0 | 49 ) |
jbe/bsw@0 | 50 end |