webmcp

annotate framework/env/ui_deprecated/multiselect.lua @ 0:9fdfb27f8e67

Version 1.0.0
author jbe/bsw
date Sun Oct 25 12:00:00 2009 +0100 (2009-10-25)
parents
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 .. '>&nbsp;' .. 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

Impressum / About Us