From 4a208c83c09110cab7999d5fc93d07f0753a764b Mon Sep 17 00:00:00 2001 From: Julius Rapp Date: Sun, 7 Jul 2013 14:14:32 +0200 Subject: [PATCH] Separate actions for new StockArticle --- app/controllers/deliveries_controller.rb | 30 +++++++++++-------- app/views/deliveries/_form.html.haml | 2 +- .../_stock_article_for_adding.html.haml | 2 +- .../deliveries/copy_stock_article.js.erb | 5 ++++ .../deliveries/derive_stock_article.js.erb | 5 ++++ config/routes.rb | 2 ++ 6 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 app/views/deliveries/copy_stock_article.js.erb create mode 100644 app/views/deliveries/derive_stock_article.js.erb diff --git a/app/controllers/deliveries_controller.rb b/app/controllers/deliveries_controller.rb index cc535b07..86eedc14 100644 --- a/app/controllers/deliveries_controller.rb +++ b/app/controllers/deliveries_controller.rb @@ -49,20 +49,26 @@ class DeliveriesController < ApplicationController flash[:notice] = I18n.t('deliveries.destroy.notice') redirect_to supplier_deliveries_url(@supplier) end - + + # three possibilites to fill a new_stock_article form + # (1) start from blank or use params def new_stock_article - if params[:old_stock_article_id] - old_article = StockArticle.find_by_id(params[:old_stock_article_id]) - elsif params[:old_article_id] - old_article = Article.find_by_id(params[:old_article_id]) - old_article = old_article.becomes(StockArticle) unless old_article.nil? - end + @stock_article = @supplier.stock_articles.build(params[:stock_article]) + + render :layout => false + end + + # (2) StockArticle as template + def copy_stock_article + @stock_article = StockArticle.find(params[:old_stock_article_id]).dup + + render :layout => false + end + + # (3) non-stock Article as template + def derive_stock_article + @stock_article = Article.find(params[:old_article_id]).becomes(StockArticle).dup - unless old_article.nil? - @stock_article = old_article.dup - else - @stock_article = @supplier.stock_articles.build(params[:stock_article]) - end render :layout => false end diff --git a/app/views/deliveries/_form.html.haml b/app/views/deliveries/_form.html.haml index 4bb1974b..fd61577b 100644 --- a/app/views/deliveries/_form.html.haml +++ b/app/views/deliveries/_form.html.haml @@ -52,7 +52,7 @@ } if('' != selectedArticle.id) { $.ajax({ - url: '#{new_stock_article_supplier_deliveries_path(@supplier)}', + url: '#{derive_stock_article_supplier_deliveries_path(@supplier)}', type: 'get', data: {old_article_id: selectedArticle.id}, contentType: 'application/json; charset=UTF-8' diff --git a/app/views/deliveries/_stock_article_for_adding.html.haml b/app/views/deliveries/_stock_article_for_adding.html.haml index 5452d6c6..813a0fd3 100644 --- a/app/views/deliveries/_stock_article_for_adding.html.haml +++ b/app/views/deliveries/_stock_article_for_adding.html.haml @@ -6,6 +6,6 @@ %td .btn-group = link_to t('.action_edit'), edit_stock_article_supplier_deliveries_path(@supplier, :stock_article_id => article.id), remote: true, class: 'btn btn-mini' - = link_to t('.action_other_price'), new_stock_article_supplier_deliveries_path(@supplier, :old_stock_article_id => article.id), remote: true, class: 'btn btn-mini' + = link_to t('.action_other_price'), copy_stock_article_supplier_deliveries_path(@supplier, :old_stock_article_id => article.id), remote: true, class: 'btn btn-mini' - deliver_button_disabled = ( @delivery and @delivery.includes_article? article ) ? ( 'disabled' ) : ( false ) = link_to t('.action_add_to_delivery'), add_stock_change_supplier_deliveries_path(@supplier, :stock_article_id => article.id), :method => :post, remote: true, class: 'button-add-stock-change btn btn-mini btn-primary', disabled: deliver_button_disabled diff --git a/app/views/deliveries/copy_stock_article.js.erb b/app/views/deliveries/copy_stock_article.js.erb new file mode 100644 index 00000000..de5d260e --- /dev/null +++ b/app/views/deliveries/copy_stock_article.js.erb @@ -0,0 +1,5 @@ +$('#modalContainer').html( + '<%= j(render(:partial => "stock_article_form", :locals => {:stock_article => @stock_article})) %>' +); + +$('#modalContainer').modal(); diff --git a/app/views/deliveries/derive_stock_article.js.erb b/app/views/deliveries/derive_stock_article.js.erb new file mode 100644 index 00000000..de5d260e --- /dev/null +++ b/app/views/deliveries/derive_stock_article.js.erb @@ -0,0 +1,5 @@ +$('#modalContainer').html( + '<%= j(render(:partial => "stock_article_form", :locals => {:stock_article => @stock_article})) %>' +); + +$('#modalContainer').modal(); diff --git a/config/routes.rb b/config/routes.rb index 180968eb..0cd59fde 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -105,6 +105,8 @@ Foodsoft::Application.routes.draw do post :add_stock_change, :on => :collection get :new_stock_article, :on => :collection + get :copy_stock_article, :on => :collection + get :derive_stock_article, :on => :collection post :create_stock_article, :on => :collection get :edit_stock_article, :on => :collection