+ get_action: (params) ->\r
+ controller = Manifest.manifest().controllers[params['controller']]\r
+ controller.actions[params['action']]\r
+ \r
+ add_links: () ->\r
+ _.each @links_conf, (conf, name) =>\r
+ @add_link(name, conf.caption, @get_action(conf.params).url(conf.params))\r
+ \r
+ add_link: (name, caption, url) ->\r
+ link = new Tag.A({\r
+ attr: {href: '/' + url},\r
+ content: caption\r
+ })\r
+ @listenTo(link, 'click', this['click_' + name])\r
+ this.$el.append(link.render().el)\r
+ \r
+ create_dialog: () ->\r
+ dialog = new Editor.PanelEditor.Dialog({\r
+ parent: this\r
+ })\r
+ this.$el.append(dialog.render().el)\r
+ _this = this\r
+ dialog.$el.dialog({\r
+ autoOpen: false,\r
+ width: 750, \r
+ height: 560,\r
+ close: (ui, event) ->\r
+ _this.close_dialog(dialog)\r
+ })\r
+ dialog\r
+ \r
+ click_default: (params) ->\r
+ dialog = @create_dialog()\r
+ picker = new Pettanr.Views[@model.singular()].NewElement({\r
+ parent: this, target_model: @model\r
+ })\r
+ @listenTo(picker, 'pick', @pick)\r
+ @listenTo(picker, 'dialog:open', @open_dialog)\r
+ @listenTo(picker, 'dialog:close', @close_dialog)\r
+ picker.start(dialog, params)\r
+ \r
+ pick: (new_item) ->\r
+ @trigger('pick', new_item)\r
+ \r
+ open_dialog: (dialog) ->\r
+ @trigger('dialog:open', dialog)\r
+ \r
+ close_dialog: (dialog) ->\r
+ @trigger('dialog:close', dialog)\r