| 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 |