jbe/bsw@0: local medium jbe/bsw@0: local id = param.get_id() jbe/bsw@0: if id then jbe/bsw@0: medium = Medium:by_id(id) jbe/bsw@0: else jbe/bsw@0: medium = Medium:new() jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: if param.get("delete", atom.boolean) then jbe/bsw@0: local name = medium.name jbe/bsw@0: medium:destroy() jbe/bsw@0: slot.put_into("notice", _("Medium '#{name}' deleted", {name = name})) jbe/bsw@0: return jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: param.update(medium, "media_type_id", "name", "copyprotected") jbe/bsw@0: jbe/bsw@0: medium:save() jbe/bsw@0: jbe/bsw@0: param.update_relationship{ jbe/bsw@0: param_name = "genres", jbe/bsw@0: id = medium.id, jbe/bsw@0: connecting_model = Classification, jbe/bsw@0: own_reference = "medium_id", jbe/bsw@0: foreign_reference = "genre_id" jbe/bsw@0: } jbe/bsw@0: jbe/bsw@0: for index, prefix in param.iterate("tracks") do jbe/bsw@0: local id = param.get(prefix .. "id", atom.integer) jbe/bsw@0: local track jbe/bsw@0: if id then jbe/bsw@0: track = Track:by_id(id) jbe/bsw@0: elseif #param.get(prefix .. "name") > 0 then jbe/bsw@0: track = Track:new() jbe/bsw@0: track.medium_id = medium.id jbe/bsw@0: else jbe/bsw@0: break jbe/bsw@0: end jbe/bsw@0: track.position = param.get(prefix .. "position", atom.integer) jbe/bsw@0: track.name = param.get(prefix .. "name") jbe/bsw@0: track.description = param.get(prefix .. "description") jbe/bsw@0: track.duration = param.get(prefix .. "duration") jbe/bsw@0: track:save() jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: jbe/bsw@0: if id then jbe/bsw@0: slot.put_into("notice", _("Medium '#{name}' updated", {name = medium.name})) jbe/bsw@0: else jbe/bsw@0: slot.put_into("notice", _("Medium '#{name}' created", {name = medium.name})) jbe/bsw@0: end