annotate framework/env/ui_deprecated/multiselect.lua @ 53:a1c77838c2e5
Documentation for "attr", "a_attr" and "form_attr" arguments to function ui.link{...}
author |
jbe |
date |
Fri Jun 10 15:32:29 2011 +0200 (2011-06-10) |
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 |