diff options
-rw-r--r-- | app/controllers/generic_files_controller.rb | 64 | ||||
-rw-r--r-- | app/helpers/generic_files_helper.rb | 2 | ||||
-rw-r--r-- | app/models/generic_file.rb | 44 | ||||
-rw-r--r-- | app/uploaders/generic_file_uploader.rb | 18 | ||||
-rw-r--r-- | app/views/generic_files/_form.html.haml | 7 | ||||
-rw-r--r-- | app/views/generic_files/_form_core.html.haml | 7 | ||||
-rw-r--r-- | app/views/generic_files/_index_core.html.haml | 14 | ||||
-rw-r--r-- | app/views/generic_files/edit.html.haml | 3 | ||||
-rw-r--r-- | app/views/generic_files/index.html.haml | 6 | ||||
-rw-r--r-- | app/views/generic_files/new.html.haml | 3 | ||||
-rw-r--r-- | app/views/generic_files/show.html.haml | 20 | ||||
-rw-r--r-- | config/locales/views/generic_files/de.yml | 65 | ||||
-rw-r--r-- | config/locales/views/generic_files/en.yml | 65 | ||||
-rw-r--r-- | db/migrate/20130410123523_create_generic_files.rb | 17 | ||||
-rw-r--r-- | test/functional/generic_files_controller_test.rb | 49 | ||||
-rw-r--r-- | test/unit/generic_file_test.rb | 7 |
16 files changed, 391 insertions, 0 deletions
diff --git a/app/controllers/generic_files_controller.rb b/app/controllers/generic_files_controller.rb new file mode 100644 index 0000000..b7dc453 --- /dev/null +++ b/app/controllers/generic_files_controller.rb @@ -0,0 +1,64 @@ +class GenericFilesController < ApplicationController + + load_resource :sip_account + load_resource :conference + load_resource :hunt_group + load_resource :automatic_call_distributor + load_resource :user + load_resource :tenant + load_resource :generic_file + + load_and_authorize_resource :generic_file, :through => [:sip_account, :conference, :hunt_group, :automatic_call_distributor, :user, :tenant] + + before_filter :set_and_authorize_parent + + def index + @generic_files = @parent.generic_files + end + + def show + + end + + def new + @generic_file = @parent.generic_files.build() + end + + def create + @generic_file = @parent.generic_files.new(params[:generic_file]) + if @generic_file.save + m = method( :"#{@parent.class.name.underscore}_generic_files_url" ) + redirect_to m.( @parent ), :notice => t('generic_files.controller.successfuly_created') + else + render :new + end + end + + def edit + @generic_file = GenericFile.find(params[:id]) + end + + def update + @generic_file = GenericFile.find(params[:id]) + if @generic_file.update_attributes(params[:generic_file]) + m = method( :"#{@parent.class.name.underscore}_generic_files_url" ) + redirect_to m.( @parent ), :notice => t('generic_files.controller.successfuly_updated') + else + render :edit + end + end + + def destroy + @generic_file = GenericFile.find(params[:id]) + @generic_file.destroy + m = method( :"#{@parent.class.name.underscore}_generic_files_url" ) + redirect_to m.( @parent ), :notice => t('generic_files.controller.successfuly_destroyed') + end + + private + def set_and_authorize_parent + @parent = @sip_account || @conference || @hunt_group || @automatic_call_distributor || @user || @tenant + + authorize! :read, @parent + end +end diff --git a/app/helpers/generic_files_helper.rb b/app/helpers/generic_files_helper.rb new file mode 100644 index 0000000..6e067ed --- /dev/null +++ b/app/helpers/generic_files_helper.rb @@ -0,0 +1,2 @@ +module GenericFilesHelper +end diff --git a/app/models/generic_file.rb b/app/models/generic_file.rb new file mode 100644 index 0000000..b6b3ede --- /dev/null +++ b/app/models/generic_file.rb @@ -0,0 +1,44 @@ +class GenericFile < ActiveRecord::Base + FILE_TYPES = %w(pdf ps jpg gif png tif wav mp3) + CATEGORIES = %w(file document image greeting recording) + + attr_accessible :name, :file, :file_type, :category, :owner_id, :owner_type + + mount_uploader :file, GenericFileUploader + + belongs_to :owner, :polymorphic => true + + before_save :determine_file_type + + def store_dir + "/var/opt/gemeinschaft/generic_files/#{self.id.to_i}" + end + + def mime_type + return GenericFile.mime_type(self.file.to_s) + end + + def self.mime_type(file_name) + mime_type = `file -b --mime-type "#{file_name}"`.strip + if mime_type.blank? + mime_type = MIME::Types.type_for(file_name).first.to_s + end + + return mime_type + end + + def file_size + if self.file + return File.size(self.file.to_s) + else + return 0 + end + end + + private + def determine_file_type + if self.file_changed? + self.file_type = self.mime_type + end + end +end diff --git a/app/uploaders/generic_file_uploader.rb b/app/uploaders/generic_file_uploader.rb new file mode 100644 index 0000000..4a226ed --- /dev/null +++ b/app/uploaders/generic_file_uploader.rb @@ -0,0 +1,18 @@ +# encoding: utf-8 + +class GenericFileUploader < CarrierWave::Uploader::Base + + storage :file + + def store_dir + model.store_dir + end + + def cache_dir + '/tmp/generic_file_uploader' + end + + def extension_white_list + %w(pdf ps jpg jpeg gif png tif tiff wav mp3) + end +end diff --git a/app/views/generic_files/_form.html.haml b/app/views/generic_files/_form.html.haml new file mode 100644 index 0000000..8912daa --- /dev/null +++ b/app/views/generic_files/_form.html.haml @@ -0,0 +1,7 @@ += simple_form_for([@parent, @generic_file]) do |f| + = f.error_notification + + = render "form_core", :f => f + + .form-actions + = f.button :submit, conditional_t('generic_files.form.submit') diff --git a/app/views/generic_files/_form_core.html.haml b/app/views/generic_files/_form_core.html.haml new file mode 100644 index 0000000..b0e8889 --- /dev/null +++ b/app/views/generic_files/_form_core.html.haml @@ -0,0 +1,7 @@ +.inputs + - if @generic_file.new_record? + = f.input :file, :label => t('generic_files.form.file.label'), :hint => conditional_hint('generic_files.form.file.hint') + - else + = f.input :file_type, :label => t('generic_files.form.file_type.label'), :hint => conditional_hint('generic_files.form.file_type.hint'), :disabled => true + = f.input :name, :label => t('generic_files.form.name.label'), :hint => conditional_hint('generic_files.form.name.hint') + = f.input :category, :label => t('generic_files.form.category.label'), :collection => GenericFile::CATEGORIES, :hint => conditional_hint('generic_files.form.category.hint'), :include_blank => false diff --git a/app/views/generic_files/_index_core.html.haml b/app/views/generic_files/_index_core.html.haml new file mode 100644 index 0000000..5fa66f7 --- /dev/null +++ b/app/views/generic_files/_index_core.html.haml @@ -0,0 +1,14 @@ +%table.table.table-striped + %tr + %th= t('generic_files.index.category') + %th= t('generic_files.index.name') + %th= t('generic_files.index.file_type') + + - for generic_file in generic_files + %tr + %td= generic_file.category + %td= generic_file.name + %td= generic_file.file_type + + + =render :partial => 'shared/index_view_edit_destroy_part', :locals => {:parent => generic_file.owner, :child => generic_file}
\ No newline at end of file diff --git a/app/views/generic_files/edit.html.haml b/app/views/generic_files/edit.html.haml new file mode 100644 index 0000000..b59dd2b --- /dev/null +++ b/app/views/generic_files/edit.html.haml @@ -0,0 +1,3 @@ +- content_for :title, t("generic_files.edit.page_title") + += render "form"
\ No newline at end of file diff --git a/app/views/generic_files/index.html.haml b/app/views/generic_files/index.html.haml new file mode 100644 index 0000000..b3c489e --- /dev/null +++ b/app/views/generic_files/index.html.haml @@ -0,0 +1,6 @@ +- content_for :title, t("generic_files.index.page_title") + +- if @generic_files && @generic_files.count > 0 + = render "index_core", :generic_files => @generic_files + += render :partial => 'shared/create_link', :locals => {:parent => @parent, :child_class => GenericFile}
\ No newline at end of file diff --git a/app/views/generic_files/new.html.haml b/app/views/generic_files/new.html.haml new file mode 100644 index 0000000..05af0da --- /dev/null +++ b/app/views/generic_files/new.html.haml @@ -0,0 +1,3 @@ +- content_for :title, t("generic_files.new.page_title") + += render "form"
\ No newline at end of file diff --git a/app/views/generic_files/show.html.haml b/app/views/generic_files/show.html.haml new file mode 100644 index 0000000..b375dfc --- /dev/null +++ b/app/views/generic_files/show.html.haml @@ -0,0 +1,20 @@ +- content_for :title, t("generic_files.show.page_title") + +%p + %strong= t('generic_files.show.category') + ":" + = @generic_file.category + +%p + %strong= t('generic_files.show.name') + ":" + = @generic_file.name + +%p + %strong= t('generic_files.show.file_type') + ":" + = @generic_file.file_type + +%p + %strong= t('generic_files.show.file_size') + ":" + = number_to_human_size(@generic_file.file_size) + + += render :partial => 'shared/show_edit_destroy_part', :locals => { :parent => @parent, :child => @generic_file }
\ No newline at end of file diff --git a/config/locales/views/generic_files/de.yml b/config/locales/views/generic_files/de.yml new file mode 100644 index 0000000..4bef46e --- /dev/null +++ b/config/locales/views/generic_files/de.yml @@ -0,0 +1,65 @@ +de: + generic_files: + name: 'Genericfile' + controller: + successfuly_created: 'Genericfile wurde angelegt.' + successfuly_updated: 'Genericfile wurde aktualisiert.' + successfuly_destroyed: 'Genericfile wurde gelöscht.' + index: + page_title: 'Übersicht von Genericfile' + name: 'Name' + file: 'File' + file_type: 'File type' + category: 'Category' + owner_id: 'Owner' + owner_type: 'Owner type' + actions: + confirm_destroy: 'Sind Sie sicher, dass Sie folgendes löschen möchten: Genericfile' + destroy: 'Löschen' + edit: 'Bearbeiten' + show: 'Anzeigen' + create: 'Neu anlegen' + create_for: 'Genericfile neu anlegen für %{resource}' + show: + page_title: 'Genericfile bearbeiten' + name: 'Name' + file: 'File' + file_type: 'File type' + category: 'Category' + owner_id: 'Owner' + owner_type: 'Owner type' + actions: + confirm_destroy: 'Sind Sie sicher, dass die dieses Element löschen möchten?' + destroy: 'Löschen' + edit: 'Bearbeiten' + view_all: 'Alle anzeigen' + new: + page_title: 'Genericfile neu anlegen' + actions: + back_to_list: 'Zurück zur Übersicht' + edit: + page_title: 'Genericfile bearbeiten' + actions: + back_to_list: 'Zurück zur Übersicht' + edit: 'Bearbeiten' + view_all: 'Alle anzeigen' + form: + name: + label: 'Name' + hint: '' + file: + label: 'File' + hint: '' + file_type: + label: 'File type' + hint: '' + category: + label: 'Category' + hint: '' + owner_id: + label: 'Owner' + hint: '' + owner_type: + label: 'Owner type' + hint: '' + submit: 'Absenden'
\ No newline at end of file diff --git a/config/locales/views/generic_files/en.yml b/config/locales/views/generic_files/en.yml new file mode 100644 index 0000000..dd1c300 --- /dev/null +++ b/config/locales/views/generic_files/en.yml @@ -0,0 +1,65 @@ +en: + generic_files: + name: 'Genericfile' + controller: + successfuly_created: 'Successfully created Genericfile.' + successfuly_updated: 'Successfully updated Genericfile.' + successfuly_destroyed: 'Successfully destroyed Genericfile.' + index: + page_title: 'Listing Genericfile' + name: 'Name' + file: 'File' + file_type: 'File type' + category: 'Category' + owner_id: 'Owner' + owner_type: 'Owner type' + actions: + confirm_destroy: 'Are you sure you want to delete this Genericfile?' + destroy: 'Delete' + edit: 'Edit' + show: 'View' + create: 'New' + create_for: 'New Genericfile for %{resource}' + show: + page_title: 'Show Genericfile' + name: 'Name' + file: 'File' + file_type: 'File type' + category: 'Category' + owner_id: 'Owner' + owner_type: 'Owner type' + actions: + confirm_destroy: 'Are you sure you want to delete this element?' + destroy: 'Delete' + edit: 'Edit' + view_all: 'View All' + new: + page_title: 'New Genericfile' + actions: + back_to_list: 'Back to Index' + edit: + page_title: 'Editing Genericfile' + actions: + back_to_list: 'Back to Index' + edit: 'Edit' + view_all: 'View All' + form: + name: + label: 'Name' + hint: '' + file: + label: 'File' + hint: '' + file_type: + label: 'File type' + hint: '' + category: + label: 'Category' + hint: '' + owner_id: + label: 'Owner' + hint: '' + owner_type: + label: 'Owner type' + hint: '' + submit: 'Submit'
\ No newline at end of file diff --git a/db/migrate/20130410123523_create_generic_files.rb b/db/migrate/20130410123523_create_generic_files.rb new file mode 100644 index 0000000..a91f341 --- /dev/null +++ b/db/migrate/20130410123523_create_generic_files.rb @@ -0,0 +1,17 @@ +class CreateGenericFiles < ActiveRecord::Migration + def self.up + create_table :generic_files do |t| + t.string :name + t.string :file + t.string :file_type + t.string :category + t.integer :owner_id + t.string :owner_type + t.timestamps + end + end + + def self.down + drop_table :generic_files + end +end diff --git a/test/functional/generic_files_controller_test.rb b/test/functional/generic_files_controller_test.rb new file mode 100644 index 0000000..ef0a780 --- /dev/null +++ b/test/functional/generic_files_controller_test.rb @@ -0,0 +1,49 @@ +require 'test_helper' + +class GenericFilesControllerTest < ActionController::TestCase + setup do + @generic_file = generic_files(:one) + end + + test "should get index" do + get :index + assert_response :success + assert_not_nil assigns(:generic_files) + end + + test "should get new" do + get :new + assert_response :success + end + + test "should create generic_file" do + assert_difference('GenericFile.count') do + post :create, generic_file: @generic_file.attributes + end + + assert_redirected_to generic_file_path(assigns(:generic_file)) + end + + test "should show generic_file" do + get :show, id: @generic_file.to_param + assert_response :success + end + + test "should get edit" do + get :edit, id: @generic_file.to_param + assert_response :success + end + + test "should update generic_file" do + put :update, id: @generic_file.to_param, generic_file: @generic_file.attributes + assert_redirected_to generic_file_path(assigns(:generic_file)) + end + + test "should destroy generic_file" do + assert_difference('GenericFile.count', -1) do + delete :destroy, id: @generic_file.to_param + end + + assert_redirected_to generic_files_path + end +end diff --git a/test/unit/generic_file_test.rb b/test/unit/generic_file_test.rb new file mode 100644 index 0000000..e7fa53d --- /dev/null +++ b/test/unit/generic_file_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class GenericFileTest < ActiveSupport::TestCase + def test_should_be_valid + assert GenericFile.new.valid? + end +end |