| 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