summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Wintermeyer <stefan.wintermeyer@amooma.de>2012-12-30 21:03:48 +0100
committerStefan Wintermeyer <stefan.wintermeyer@amooma.de>2012-12-30 21:03:48 +0100
commitf04aa92778dca7f71ca656235885095b13dd3535 (patch)
treeb0ac9cf3dfecbbdb0209c1204054adcac861f001
parentf3c3e77eaa2b82567f02601b6f66177208674181 (diff)
parent508871c01cbf02bf6d8d7056c2d5a70e4d67eebf (diff)
Merge branch 'develop'5.0.2
-rw-r--r--Gemfile.lock2
-rw-r--r--app/assets/javascripts/phones.js.coffee2
-rw-r--r--app/controllers/config_snom_controller.rb1
-rw-r--r--app/controllers/page_controller.rb1
-rw-r--r--app/controllers/phones_controller.rb7
-rw-r--r--app/controllers/tenants_controller.rb21
-rw-r--r--app/controllers/user_groups_controller.rb6
-rw-r--r--app/helpers/application_helper.rb20
-rw-r--r--app/models/phone.rb7
-rw-r--r--app/views/page/beginners_intro.de.html.haml33
-rw-r--r--app/views/page/beginners_intro.html.haml33
-rw-r--r--app/views/phones/_form_core.html.haml3
-rw-r--r--app/views/phones/show.html.haml8
-rw-r--r--app/views/tenants/_form_core.html.haml2
-rw-r--r--app/views/user_groups/_form.html.haml2
-rw-r--r--app/views/user_groups/_form_core.html.haml2
-rw-r--r--config/initializers/gemeinschaft_parameters.rb2
-rw-r--r--config/locales/views/phones/de.yml1
-rw-r--r--config/locales/views/phones/en.yml1
-rw-r--r--config/routes.rb1
-rw-r--r--db/migrate/20121230110747_snom_meetingpoint.rb14
-rw-r--r--db/schema.rb2
-rw-r--r--misc/freeswitch/scripts/common/str.lua1
-rw-r--r--misc/freeswitch/scripts/ini/dialplan.ini3
24 files changed, 158 insertions, 17 deletions
diff --git a/Gemfile.lock b/Gemfile.lock
index e07b89e..f9a6596 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -84,7 +84,7 @@ GEM
faye-websocket (0.4.1)
eventmachine (>= 0.12.0)
fssm (0.2.8.1)
- haml (3.1.4)
+ haml (3.1.7)
hike (1.2.1)
hirb (0.6.1)
http_accept_language (1.0.2)
diff --git a/app/assets/javascripts/phones.js.coffee b/app/assets/javascripts/phones.js.coffee
index ff54777..d917d09 100644
--- a/app/assets/javascripts/phones.js.coffee
+++ b/app/assets/javascripts/phones.js.coffee
@@ -1,5 +1,3 @@
jQuery ->
- $(".fallback_sip_account_dropdown").hide()
-
$("#phone_hot_deskable").change ->
$(".fallback_sip_account_dropdown").show("slow")
diff --git a/app/controllers/config_snom_controller.rb b/app/controllers/config_snom_controller.rb
index 4d12082..7542415 100644
--- a/app/controllers/config_snom_controller.rb
+++ b/app/controllers/config_snom_controller.rb
@@ -80,6 +80,7 @@ class ConfigSnomController < ApplicationController
'00041345' => 'Snom 821',
'00041348' => 'Snom 821',
'00041341' => 'Snom 870',
+ '00041332' => 'snom MeetingPoint',
}
@phone.phone_model = PhoneModel.where(:name => mac_address_to_model[@mac_address[0, 8]]).first
diff --git a/app/controllers/page_controller.rb b/app/controllers/page_controller.rb
index 1f37449..4ea4d25 100644
--- a/app/controllers/page_controller.rb
+++ b/app/controllers/page_controller.rb
@@ -7,6 +7,7 @@ class PageController < ApplicationController
def index;end
def conference;end
+ def beginners_intro;end
private
def if_fresh_system_then_go_to_wizard
diff --git a/app/controllers/phones_controller.rb b/app/controllers/phones_controller.rb
index f1dcd3e..2698465 100644
--- a/app/controllers/phones_controller.rb
+++ b/app/controllers/phones_controller.rb
@@ -13,9 +13,9 @@ class PhonesController < ApplicationController
end
def new
- set_fallback_sip_accounts
-
@phone = @phoneable.phones.build()
+
+ set_fallback_sip_accounts
# Use the last phone.phone_model as the default.
#
@@ -80,6 +80,9 @@ class PhonesController < ApplicationController
def set_fallback_sip_accounts
used_sip_account_ids = Phone.where(:fallback_sip_account_id => SipAccount.pluck(:id)).pluck(:fallback_sip_account_id)
@fallback_sip_accounts = SipAccount.where(:sip_accountable_type => 'Tenant').where(:hotdeskable => true) - SipAccount.where(:id => used_sip_account_ids)
+ if @phone && !@phone.fallback_sip_account_id.blank? && SipAccount.exists?(@phone.fallback_sip_account_id)
+ @fallback_sip_accounts << SipAccount.where(:id => @phone.fallback_sip_account_id).first
+ end
end
end
diff --git a/app/controllers/tenants_controller.rb b/app/controllers/tenants_controller.rb
index 724d179..7bb8ecd 100644
--- a/app/controllers/tenants_controller.rb
+++ b/app/controllers/tenants_controller.rb
@@ -58,14 +58,27 @@ class TenantsController < ApplicationController
end
if Delayed::Job.count > 0
- redirect_to @tenant, :notice => t('tenants.controller.successfuly_created_plus_delayed_jobs',
+ if SipAccount.any? || Phone.any?
+ redirect_to @tenant, :notice => t('tenants.controller.successfuly_created_plus_delayed_jobs',
:resource => @tenant,
:amount_of_numbers => @tenant.array_of_internal_extension_numbers.count + @tenant.array_of_dids.count
)
- else
- redirect_to @tenant, :notice => t('tenants.controller.successfuly_created',
- :resource => @tenant
+ else
+ redirect_to page_beginners_intro_path, :notice => t('tenants.controller.successfuly_created_plus_delayed_jobs',
+ :resource => @tenant,
+ :amount_of_numbers => @tenant.array_of_internal_extension_numbers.count + @tenant.array_of_dids.count
)
+ end
+ else
+ if SipAccount.any? || Phone.any?
+ redirect_to @tenant, :notice => t('tenants.controller.successfuly_created',
+ :resource => @tenant
+ )
+ else
+ redirect_to page_beginners_intro_path, :notice => t('tenants.controller.successfuly_created',
+ :resource => @tenant
+ )
+ end
end
else
render :new
diff --git a/app/controllers/user_groups_controller.rb b/app/controllers/user_groups_controller.rb
index 158abaa..ff3292c 100644
--- a/app/controllers/user_groups_controller.rb
+++ b/app/controllers/user_groups_controller.rb
@@ -19,7 +19,7 @@ class UserGroupsController < ApplicationController
def create
@user_group = @parent.user_groups.build(params[:user_group])
if @user_group.save
- redirect_to @user_group, :notice => t('user_groups.controller.successfuly_created')
+ redirect_to [@parent, @user_group], :notice => t('user_groups.controller.successfuly_created')
else
render :new
end
@@ -30,7 +30,7 @@ class UserGroupsController < ApplicationController
def update
if @user_group.update_attributes(params[:user_group])
- redirect_to @user_group, :notice => t('user_groups.controller.successfuly_updated')
+ redirect_to [@parent, @user_group], :notice => t('user_groups.controller.successfuly_updated')
else
render :edit
end
@@ -38,7 +38,7 @@ class UserGroupsController < ApplicationController
def destroy
@user_group.destroy
- redirect_to user_groups_url, :notice => t('user_groups.controller.successfuly_destroyed')
+ redirect_to method( :"#{@parent.class.name.underscore}_user_groups_path" ).(@parent), :notice => t('user_groups.controller.successfuly_destroyed')
end
private
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index de6be79..de4d677 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -1,2 +1,22 @@
module ApplicationHelper
+
+ # nicely_joined_with_commata(['1', '2', '3', '4'])
+ # = '1, 2, 3 und 4'
+ #
+ def nicely_joined_with_commata(array_of_things)
+ if array_of_things.count == 1
+ array_of_things.first.to_s
+ else
+ if array_of_things.count > 1
+ output = array_of_things[0, array_of_things.count - 1].map{|item| item.to_s}.join(', ')
+ if I18n.locale == :de
+ output += ' und '
+ else
+ output += ' and '
+ end
+ output += array_of_things.last.to_s
+ end
+ end
+ end
+
end
diff --git a/app/models/phone.rb b/app/models/phone.rb
index 1f3c497..a606834 100644
--- a/app/models/phone.rb
+++ b/app/models/phone.rb
@@ -20,6 +20,7 @@ class Phone < ActiveRecord::Base
# Validations
#
before_validation :sanitize_mac_address
+ before_validation :destroy_fallback_sip_account_if_not_hot_deskable
validates_presence_of :mac_address
validate_mac_address :mac_address
@@ -227,5 +228,11 @@ class Phone < ActiveRecord::Base
self.last_ip_address = nil
end
end
+
+ def destroy_fallback_sip_account_if_not_hot_deskable
+ if !self.hot_deskable?
+ self.fallback_sip_account_id = nil
+ end
+ end
end
diff --git a/app/views/page/beginners_intro.de.html.haml b/app/views/page/beginners_intro.de.html.haml
new file mode 100644
index 0000000..8d129db
--- /dev/null
+++ b/app/views/page/beginners_intro.de.html.haml
@@ -0,0 +1,33 @@
+- title "Erste Schritte mit Gemeinschaft #{GEMEINSCHAFT_VERSION}!"
+
+%p
+ Sie müssen als erstes mindestens zwei neue SIP-Accounts anlegen. Dabei haben Sie die Wahl zwischen folgenden Varianten:
+
+%ul
+ %li
+ %strong
+ Personalisierter SIP-Accounts
+ %br
+ Dieser wird einer bestimmten Person zugeordnet. In einer normalen Gemeinschaft-Installation sind die meisten SIP-Accounts personalisiert.
+ %br
+ =link_to "SIP-Account für #{current_user} anlegen.", new_user_sip_account_path(current_user)
+ %li
+ %strong
+ Firmen SIP-Accounts
+ %br
+ Es gibt bestimmte SIP-Account, die keiner bestimmten Person zugeordnet werden können (z.B. für Telefone in einem Konferenzraum). Dafür gibt es Firmen SIP-Accounts.
+ %br
+ =link_to "SIP-Account für #{current_user.current_tenant} anlegen.", new_tenant_sip_account_path(current_user.current_tenant)
+
+%h2 Rufnummern
+
+%p
+ Mit denen von Ihnen angelegten SIP-Accounts können Sie schon intern telefonieren. Dazu müssen Sie den SIP-Accounts jeweils eine interne Telefonnummer zuweisen (z.B. 20 und 21) und ein SIP Soft- oder Hardphone mit den Account-Daten konfigurieren.
+
+%h2 Telefone
+
+%p
+ Komfortabler ist der Betrieb von im Provisioning unterstützen Telefone. Diese können Sie beim Anlegen direkt mit einem bestimmten SIP-Account verknüpfen. Danach müssen Sie nur noch die Provisioningdaten per Hand ins Telefon eintragen oder ein paar Einstellungen in Ihrem DHCP-Server vornehmen. Hilfe dazu finden Sie im #{link_to 'Wiki', 'https://github.com/amooma/GS5/wiki'} und der #{link_to 'Mailingliste', 'https://groups.google.com/group/gs5-users/'}.
+%p
+ Folgende Telefone werden in der Version #{GEMEINSCHAFT_VERSION} vom automatischen Provisioning unterstützt:
+ = nicely_joined_with_commata(PhoneModel.order(:name).map{|phone_model| "#{phone_model.to_s}"}) \ No newline at end of file
diff --git a/app/views/page/beginners_intro.html.haml b/app/views/page/beginners_intro.html.haml
new file mode 100644
index 0000000..6227142
--- /dev/null
+++ b/app/views/page/beginners_intro.html.haml
@@ -0,0 +1,33 @@
+- title "First steps with Gemeinschaft #{GEMEINSCHAFT_VERSION}!"
+
+%p
+ You have to create at least two new SIP accounts. You have the choice of two different versions:
+
+%ul
+ %li
+ %strong
+ Personalized SIP accounts
+ %br
+ They are linked to a user. In a normal Gemeinschaft installation the majority of accounts are personlized.
+ %br
+ =link_to "Create a SIP account for #{current_user}.", new_user_sip_account_path(current_user)
+ %li
+ %strong
+ Company SIP accounts
+ %br
+ These are for phones which are not linked to a specific person (e.g. phones in conference rooms).
+ %br
+ =link_to "Create a SIP account for #{current_user.current_tenant}.", new_tenant_sip_account_path(current_user.current_tenant)
+
+%h2 Phone numbers
+
+%p
+ You can use your SIP accounts to make internal calls. But before that you have to add phone numbers to each SIP account (e.g. 20 and 21). After you did that you can configure any SIP phone with the SIP account configuration and start using your new PBX.
+
+%h2 Phones
+
+%p
+ More comfortable is the use of auto provisioned phones. They can be linked to SIP accounts. After creating them in the WebGUI you have to set the Provisioning URL in the phone or setup your DHCP server to give them this data. You'll find help in our #{link_to 'Wiki', 'https://github.com/amooma/GS5/wiki'} or in our #{link_to 'mailinglist', 'https://groups.google.com/group/gs5-users/'}.
+%p
+ In version #{GEMEINSCHAFT_VERSION} the following phones can be used for provisioning:
+ = nicely_joined_with_commata(PhoneModel.order(:name).map{|phone_model| "#{phone_model.to_s}"}) \ No newline at end of file
diff --git a/app/views/phones/_form_core.html.haml b/app/views/phones/_form_core.html.haml
index fd69690..e0c664b 100644
--- a/app/views/phones/_form_core.html.haml
+++ b/app/views/phones/_form_core.html.haml
@@ -5,6 +5,9 @@
= f.input :hot_deskable, :label => t('phones.form.hot_deskable.label'), :hint => conditional_hint('phones.form.hot_deskable.hint')
.fallback_sip_account_dropdown
= f.association :fallback_sip_account, :collection => @fallback_sip_accounts, :label => t('phones.form.fallback_sip_account_id.label'), :hint => conditional_hint('phones.form.fallback_sip_account_id.hint'), :include_blank => false
+ - if !@phone.hot_deskable?
+ :javascript
+ $(".fallback_sip_account_dropdown").hide()
- if defined? NIGHTLY_REBOOT_OF_PHONES && NIGHTLY_REBOOT_OF_PHONES == true
= f.input :nightly_reboot, :label => t('phones.form.nightly_reboot.label'), :hint => conditional_hint('phones.form.nightly_reboot.hint')
diff --git a/app/views/phones/show.html.haml b/app/views/phones/show.html.haml
index 090323e..a7ee952 100644
--- a/app/views/phones/show.html.haml
+++ b/app/views/phones/show.html.haml
@@ -6,6 +6,8 @@
%p
%strong= t('phones.show.phone_model_id') + ":"
= @phone.phone_model
+ - if !@phone.phone_model.product_manual_homepage_url.blank?
+ (#{link_to t('phones.show.manual'), @phone.phone_model.product_manual_homepage_url})
- if @phone.hot_deskable == true
%p
%strong= t('phones.show.hot_deskable') + ":"
@@ -27,6 +29,12 @@
%strong= t('phones.show.ip_address') + ":"
= @phone.ip_address
+- if @phone.ip_address.blank? && @phone.phone_model.manufacturer.ieee_name == 'SNOM Technology AG'
+ %p
+ Sollten Sie Ihren DHCP-Server noch nicht für das automatische Konfigurieren der GS5 Provisionierungs-URL konfiguriert haben, können Sie manuell in Ihrem Telefon die folgende Provisionierungs-URL eingeben. Das "{mac}" bitte genau so eingeben, es wird vom Telefon automatisch mit der eigenen MAC-Adresse befüllt:
+ %pre
+ = "http://#{GemeinschaftSetup.first.sip_domain.host}/settings-{mac}"
+
= render :partial => 'shared/show_edit_destroy_part', :locals => { :parent => @phone.phoneable, :child => @phone }
%h2= t("phones.sip_accounts.title")
diff --git a/app/views/tenants/_form_core.html.haml b/app/views/tenants/_form_core.html.haml
index 4eb2ccc..e0b173d 100644
--- a/app/views/tenants/_form_core.html.haml
+++ b/app/views/tenants/_form_core.html.haml
@@ -1,3 +1,3 @@
.inputs
- = f.input :name, :label => t('tenants.form.name.label'), :hint => conditional_hint('tenants.form.name.hint')
+ = f.input :name, :label => t('tenants.form.name.label'), :hint => conditional_hint('tenants.form.name.hint'), :autofocus => true
= f.input :description, :label => t('tenants.form.description.label'), :hint => conditional_hint('tenants.form.description.hint')
diff --git a/app/views/user_groups/_form.html.haml b/app/views/user_groups/_form.html.haml
index cbe3cc4..3263fdd 100644
--- a/app/views/user_groups/_form.html.haml
+++ b/app/views/user_groups/_form.html.haml
@@ -1,4 +1,4 @@
-= simple_form_for(@user_group) do |f|
+= simple_form_for([@parent, @user_group]) do |f|
= f.error_notification
= render "form_core", :f => f
diff --git a/app/views/user_groups/_form_core.html.haml b/app/views/user_groups/_form_core.html.haml
index a45ba6f..edb0dbc 100644
--- a/app/views/user_groups/_form_core.html.haml
+++ b/app/views/user_groups/_form_core.html.haml
@@ -1,3 +1,3 @@
.inputs
- = f.input :name, :label => t('user_groups.form.name.label'), :hint => conditional_hint('user_groups.form.name.hint')
+ = f.input :name, :label => t('user_groups.form.name.label'), :hint => conditional_hint('user_groups.form.name.hint'), :autofocus => true
= f.input :description, :label => t('user_groups.form.description.label'), :hint => conditional_hint('user_groups.form.description.hint')
diff --git a/config/initializers/gemeinschaft_parameters.rb b/config/initializers/gemeinschaft_parameters.rb
index ffb8fee..b1481ef 100644
--- a/config/initializers/gemeinschaft_parameters.rb
+++ b/config/initializers/gemeinschaft_parameters.rb
@@ -1,6 +1,6 @@
# Use this file to set generic parameters for Gemeinschaft
-GEMEINSCHAFT_VERSION = '5.0.1'
+GEMEINSCHAFT_VERSION = '5.0.2'
SUPER_TENANT_NAME = 'Super-Tenant'
# System defaults
diff --git a/config/locales/views/phones/de.yml b/config/locales/views/phones/de.yml
index dafe279..814267c 100644
--- a/config/locales/views/phones/de.yml
+++ b/config/locales/views/phones/de.yml
@@ -34,6 +34,7 @@ de:
http_password: 'http password'
nightly_reboot: 'Nachts automatischer Reboot'
fallback_sip_account_id: 'Fallback SIP Account'
+ manual: 'Handbuch'
actions:
confirm: 'Sind Sie sicher, dass Sie diese Telefon aus Gemeinschaft entfernen möchten?'
destroy: 'Löschen'
diff --git a/config/locales/views/phones/en.yml b/config/locales/views/phones/en.yml
index ecd5a91..15e212e 100644
--- a/config/locales/views/phones/en.yml
+++ b/config/locales/views/phones/en.yml
@@ -34,6 +34,7 @@ en:
nightly_reboot: 'Nightly reboot'
provisioning_key_active: 'Provisioning key active'
fallback_sip_account_id: 'Fallback SIP Account'
+ manual: 'Manual'
actions:
confirm: 'Are you sure you want to delete this phone?'
destroy: 'Delete phone'
diff --git a/config/routes.rb b/config/routes.rb
index 64d64cf..33238dc 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -199,6 +199,7 @@ Gemeinschaft42c::Application.routes.draw do
get "page/index"
get "page/conference"
+ get "page/beginners_intro"
root :to => "page#index"
diff --git a/db/migrate/20121230110747_snom_meetingpoint.rb b/db/migrate/20121230110747_snom_meetingpoint.rb
new file mode 100644
index 0000000..04ad450
--- /dev/null
+++ b/db/migrate/20121230110747_snom_meetingpoint.rb
@@ -0,0 +1,14 @@
+class SnomMeetingpoint < ActiveRecord::Migration
+ def up
+ if Manufacturer.where(:ieee_name => 'SNOM Technology AG').any?
+ snom = Manufacturer.where(:ieee_name => 'SNOM Technology AG').first
+ snom.phone_models.create(:name => 'snom MeetingPoint',
+ :product_homepage_url => 'http://www.snom.com/en/products/sip-conference-phone/snom-meetingpoint/',
+ :product_manual_homepage_url => 'http://wiki.snom.com/Snom_MeetingPoint/Documentation')
+ end
+ end
+
+ def down
+ PhoneModels.where(:name => 'snom MeetingPoint').destroy_all
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 804ff5f..12114dc 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20121228101454) do
+ActiveRecord::Schema.define(:version => 20121230110747) do
create_table "access_authorizations", :force => true do |t|
t.string "access_authorizationable_type"
diff --git a/misc/freeswitch/scripts/common/str.lua b/misc/freeswitch/scripts/common/str.lua
index b19f299..ca6dcd9 100644
--- a/misc/freeswitch/scripts/common/str.lua
+++ b/misc/freeswitch/scripts/common/str.lua
@@ -7,6 +7,7 @@ module(...,package.seeall)
function try(array, arguments)
local argument = arguments:match('^(.-)%.') or arguments;
local remaining_arguments = arguments:match('%.(.-)$');
+ argument = tonumber(argument) or argument;
if argument and type(array) == 'table' then
if remaining_arguments then
diff --git a/misc/freeswitch/scripts/ini/dialplan.ini b/misc/freeswitch/scripts/ini/dialplan.ini
index f4a6b66..aab8353 100644
--- a/misc/freeswitch/scripts/ini/dialplan.ini
+++ b/misc/freeswitch/scripts/ini/dialplan.ini
@@ -9,3 +9,6 @@ user_image_url = http://192.168.0.150/uploads/user/image
ringtone_url = http://192.168.0.150
ringback = %(2000,4000,440.0,480.0)
tone_busy = %(500,500,480,620);loops=4
+
+phonebook_number_lookup = true
+geo_number_lookup = true \ No newline at end of file