diff --git a/app/controllers/admin/finances_controller.rb b/app/controllers/admin/finances_controller.rb new file mode 100644 index 00000000..a96a9dc2 --- /dev/null +++ b/app/controllers/admin/finances_controller.rb @@ -0,0 +1,13 @@ +class Admin::FinancesController < Admin::BaseController + inherit_resources + + def index + @financial_transaction_classes = FinancialTransactionClass.order('name ASC') + end + + def update_transaction_types + @financial_transaction_classes = FinancialTransactionClass.order('name ASC') + render :layout => false + end + +end diff --git a/app/controllers/admin/financial_transaction_classes_controller.rb b/app/controllers/admin/financial_transaction_classes_controller.rb new file mode 100644 index 00000000..10359acd --- /dev/null +++ b/app/controllers/admin/financial_transaction_classes_controller.rb @@ -0,0 +1,41 @@ +class Admin::FinancialTransactionClassesController < Admin::BaseController + inherit_resources + + def new + @financial_transaction_class = FinancialTransactionClass.new(params[:financial_transaction_class]) + render layout: false + end + + def create + @financial_transaction_class = FinancialTransactionClass.new(params[:financial_transaction_class]) + if @financial_transaction_class.save + redirect_to update_transaction_types_admin_finances_url, status: 303 + else + render action: 'new', layout: false + end + end + + def edit + @financial_transaction_class = FinancialTransactionClass.find(params[:id]) + render action: 'new', layout: false + end + + def update + @financial_transaction_class = FinancialTransactionClass.find(params[:id]) + + if @financial_transaction_class.update_attributes(params[:financial_transaction_class]) + redirect_to update_transaction_types_admin_finances_url, status: 303 + else + render action: 'new', layout: false + end + end + + def destroy + @financial_transaction_class = FinancialTransactionClass.find(params[:id]) + @financial_transaction_class.destroy! + redirect_to update_transaction_types_admin_finances_url, status: 303 + rescue => error + flash.now[:alert] = error.message + render template: 'shared/alert' + end +end diff --git a/app/controllers/admin/financial_transaction_types_controller.rb b/app/controllers/admin/financial_transaction_types_controller.rb new file mode 100644 index 00000000..401f31e7 --- /dev/null +++ b/app/controllers/admin/financial_transaction_types_controller.rb @@ -0,0 +1,42 @@ +class Admin::FinancialTransactionTypesController < Admin::BaseController + inherit_resources + + def new + @financial_transaction_type = FinancialTransactionType.new(params[:financial_transaction_type]) + @financial_transaction_type.financial_transaction_class = FinancialTransactionClass.find_by_id(params[:financial_transaction_class]) if params[:financial_transaction_class] + render layout: false + end + + def create + @financial_transaction_type = FinancialTransactionType.new(params[:financial_transaction_type]) + if @financial_transaction_type.save + redirect_to update_transaction_types_admin_finances_url, status: 303 + else + render action: 'new', layout: false + end + end + + def edit + @financial_transaction_type = FinancialTransactionType.find(params[:id]) + render action: 'new', layout: false + end + + def update + @financial_transaction_type = FinancialTransactionType.find(params[:id]) + + if @financial_transaction_type.update_attributes(params[:financial_transaction_type]) + redirect_to update_transaction_types_admin_finances_url, status: 303 + else + render action: 'new', layout: false + end + end + + def destroy + @financial_transaction_type = FinancialTransactionType.find(params[:id]) + @financial_transaction_type.destroy! + redirect_to update_transaction_types_admin_finances_url, status: 303 + rescue => error + flash.now[:alert] = error.message + render template: 'shared/alert' + end +end diff --git a/app/views/admin/finances/_form.html.haml b/app/views/admin/finances/_form.html.haml new file mode 100644 index 00000000..25bae8fb --- /dev/null +++ b/app/views/admin/finances/_form.html.haml @@ -0,0 +1,5 @@ += simple_form_for [:admin, @financial_transaction_class] do |f| + = f.input :name + .form-actions + = f.button :submit + = link_to t('ui.or_cancel'), :back diff --git a/app/views/admin/finances/_transaction_types.html.haml b/app/views/admin/finances/_transaction_types.html.haml new file mode 100644 index 00000000..ca44587a --- /dev/null +++ b/app/views/admin/finances/_transaction_types.html.haml @@ -0,0 +1,23 @@ +%table.table.table-striped + %thead + %tr + %th= t '.name' + %th= t 'ui.actions' + %tbody + - for financial_transaction_class in @financial_transaction_classes + %tr + %td + %strong= financial_transaction_class.name + %td + = link_to t('ui.edit'), edit_admin_financial_transaction_class_path(financial_transaction_class), remote: true, class: 'btn btn-mini' + = link_to t('ui.delete'), [:admin, financial_transaction_class], :data => {:confirm => t('ui.confirm_delete', name: financial_transaction_class.name)}, + :method => :delete, remote: true, class: 'btn btn-mini btn-danger' + = link_to t('.new_financial_transaction_type'), new_admin_financial_transaction_type_path(financial_transaction_class: financial_transaction_class), remote: true, class: 'btn btn-success btn-mini' + - for financial_transaction_type in financial_transaction_class.financial_transaction_types + %tr + %td{:style => "padding-left: #{25}px"} + = financial_transaction_type.name + %td + = link_to t('ui.edit'), edit_admin_financial_transaction_type_path(financial_transaction_type), remote: true, class: 'btn btn-mini' + = link_to t('ui.delete'), [:admin, financial_transaction_type], :data => {:confirm => t('ui.confirm_delete', name: financial_transaction_type.name)}, + :method => :delete, remote: true, class: 'btn btn-mini btn-danger' diff --git a/app/views/admin/finances/index.html.haml b/app/views/admin/finances/index.html.haml new file mode 100644 index 00000000..433c0351 --- /dev/null +++ b/app/views/admin/finances/index.html.haml @@ -0,0 +1,9 @@ +- title t '.title' + +- content_for :actionbar do + = link_to t('.new_financial_transaction_class'), new_admin_financial_transaction_class_path, remote: true, class: 'btn btn-primary' + +- content_for :sidebar do + %p= t('.first_paragraph').html_safe + +#transaction_types_table= render 'transaction_types' diff --git a/app/views/admin/finances/update_transaction_types.js.haml b/app/views/admin/finances/update_transaction_types.js.haml new file mode 100644 index 00000000..880395ab --- /dev/null +++ b/app/views/admin/finances/update_transaction_types.js.haml @@ -0,0 +1,2 @@ +$('#transaction_types_table').html('#{escape_javascript(render("admin/finances/transaction_types"))}'); +$('#modalContainer').modal('hide'); diff --git a/app/views/admin/financial_transaction_classes/_form.html.haml b/app/views/admin/financial_transaction_classes/_form.html.haml new file mode 100644 index 00000000..d99e34d3 --- /dev/null +++ b/app/views/admin/financial_transaction_classes/_form.html.haml @@ -0,0 +1,9 @@ += simple_form_for [:admin, @financial_transaction_class], :validate => true, :remote => true do |f| + .modal-header + = close_button :modal + %h3= @financial_transaction_class.new_record? ? t('.title_new') : t('.title_edit') + .modal-body + = f.input :name + .modal-footer + = link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'} + = f.submit class: 'btn btn-primary' diff --git a/app/views/admin/financial_transaction_classes/new.js.haml b/app/views/admin/financial_transaction_classes/new.js.haml new file mode 100644 index 00000000..504f5527 --- /dev/null +++ b/app/views/admin/financial_transaction_classes/new.js.haml @@ -0,0 +1,2 @@ +$('#modalContainer').html('#{j(render("form"))}'); +$('#modalContainer').modal(); diff --git a/app/views/admin/financial_transaction_types/_form.html.haml b/app/views/admin/financial_transaction_types/_form.html.haml new file mode 100644 index 00000000..5abd368b --- /dev/null +++ b/app/views/admin/financial_transaction_types/_form.html.haml @@ -0,0 +1,10 @@ += simple_form_for [:admin, @financial_transaction_type], :validate => true, :remote => true do |f| + .modal-header + = close_button :modal + %h3= @financial_transaction_type.new_record? ? t('.title_new') : t('.title_edit') + .modal-body + = f.input :name + = f.association :financial_transaction_class, :include_blank => false + .modal-footer + = link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'} + = f.submit class: 'btn btn-primary' diff --git a/app/views/admin/financial_transaction_types/new.js.haml b/app/views/admin/financial_transaction_types/new.js.haml new file mode 100644 index 00000000..504f5527 --- /dev/null +++ b/app/views/admin/financial_transaction_types/new.js.haml @@ -0,0 +1,2 @@ +$('#modalContainer').html('#{j(render("form"))}'); +$('#modalContainer').modal(); diff --git a/app/views/shared/alert.js.erb b/app/views/shared/alert.js.erb new file mode 100644 index 00000000..5239436b --- /dev/null +++ b/app/views/shared/alert.js.erb @@ -0,0 +1 @@ +$('div.container-fluid').prepend('<%= bootstrap_flash_patched %>'); diff --git a/config/locales/de.yml b/config/locales/de.yml index d92e67bf..4c5d6d64 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1418,6 +1418,7 @@ de: navigation: admin: config: Einstellungen + finance: Finanzen home: Übersicht mail_delivery_status: E-Mail Probleme messagegroups: Nachrichtengruppen diff --git a/config/locales/en.yml b/config/locales/en.yml index e8f6f796..70f7a6f3 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1428,6 +1428,7 @@ en: navigation: admin: config: Configuration + finance: Finances home: Overview mail_delivery_status: Email problems messagegroups: Message groups diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 98e67d3f..28c9abbe 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1416,6 +1416,7 @@ fr: navigation: admin: config: Configuration + finance: Trésorerie home: Aperçu mail_delivery_status: messagegroups: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 10228888..4d6d0274 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1418,6 +1418,7 @@ nl: navigation: admin: config: Instellingen + finance: Financiën home: Overzicht mail_delivery_status: Emailproblemen messagegroups: Berichtengroepen diff --git a/config/navigation.rb b/config/navigation.rb index 1447788b..17ae3d40 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -46,6 +46,7 @@ SimpleNavigation::Configuration.run do |navigation| subnav.item :ordergroups, I18n.t('navigation.admin.ordergroups'), admin_ordergroups_path subnav.item :workgroups, I18n.t('navigation.admin.workgroups'), admin_workgroups_path subnav.item :mail_delivery_status, I18n.t('navigation.admin.mail_delivery_status'), admin_mail_delivery_status_index_path + subnav.item :finances, I18n.t('navigation.admin.finance'), admin_finances_path subnav.item :config, I18n.t('navigation.admin.config'), admin_config_path end diff --git a/config/routes.rb b/config/routes.rb index 96d248b2..c982ad4c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -179,6 +179,13 @@ Foodsoft::Application.routes.draw do namespace :admin do root to: 'base#index' + resources :finances, only: [:index] do + get :update_transaction_types, on: :collection + end + + resources :financial_transaction_classes + resources :financial_transaction_types + resources :users do post :restore, on: :member post :sudo, on: :member