summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorStefan Wintermeyer <stefan.wintermeyer@amooma.de>2013-01-24 12:47:00 +0100
committerStefan Wintermeyer <stefan.wintermeyer@amooma.de>2013-01-24 12:47:00 +0100
commitb432f1930851c3b583b223d773341f5e208046a7 (patch)
tree5a547d1bc34556c24e2e09013e21e3085ec9e120 /app
parentf4d1151238fbf01b436884ae89367a53b4360014 (diff)
Better user experience. One step setup.
Diffstat (limited to 'app')
-rw-r--r--app/controllers/gemeinschaft_setups_controller.rb28
-rw-r--r--app/models/gemeinschaft_setup.rb8
-rw-r--r--app/views/gemeinschaft_setups/new.de.html.haml20
-rw-r--r--app/views/gemeinschaft_setups/new.html.haml22
-rw-r--r--app/views/users/_form_core.html.haml3
5 files changed, 60 insertions, 21 deletions
diff --git a/app/controllers/gemeinschaft_setups_controller.rb b/app/controllers/gemeinschaft_setups_controller.rb
index 347e043..a860653 100644
--- a/app/controllers/gemeinschaft_setups_controller.rb
+++ b/app/controllers/gemeinschaft_setups_controller.rb
@@ -20,6 +20,9 @@ class GemeinschaftSetupsController < ApplicationController
)
@gemeinschaft_setup.country = Country.find_by_name('Germany')
@gemeinschaft_setup.language = Language.find_by_name('Deutsch')
+
+ @gemeinschaft_setup.default_company_name = generate_a_new_name(Tenant.new)
+ @gemeinschaft_setup.default_system_email = 'admin@localhost'
end
def create
@@ -64,11 +67,34 @@ class GemeinschaftSetupsController < ApplicationController
FreeswitchAPI.execute('fsctl', 'shutdown restart')
end
+ # Create the tenant
+ tenant = Tenant.create({:name => @gemeinschaft_setup.default_company_name,
+ :sip_domain_id => SipDomain.last.id,
+ :country_id => @gemeinschaft_setup.country.id,
+ :language_id => @gemeinschaft_setup.language_id,
+ :from_field_voicemail_email => @gemeinschaft_setup.default_system_email,
+ :from_field_pin_change_email => @gemeinschaft_setup.default_system_email,
+ })
+
+ # Become a member of this tenant.
+ #
+ tenant.tenant_memberships.create(:user_id => user.id)
+
+ # Groups
+ #
+ admin_group = tenant.user_groups.create(:name => t('gemeinschaft_setups.initial_setup.admin_group_name'))
+ admin_group.users << user
+
+ user_group = tenant.user_groups.create(:name => t('gemeinschaft_setups.initial_setup.user_group_name'))
+ user_group.users << user
+
+ user.update_attributes!(:current_tenant_id => tenant.id)
+
# Auto-Login:
session[:user_id] = user.id
# Redirect to the user
- redirect_to new_tenant_url, :notice => t('gemeinschaft_setups.initial_setup.successful_setup')
+ redirect_to page_beginners_intro_path, :notice => t('gemeinschaft_setups.initial_setup.successful_setup')
else
render :new
end
diff --git a/app/models/gemeinschaft_setup.rb b/app/models/gemeinschaft_setup.rb
index 6056236..4b4dd37 100644
--- a/app/models/gemeinschaft_setup.rb
+++ b/app/models/gemeinschaft_setup.rb
@@ -6,6 +6,14 @@ class GemeinschaftSetup < ActiveRecord::Base
belongs_to :country
belongs_to :language
+ validates :default_company_name,
+ :presence => true,
+ :uniqueness => true
+
+ validates :default_system_email,
+ :presence => true,
+ :uniqueness => true
+
# Remove the cache which was created by the heater rake task.
#
after_create :expire_cache
diff --git a/app/views/gemeinschaft_setups/new.de.html.haml b/app/views/gemeinschaft_setups/new.de.html.haml
index 3d9b173..cf1f207 100644
--- a/app/views/gemeinschaft_setups/new.de.html.haml
+++ b/app/views/gemeinschaft_setups/new.de.html.haml
@@ -5,23 +5,25 @@
= f.error_notification
%h2 Admin-Konto
- %p
- Dieser erste Benutzer des Systems hat automatisch Admin-Rechte.
= f.simple_fields_for :user, @user do |u|
= render "users/form_core", :f => u
- %h2 SIP-Domain
- %p In den meisten Fällen sollten Sie den gleichen Wert für SIP-Realm und SIP-Domain benutzen. Wenn Sie mit diesen Begriffen nichts anfangen können, dann geben Sie hier bitte die IP-Adresse dieses Servers ein.
-
- = f.simple_fields_for :sip_domain, @sip_domain do |s|
- = render "sip_domains/form_core", :f => s
-
- %h2 Allgemeine Informationen
+ %h2 Konfiguration der Telefonanlage
= f.association :country, :label => t('gemeinschaft_setups.form.country_id.label'), :hint => conditional_hint('gemeinschaft_setups.form.country_id.hint'), :include_blank => false
= f.association :language, :label => t('gemeinschaft_setups.form.language_id.label'), :hint => conditional_hint('gemeinschaft_setups.form.language_id.hint'), :include_blank => false
= f.input :default_area_code, :label => t('gemeinschaft_setups.form.default_area_code.label'), :hint => conditional_hint('gemeinschaft_setups.form.default_area_code.hint')
+ = f.input :default_company_name, :label => t('gemeinschaft_setups.form.default_company_name.label'), :hint => conditional_hint('gemeinschaft_setups.form.default_company_name.hint')
+
+ = f.input :default_system_email, :label => t('gemeinschaft_setups.form.default_system_email.label'), :hint => conditional_hint('gemeinschaft_setups.form.default_system_email.hint')
+
+ %h3 SIP-Domain
+ %p In den meisten Fällen sollten Sie den gleichen Wert für SIP-Realm und SIP-Domain benutzen. Wenn Sie mit diesen Begriffen nichts anfangen können, dann geben Sie hier bitte die IP-Adresse dieses Servers ein.
+
+ = f.simple_fields_for :sip_domain, @sip_domain do |s|
+ = render "sip_domains/form_core", :f => s
+
.actions
= f.button :submit, conditional_t('gemeinschaft_setups.form.submit') \ No newline at end of file
diff --git a/app/views/gemeinschaft_setups/new.html.haml b/app/views/gemeinschaft_setups/new.html.haml
index ff9c812..5e2434e 100644
--- a/app/views/gemeinschaft_setups/new.html.haml
+++ b/app/views/gemeinschaft_setups/new.html.haml
@@ -4,24 +4,26 @@
= simple_form_for(@gemeinschaft_setup) do |f|
= f.error_notification
- %h3 Admin user account
- %p
- This is the first user of this system who has admin rights by default.
+ %h2 Admin user account
= f.simple_fields_for :user, @user do |u|
= render "users/form_core", :f => u
- %h3 SIP domain
- %p You should use the same value for the SIP realm as for the SIP domain to ensure compatibility with different phone models. In case you have no clue what we are talking about: Just enter the IP address of this server.
-
- = f.simple_fields_for :sip_domain, @sip_domain do |s|
- = render "sip_domains/form_core", :f => s
-
- %h3 General information
+ %h2 Configuration of this PBX
= f.association :country, :label => t('gemeinschaft_setups.form.country_id.label'), :hint => conditional_hint('gemeinschaft_setups.form.country_id.hint'), :include_blank => false
= f.association :language, :label => t('gemeinschaft_setups.form.language_id.label'), :hint => conditional_hint('gemeinschaft_setups.form.language_id.hint'), :include_blank => false
= f.input :default_area_code, :label => t('gemeinschaft_setups.form.default_area_code.label'), :hint => conditional_hint('gemeinschaft_setups.form.default_area_code.hint')
+ = f.input :default_company_name, :label => t('gemeinschaft_setups.form.default_company_name.label'), :hint => conditional_hint('gemeinschaft_setups.form.default_company_name.hint')
+
+ = f.input :default_system_email, :label => t('gemeinschaft_setups.form.default_system_email.label'), :hint => conditional_hint('gemeinschaft_setups.form.default_system_email.hint')
+
+ %h3 SIP-Domain
+ %p You should use the same value for the SIP realm as for the SIP domain to ensure compatibility with different phone models. In case you have no clue what we are talking about: Just enter the IP address of this server.
+
+ = f.simple_fields_for :sip_domain, @sip_domain do |s|
+ = render "sip_domains/form_core", :f => s
+
.actions
= f.button :submit, conditional_t('gemeinschaft_setups.form.submit') \ No newline at end of file
diff --git a/app/views/users/_form_core.html.haml b/app/views/users/_form_core.html.haml
index 24b15f5..980976d 100644
--- a/app/views/users/_form_core.html.haml
+++ b/app/views/users/_form_core.html.haml
@@ -2,7 +2,8 @@
- if GuiFunction.display?('name_data_fields_in_user_edit_form', current_user)
= f.input :male, :collection => [[true, t('users.form.gender.male')], [false, t('users.form.gender.female')]], :label_method => :last, :value_method => :first, :label => t('users.form.male.label'), :hint => conditional_hint('users.form.gender.hint'), :label => t('users.form.gender.label'), :as => :radio_buttons
= f.input :first_name, :label => t('users.form.first_name.label'), :hint => conditional_hint('users.form.first_name.hint'), :autofocus => true
- = f.input :middle_name, :label => t('users.form.middle_name.label'), :hint => conditional_hint('users.form.middle_name.hint')
+ - if User.any?
+ = f.input :middle_name, :label => t('users.form.middle_name.label'), :hint => conditional_hint('users.form.middle_name.hint')
= f.input :last_name, :label => t('users.form.last_name.label'), :hint => conditional_hint('users.form.last_name.hint')
- if GuiFunction.display?('user_name_field_in_user_edit_form', current_user)
= f.input :user_name, :label => t('users.form.user_name.label'), :hint => conditional_hint('users.form.user_name.hint')