summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Kozak <spag@golwen.net>2013-07-23 10:46:21 +0200
committerPeter Kozak <spag@golwen.net>2013-07-23 10:46:21 +0200
commit768054582e2dc6c033e08d627521928ab4bd3524 (patch)
tree32519d28089f3c55cb029ab6c63c7e1746fc4aa5
parent3d2fba91bd0c51de792e698d500be83a33f96bf8 (diff)
extension_modules added
-rw-r--r--app/controllers/extension_modules_controller.rb65
-rw-r--r--app/helpers/extension_modules_helper.rb2
-rw-r--r--app/models/extension_module.rb58
-rw-r--r--app/views/extension_modules/_form.html.haml7
-rw-r--r--app/views/extension_modules/_form_core.html.haml6
-rw-r--r--app/views/extension_modules/_index_core.html.haml13
-rw-r--r--app/views/extension_modules/edit.html.haml3
-rw-r--r--app/views/extension_modules/index.html.haml6
-rw-r--r--app/views/extension_modules/new.html.haml3
-rw-r--r--app/views/extension_modules/show.html.haml19
-rw-r--r--config/locales/views/extension_modules/de.yml56
-rw-r--r--config/locales/views/extension_modules/en.yml56
12 files changed, 294 insertions, 0 deletions
diff --git a/app/controllers/extension_modules_controller.rb b/app/controllers/extension_modules_controller.rb
new file mode 100644
index 0000000..3a155a1
--- /dev/null
+++ b/app/controllers/extension_modules_controller.rb
@@ -0,0 +1,65 @@
+class ExtensionModulesController < ApplicationController
+ load_resource :phone
+ load_and_authorize_resource :extension_module, :through => [:phone]
+
+ before_filter :spread_breadcrumbs
+
+ def index
+ @extension_modules = @phone.extension_modules.all
+ end
+
+ def show
+ @extension_module = @phone.extension_modules.find(params[:id])
+ end
+
+ def new
+ @extension_module = @phone.extension_modules.build()
+ end
+
+ def create
+ @extension_module = @phone.extension_modules.build(params[:extension_module])
+ if @extension_module.save
+ redirect_to phone_extension_module_path(@phone, @extension_module), :notice => t('extension_modules.controller.successfuly_created')
+ else
+ render :new
+ end
+ end
+
+ def edit
+ @extension_module = @phone.extension_modules.find(params[:id])
+ end
+
+ def update
+ @extension_module = @phone.extension_modules.find(params[:id])
+ if @extension_module.update_attributes(params[:extension_module])
+ redirect_to phone_extension_module_path(@phone, @extension_module), :notice => t('extension_modules.controller.successfuly_updated')
+ else
+ render :edit
+ end
+ end
+
+ def destroy
+ @extension_module = @phone.extension_modules.find(params[:id])
+ @extension_module.destroy
+ redirect_to phone_extension_modules_url(@phone), :notice => t('extension_modules.controller.successfuly_destroyed')
+ end
+
+ private
+ def spread_breadcrumbs
+ if @phone.phoneable.class == User
+ add_breadcrumb t('users.index.page_title'), tenant_users_path(@phone.phoneable.current_tenant)
+ add_breadcrumb @phone.phoneable, tenant_user_path(@phone.phoneable.current_tenant, @phone.phoneable)
+ add_breadcrumb t('phones.index.page_title'), user_phones_path(@phone.phoneable)
+ elsif @phone.phoneable.class == Tenant
+ add_breadcrumb t('phones.index.page_title'), tenant_phones_path(@phone.phoneable)
+ end
+
+ add_breadcrumb @phone, method( :"#{@phone.phoneable.class.name.underscore}_phone_path" ).(@phone.phoneable, @phone)
+ add_breadcrumb t("extension_modules.index.page_title"), phone_extension_modules_path(@phone)
+
+ if @extension_module && !@extension_module.new_record?
+ add_breadcrumb @extension_module
+ end
+
+ end
+end
diff --git a/app/helpers/extension_modules_helper.rb b/app/helpers/extension_modules_helper.rb
new file mode 100644
index 0000000..653769f
--- /dev/null
+++ b/app/helpers/extension_modules_helper.rb
@@ -0,0 +1,2 @@
+module ExtensionModulesHelper
+end
diff --git a/app/models/extension_module.rb b/app/models/extension_module.rb
new file mode 100644
index 0000000..98ef700
--- /dev/null
+++ b/app/models/extension_module.rb
@@ -0,0 +1,58 @@
+class ExtensionModule < ActiveRecord::Base
+ attr_accessible :model, :mac_address, :phone_id, :ip_address, :position, :active, :provisioning_key, :provisioning_key_active
+
+ MODELS = ['snom_vision']
+
+ belongs_to :phone
+ before_save :remove_ip_address_when_mac_address_was_changed
+
+ before_save :generate_key
+
+ def to_s
+ mac_address
+ end
+
+ def resync()
+ if ! self.model == 'snom_vision'
+ return false
+ end
+
+ http_user = nil
+ http_password = nil
+
+ if self.phone
+ http_user = self.phone.http_user
+ http_password = self.phone.http_password
+ end
+
+ require 'open-uri'
+ begin
+ if open("http://#{self.ip_address}/ConfigurationModule/restart", :http_basic_authentication=>[http_user, http_password], :proxy => nil)
+ return true
+ end
+ rescue
+ return false
+ end
+ end
+
+ private
+ def sanitize_mac_address
+ if self.mac_address.split(/:/).count == 6 && self.mac_address.length < 17
+ splitted_mac_address = self.mac_address.split(/:/)
+ self.mac_address = splitted_mac_address.map{|part| (part.size == 1 ? "0#{part}" : part)}.join('')
+ end
+ self.mac_address = self.mac_address.to_s.upcase.gsub( /[^A-F0-9]/, '' )
+ end
+
+ def remove_ip_address_when_mac_address_was_changed
+ if self.mac_address_changed?
+ self.ip_address = nil
+ end
+ end
+
+ def generate_key
+ if !GsParameter.get('PROVISIONING_KEY_LENGTH').nil? && GsParameter.get('PROVISIONING_KEY_LENGTH') > 0 && self.provisioning_key.blank?
+ self.provisioning_key = SecureRandom.hex(GsParameter.get('PROVISIONING_KEY_LENGTH'))
+ end
+ end
+end
diff --git a/app/views/extension_modules/_form.html.haml b/app/views/extension_modules/_form.html.haml
new file mode 100644
index 0000000..496e695
--- /dev/null
+++ b/app/views/extension_modules/_form.html.haml
@@ -0,0 +1,7 @@
+= simple_form_for([@phone, @extension_module]) do |f|
+ = f.error_notification
+
+ = render "form_core", :f => f
+
+ .form-actions
+ = f.button :submit, conditional_t('extension_modules.form.submit')
diff --git a/app/views/extension_modules/_form_core.html.haml b/app/views/extension_modules/_form_core.html.haml
new file mode 100644
index 0000000..bea4a77
--- /dev/null
+++ b/app/views/extension_modules/_form_core.html.haml
@@ -0,0 +1,6 @@
+.inputs
+ = f.input :model, :collection => ExtensionModule::MODELS, :label => t('extension_modules.form.model.label'), :hint => conditional_hint('extension_modules.form.model.hint'), :include_blank => false
+ = f.input :mac_address, :label => t('extension_modules.form.mac_address.label'), :hint => conditional_hint('extension_modules.form.mac_address.hint')
+ = f.input :position, :label => t('extension_modules.form.position.label'), :hint => conditional_hint('extension_modules.form.position.hint')
+ = f.input :active, :label => t('extension_modules.form.active.label'), :hint => conditional_hint('extension_modules.form.active.hint')
+ = f.input :provisioning_key_active, :label => t('extension_modules.form.provisioning_key_active.label'), :hint => conditional_hint('extension_modules.form.provisioning_key_active.hint')
diff --git a/app/views/extension_modules/_index_core.html.haml b/app/views/extension_modules/_index_core.html.haml
new file mode 100644
index 0000000..d5aef48
--- /dev/null
+++ b/app/views/extension_modules/_index_core.html.haml
@@ -0,0 +1,13 @@
+%table.table.table-striped
+ %tr
+ %th= t('extension_modules.index.model')
+ %th= t('extension_modules.index.mac_address')
+ %th= t('extension_modules.index.active')
+
+
+ - for extension_module in extension_modules
+ %tr
+ %td= extension_module.model
+ %td= extension_module.mac_address
+ %td= extension_module.active
+ =render :partial => 'shared/index_view_edit_destroy_part', :locals => {:parent => @phone, :child => extension_module} \ No newline at end of file
diff --git a/app/views/extension_modules/edit.html.haml b/app/views/extension_modules/edit.html.haml
new file mode 100644
index 0000000..4fcb09b
--- /dev/null
+++ b/app/views/extension_modules/edit.html.haml
@@ -0,0 +1,3 @@
+- content_for :title, t("extension_modules.edit.page_title")
+
+= render "form" \ No newline at end of file
diff --git a/app/views/extension_modules/index.html.haml b/app/views/extension_modules/index.html.haml
new file mode 100644
index 0000000..7a57eb5
--- /dev/null
+++ b/app/views/extension_modules/index.html.haml
@@ -0,0 +1,6 @@
+- content_for :title, t("extension_modules.index.page_title")
+
+- if @extension_modules && @extension_modules.count > 0
+ = render "index_core", :extension_modules => @extension_modules
+
+= render :partial => 'shared/create_link', :locals => {:parent => @phone, :child_class => ExtensionModule} \ No newline at end of file
diff --git a/app/views/extension_modules/new.html.haml b/app/views/extension_modules/new.html.haml
new file mode 100644
index 0000000..2b4ae9a
--- /dev/null
+++ b/app/views/extension_modules/new.html.haml
@@ -0,0 +1,3 @@
+- content_for :title, t("extension_modules.new.page_title")
+
+= render "form" \ No newline at end of file
diff --git a/app/views/extension_modules/show.html.haml b/app/views/extension_modules/show.html.haml
new file mode 100644
index 0000000..bb408ef
--- /dev/null
+++ b/app/views/extension_modules/show.html.haml
@@ -0,0 +1,19 @@
+- content_for :title, t("extension_modules.show.page_title")
+
+%p
+ %strong= t('extension_modules.show.model') + ":"
+ = @extension_module.model
+%p
+ %strong= t('extension_modules.show.mac_address') + ":"
+ = @extension_module.mac_address
+%p
+ %strong= t('extension_modules.show.position') + ":"
+ = @extension_module.position
+%p
+ %strong= t('extension_modules.show.active') + ":"
+ = @extension_module.active
+%p
+ %strong= t('extension_modules.show.provisioning_key_active') + ":"
+ = @extension_module.provisioning_key_active
+
+= render :partial => 'shared/show_edit_destroy_part', :locals => { :parent => @phone, :child => @extension_module }
diff --git a/config/locales/views/extension_modules/de.yml b/config/locales/views/extension_modules/de.yml
new file mode 100644
index 0000000..8c4db3c
--- /dev/null
+++ b/config/locales/views/extension_modules/de.yml
@@ -0,0 +1,56 @@
+de:
+ phones:
+ name: 'Erweiterungsmodul'
+ controller:
+ successfuly_created: 'Ein neues Erweiterungsmodul wurde in der Datenbank eingetragen.'
+ successfuly_updated: 'Die Daten zum Erweiterungsmodul wurden aktualisiert.'
+ successfuly_destroyed: 'Das Erweiterungsmodul wurde aus dem System entfernt.'
+ index:
+ page_title: 'Erweiterungsmodule'
+ mac_address: 'MAC-Adresse'
+ model: 'Modell'
+ ip_address: 'IP'
+ active: 'Aktiv'
+ actions:
+ confirm_destroy: 'Sind Sie sicher, dass Sie diese Erweiterungsmodul aus Gemeinschaft entfernen möchten?'
+ destroy: 'Löschen'
+ edit: 'Bearbeiten'
+ show: 'Anzeigen'
+ create: 'Neu anlegen'
+ create_for: 'Neues Erweiterungsmodul für %{resource} anlegen'
+ show:
+ page_title: 'Erweiterungsmodul'
+ mac_address: 'MAC-Adresse'
+ model: 'Modell'
+ hot_deskable: 'Hot-Desk fähig'
+ ip_address: 'IP-Adresse'
+ active: 'Aktiv'
+ actions:
+ confirm_destroy: 'Sind Sie sicher, dass Sie dieses Erweiterungsmodul aus Gemeinschaft entfernen möchten?'
+ destroy: 'Löschen'
+ edit: 'Bearbeiten'
+ view_all: 'Alle Erweiterungsmodule anzeigen'
+ new:
+ page_title: 'Neues Erweiterungsmodul'
+ edit:
+ page_title: 'Erweiterungsmoduldaten bearbeiten'
+ form:
+ mac_address:
+ label: 'MAC-Adresse'
+ hint: ''
+ model:
+ label: 'Modell'
+ hint: ''
+ ip_address:
+ label: 'IP-Adresse'
+ hint: ''
+ position:
+ label: 'Position'
+ hint: ''
+ active:
+ label: 'Aktiv'
+ hint: ''
+ provisioning_key_active:
+ label: 'Provisioning Schlüssel aktiv'
+ hint: ''
+ submit: 'Absenden'
diff --git a/config/locales/views/extension_modules/en.yml b/config/locales/views/extension_modules/en.yml
new file mode 100644
index 0000000..031437e
--- /dev/null
+++ b/config/locales/views/extension_modules/en.yml
@@ -0,0 +1,56 @@
+en:
+ extension_modules:
+ name: 'Extension module'
+ controller:
+ successfuly_created: 'Successfully created extension_module.'
+ successfuly_updated: 'Successfully updated extension_module.'
+ successfuly_destroyed: 'Successfully destroyed extension_module.'
+ index:
+ page_title: 'Extension modules'
+ model: 'Model'
+ mac_address: 'Mac address'
+ ip_address: 'IP address'
+ active: 'Active'
+ actions:
+ confirm_destroy: 'Are you sure you want to delete this extension_module?'
+ destroy: 'Delete'
+ edit: 'Edit'
+ show: 'View'
+ create: 'New'
+ create_for: 'New extension_module for %{resource}'
+ show:
+ page_title: 'Show extension_module'
+ model: 'Model'
+ mac_address: 'Mac address'
+ ip_address: 'IP address'
+ active: 'Active'
+ provisioning_key_active: 'Provisioning key active'
+ actions:
+ confirm_destroy: 'Are you sure you want to delete this extension_module?'
+ destroy: 'Delete extension_module'
+ edit: 'Edit extension_module'
+ view_all: 'View all extension_modules'
+ new:
+ page_title: 'New extension_module'
+ edit:
+ page_title: 'Editing Extension module'
+ form:
+ mac_address:
+ label: 'Mac address'
+ hint: ''
+ model:
+ label: 'Model'
+ hint: ''
+ ip_address:
+ label: 'IP address'
+ hint: ''
+ position:
+ label: 'Position'
+ hint: ''
+ active:
+ label: 'Active'
+ hint: ''
+ provisioning_key_active:
+ label: 'Provisioning key active'
+ hint: ''
+ submit: 'Submit'