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