diff --git a/app/controllers/maps_controller.rb b/app/controllers/maps_controller.rb index 8f0ced9b..2bd56aca 100644 --- a/app/controllers/maps_controller.rb +++ b/app/controllers/maps_controller.rb @@ -2,7 +2,7 @@ class MapsController < ApplicationController before_filter :require_user, only: [:create, :update, :screenshot, :destroy] - respond_to :html, :json + respond_to :html, :json, :csv autocomplete :map, :name, :full => true, :extra_data => [:user_id] @@ -86,6 +86,8 @@ class MapsController < ApplicationController respond_with(@allmappers, @allmappings, @allsynapses, @alltopics, @map) } format.json { render json: @map } + format.csv { send_data @map.to_csv } + format.xls end end diff --git a/app/models/map.rb b/app/models/map.rb index 3bf5a4a6..6bc5704e 100644 --- a/app/models/map.rb +++ b/app/models/map.rb @@ -82,6 +82,20 @@ class Map < ActiveRecord::Base json end + def to_csv(options = {}) + CSV.generate(options) do |csv| + csv << ["id", "name", "permission", "user.name"] + self.topics.each do |topic| + csv << [ + topic.id, + topic.name, + topic.permission, + topic.user.name + ] + end + end + end + ##### PERMISSIONS ###### def authorize_to_delete(user) diff --git a/app/views/maps/show.xls.erb b/app/views/maps/show.xls.erb new file mode 100644 index 00000000..7c4f8078 --- /dev/null +++ b/app/views/maps/show.xls.erb @@ -0,0 +1,16 @@ + + + + + + + + <% @map.topics.each do |topic| %> + + + + + + + <% end %> +
IDNamePermissionUsername
<%= topic.id %><%= topic.name %><%= topic.permission %><%= topic.user.name %>
diff --git a/config/application.rb b/config/application.rb index d9f5f0f1..8769db39 100644 --- a/config/application.rb +++ b/config/application.rb @@ -1,5 +1,6 @@ require File.expand_path('../boot', __FILE__) +require 'csv' require 'rails/all' if defined?(Bundler) diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb index 72aca7e4..8b5e5425 100644 --- a/config/initializers/mime_types.rb +++ b/config/initializers/mime_types.rb @@ -3,3 +3,5 @@ # Add new mime types for use in respond_to blocks: # Mime::Type.register "text/richtext", :rtf # Mime::Type.register_alias "text/html", :iphone + +Mime::Type.register "application/xls", :xls