diff --git a/ruby/lib/jam_ruby/models/music_session.rb b/ruby/lib/jam_ruby/models/music_session.rb index 5194517c8..095a8035a 100644 --- a/ruby/lib/jam_ruby/models/music_session.rb +++ b/ruby/lib/jam_ruby/models/music_session.rb @@ -319,7 +319,7 @@ module JamRuby end def self.create user, options - band = Band.find(options[:band]) unless options[:band].nil? + band = Band.where(id: options[:band]).first if options[:band].present? ms = MusicSession.new ms.name = options[:name] diff --git a/web/app/assets/javascripts/inviteMusicians.js b/web/app/assets/javascripts/inviteMusicians.js index d7f6b933c..30df7e05b 100644 --- a/web/app/assets/javascripts/inviteMusicians.js +++ b/web/app/assets/javascripts/inviteMusicians.js @@ -138,6 +138,8 @@ } } + this.addInvitationIfAbsent = addInvitation; + function getInvitedFriends() { return invitedFriends; } diff --git a/web/app/assets/javascripts/scheduled_session.js.erb b/web/app/assets/javascripts/scheduled_session.js.erb index 1fc4d1156..9aa6dc04a 100644 --- a/web/app/assets/javascripts/scheduled_session.js.erb +++ b/web/app/assets/javascripts/scheduled_session.js.erb @@ -21,6 +21,7 @@ timezone: {}, recurring_mode: {}, language: {}, + band: {}, musician_access: {}, fans_access: {}, open_rsvps: false @@ -40,6 +41,7 @@ var $timezoneList = null; var $recurringModeList = null; var $languageList = null; + var $bandList = null; var $sessionPlusMusiciansLabel = null; var $editScheduledSessions = null; var $inputFiles = $screen.find('#session-select-files'); @@ -256,6 +258,7 @@ } $('#session-language-disp').html(createSessionSettings.language.label); + $('#session-band-disp').html(createSessionSettings.band.label); var plusMusicians = $('#session-plus-musicians')[0].checked; @@ -538,6 +541,12 @@ createSessionSettings.language.value = $languageList.val(); createSessionSettings.language.label = $languageList.get(0).options[$languageList.get(0).selectedIndex].text; + createSessionSettings.band.value = $bandList.val(); + if (createSessionSettings.band.value === '0') + createSessionSettings.band.label = ''; + else + createSessionSettings.band.label = $bandList.get(0).options[$bandList.get(0).selectedIndex].text; + createSessionSettings.open_rsvps = $('#session-plus-musicians')[0].checked; return true; } @@ -637,6 +646,7 @@ data.legal_policy = createSessionSettings.session_policy; data.legal_terms = true; data.language = createSessionSettings.language.value; + data.band = createSessionSettings.band.value; if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_QUICK_START %>' || createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_IMMEDIATE %>') { data.start = new Date().toDateString() + ' ' + context.JK.formatUtcTime(new Date(), false); data.duration = "60"; @@ -1026,6 +1036,7 @@ context.JK.dropdown($timezoneList); context.JK.dropdown($recurringModeList); context.JK.dropdown($languageList); + context.JK.dropdown($bandList); context.JK.helpBubble($sessionPlusMusiciansLabel, 'session-plus-musicians', {}, {offsetParent: $sessionPlusMusiciansLabel.closest('.content-wrapper')}); @@ -1132,6 +1143,7 @@ createSessionSettings.recurring_mode = {}; createSessionSettings.timezone = {}; createSessionSettings.language = {}; + createSessionSettings.band = {}; createSessionSettings.musician_access = {}; createSessionSettings.fans_access = {}; } @@ -1171,6 +1183,27 @@ $('#session-fans-access-info .info-box[fans-access-type="' + $(event.target).val() + '"]').removeClass('hidden'); } + function selectBand() { + var bandId = $bandList.get(0).options[$bandList.get(0).selectedIndex].value; + if (bandId != '') { + var url = "/api/bands/" + bandId + "/musicians"; + return $.ajax({ + type: "GET", + dataType: "json", + url: url, + processData:false, + error: app.ajaxError + }) + .done(function(response) { + $.each(response, function(index, val) { + if (val.id !== context.JK.currentUserId) { + inviteMusiciansUtil.addInvitationIfAbsent(val.name, val.id); + } + }); + }) + } + } + // asks the instrument selector for the creator's specified instruments, and defaults to Other/Beginner if none were selected function getCreatorInstruments() { var instruments = instrumentSelector.getSelectedInstruments(); @@ -1202,7 +1235,8 @@ invitationDialog.showFacebookDialog(e); }); - $(friendInput).focus(function() { $(this).val(''); }) + $(friendInput).focus(function() { $(this).val(''); }); + $bandList.on('change', function() { selectBand() } ); $inputFiles.on('change', changeSelectedFiles); $btnSelectFiles.on('click', toggleSelectFiles); @@ -1235,6 +1269,7 @@ $createTypeHelpers = $screen.find('.session-when-info div'); $scheduledSessions = $screenStep1.find("#scheduled-session-list"); $languageList = $screen.find('#session-language-list'); + $bandList = $screen.find('#session-band-list'); $sessionPlusMusiciansLabel = $screen.find('label[for="session-plus-musicians"]'); $editScheduledSessions = $screen.find('#edit_scheduled_sessions'); $btnSelectFiles = $screen.find('#session-notation-file-selection'); diff --git a/web/app/assets/stylesheets/client/createSession.css.scss b/web/app/assets/stylesheets/client/createSession.css.scss index 83eeba993..55376f41b 100644 --- a/web/app/assets/stylesheets/client/createSession.css.scss +++ b/web/app/assets/stylesheets/client/createSession.css.scss @@ -321,8 +321,13 @@ } .session-language-list-header { - margin-top:25px; - margin-bottom:20px; + margin-top:20px; + margin-bottom:10px; + } + + .session-band-list-header { + margin-top:20px; + margin-bottom:10px; } diff --git a/web/app/views/clients/_scheduledSession.html.erb b/web/app/views/clients/_scheduledSession.html.erb index 89a98df01..4e06c077a 100644 --- a/web/app/views/clients/_scheduledSession.html.erb +++ b/web/app/views/clients/_scheduledSession.html.erb @@ -239,6 +239,14 @@ just start typing your friends' names and select them from the popup menu. If you choose to let other interested musicians join you, you will have the opportunity to approve them when they RSVP. +