jbe/bsw@0: function ui_deprecated.multiselect(args) jbe/bsw@0: local record = assert(slot.get_state_table(), "ui_deprecated.multiselect was not called within a form.").form_record jbe/bsw@0: local name = args.name jbe/bsw@0: local relationship = args.relationship jbe/bsw@0: jbe/bsw@0: local foreign_records = relationship.foreign_records jbe/bsw@0: jbe/bsw@0: local selector = relationship.connected_by_model:new_selector() jbe/bsw@0: selector:add_where{ relationship.connected_by_my_id .. ' = ?', record[relationship.my_id] } jbe/bsw@0: local connected_by_records = selector:exec() jbe/bsw@0: jbe/bsw@0: local connections = {} jbe/bsw@0: for i, connected_by_record in ipairs(connected_by_records) do jbe/bsw@0: connections[connected_by_record[relationship.connected_by_foreign_id]] = connected_by_record jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: local html = {} jbe/bsw@0: jbe/bsw@0: if args.type == "checkboxes" then jbe/bsw@0: for i, foreign_record in ipairs(foreign_records) do jbe/bsw@0: local selected = '' jbe/bsw@0: if connections[foreign_record[relationship.foreign_id]] then jbe/bsw@0: selected = ' checked="1"' jbe/bsw@0: end jbe/bsw@0: html[#html + 1] = ' ' .. convert.to_human(foreign_record[relationship.foreign_name], "string") .. '
\n' jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: else jbe/bsw@0: html[#html + 1] = '' jbe/bsw@0: jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: slot.put('
\n') jbe/bsw@0: if args.label then jbe/bsw@0: slot.put('
', encode.html(args.label), '
\n') jbe/bsw@0: end jbe/bsw@0: slot.put('
', jbe/bsw@0: table.concat(html), jbe/bsw@0: '
\n', jbe/bsw@0: '
\n' jbe/bsw@0: ) jbe/bsw@0: end