rev |
line source |
jbe/bsw@0
|
1 local medium
|
jbe/bsw@0
|
2 local id = param.get_id()
|
jbe/bsw@0
|
3 if id then
|
jbe/bsw@0
|
4 medium = Medium:by_id(id)
|
jbe/bsw@0
|
5 end
|
jbe/bsw@0
|
6
|
jbe/bsw@0
|
7 if medium then
|
jbe/bsw@0
|
8 slot.put_into("title", encode.html(_"Medium"))
|
jbe/bsw@0
|
9 else
|
jbe/bsw@0
|
10 slot.put_into("title", encode.html(_"New medium"))
|
jbe/bsw@0
|
11 end
|
jbe/bsw@0
|
12
|
jbe/bsw@0
|
13 slot.select("actions", function()
|
jbe/bsw@0
|
14 ui.link{
|
jbe/bsw@0
|
15 content = _"Back",
|
jbe/bsw@0
|
16 module = "medium"
|
jbe/bsw@0
|
17 }
|
jbe/bsw@0
|
18 if medium and app.session.user.write_priv then
|
jbe/bsw@0
|
19 ui.link{
|
jbe/bsw@0
|
20 content = _"Delete",
|
jbe/bsw@0
|
21 form_attr = {
|
jbe/bsw@0
|
22 onsubmit = "return confirm(" .. encode.json(_'Are you sure?') .. ");"
|
jbe/bsw@0
|
23 },
|
jbe/bsw@0
|
24 module = "medium",
|
jbe/bsw@0
|
25 action = "update",
|
jbe/bsw@0
|
26 id = medium.id,
|
jbe/bsw@0
|
27 params = { delete = true },
|
jbe/bsw@0
|
28 routing = {
|
jbe/bsw@0
|
29 default = {
|
jbe/bsw@0
|
30 mode = "redirect",
|
jbe/bsw@0
|
31 module = "medium",
|
jbe/bsw@0
|
32 view = "index"
|
jbe/bsw@0
|
33 }
|
jbe/bsw@0
|
34 }
|
jbe/bsw@0
|
35 }
|
jbe/bsw@0
|
36 end
|
jbe/bsw@0
|
37 end)
|
jbe/bsw@0
|
38
|
jbe/bsw@0
|
39 slot.select("main", function()
|
jbe/bsw@0
|
40 ui.form{
|
jbe/bsw@0
|
41 attr = { class = "vertical" },
|
jbe/bsw@0
|
42 record = medium,
|
jbe/bsw@0
|
43 readonly = not app.session.user.write_priv,
|
jbe/bsw@0
|
44 module = "medium",
|
jbe/bsw@0
|
45 action = "update",
|
jbe/bsw@0
|
46 id = id,
|
jbe/bsw@0
|
47 routing = {
|
jbe/bsw@0
|
48 default = {
|
jbe/bsw@0
|
49 mode = "redirect",
|
jbe/bsw@0
|
50 module = "medium",
|
jbe/bsw@0
|
51 view = "index"
|
jbe/bsw@0
|
52 }
|
jbe/bsw@0
|
53 },
|
jbe/bsw@0
|
54 content = function()
|
jbe/bsw@0
|
55 if id then
|
jbe/bsw@0
|
56 ui.field.integer{ label = _"Id", name = "id", readonly = true }
|
jbe/bsw@0
|
57 end
|
jbe/bsw@0
|
58 ui.field.select{
|
jbe/bsw@0
|
59 label = _"Media type",
|
jbe/bsw@0
|
60 name = "media_type_id",
|
jbe/bsw@0
|
61 foreign_records = MediaType:new_selector():exec(),
|
jbe/bsw@0
|
62 foreign_id = "id",
|
jbe/bsw@0
|
63 foreign_name = "name"
|
jbe/bsw@0
|
64 }
|
jbe/bsw@0
|
65 ui.field.text{ label = _"Name", name = "name" }
|
jbe/bsw@0
|
66 ui.field.boolean{ label = _"Copy protected", name = "copyprotected" }
|
jbe/bsw@0
|
67
|
jbe/bsw@0
|
68 ui.multiselect{
|
jbe/bsw@0
|
69 name = "genres[]",
|
jbe/bsw@0
|
70 label = _"Genres",
|
jbe/bsw@0
|
71 style = "select",
|
jbe/bsw@0
|
72 attr = { size = 5 },
|
jbe/bsw@0
|
73 foreign_records = Genre:new_selector():exec(),
|
jbe/bsw@0
|
74 connecting_records = medium and medium.classifications or {},
|
jbe/bsw@0
|
75 own_id = "id",
|
jbe/bsw@0
|
76 own_reference = "medium_id",
|
jbe/bsw@0
|
77 foreign_reference = "genre_id",
|
jbe/bsw@0
|
78 foreign_id = "id",
|
jbe/bsw@0
|
79 foreign_name = "name",
|
jbe/bsw@0
|
80 }
|
jbe/bsw@0
|
81 local tracks = medium and medium.tracks or {}
|
jbe/bsw@0
|
82 for i = 1, 5 do
|
jbe/bsw@0
|
83 tracks[#tracks+1] = Track:new()
|
jbe/bsw@0
|
84 end
|
jbe/bsw@0
|
85 ui.list{
|
jbe/bsw@0
|
86 label = _"Tracks",
|
jbe/bsw@0
|
87 prefix = "tracks",
|
jbe/bsw@0
|
88 records = tracks,
|
jbe/bsw@0
|
89 columns = {
|
jbe/bsw@0
|
90 {
|
jbe/bsw@0
|
91 label = _"Pos",
|
jbe/bsw@0
|
92 name = "position",
|
jbe/bsw@0
|
93 },
|
jbe/bsw@0
|
94 {
|
jbe/bsw@0
|
95 label = _"Name",
|
jbe/bsw@0
|
96 name = "name",
|
jbe/bsw@0
|
97 },
|
jbe/bsw@0
|
98 {
|
jbe/bsw@0
|
99 label = _"Description",
|
jbe/bsw@0
|
100 name = "description",
|
jbe/bsw@0
|
101 },
|
jbe/bsw@0
|
102 {
|
jbe/bsw@0
|
103 label = _"Duration",
|
jbe/bsw@0
|
104 name = "duration",
|
jbe/bsw@0
|
105 },
|
jbe/bsw@0
|
106 {
|
jbe/bsw@0
|
107 content = function()
|
jbe/bsw@0
|
108 ui.field.hidden{ name = "id" }
|
jbe/bsw@0
|
109 end
|
jbe/bsw@0
|
110 }
|
jbe/bsw@0
|
111 }
|
jbe/bsw@0
|
112 }
|
jbe/bsw@0
|
113
|
jbe/bsw@0
|
114 ui.submit{ text = _"Save" }
|
jbe/bsw@0
|
115 end
|
jbe/bsw@0
|
116 }
|
jbe/bsw@0
|
117 end)
|