From 3ba444ee09abceac73a0507130035a4bf099ffc4 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Thu, 28 Feb 2013 03:13:31 -0500 Subject: update fax tiff file --- app/controllers/trigger_controller.rb | 1 - 1 file changed, 1 deletion(-) (limited to 'app') diff --git a/app/controllers/trigger_controller.rb b/app/controllers/trigger_controller.rb index 64a5f91..6cc9fa7 100644 --- a/app/controllers/trigger_controller.rb +++ b/app/controllers/trigger_controller.rb @@ -89,7 +89,6 @@ class TriggerController < ApplicationController rescue => e logger.error "PDF fax file could not be deleted: #{pdf_file} => #{e.inspect}" end - fax_document.tiff = nil fax_document.save fax_document.render_thumbnails else -- cgit v1.2.3 From 3a0f9f2736ec6a253e632b5671dfd669ffe99173 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Thu, 28 Feb 2013 03:13:57 -0500 Subject: fax documents index view --- app/views/fax_documents/_index_core.html.haml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/views/fax_documents/_index_core.html.haml b/app/views/fax_documents/_index_core.html.haml index 2f9b214..df1e2ac 100644 --- a/app/views/fax_documents/_index_core.html.haml +++ b/app/views/fax_documents/_index_core.html.haml @@ -25,9 +25,24 @@ %tr{:class => current_status} %td - case fax_document.state + - when 'received' + %i.icon-warning-sign + = l fax_document.sent_at, :format => :short + - when 'unsuccessful' + %i.icon-ban-circle + = t("fax_documents.states.#{fax_document.state}") - when 'successful' - = "#{fax_document.inbound ? '⇨' : '⇦'}".html_safe + - if fax_document.inbound + %i.icon-arrow-right + - else + %i.icon-arrow-left = l fax_document.sent_at, :format => :short + - when 'queued_for_sending' + %i.icon-time + = t("fax_documents.states.#{fax_document.state}") + - when 'sending' + %i.icon-print + = t("fax_documents.states.#{fax_document.state}") - else = t("fax_documents.states.#{fax_document.state}") %td -- cgit v1.2.3 From 1353b9c0563da02f1b17e54d802f28221cdce982 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Thu, 28 Feb 2013 09:02:19 -0500 Subject: breadcrumbs --- app/controllers/calls_controller.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'app') diff --git a/app/controllers/calls_controller.rb b/app/controllers/calls_controller.rb index 5534b1b..22ff92d 100644 --- a/app/controllers/calls_controller.rb +++ b/app/controllers/calls_controller.rb @@ -3,6 +3,7 @@ class CallsController < ApplicationController load_resource :call before_filter :set_and_authorize_parent + before_filter :spread_breadcrumbs def index if @parent @@ -55,4 +56,20 @@ class CallsController < ApplicationController def set_and_authorize_parent @parent = @sip_account end + + def spread_breadcrumbs + if @parent.class == SipAccount + if @sip_account.sip_accountable.class == User + add_breadcrumb t('users.name'), tenant_users_path(@sip_account.sip_accountable.current_tenant) + add_breadcrumb @sip_account.sip_accountable, tenant_user_path(@sip_account.sip_accountable.current_tenant, @sip_account.sip_accountable) + add_breadcrumb t('sip_accounts.index.page_title'), user_sip_accounts_path(@sip_account.sip_accountable) + add_breadcrumb @sip_account, user_sip_account_path(@sip_account.sip_accountable, @sip_account) + add_breadcrumb t('calls.index.page_title'), sip_account_calls_path(@sip_account) + elsif @sip_account.sip_accountable.class == Tenant + add_breadcrumb t('sip_accounts.index.page_title'), tenant_sip_accounts_path(@sip_account.sip_accountable) + add_breadcrumb @sip_account, tenant_sip_account_path(@sip_account.sip_accountable, @sip_account) + add_breadcrumb t('calls.index.page_title'), sip_account_calls_path(@sip_account) + end + end + end end -- cgit v1.2.3 From 6238abea422a1be14d5f3d8cbacd78f2e72fd466 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Thu, 28 Feb 2013 09:09:10 -0500 Subject: group defaults --- app/controllers/groups_controller.rb | 2 +- app/models/group.rb | 3 +++ app/views/groups/_form_core.html.haml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 74ad7c8..d48707c 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -11,7 +11,7 @@ class GroupsController < ApplicationController end def new - @group = Group.new + @group.active = true; end def create diff --git a/app/models/group.rb b/app/models/group.rb index e0cfaab..c459530 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -5,6 +5,9 @@ class Group < ActiveRecord::Base has_many :group_permissions, :dependent => :destroy has_many :permittances, :foreign_key => :target_group_id, :class_name => "GroupPermission", :dependent => :destroy + validates :name, + :presence => true + def to_s self.name end diff --git a/app/views/groups/_form_core.html.haml b/app/views/groups/_form_core.html.haml index 1f9a39f..02f296b 100644 --- a/app/views/groups/_form_core.html.haml +++ b/app/views/groups/_form_core.html.haml @@ -1,4 +1,4 @@ .inputs = f.input :name, :label => t('groups.form.name.label'), :hint => conditional_hint('groups.form.name.hint') - = f.input :active, :label => t('groups.form.active.label'), :hint => conditional_hint('groups.form.active.hint') = f.input :comment, :label => t('groups.form.comment.label'), :hint => conditional_hint('groups.form.comment.hint') + = f.input :active, :label => t('groups.form.active.label'), :hint => conditional_hint('groups.form.active.hint') -- cgit v1.2.3 From e1c2ef6e5d2d48eab026f788d93e6c170d276194 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Thu, 28 Feb 2013 09:38:07 -0500 Subject: phone book entry view --- app/views/phone_book_entries/show.html.haml | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'app') diff --git a/app/views/phone_book_entries/show.html.haml b/app/views/phone_book_entries/show.html.haml index 7dd9bcb..1afb019 100644 --- a/app/views/phone_book_entries/show.html.haml +++ b/app/views/phone_book_entries/show.html.haml @@ -70,26 +70,39 @@ - case phone_number.name.to_s.downcase - when /fax/ .fax + %i.icon-print + = phone_number.name = link_to phone_number, call_phone_book_entry_phone_number_path(@phone_book_entry, phone_number), :method => :put, :title => t('phone_numbers.show.actions.call') - %span= phone_number.name - when /home/ .home + %i.icon-home + = phone_number.name = link_to phone_number, call_phone_book_entry_phone_number_path(@phone_book_entry, phone_number), :method => :put, :title => t('phone_numbers.show.actions.call') - %span - when /mobile/ .cellphone + %i.icon-signal + = phone_number.name = link_to phone_number, call_phone_book_entry_phone_number_path(@phone_book_entry, phone_number), :method => :put, :title => t('phone_numbers.show.actions.call') - %span= phone_number.name - when /office/ .office + %i.icon-briefcase + = phone_number.name = link_to phone_number, call_phone_book_entry_phone_number_path(@phone_book_entry, phone_number), :method => :put, :title => t('phone_numbers.show.actions.call') - %span= phone_number.name - - else + - when /phone/ .phone + %i.icon-asterisk + = phone_number.name + = link_to phone_number, call_phone_book_entry_phone_number_path(@phone_book_entry, phone_number), :method => :put, :title => t('phone_numbers.show.actions.call') + - else + .phone_number + %i.icon-star + = phone_number.name = link_to phone_number, call_phone_book_entry_phone_number_path(@phone_book_entry, phone_number), :method => :put, :title => t('phone_numbers.show.actions.call') - %span= phone_number.name - = link_to t('phone_book_entries.show.manage_phone_numbers'), phone_book_entry_phone_numbers_path(@phone_book_entry) + %p + %a.btn.btn-small.btn-default{ :href => phone_book_entry_phone_numbers_path(@phone_book_entry) } + %i.icon-edit + = t('phone_book_entries.show.manage_phone_numbers') .widget.adresses - @phone_book_entry.addresses.each do |address| -- cgit v1.2.3 From 24fbc181d0f767103b4062be4482af92feb5ffd5 Mon Sep 17 00:00:00 2001 From: spag Date: Thu, 28 Feb 2013 22:37:11 +0100 Subject: call forwarding entry scope extended --- app/models/call_forward.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/models/call_forward.rb b/app/models/call_forward.rb index a932e11..195ac36 100644 --- a/app/models/call_forward.rb +++ b/app/models/call_forward.rb @@ -177,7 +177,7 @@ class CallForward < ActiveRecord::Base end def deactivate_concurring_entries - CallForward.where(:call_forwardable_id => self.call_forwardable_id, :call_forwardable_type => self.call_forwardable_type, :call_forward_case_id => self.call_forward_case_id, :active => true).each do |call_forwarding_entry| + CallForward.where(:call_forwardable_id => self.call_forwardable_id, :call_forwardable_type => self.call_forwardable_type, :call_forward_case_id => self.call_forward_case_id, :source => self.source, :active => true).each do |call_forwarding_entry| if call_forwarding_entry.id != self.id call_forwarding_entry.update_attributes(:active => false) end -- cgit v1.2.3 From 6ed538ee9385245a7bbac838dd5b796bba2ea0c6 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Sat, 2 Mar 2013 03:38:16 -0500 Subject: use imagemagick when ghostscript fails --- app/models/fax_document.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/models/fax_document.rb b/app/models/fax_document.rb index 5b27965..3cb92ea 100644 --- a/app/models/fax_document.rb +++ b/app/models/fax_document.rb @@ -96,8 +96,17 @@ class FaxDocument < ActiveRecord::Base page_size_command = "<< /Policies << /PageSize 3 >> /InputAttributes currentpagedevice /InputAttributes get dup { pop 1 index exch undef } forall dup 0 << /PageSize [ #{page_size_a4} ] >> put >> setpagedevice" working_path, file_name = File.split(self.document.to_s) tiff_file = File.basename(file_name.to_s.downcase, File.extname(file_name)) + '.tiff' - result = system "cd #{store_dir} && gs -q -r#{self.fax_resolution.resolution_value} -dNOPAUSE -dBATCH -dSAFER -sDEVICE=tiffg3 -sOutputFile=\"#{tiff_file}\" -c \"#{page_size_command}\" -- \"#{self.document.to_s}\"" + result = system "cd #{store_dir} && gs -q -r#{self.fax_resolution.resolution_value} -dNOPAUSE -dBATCH -dSAFER -sDEVICE=tiffg3 -sOutputFile=\"#{store_dir}/#{tiff_file}\" -c \"#{page_size_command}\" -- \"#{self.document.to_s}\"" + if !File.exists?("#{store_dir}/#{tiff_file}") + page_size = "1728x1078" or "1728x1186"; + command = "cd #{store_dir} && convert -quiet -density #{self.fax_resolution.resolution_value} -units PixelsPerInch -resize #{page_size}\! -monochrome -compress Fax \"#{self.document.to_s}\" \"#{store_dir}/#{tiff_file}\"" + result = system(command) + if result.nil? + logger.error "### FAX_DOCUMENT_TO_TIFF - error: #{$?}, command: #{command}" + end + end + if !File.exists?("#{store_dir}/#{tiff_file}") return nil end -- cgit v1.2.3 From b8425f5453eab4a0fe475952af89d55ace45878e Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Sun, 3 Mar 2013 04:03:24 -0500 Subject: firewall restart after intruder changes --- app/controllers/intruders_controller.rb | 3 +- app/models/intruder.rb | 86 ++++++++++++++++++++++++------- app/views/intruders/_form_core.html.haml | 4 +- app/views/intruders/_index_core.html.haml | 12 +---- app/views/intruders/index.html.haml | 9 ++-- 5 files changed, 79 insertions(+), 35 deletions(-) (limited to 'app') diff --git a/app/controllers/intruders_controller.rb b/app/controllers/intruders_controller.rb index d3c767e..bdda230 100644 --- a/app/controllers/intruders_controller.rb +++ b/app/controllers/intruders_controller.rb @@ -2,7 +2,8 @@ class IntrudersController < ApplicationController load_and_authorize_resource :intruder def index - @intruders = Intruder.order('list_type ASC, contact_last DESC').all + @intruders = Intruder.order('list_type ASC, contact_last DESC') + @list_types = @intruders.pluck(:list_type).uniq.sort spread_breadcrumbs end diff --git a/app/models/intruder.rb b/app/models/intruder.rb index 97e3773..9a1c39a 100644 --- a/app/models/intruder.rb +++ b/app/models/intruder.rb @@ -17,6 +17,10 @@ class Intruder < ActiveRecord::Base before_validation :set_key_if_empty + after_create :check_if_new_entry_relevant + after_update :check_if_update_relevant + after_destroy :check_if_delete_relevant + def to_s key end @@ -31,26 +35,6 @@ class Intruder < ActiveRecord::Base end end - def self.write_firewall_blacklist - firewall_blacklist_file = GsParameter.get('blacklist_file', 'perimeter', 'general') - entry_template = GsParameter.get('blacklist_file_entry', 'perimeter', 'general') - comment_template = GsParameter.get('blacklist_file_comment', 'perimeter', 'general') - File.open(firewall_blacklist_file, 'w') do |file| - Intruder.where(:list_type => 'blacklist').where('bans > 0').all.each do |entry| - if ! comment_template.blank? - file.write(self.expand_variables(comment_template, entry.to_hash) + "\n") - end - file.write(self.expand_variables(entry_template, entry.to_hash) + "\n") - end - end - end - - def self.expand_variables(line, variables) - return line.gsub(/\{([a-z_]+)\}/) do |m| - variables[$1.to_sym] - end - end - def to_hash return { :key => self.key, @@ -72,4 +56,66 @@ class Intruder < ActiveRecord::Base self.key = self.contact_ip end end + + def expand_variables(line, variables) + return line.gsub(/\{([a-z_]+)\}/) do |m| + variables[$1.to_sym] + end + end + + def write_firewall_list + firewall_blacklist_file = GsParameter.get('blacklist_file', 'perimeter', 'general') + blacklist_entry_template = GsParameter.get('blacklist_file_entry', 'perimeter', 'general') + whitelist_entry_template = GsParameter.get('whitelist_file_entry', 'perimeter', 'general') + comment_template = GsParameter.get('blacklist_file_comment', 'perimeter', 'general') + File.open(firewall_blacklist_file, 'w') do |file| + Intruder.where(:list_type => ['whitelist', 'blacklist']).order('list_type DESC, contact_last ASC').all.each do |entry| + if !whitelist_entry_template.blank? && entry.list_type == 'whitelist' + if ! comment_template.blank? + file.write(expand_variables(comment_template, entry.to_hash) + "\n") + end + file.write(expand_variables(whitelist_entry_template, entry.to_hash) + "\n") + elsif !blacklist_entry_template.blank? && entry.list_type == 'blacklist' && entry.bans.to_i > 0 + if ! comment_template.blank? + file.write(expand_variables(comment_template, entry.to_hash) + "\n") + end + file.write(expand_variables(blacklist_entry_template, entry.to_hash) + "\n") + end + end + end + end + + def restart_firewall + command = GsParameter.get('ban_command', 'perimeter', 'general') + if !command.blank? + system expand_variables(command, self.to_hash) + end + end + + def check_if_update_relevant + if key_changed? || contact_ip_changed? || list_type_changed? || bans_changed? || points_changed? + if !GsParameter.get("#{self.list_type}_file_entry", 'perimeter', 'general').blank? + write_firewall_list + restart_firewall + end + end + end + + def check_if_new_entry_relevant + if !GsParameter.get("#{self.list_type}_file_entry", 'perimeter', 'general').blank? + if self.list_type != 'blacklist' || self.bans.to_i > 0 + write_firewall_list + restart_firewall + end + end + end + + def check_if_delete_relevant + if !GsParameter.get("#{self.list_type}_file_entry", 'perimeter', 'general').blank? + if self.list_type != 'blacklist' || self.bans.to_i > 0 + write_firewall_list + restart_firewall + end + end + end end diff --git a/app/views/intruders/_form_core.html.haml b/app/views/intruders/_form_core.html.haml index 780d8cd..a0c2eb0 100644 --- a/app/views/intruders/_form_core.html.haml +++ b/app/views/intruders/_form_core.html.haml @@ -1,5 +1,7 @@ .inputs = f.input :list_type, :collection => Intruder::LIST_TYPES, :label => t('intruders.form.list_type.label'), :hint => conditional_hint('intruders.form.list_type.hint'), :include_blank => false = f.input :contact_ip, :label => t('intruders.form.contact_ip.label'), :hint => conditional_hint('intruders.form.contact_ip.hint') - = f.input :ban_end, :label => t('intruders.form.ban_end.label'), :hint => conditional_hint('intruders.form.ban_end.hint') + = f.input :points, :label => t('intruders.form.points.label'), :hint => conditional_hint('intruders.form.points.hint') + = f.input :bans, :label => t('intruders.form.bans.label'), :hint => conditional_hint('intruders.form.bans.hint'), as: :boolean + = f.input :comment, :label => t('intruders.form.comment.label'), :hint => conditional_hint('intruders.form.comment.hint') diff --git a/app/views/intruders/_index_core.html.haml b/app/views/intruders/_index_core.html.haml index 63f2253..b9c5a76 100644 --- a/app/views/intruders/_index_core.html.haml +++ b/app/views/intruders/_index_core.html.haml @@ -2,11 +2,8 @@ %tr %th %th= t('intruders.index.contact_ip') - %th= t('intruders.index.contact_port') %th= t('intruders.index.points') - %th= t('intruders.index.bans') %th= t('intruders.index.ban_last') - %th= t('intruders.index.ban_end') %th= t('intruders.index.contact_count') %th= t('intruders.index.contact_last') %th= t('intruders.index.contacts_per_second') @@ -19,21 +16,16 @@ %td - if intruder.list_type == 'whitelist' %i.icon-ok - - elsif intruder.bans > 0 + - elsif intruder.bans.to_i > 0 %i.icon-fire - - elsif intruder.points > 0 + - elsif intruder.points.to_i > 0 %i.icon-warning-sign %td= intruder.contact_ip - %td= intruder.contact_port %td= intruder.points - %td= intruder.bans %td - if intruder.ban_last = l intruder.ban_last, :format => :short - %td - - if intruder.ban_end - = l intruder.ban_end, :format => :short %td= intruder.contact_count %td diff --git a/app/views/intruders/index.html.haml b/app/views/intruders/index.html.haml index 72b8882..79b4ceb 100644 --- a/app/views/intruders/index.html.haml +++ b/app/views/intruders/index.html.haml @@ -1,6 +1,9 @@ - content_for :title, t("intruders.index.page_title") -- if @intruders && @intruders.count > 0 - = render "index_core", :intruders => @intruders +- if @intruders && @intruders.count > 0 && @list_types && @list_types.count > 0 + - @list_types.each do |list_type| + %h3= list_type + %table.table.table-striped + = render "index_core", :intruders => @intruders.where(:list_type => list_type) -= render :partial => 'shared/create_link', :locals => {:child_class => Intruder} \ No newline at end of file += render :partial => 'shared/create_link', :locals => {:child_class => Intruder} -- cgit v1.2.3 From 7ec2f96979317912b464b801731c5d10be538e6d Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Mon, 4 Mar 2013 02:25:17 -0500 Subject: missing url fixed --- app/controllers/conference_invitees_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/controllers/conference_invitees_controller.rb b/app/controllers/conference_invitees_controller.rb index ce55b5a..e891ebc 100644 --- a/app/controllers/conference_invitees_controller.rb +++ b/app/controllers/conference_invitees_controller.rb @@ -58,7 +58,7 @@ class ConferenceInviteesController < ApplicationController def destroy @conference_invitee.destroy - redirect_to conference_invitees_url, :notice => t('conference_invitees.controller.successfuly_destroyed') + redirect_to conference_conference_invitees_url(@conference), :notice => t('conference_invitees.controller.successfuly_destroyed') end private -- cgit v1.2.3 From 295ca363ad12150b7a029075e915574afd61c82e Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Mon, 4 Mar 2013 02:39:21 -0500 Subject: call_forwards controler fixed --- app/controllers/call_forwards_controller.rb | 48 ++++++++++++++++------------- 1 file changed, 27 insertions(+), 21 deletions(-) (limited to 'app') diff --git a/app/controllers/call_forwards_controller.rb b/app/controllers/call_forwards_controller.rb index 34fb77a..b30ee9e 100644 --- a/app/controllers/call_forwards_controller.rb +++ b/app/controllers/call_forwards_controller.rb @@ -1,7 +1,10 @@ class CallForwardsController < ApplicationController load_resource :phone_number load_resource :sip_account - load_and_authorize_resource :call_forward, :through => [:phone_number, :sip_account] + load_resource :automatic_call_distributor + load_resource :hunt_group + + load_and_authorize_resource :call_forward, :through => [:phone_number, :sip_account, :automatic_call_distributor, :hunt_group] before_filter :set_and_authorize_parent before_filter :spread_breadcrumbs @@ -81,7 +84,7 @@ class CallForwardsController < ApplicationController private private def set_and_authorize_parent - @parent = @sip_account || @phone_number + @parent = @phone_number || @sip_account || @automatic_call_distributor || @hunt_group authorize! :read, @parent end @@ -90,27 +93,30 @@ class CallForwardsController < ApplicationController if @parent.class == PhoneNumber && @parent.phone_numberable_type == 'SipAccount' @sip_account = @parent.phone_numberable end - if @sip_account.sip_accountable_type == 'User' - @user = @sip_account.sip_accountable - if @parent.class == PhoneNumber - add_breadcrumb t("users.index.page_title"), tenant_users_path(@user.current_tenant) - add_breadcrumb @user, tenant_users_path(@user.current_tenant, @user) - add_breadcrumb t("sip_accounts.index.page_title"), user_sip_accounts_path(@user) - add_breadcrumb @sip_account, user_sip_account_path(@user, @sip_account) - add_breadcrumb t("phone_numbers.index.page_title"), sip_account_phone_numbers_path(@sip_account) - add_breadcrumb @parent, sip_account_phone_number_path(@sip_account, @parent) - elsif @parent.class == SipAccount - add_breadcrumb t("users.index.page_title"), tenant_users_path(@user.current_tenant) - add_breadcrumb @user, tenant_users_path(@user.current_tenant, @user) - add_breadcrumb t("sip_accounts.index.page_title"), user_sip_accounts_path(@user) + + if @sip_account + if @sip_account.sip_accountable_type == 'User' + @user = @sip_account.sip_accountable + if @parent.class == PhoneNumber + add_breadcrumb t("users.index.page_title"), tenant_users_path(@user.current_tenant) + add_breadcrumb @user, tenant_users_path(@user.current_tenant, @user) + add_breadcrumb t("sip_accounts.index.page_title"), user_sip_accounts_path(@user) + add_breadcrumb @sip_account, user_sip_account_path(@user, @sip_account) + add_breadcrumb t("phone_numbers.index.page_title"), sip_account_phone_numbers_path(@sip_account) + add_breadcrumb @parent, sip_account_phone_number_path(@sip_account, @parent) + elsif @parent.class == SipAccount + add_breadcrumb t("users.index.page_title"), tenant_users_path(@user.current_tenant) + add_breadcrumb @user, tenant_users_path(@user.current_tenant, @user) + add_breadcrumb t("sip_accounts.index.page_title"), user_sip_accounts_path(@user) + end + end + if @sip_account.sip_accountable_type == 'Tenant' + @tenant = @sip_account.sip_accountable + add_breadcrumb t("sip_accounts.index.page_title"), tenant_sip_accounts_path(@tenant) + add_breadcrumb @sip_account, tenant_sip_account_path(@tenant, @sip_account) end end - if @sip_account.sip_accountable_type == 'Tenant' - @tenant = @sip_account.sip_accountable - add_breadcrumb t("sip_accounts.index.page_title"), tenant_sip_accounts_path(@tenant) - add_breadcrumb @sip_account, tenant_sip_account_path(@tenant, @sip_account) - end - + m = method( :"#{@parent.class.name.underscore}_call_forwards_url" ) add_breadcrumb t("call_forwards.index.page_title"), m.(@parent) if @call_forward && !@call_forward.new_record? -- cgit v1.2.3 From 92b79f7f1f43a9c95fdbb9df2a85b08eefb6c8d8 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Mon, 4 Mar 2013 05:27:18 -0500 Subject: presence permission type added --- app/models/group_permission.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/models/group_permission.rb b/app/models/group_permission.rb index fe988ba..c859f52 100644 --- a/app/models/group_permission.rb +++ b/app/models/group_permission.rb @@ -1,7 +1,7 @@ class GroupPermission < ActiveRecord::Base attr_accessible :group_id, :permission, :target_group_id - PERMISSION_TYPES = ['pickup'] + PERMISSION_TYPES = ['pickup', 'presence'] belongs_to :group belongs_to :target_group, :class_name => "Group" -- cgit v1.2.3 From 86e4f6f2241fee9597d7c1a7de1ff585634da4c5 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Mon, 4 Mar 2013 05:28:26 -0500 Subject: display group item --- app/views/group_memberships/_index_core.html.haml | 3 ++- app/views/group_memberships/show.html.haml | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/views/group_memberships/_index_core.html.haml b/app/views/group_memberships/_index_core.html.haml index beeefc9..31a9050 100644 --- a/app/views/group_memberships/_index_core.html.haml +++ b/app/views/group_memberships/_index_core.html.haml @@ -2,10 +2,11 @@ %tr %th= t('group_memberships.index.item_type') %th= t('group_memberships.index.item_id') - + %th= t('group_memberships.index.item') - for group_membership in group_memberships %tr %td= group_membership.item_type %td= group_membership.item_id + %td= group_membership.item =render :partial => 'shared/index_view_edit_destroy_part', :locals => {:parent => group_membership.group, :child => group_membership} diff --git a/app/views/group_memberships/show.html.haml b/app/views/group_memberships/show.html.haml index 0875f0b..362b25f 100644 --- a/app/views/group_memberships/show.html.haml +++ b/app/views/group_memberships/show.html.haml @@ -7,4 +7,8 @@ %strong= t('group_memberships.show.item_id') + ":" = @group_membership.item_id +%p + %strong= t('group_memberships.show.item') + ":" + = @group_membership.item + = render :partial => 'shared/show_edit_destroy_part', :locals => { :parent => @group, :child => @group_membership } -- cgit v1.2.3 From 716a7dc8e7838fe397b6d9ca2a52f6d8b2ff52a9 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Mon, 4 Mar 2013 05:29:45 -0500 Subject: list permissions and memberships in group index --- app/views/groups/_index_core.html.haml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/views/groups/_index_core.html.haml b/app/views/groups/_index_core.html.haml index 3a444bf..e67eb66 100644 --- a/app/views/groups/_index_core.html.haml +++ b/app/views/groups/_index_core.html.haml @@ -2,6 +2,8 @@ %tr %th %th= t('groups.index.name') + %th= t('groups.index.permissions') + %th= t('groups.index.memberships') %th= t('groups.index.comment') @@ -13,5 +15,11 @@ - else %i.icon-ban-circle %td= group.name + %td + - if group.group_permissions.count > 0 && group.group_permissions.count < 4 + = group.group_permissions.pluck(:permission).uniq.join(' ') + - else + = group.group_permissions.count + %td= group.group_memberships.count %td= group.comment - =render :partial => 'shared/index_view_edit_destroy_part', :locals => {:child => group} \ No newline at end of file + =render :partial => 'shared/index_view_edit_destroy_part', :locals => {:child => group} -- cgit v1.2.3 From 8042e6c314737feab61209e0b8b26ddba5c7e763 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Mon, 4 Mar 2013 05:34:43 -0500 Subject: display provisioning key activity flag --- app/views/phones/_form_core.html.haml | 2 +- app/views/phones/show.html.haml | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) (limited to 'app') diff --git a/app/views/phones/_form_core.html.haml b/app/views/phones/_form_core.html.haml index 31f3c24..e093899 100644 --- a/app/views/phones/_form_core.html.haml +++ b/app/views/phones/_form_core.html.haml @@ -11,5 +11,5 @@ - if defined? GsParameter.get('NIGHTLY_REBOOT_OF_PHONES') && GsParameter.get('NIGHTLY_REBOOT_OF_PHONES') == true = f.input :nightly_reboot, :label => t('phones.form.nightly_reboot.label'), :hint => conditional_hint('phones.form.nightly_reboot.hint') - - if GsParameter.get('PROVISIONING_KEY_LENGTH') == 0 + - if @phone && @phone.provisioning_key_active = f.input :provisioning_key_active, :label => t('phones.form.provisioning_key_active.label'), :hint => conditional_hint('phones.form.provisioning_key_active.hint') diff --git a/app/views/phones/show.html.haml b/app/views/phones/show.html.haml index e9b8b21..1996d48 100644 --- a/app/views/phones/show.html.haml +++ b/app/views/phones/show.html.haml @@ -34,12 +34,11 @@ %td = @phone.nightly_reboot == true ? t('simple_form.yes') : t('simple_form.no') - - if GsParameter.get('PROVISIONING_KEY_LENGTH') == 0 - %tr - %td - %strong= t('phones.show.provisioning_key_active') + ":" - %td - = @phone.provisioning_key_active == true ? t('simple_form.yes') : t('simple_form.no') + %tr + %td + %strong= t('phones.show.provisioning_key_active') + ":" + %td + = @phone.provisioning_key_active == true ? t('simple_form.yes') : t('simple_form.no') %tr{:class => (@phone.ip_address.blank? ? 'warning' : '')} %td -- cgit v1.2.3 From 5b0c099cebaad0465380458d09aeeec904ae6691 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Mon, 4 Mar 2013 12:04:00 +0100 Subject: rake db:force_now (does a backup without queuing). --- app/models/backup_job.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/models/backup_job.rb b/app/models/backup_job.rb index a04f6c0..48dd27e 100644 --- a/app/models/backup_job.rb +++ b/app/models/backup_job.rb @@ -12,12 +12,17 @@ class BackupJob < ActiveRecord::Base private def set_state_to_queued - self.state = 'queued' + self.state ||= 'queued' self.started_at = Time.now end def initiate_backup - self.delay.make_a_backup + if self.state == 'force now' + self.state = 'queued' + self.make_a_backup + else + self.delay.make_a_backup + end end def make_a_backup -- cgit v1.2.3 From 45fe4f5022f7181aa5d6e66f03ba3c8cf281879a Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Mon, 4 Mar 2013 10:41:59 -0500 Subject: sort gs_parameters by entity+section --- app/controllers/gs_parameters_controller.rb | 12 ++++++-- app/views/gs_parameters/index.html.haml | 48 +++++++++++++++++++++++------ app/views/gs_parameters/show.html.haml | 10 ++++-- 3 files changed, 56 insertions(+), 14 deletions(-) (limited to 'app') diff --git a/app/controllers/gs_parameters_controller.rb b/app/controllers/gs_parameters_controller.rb index bd8b44b..106ce76 100644 --- a/app/controllers/gs_parameters_controller.rb +++ b/app/controllers/gs_parameters_controller.rb @@ -4,9 +4,15 @@ class GsParametersController < ApplicationController before_filter :spread_breadcrumbs def index - @gs_parameters_unordered = GsParameter.scoped - @gs_parameters = GsParameter.order([:section, :name]) - @sections = @gs_parameters.pluck(:section).uniq.sort + @gs_parameters = GsParameter.order([:entity, :section, :name]) + + @entities = Hash.new() + @gs_parameters.each do |parameter| + if !@entities[parameter.entity] + @entities[parameter.entity] = Hash.new() + end + @entities[parameter.entity][parameter.section] = true + end end def show diff --git a/app/views/gs_parameters/index.html.haml b/app/views/gs_parameters/index.html.haml index 8df2bb3..9d757a0 100644 --- a/app/views/gs_parameters/index.html.haml +++ b/app/views/gs_parameters/index.html.haml @@ -2,12 +2,42 @@ - cache(['gs_parameter_all_tables', I18n.locale, @gs_parameters.count, @gs_parameters.reorder(:updated_at).first, @gs_parameters.reorder(:updated_at).last]) do - if @gs_parameters && @gs_parameters.count > 0 - - if @sections - - @sections.each do |section| - %h3= section - %table.table.table-striped - -# Template Dependency: gs_parameters/_index_core - = render "index_core", :gs_parameters => @gs_parameters.where(:section => section) - - else - %table.table.table-striped - = render "index_core", :gs_parameters => @gs_parameters + %table.table.table-striped + %thead + %tr + %th + %th + %th + %th + + %tbody + - @entities.each do |entity_name, entity| + %tr.table.info + %td{:colspan => 5} + - if !entity_name.blank? + %strong= entity_name + - entity.each do |section_name, section| + %tr.table.success + %td + %td{:colspan => 4} + %strong= section_name + - gs_parameters = @gs_parameters.where(:entity => entity_name, :section => section_name) + - cache(['gs_parameter_sub_table', I18n.locale, gs_parameters.count, gs_parameters.reorder(:updated_at).first, gs_parameters.reorder(:updated_at).last]) do + + - for gs_parameter in gs_parameters + - cache(['gs_parameters_table_single_row', I18n.locale, gs_parameter]) do + %tr + %td + %td + %td + %span.hidden-phone + = truncate(gs_parameter.name, :length => GsParameter.get('DESKTOP_MAX_STRING_LENGTH')) + %span.visible-phone + = truncate(gs_parameter.name, :length => GsParameter.get('MOBILE_MAX_STRING_LENGTH')) + %td + %span.hidden-phone + = truncate(gs_parameter.value, :length => GsParameter.get('DESKTOP_MAX_STRING_LENGTH')) + %span.visible-phone + = truncate(gs_parameter.value, :length => GsParameter.get('MOBILE_MAX_STRING_LENGTH')) + =render :partial => 'shared/index_view_edit_destroy_part', :locals => {:child => gs_parameter} + diff --git a/app/views/gs_parameters/show.html.haml b/app/views/gs_parameters/show.html.haml index 706625f..85e9b98 100644 --- a/app/views/gs_parameters/show.html.haml +++ b/app/views/gs_parameters/show.html.haml @@ -3,16 +3,22 @@ - cache(@gs_parameter) do %table.table.table-striped %tbody + %tr %tr %td - %strong= t('gs_parameters.show.name') + ":" + %strong= t('gs_parameters.show.entity') + ":" %td - = @gs_parameter.name + = @gs_parameter.entity %tr %td %strong= t('gs_parameters.show.section') + ":" %td = @gs_parameter.section + %tr + %td + %strong= t('gs_parameters.show.name') + ":" + %td + = @gs_parameter.name %tr %td %strong= t('gs_parameters.show.value') + ":" -- cgit v1.2.3 From ef4bb3de4a23e0a4068c46caf05e2150e9922b71 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Tue, 5 Mar 2013 01:44:21 -0500 Subject: display last missed call on idle screen --- app/views/config_polycom/idle_screen.xml.haml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/views/config_polycom/idle_screen.xml.haml b/app/views/config_polycom/idle_screen.xml.haml index fa52c4f..f6d8cf9 100644 --- a/app/views/config_polycom/idle_screen.xml.haml +++ b/app/views/config_polycom/idle_screen.xml.haml @@ -3,5 +3,18 @@ %head %title= @sip_account.caller_name %body - - @sip_account.phone_numbers.each do |number| - %br= number.number + - phone_numbers = @sip_account.phone_numbers.order(:position) + - if phone_numbers[0] + %strong= phone_numbers[0].number + - else + %strong= sip_account.to_s + - if phone_numbers[1] + %strong= phone_numbers[1].number + - if phone_numbers[2] + %strong= phone_numbers[2].number + - if phone_numbers[3] + %strong ... + - call = @sip_account.call_histories.where(:entry_type => 'missed').order('start_stamp DESC').first + %p + Missed: + %br= "#{call.start_stamp.strftime('%d.%m %H:%M')} #{call.display_name} #{call.display_number}" -- cgit v1.2.3 From 2f2276dc424196ace5d1859dfa3d3999926effce Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Tue, 5 Mar 2013 01:45:31 -0500 Subject: bypassing softkeys controller --- app/controllers/softkeys_controller.rb | 8 ++----- app/models/softkey.rb | 37 ++++++++++++++------------------- app/views/softkeys/_form_core.html.haml | 4 ++-- 3 files changed, 20 insertions(+), 29 deletions(-) (limited to 'app') diff --git a/app/controllers/softkeys_controller.rb b/app/controllers/softkeys_controller.rb index c9e8c20..9179d8c 100644 --- a/app/controllers/softkeys_controller.rb +++ b/app/controllers/softkeys_controller.rb @@ -2,7 +2,7 @@ class SoftkeysController < ApplicationController load_and_authorize_resource :sip_account, :except => [:sort] load_and_authorize_resource :softkey, :through => [:sip_account], :except => [:sort] - before_filter :set_available_call_forwards_and_softkey_functions, :only => [ :new, :edit, :update ] + before_filter :set_available_softkey_functions, :only => [ :new, :edit, :update ] before_filter :spread_breadcrumbs, :except => [:sort] def index @@ -54,12 +54,8 @@ class SoftkeysController < ApplicationController render nothing: true end - private - - def set_available_call_forwards_and_softkey_functions - @available_call_forwards = @softkey.possible_blf_call_forwards - + def set_available_softkey_functions @softkey_functions = [] SoftkeyFunction.accessible_by(current_ability, :read).each do |softkey_function| if GuiFunction.display?("softkey_function_#{softkey_function.name.downcase}_field_in_softkey_form", current_user) diff --git a/app/models/softkey.rb b/app/models/softkey.rb index 8049456..470605c 100644 --- a/app/models/softkey.rb +++ b/app/models/softkey.rb @@ -22,29 +22,24 @@ class Softkey < ActiveRecord::Base after_save :resync_phone after_destroy :resync_phone - def possible_blf_call_forwards - if self.sip_account.phone_numbers.count == 0 - nil - else - if self.sip_account.callforward_rules_act_per_sip_account == true - # We pick one phone_number and display the rules of it. - # - phone_number = self.sip_account.phone_numbers.order(:number).first - call_forwards = self.sip_account.call_forwards.where(:call_forwardable_id => phone_number.id, :call_forwardable_type => 'PhoneNumber') - else - call_forwards = self.sip_account.call_forwards - end - - phone_numbers_ids = self.sip_account.phone_number_ids - phone_numbers = PhoneNumber.where(:id => phone_numbers_ids).pluck(:number) + def possible_call_forwards + call_forwards = self.sip_account.call_forwards + self.sip_account.phone_numbers.each do |phone_number| + call_forwards = call_forwards + phone_number.call_forwards + end - hunt_group_ids = PhoneNumber.where(:phone_numberable_type => 'HuntGroupMember', :number => phone_numbers). - map{ |phone_number| phone_number.phone_numberable.hunt_group.id }. - uniq - call_forwards + CallForward.where(:destinationable_type => 'HuntGroup', :destinationable_id => hunt_group_ids, :call_forwardable_type => 'PhoneNumber'). - where('call_forwardable_id NOT IN (?)', phone_numbers_ids) - end + phone_numbers_ids = self.sip_account.phone_number_ids + phone_numbers = PhoneNumber.where(:id => phone_numbers_ids).pluck(:number) + + hunt_group_ids = PhoneNumber.where(:phone_numberable_type => 'HuntGroupMember', :number => phone_numbers). + map{ |phone_number| phone_number.phone_numberable.hunt_group.id }. + uniq + + call_forwards = call_forwards + CallForward.where(:destinationable_type => 'HuntGroup', :destinationable_id => hunt_group_ids, :call_forwardable_type => 'PhoneNumber'). + where('call_forwardable_id NOT IN (?)', phone_numbers_ids) + + return call_forwards end def to_s diff --git a/app/views/softkeys/_form_core.html.haml b/app/views/softkeys/_form_core.html.haml index 2863d5c..7c1dd4a 100644 --- a/app/views/softkeys/_form_core.html.haml +++ b/app/views/softkeys/_form_core.html.haml @@ -6,7 +6,7 @@ .inputs = f.input :softkey_function_id, :as => :select, :collection => @softkey_functions.map {|x| [I18n.t("softkeys.functions.#{x}"), x.id] }, :label => t('softkeys.form.function.label'), :hint => conditional_hint('softkeys.form.function.hint'), :include_blank => false - - if @available_call_forwards && @available_call_forwards.count > 0 - = f.association :softkeyable, :collection => @available_call_forwards, :label => t('softkeys.form.call_forward.label'), :hint => conditional_hint('softkeys.form.call_forward.hint'), :include_blank => false + - if @softkey.possible_call_forwards && @softkey.possible_call_forwards.count > 0 + = f.association :softkeyable, :collection => @softkey.possible_call_forwards, :label => t('softkeys.form.call_forward.label'), :hint => conditional_hint('softkeys.form.call_forward.hint'), :include_blank => false = f.input :number, :label => t('softkeys.form.number.label'), :hint => conditional_hint('softkeys.form.number.hint') = f.input :label, :label => t('softkeys.form.label.label'), :hint => conditional_hint('softkeys.form.label.hint') -- cgit v1.2.3 From fbbbb9dfe10ad8b25d075e00f4a149086b7c27a5 Mon Sep 17 00:00:00 2001 From: spag Date: Tue, 5 Mar 2013 08:30:52 +0100 Subject: send fax notification --- app/controllers/trigger_controller.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'app') diff --git a/app/controllers/trigger_controller.rb b/app/controllers/trigger_controller.rb index 6cc9fa7..8e70ef2 100644 --- a/app/controllers/trigger_controller.rb +++ b/app/controllers/trigger_controller.rb @@ -84,6 +84,7 @@ class TriggerController < ApplicationController fax_document.state = 'successful' if fax_document.save + Notifications.new_fax(fax_document).deliver begin File.delete(pdf_file) rescue => e -- cgit v1.2.3 From 260264886fd136b388ad4adaaa93e264d7da87ba Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Tue, 5 Mar 2013 09:53:59 +0100 Subject: Fixed a caching issue. #221 --- app/views/tenants/_table_of_automatic_call_distributors.html.haml | 2 +- app/views/tenants/_table_of_hunt_groups.html.haml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/views/tenants/_table_of_automatic_call_distributors.html.haml b/app/views/tenants/_table_of_automatic_call_distributors.html.haml index 22796af..c3ab309 100644 --- a/app/views/tenants/_table_of_automatic_call_distributors.html.haml +++ b/app/views/tenants/_table_of_automatic_call_distributors.html.haml @@ -1,4 +1,4 @@ -- cache(['tenant_show_table_of_automatic_call_distributors', I18n.locale, tenant, tenant.automatic_call_distributors.count, tenant.automatic_call_distributors.reorder(:updated_at).last]) do +- cache(['tenant_show_table_of_automatic_call_distributors', I18n.locale, tenant, tenant.automatic_call_distributors.count, tenant.automatic_call_distributors.reorder(:updated_at).last, PhoneNumber.where(:phone_numberable_type => 'AutomaticCallDistributor').order(:updated_at).last]) do -# AutomaticCallDistributors -# - if (can?( :index, AutomaticCallDistributor ) && tenant.automatic_call_distributors.count > 0 ) || can?( :create, AutomaticCallDistributor ) diff --git a/app/views/tenants/_table_of_hunt_groups.html.haml b/app/views/tenants/_table_of_hunt_groups.html.haml index aca570d..d93ebe6 100644 --- a/app/views/tenants/_table_of_hunt_groups.html.haml +++ b/app/views/tenants/_table_of_hunt_groups.html.haml @@ -1,4 +1,4 @@ -- cache(['table_of_pbx_features_hunt_groups_row', I18n.locale, tenant, tenant.hunt_groups.count, tenant.hunt_groups.reorder(:updated_at).last]) do +- cache(['table_of_pbx_features_hunt_groups_row', I18n.locale, tenant, tenant.hunt_groups.count, tenant.hunt_groups.reorder(:updated_at).last, PhoneNumber.where(:phone_numberable_type => 'HuntGroup').order(:updated_at).last]) do -# HuntGroups -# - if (can?( :index, HuntGroup ) && tenant.hunt_groups.count > 0 ) || can?( :create, HuntGroup ) -- cgit v1.2.3 From 00db10565a2b1906728087eeb95542214720fb23 Mon Sep 17 00:00:00 2001 From: spag Date: Tue, 5 Mar 2013 10:01:27 +0100 Subject: colors added --- app/views/intruders/_index_core.html.haml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'app') diff --git a/app/views/intruders/_index_core.html.haml b/app/views/intruders/_index_core.html.haml index b9c5a76..1fca601 100644 --- a/app/views/intruders/_index_core.html.haml +++ b/app/views/intruders/_index_core.html.haml @@ -9,16 +9,25 @@ %th= t('intruders.index.contacts_per_second') %th= t('intruders.index.user_agent') %th= t('intruders.index.to_user') + %th - for intruder in intruders - %tr + - if intruder.list_type == 'whitelist' + - entry_class = 'success' + - elsif intruder.bans.to_i > 0 + - entry_class = 'error' + - elsif intruder.points.to_i > 0 + - entry_class = 'warn' + - else + - entry_class = '' + %tr{:class => "table #{entry_class}"} %td - - if intruder.list_type == 'whitelist' + - if entry_class == 'success' %i.icon-ok - - elsif intruder.bans.to_i > 0 + - elsif entry_class == 'error' %i.icon-fire - - elsif intruder.points.to_i > 0 + - elsif entry_class == 'warn' %i.icon-warning-sign %td= intruder.contact_ip -- cgit v1.2.3