diff options
-rw-r--r-- | app/controllers/api/v1/calls_controller.rb | 24 | ||||
-rw-r--r-- | app/controllers/switchboard_entries_controller.rb | 2 | ||||
-rw-r--r-- | app/views/switchboard_entries/_form_core.html.haml | 1 | ||||
-rw-r--r-- | app/views/switchboard_entries/show.html.haml | 5 | ||||
-rw-r--r-- | app/views/switchboards/show.html.erb | 22 | ||||
-rw-r--r-- | config/routes.rb | 1 | ||||
-rw-r--r-- | public/js/app.js | 21 |
7 files changed, 51 insertions, 25 deletions
diff --git a/app/controllers/api/v1/calls_controller.rb b/app/controllers/api/v1/calls_controller.rb new file mode 100644 index 0000000..e6fbed4 --- /dev/null +++ b/app/controllers/api/v1/calls_controller.rb @@ -0,0 +1,24 @@ +module Api + module V1 + class CallsController < ApplicationController + respond_to :json + + def index + @calls = Call.limit(10) + + respond_with @calls + end + + def show + @call = Call.find(params[:id]) + + if params[:transfer_blind] + @call.transfer_blind(params[:transfer_blind]) + end + + respond_with @call + end + + end + end +end diff --git a/app/controllers/switchboard_entries_controller.rb b/app/controllers/switchboard_entries_controller.rb index ef6c72e..5b41816 100644 --- a/app/controllers/switchboard_entries_controller.rb +++ b/app/controllers/switchboard_entries_controller.rb @@ -58,7 +58,7 @@ class SwitchboardEntriesController < ApplicationController private def switchboard_entry_params - params.require(:switchboard_entry).permit(:name, :sip_account_id) + params.require(:switchboard_entry).permit(:name, :sip_account_id, :switchable) end def spread_breadcrumbs diff --git a/app/views/switchboard_entries/_form_core.html.haml b/app/views/switchboard_entries/_form_core.html.haml index 6f340c2..2caaba5 100644 --- a/app/views/switchboard_entries/_form_core.html.haml +++ b/app/views/switchboard_entries/_form_core.html.haml @@ -1,3 +1,4 @@ .inputs = f.association :sip_account, :collection => @sip_accounts, :label => t('switchboard_entries.form.sip_account_id.label'), :hint => conditional_hint('switchboard_entries.form.sip_account_id.hint'), :autofocus => true, :include_blank => false = f.input :name, :label => t('switchboard_entries.form.name.label'), :hint => conditional_hint('switchboard_entries.form.name.hint') + = f.input :switchable, :as => :boolean, :label => t('switchboard_entries.form.switchable.label'), :hint => conditional_hint('switchboard_entries.form.switchable.hint')
\ No newline at end of file diff --git a/app/views/switchboard_entries/show.html.haml b/app/views/switchboard_entries/show.html.haml index b519781..85b8166 100644 --- a/app/views/switchboard_entries/show.html.haml +++ b/app/views/switchboard_entries/show.html.haml @@ -18,5 +18,10 @@ %strong= t('switchboard_entries.show.position') + ":" %td = @switchboard_entry.position + %tr + %td + %strong= t('switchboard_entries.show.switchable') + ":" + %td + = @switchboard_entry.switchable = render :partial => 'shared/show_edit_destroy_part', :locals => {:parent => @switchboard, :child => @switchboard_entry }
\ No newline at end of file diff --git a/app/views/switchboards/show.html.erb b/app/views/switchboards/show.html.erb index 2a2765f..4877613 100644 --- a/app/views/switchboards/show.html.erb +++ b/app/views/switchboards/show.html.erb @@ -26,16 +26,27 @@ {{avatar_img switchboardEntry.avatar_src}} <small> <p> + {{#if switchboardEntry.name}} <span class="label">{{switchboardEntry.name}}</span> + {{/if}} {{#each phoneNumber in switchboardEntry.sipAccount.phoneNumberShortList}} <span class="label"> {{phoneNumber.number}} </span> + + {{#if activeCalls.length}} + <p> + {{#each activeCall in activeCalls}} + <button {{action transfer_blind activeCall.id phoneNumber.number}} class="btn btn-small">Blind Transfer ({{activeCall.b_caller_id_number}})</button> + {{/each}} + </p> + {{/if}} {{/each}} </p> {{show_callstate switchboardEntry.callstate}} + {{#if switchboardEntry.sipAccount.calls.length}} <p> Anrufe: @@ -51,17 +62,6 @@ </p> {{/if}} - {{#if activeCalls.length}} - <p> - Verbinden mit: - <br> - {{#each activeCall in activeCalls}} - <button {{action blind_transfer}}> - {{activeCall.b_caller_id_number}} - </button> - {{/each}} - </p> - {{/if}} </small> </div> </li> diff --git a/config/routes.rb b/config/routes.rb index 46562eb..eeb9c0b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -11,6 +11,7 @@ Gemeinschaft42c::Application.routes.draw do resources :sip_accounts, :only => [:show, :index] resources :pager_groups resources :phone_numbers, :only => [:show, :index] + resources :calls, :only => [:index, :show, :update] end resources :rows diff --git a/public/js/app.js b/public/js/app.js index 51b3b71..da887c4 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1,5 +1,4 @@ App = Ember.Application.create({ - LOG_TRANSITIONS: true, rootElement: '#emberjs-container', // Reload the switchboard every x milliseconds @@ -9,11 +8,6 @@ App = Ember.Application.create({ var switchboard = App.Switchboard.find(switchboard_id); setInterval(function() { switchboard.reload(); - - // var switchboard_entries = App.SwitchboardEntry.find(); - // switchboard_entries.forEach(function(switchboard_entry) { - // switchboard_entry.reload(); - // }); }, reload_interval); } } @@ -32,8 +26,10 @@ App.SwitchboardRoute = Ember.Route.extend({ // Controller App.SwitchboardController = Ember.ObjectController.extend({ - blind_transfer: function() { - console.log('transfer') + transfer_blind: function(call_id, destination) { + console.log('test') + request_url = '/api/v1/calls/' + call_id + '.json'; + jQuery.get(request_url, { transfer_blind: destination }); } }); @@ -52,8 +48,6 @@ App.Switchboard = DS.Model.extend({ switchboardEntrys: DS.hasMany('App.SwitchboardEntry'), activeCalls: DS.hasMany('App.ActiveCall'), name: DS.attr('string') - - }); App.SwitchboardEntry = DS.Model.extend({ @@ -114,8 +108,7 @@ App.Call = DS.Model.extend({ } else { return false } - }.property('b_callstate') - + }.property('b_callstate') }); App.store.adapter.serializer.configure(App.PhoneNumber, { sideloadAs: 'phone_numbers' }); @@ -125,5 +118,7 @@ Ember.Handlebars.registerBoundHelper('avatar_img', function(value) { }); Ember.Handlebars.registerBoundHelper('show_callstate', function(value) { - return new Handlebars.SafeString('<span class="label">' + value + '</span>'); + if (value) { + return new Handlebars.SafeString('<span class="label">' + value + '</span>'); + } }); |