From bd322464b7068aaeb176eac8aad2f08557bcda9e Mon Sep 17 00:00:00 2001 From: Akash Manohar J Date: Fri, 16 Mar 2012 21:51:58 +0530 Subject: [PATCH] Adds a per-channel file list Signed-off-by: Akash Manohar J --- .../collections/attachments.js.coffee | 5 +++- .../backbone/data/attachments.js.coffee | 1 + .../javascripts/backbone/kandan.js.coffee | 3 ++- .../backbone/plugins/attachments.js.coffee | 25 +++++++++++++++---- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/backbone/collections/attachments.js.coffee b/app/assets/javascripts/backbone/collections/attachments.js.coffee index 2f47e7b9..7318cf7f 100644 --- a/app/assets/javascripts/backbone/collections/attachments.js.coffee +++ b/app/assets/javascripts/backbone/collections/attachments.js.coffee @@ -1,3 +1,6 @@ class Kandan.Collections.Attachments extends Backbone.Collection url: ()-> - "/channels/#{@options.channel_id}/attachments" \ No newline at end of file + "/channels/#{@channel_id}/attachments" + + initialize: (models, options)-> + @channel_id = options.channel_id diff --git a/app/assets/javascripts/backbone/data/attachments.js.coffee b/app/assets/javascripts/backbone/data/attachments.js.coffee index aa227112..6f3e9db2 100644 --- a/app/assets/javascripts/backbone/data/attachments.js.coffee +++ b/app/assets/javascripts/backbone/data/attachments.js.coffee @@ -1 +1,2 @@ class Kandan.Data.Attachments + # TODO use this for the file list plugin \ No newline at end of file diff --git a/app/assets/javascripts/backbone/kandan.js.coffee b/app/assets/javascripts/backbone/kandan.js.coffee index 869d0558..aa2d7f56 100644 --- a/app/assets/javascripts/backbone/kandan.js.coffee +++ b/app/assets/javascripts/backbone/kandan.js.coffee @@ -48,7 +48,8 @@ window.Kandan = $(".container").html(chat_area.render().el) chatbox = new Kandan.Views.Chatbox() $(".container").append(chatbox.render().el) - $('#channels').tabs({select: ()-> + $('#channels').tabs({select: (event, ui)-> + console.log "channel changed to index", ui.index Kandan.Data.Channels.run_callbacks('change') }) diff --git a/app/assets/javascripts/backbone/plugins/attachments.js.coffee b/app/assets/javascripts/backbone/plugins/attachments.js.coffee index 116c2ce1..c1e75f53 100644 --- a/app/assets/javascripts/backbone/plugins/attachments.js.coffee +++ b/app/assets/javascripts/backbone/plugins/attachments.js.coffee @@ -1,6 +1,7 @@ class Kandan.Plugins.Attachments @widget_title: "Attachments" + @widget_name: "attachments" @plugin_namespace: "Kandan.Plugins.Attachments" @template: _.template(''' @@ -18,26 +19,40 @@ class Kandan.Plugins.Attachments @csrf_param: -> $('meta[name=csrf-param]').attr('content') - @csrf_token: -> $('meta[name=csrf-token]').attr('content') + @file_item_template: _.template(''' +
  • <%= file_name %>
  • + ''') + # TODO this part is very bad for APIs! shoudnt be exposing a backbone collection in a plugin. @render: ($widget_el)-> + console.log "current channel", @channel_id() $upload_form = @template({ channel_id: @channel_id(), csrf_param: @csrf_param(), csrf_token: @csrf_token() }) - $widget_el.append($upload_form) - # $widget_el.append($file_list) + $widget_el.html($upload_form) + + $file_list = $("") + attachments = new Kandan.Collections.Attachments([], {channel_id: @channel_id()}) + attachments.fetch({success: (collection)=> + for model in collection.models + $file_list.append(@file_item_template({ + file_name: model.get('file_file_name'), + url: model.get('url') + })) + $widget_el.append($file_list) + }) @init: ()-> - Kandan.Widgets.register "attachments", @plugin_namespace + Kandan.Widgets.register @widget_name, @plugin_namespace Kandan.Data.Channels.register_callback "change", ()=> console.log "channel changed" - #Kandan.Widgets.render(@widget_name) + Kandan.Widgets.render(@widget_name) Kandan.Plugins.register "Kandan.Plugins.Attachments" \ No newline at end of file