class Pettanr.Views.ScrollPanel.NewElementLauncher extends Pettanr.View initialize: (options) -> @parent = options.parent @model = options.model @links_conf = {} _.extend(@links_conf, { users: { caption: "User's", params: { controller: @model.pick_model().path_name(), action: 'index', page_size: 8, format: 'html' } } }) _.extend(@links_conf, { mine: { caption: 'Mine', params: { controller: @model.pick_model().path_name(), action: 'by_author', id: Pettanr.cache.operators.author.get('id'), page_size: 8, format: 'html' } } }) _.extend(@links_conf, { authors: { caption: "Authors", params: { controller: 'authors', action: 'index', page_size: 8, format: 'html' } } }) render: () -> this.$el.html('') header = new Editor.EditorModule.DockModule.NewElementLauncherHeader({model: @model}) this.$el.append(header.render().el) @add_links() this get_action: (params) -> controller = Manifest.manifest().controllers[params['controller']] controller.actions[params['action']] add_links: () -> _.each @links_conf, (conf, name) => @add_link(name, conf.caption, @get_action(conf.params).url(conf.params)) add_link: (name, caption, url) -> link = new Tag.A({ attr: {href: '/' + url}, content: caption }) span = new Tag.Span({ content: link.render().el }) @listenTo(link, 'click', this['click_' + name]) this.$el.append(span.render().el) click_users: () -> params = @links_conf.users.params url = @get_action(params).url(params) @trigger('http_get', url) click_mine: () -> params = @links_conf.mine.params url = @get_action(params).url(params) @trigger('http_get', url) click_authors: () -> params = @links_conf.authors.params url = @get_action(params).url(params) @trigger('http_get', url)