Module | DocumentHelper |
In: |
app/helpers/document_helper.rb
|
-*- coding: utf-8 -*- 関連文書機能のヘルパーを与える。
削除するための check box を返す。
# File app/helpers/document_helper.rb, line 109 109: def check_box_to_delete(document) 110: name = document.new_record? ? "deleted[#{document.target_type}_#{document.target_id}]" : "deleted[#{document.id}]" 111: check_box_tag(name, 1, false) 112: end
関連文書のリンクのための URL を返す。
# File app/helpers/document_helper.rb, line 99 99: def document_inner_url(x) 100: if x.is_a?(Document) 101: options = x.url_options_for(@relatable) 102: else 103: options = x.url_options_as_document_node 104: end 105: url_for(options.merge(:controller => "product", :action => "show_only")) 106: end
関連付ける機能を選択するための一覧を返す。
# File app/helpers/document_helper.rb, line 20 20: def document_product_form_content 21: content = [] 22: content << hidden_relatable(:type, :top) 23: content << hidden_relatable(:id, :top) 24: content << hidden_relatable(:product_id, :top) 25: content << product_selector 26: unless params[:target_product_id].blank? 27: if product = Product.find_by_id(params[:target_product_id].to_i) 28: if product.visible? && product.document? 29: content << submit_to_select 30: content << submit_to_create if product.modifiable? 31: end 32: end 33: end 34: return content.join("") 35: end
関連文書のリンクのための URL を返す。
# File app/helpers/document_helper.rb, line 89 89: def document_url(x) 90: if x.is_a?(Document) 91: options = x.fragment_options_for(@relatable) 92: else 93: options = x.fragment_options_as_document_node 94: end 95: url_for(:action => "view", :fragment => URI.encode(fragment_for(options))) 96: end
関連付け対象を埋め込むタグを返す。
# File app/helpers/document_helper.rb, line 5 5: def hidden_relatable(name, x) 6: hidden_field_tag name, params[name], {:id => "relatable_#{name}_#{x}"} 7: end
取り消しのリンクを返す。
# File app/helpers/document_helper.rb, line 15 15: def link_to_cancel 16: link_with_effect s_("button|Cancel"), "cancel" 17: end
ポップアップを閉じるリンクを返す。
# File app/helpers/document_helper.rb, line 10 10: def link_to_close_popup 11: link_with_effect s_("button|Close"), "summary" 12: end
関連付ける機能を選択するための select box を返す。
# File app/helpers/document_helper.rb, line 38 38: def product_selector 39: id = "document_product_id" 40: options = Product.find(:all).select {|p| p.visible? && p.document?}.map {|p| [p.name, p.id]} 41: options.unshift([h(s_("Document|select product for new document")), nil]) 42: result = select_tag(:target_product_id, 43: options_for_select(options, params[:target_product_id].to_i), 44: :id => id, 45: :onchange => "['document_product_select', 'document_product_create'].each(function(x) {(e=$(x))&&e.disable();});$('view_dp').hide();") 46: result += observe_field(id, 47: :with => "Form.serialize('document_product')", 48: :update => "document_product", 49: :complete => visual_effect(:highlight, id, :queue => { 50: :scope => "document", 51: :limit => 2, 52: :position => "end" 53: }), 54: :url => {:action => "product"}) 55: return result 56: end
新規文書作成画面を表示するための submit ボタンを返す。
# File app/helpers/document_helper.rb, line 69 69: def submit_to_create 70: submit_to_remote("create", 71: h(s_("button|New")), 72: :update => "view_dp", 73: :complete => "$('view_dp').show();", 74: :url => {:controller => "product", :action => "create_document", :product_id => params[:target_product_id], :relatable_product_id => params[:product_id]}, 75: :html => {:class => "button", :id => "document_product_create"}) 76: end
削除を実行するための submit ボタンを返す。
# File app/helpers/document_helper.rb, line 79 79: def submit_to_delete 80: submit_to_remote("delete", 81: h(s_("Document|delete")), 82: :update => "document_table_base", 83: :complete => visual_effect(:highlight, "document_table", :queue => {:scope => "document", :limit => 2, :position => "end"}), 84: :url => {:action => "delete", :product_id => @relatable_product.id}, 85: :html => {:class => "button"}) 86: end
関連文書選択画面を表示するための submit ボタンを返す。
# File app/helpers/document_helper.rb, line 59 59: def submit_to_select 60: submit_to_remote("select", 61: h(s_("button|Select")), 62: :update => "view_dp", 63: :complete => "$('view_dp').show();", 64: :url => {:controller => "product", :action => "select_document", :product_id => params[:target_product_id], :relatable_product_id => params[:product_id]}, 65: :html => {:class => "button", :id => "document_product_select"}) 66: end
関連文書のサマリを返す。
# File app/helpers/document_helper.rb, line 128 128: def summary 129: result = [] 130: if (count = @documents.size) > 0 131: result << ns_("Document|%{count} document related", "%{count} documents related", count) % {:count => count} 132: else 133: result << s_("Document|no document related") 134: end 135: if session[:added_documents] 136: if @relatable 137: documents = session[:added_documents].select {|a| a.relatable == @relatable} 138: else 139: documents = session[:added_documents].select {|a| a.relatable_type == params[:type] && !a.relatable_id} 140: end 141: if (count = documents.size) > 0 142: result << ns_("Document|%{count} document will be added", "%{count} documents will be added", count) % {:count => count} 143: end 144: end 145: if @relatable 146: if session[:deleted_documents] && (count = session[:deleted_documents].select {|a| a.relatable == @relatable || a.target == @relatable}.size) > 0 147: result << ns_("Document|%{count} document will be deleted", "%{count} documents will be deleted", count) % {:count => count} 148: end 149: end 150: s_("Document|Documents: ") + result.join(" / ") 151: end
相互参照のための check box を返す。
# File app/helpers/document_helper.rb, line 115 115: def td_check_box_for_mutual(document) 116: id = document.new_record? ? "document_mutual_#{document.target_type}_#{document.target_id}" : "document_mutual_#{document.id}" 117: name = document.new_record? ? "mutual[#{document.target_type}_#{document.target_id}]" : "mutual[#{document.id}]" 118: result = check_box_tag(name, 1, document.mutual?, :id => id) 119: result += observe_field(id, 120: :with => "Form.serialize('document_table_form')", 121: :update => "document_table", 122: :complete => visual_effect(:highlight, "td_#{id}", :queue => {:scope => "document", :limit => 2, :position => "end"}), 123: :url => {:action => "toggle_mutual", :product_id => @relatable_product.id}) 124: return content_tag(:td, result, :id => "td_#{id}") 125: end