From 768054582e2dc6c033e08d627521928ab4bd3524 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Tue, 23 Jul 2013 10:46:21 +0200 Subject: extension_modules added --- app/controllers/extension_modules_controller.rb | 65 +++++++++++++++++++++++ app/helpers/extension_modules_helper.rb | 2 + app/models/extension_module.rb | 58 ++++++++++++++++++++ app/views/extension_modules/_form.html.haml | 7 +++ app/views/extension_modules/_form_core.html.haml | 6 +++ app/views/extension_modules/_index_core.html.haml | 13 +++++ app/views/extension_modules/edit.html.haml | 3 ++ app/views/extension_modules/index.html.haml | 6 +++ app/views/extension_modules/new.html.haml | 3 ++ app/views/extension_modules/show.html.haml | 19 +++++++ config/locales/views/extension_modules/de.yml | 56 +++++++++++++++++++ config/locales/views/extension_modules/en.yml | 56 +++++++++++++++++++ 12 files changed, 294 insertions(+) create mode 100644 app/controllers/extension_modules_controller.rb create mode 100644 app/helpers/extension_modules_helper.rb create mode 100644 app/models/extension_module.rb create mode 100644 app/views/extension_modules/_form.html.haml create mode 100644 app/views/extension_modules/_form_core.html.haml create mode 100644 app/views/extension_modules/_index_core.html.haml create mode 100644 app/views/extension_modules/edit.html.haml create mode 100644 app/views/extension_modules/index.html.haml create mode 100644 app/views/extension_modules/new.html.haml create mode 100644 app/views/extension_modules/show.html.haml create mode 100644 config/locales/views/extension_modules/de.yml create mode 100644 config/locales/views/extension_modules/en.yml 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' -- cgit v1.2.3