diff --git a/admin/Gemfile b/admin/Gemfile index 8a4306801..a7a1d1e2c 100644 --- a/admin/Gemfile +++ b/admin/Gemfile @@ -52,6 +52,8 @@ gem 'postgres-copy', '0.6.0' gem 'aws-sdk', '1.29.1' gem 'bugsnag' gem 'gon' +gem 'cocoon' +gem 'haml-rails' gem 'resque' gem 'resque-retry' gem 'resque-failed-job-mailer' diff --git a/admin/app/admin/bands.rb b/admin/app/admin/bands.rb index 5e7dd2f80..17bcfee13 100644 --- a/admin/app/admin/bands.rb +++ b/admin/app/admin/bands.rb @@ -1,3 +1,7 @@ -ActiveAdmin.register JamRuby::Band, :as => 'Band' do +ActiveAdmin.register JamRuby::Band, :as => 'Band' do + collection_action :autocomplete_band_name, :method => :get + controller do + autocomplete :band, :name, :full => true + end end diff --git a/admin/app/admin/jam_ruby_users.rb b/admin/app/admin/jam_ruby_users.rb index 6332400ed..79890b3cf 100644 --- a/admin/app/admin/jam_ruby_users.rb +++ b/admin/app/admin/jam_ruby_users.rb @@ -1,5 +1,8 @@ ActiveAdmin.register JamRuby::User, :as => 'Users' do + + collection_action :autocomplete_user_email, :method => :get + menu :label => 'Users', :parent => 'Users' config.sort_order = 'created_at DESC' @@ -11,7 +14,8 @@ ActiveAdmin.register JamRuby::User, :as => 'Users' do filter :created_at filter :updated_at - form do |ff| + + form do |ff| ff.inputs "Details" do ff.input :email ff.input :admin @@ -95,6 +99,8 @@ ActiveAdmin.register JamRuby::User, :as => 'Users' do controller do + autocomplete :user, :email, :full => true + def create @jam_ruby_user = JamRuby::User.new(params[:jam_ruby_user]) @jam_ruby_user.administratively_created = true diff --git a/admin/app/admin/recordings.rb b/admin/app/admin/recordings.rb index e8a347ad7..210509560 100644 --- a/admin/app/admin/recordings.rb +++ b/admin/app/admin/recordings.rb @@ -1,18 +1,56 @@ ActiveAdmin.register JamRuby::Recording, :as => 'Recording' do - menu :label => 'Recordings', :parent => 'Recordings' + menu :label => 'Recording', :parent => 'Recordings' config.sort_order = 'DESC updated_at' config.batch_actions = false # config.clear_action_items! config.filters = false - #form :partial => 'form' - - collection_action :autocomplete_user_email, :method => :get + form :partial => 'form' controller do - autocomplete :user, :email + def new + @recording = JamRuby::Recording.new + super + end + + def create + owner = User.find_by_email!(params[:jam_ruby_recording][:owner]) + band = User.find_by_band!(params[:jam_ruby_recording][:band]) + recording = Recording.new + recording.owner = owner + recording.band = band + recording.save + redirect_to("/admin/recordings/#{recording.id}") + end + + def edit + @recording = resource + super + end + + + def update + owner = User.find_by_email!(params[:jam_ruby_recording][:owner]) + band = Band.find_by_name!(params[:jam_ruby_recording][:band]) + recorded_tracks = params[:jam_ruby_recording][:recorded_tracks] + recorded_tracks.each do |recorded_track| + track = RecordedTrack.new + track.client_id ||= 'fake' + track.track_id ||= 'fake' + track.client_track_id ||= 'fake' + track.sound ||= 'stereo' + track.recording = resource + track.user = User.find_by_email!(recorded_track[:user]) + track.instrument = Instrument.find_by_instrument!(recorded_track[:instrument]) + resource.recorded_tracks << track + end + resource.owner = owner + resource.band = band + resource.save + redirect_to("/admin/recordings/#{resource.id}") + end end diff --git a/admin/app/assets/javascripts/active_admin.js b/admin/app/assets/javascripts/active_admin.js index 0ebd669c5..8d8a2f0b3 100644 --- a/admin/app/assets/javascripts/active_admin.js +++ b/admin/app/assets/javascripts/active_admin.js @@ -5,6 +5,8 @@ //= require jquery.ui.widget //= require jquery.ui.datepicker //= require jquery.ui.dialog +//= require jquery.ui.autocomplete +//= require cocoon //= require active_admin/application //= require autocomplete-rails //= require base diff --git a/admin/app/views/admin/recordings/_form.html.erb b/admin/app/views/admin/recordings/_form.html.erb index e69de29bb..ceb327eb9 100644 --- a/admin/app/views/admin/recordings/_form.html.erb +++ b/admin/app/views/admin/recordings/_form.html.erb @@ -0,0 +1,15 @@ +<%= semantic_form_for([:admin, @recording], :html => {:multipart => true}, :url => @recording.new_record? ? admin_recordings_path : "/admin/recordings/#{@recording.id}") do |f| %> + <%= f.semantic_errors *f.object.errors.keys %> + <%= f.inputs do %> + <%= f.input :owner, :as => :autocomplete, :url => autocomplete_user_email_admin_users_path %> + <%= f.input :band, :as => :autocomplete, :url => autocomplete_band_name_admin_bands_path %> + + <%= f.fields_for :recorded_tracks do |recorded_track| %> + <%= render 'recorded_track', f: recorded_track %> + <% end %> + + <%= link_to_add_association 'add track', f, :recorded_tracks %> + + <% end %> + <%= f.actions %> +<% end %> diff --git a/admin/app/views/admin/recordings/_recorded_track.html.haml b/admin/app/views/admin/recordings/_recorded_track.html.haml index 25baacf6f..88c59eda8 100644 --- a/admin/app/views/admin/recordings/_recorded_track.html.haml +++ b/admin/app/views/admin/recordings/_recorded_track.html.haml @@ -1,5 +1,4 @@ - -<%= f.inputs do %> - <%= f.input :user, :as => :autocomplete, :url => autocomplete_user_email_admin_users_path %> - <%= f.input :instrument, :collection => Instrument.all %> -<% end %> \ No newline at end of file +.nested-fields + = f.inputs :name => "Track" do + = f.input :user, :as => :autocomplete, :url => autocomplete_user_email_admin_users_path + = f.input :instrument, :collection => Instrument.all \ No newline at end of file diff --git a/admin/app/views/admin/recordings/_recorded_track_fields.html.erb b/admin/app/views/admin/recordings/_recorded_track_fields.html.erb index e69de29bb..e8a91c1a3 100644 --- a/admin/app/views/admin/recordings/_recorded_track_fields.html.erb +++ b/admin/app/views/admin/recordings/_recorded_track_fields.html.erb @@ -0,0 +1,6 @@ +