foreman/app/helpers/application_helper.rb @ c45a0014
9fd7478e | Paul Kelly | # Methods added to this helper will be available to all templates in the application
|
|
5563217a | Ohad Levy | module ApplicationHelper
|
|
9161008b | Amos Benari | include HomeHelper
|
|
d7bb0ba7 | Ohad Levy | ||
9fd7478e | Paul Kelly | def contract model
|
|
model.to_s
|
|||
end
|
|||
d7bb0ba7 | Ohad Levy | ||
55ed30c7 | Ohad Levy | def show_habtm associations
|
|
render :partial => 'common/show_habtm', :collection => associations, :as => :association
|
|||
end
|
|||
def edit_habtm klass, association
|
|||
9fd7478e | Paul Kelly | render :partial => 'common/edit_habtm', :locals =>{ :klass => klass, :associations => association.all.sort.delete_if{|e| e == klass}}
|
|
55ed30c7 | Ohad Levy | end
|
|
fa7070ca | Ohad Levy | def link_to_remove_fields(name, f)
|
|
b0e2071a | Ohad Levy | f.hidden_field(:_destroy) + link_to_function(image_tag("false.png", :title => "remove"), "remove_fields(this)")
|
|
fa7070ca | Ohad Levy | end
|
|
9fd7478e | Paul Kelly | # Creates a link to a javascript function that creates field entries for the association on the web page
|
|
# +name+ : String containing links's text
|
|||
# +f+ : FormBuiler object
|
|||
# +association : The field are created to allow entry into this association
|
|||
# +partial+ : String containing an optional partial into which we render
|
|||
fa7070ca | Ohad Levy | def link_to_add_fields(name, f, association, partial = nil)
|
|
new_object = f.object.class.reflect_on_association(association).klass.new
|
|||
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
|
|||
render((partial.nil? ? association.to_s.singularize + "_fields" : partial), :f => builder)
|
|||
end
|
|||
link_to_function(name, h("add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")"))
|
|||
end
|
|||
8ba2e00a | Ohad Levy | def toggle_div divs
|
|
9a9b3e75 | Paul Kelly | update_page do |page|
|
|
8ba2e00a | Ohad Levy | (divs.is_a?(Array) ? divs : divs.to_s).each do |div|
|
|
# add jquery '#div' to the div if its missing
|
|||
div = div.to_s
|
|||
div = "##{div}" if div[0] != "#"
|
|||
page << "if ($('#{div}').is(':visible')) {"
|
|||
page[div].hide()
|
|||
page << "} else {"
|
|||
page[div].BlindDown :duration => 0.1
|
|||
page << "}"
|
|||
end
|
|||
9a9b3e75 | Paul Kelly | end
|
|
end
|
|||
bd46fa41 | Ohad Levy | def link_to_remove_puppetclass klass
|
|
fd704256 | Amos Benari | link_to_function "",:class=>"ui-icon ui-icon-minus" do |page|
|
|
bd46fa41 | Ohad Levy | page["selected_puppetclass_#{klass.id}"].remove
|
|
85d3461d | Ohad Levy | #TODO if the class is already selected, removing it will not add it to the avail class list
|
|
page << "if ($('puppetclass_#{klass.id}')) {"
|
|||
page["puppetclass_#{klass.id}"].show
|
|||
page << "}"
|
|||
bd46fa41 | Ohad Levy | end
|
|
end
|
|||
9a9b3e75 | Paul Kelly | ||
bd46fa41 | Ohad Levy | def link_to_add_puppetclass klass, type
|
|
# link to remote is faster than inline js when having many classes
|
|||
fd704256 | Amos Benari | link_to_remote "",
|
|
76702262 | Amos Benari | {:url => assign_puppetclass_path(klass, :type => type),
|
|
:position => {:after => {:success => "selected_classes" }}},{:class=>"ui-icon ui-icon-plus"}
|
|||
bd46fa41 | Ohad Levy | end
|
|
9a9b3e75 | Paul Kelly | ||
9fd7478e | Paul Kelly | def check_all_links(form_name)
|
|
8ba2e00a | Ohad Levy | link_to_function("Check all", "checkAll('##{form_name}', true)") +
|
|
link_to_function("Uncheck all", "checkAll('##{form_name}', false)")
|
|||
9fd7478e | Paul Kelly | end
|
|
cdd8bb6f | Paul Kelly | def searchtab title, search, options
|
|
opts = {:action => params[:action], :tab_name => title, :search => search}
|
|||
selected_class = options[:selected] ? "selectedtab" : ""
|
|||
content_tag(:li) do
|
|||
link_to opts, :class => selected_class do
|
|||
faf1e8d0 | Ohad Levy | h(title) + (options[:no_close_button] ? "": (link_to "x", opts.merge(:remove_me => true), :class => "#{selected_class} close"))
|
|
cdd8bb6f | Paul Kelly | end
|
|
end
|
|||
end
|
|||
def toggle_searchbar
|
|||
update_page do |page|
|
|||
page['search'].toggle
|
|||
page['tabs'].toggle
|
|||
end
|
|||
end
|
|||
2e04e41b | Ohad Levy | ||
ac0f2ae6 | Ohad Levy | def fact_name_select
|
|
param = params[:search]["#{@via}fact_name_id_eq"] if params[:search]
|
|||
return param.to_i unless param.empty?
|
|||
return @fact_name_id if @fact_name_id
|
|||
end
|
|||
9fd7478e | Paul Kelly | ||
# Return true if user is authorized for controller/action, otherwise false
|
|||
# +controller+ : String or symbol for the controller
|
|||
# +action+ : String or symbol for the action
|
|||
def authorized_for(controller, action)
|
|||
ad3d61b7 | Paul Kelly | User.current.allowed_to?({:controller => controller.to_s.gsub(/::/, "_").underscore, :action => action}) rescue false
|
|
9fd7478e | Paul Kelly | end
|
|
# Display a link if user is authorized, otherwise a string
|
|||
# +name+ : String to be displayed
|
|||
# +options+ : Hash containing
|
|||
572a19c3 | Paul Kelly | # :controller : String or Symbol representing the controller
|
|
# :auth_action : String or Symbol representing the action to be used for authorization checks
|
|||
9fd7478e | Paul Kelly | # +html_options+ : Hash containing html options for the link or span
|
|
def link_to_if_authorized(name, options = {}, html_options = {})
|
|||
c45a0014 | Ohad Levy | enable_link = html_options.has_key?(:disabled) ? !html_options[:disabled] : true
|
|
9fd7478e | Paul Kelly | auth_action = options.delete :auth_action
|
|
if enable_link
|
|||
link_to_if authorized_for(options[:controller] || params[:controller], auth_action || options[:action]), name, options, html_options
|
|||
else
|
|||
c45a0014 | Ohad Levy | link_to_function name, 'void()', html_options
|
|
9fd7478e | Paul Kelly | end
|
|
end
|
|||
# Display a link if user is authorized, otherwise nothing
|
|||
# +name+ : String to be displayed
|
|||
# +options+ : Hash containing
|
|||
572a19c3 | Paul Kelly | # :controller : String or Symbol representing the controller
|
|
# :auth_action : String or Symbol representing the action to be used for authorization checks
|
|||
9fd7478e | Paul Kelly | # +html_options+ : Hash containing html options for the link or span
|
|
c45a0014 | Ohad Levy | def display_link_if_authorized(name, options = {}, html_options = {})
|
|
9fd7478e | Paul Kelly | auth_action = options.delete :auth_action
|
|
c45a0014 | Ohad Levy | enable_link = html_options.has_key?(:disabled) ? !html_options[:disabled] : true
|
|
if enable_link and authorized_for(options[:controller] || params[:controller], auth_action || options[:action])
|
|||
01984fb7 | Amos Benari | link_to(name, options, html_options)
|
|
else
|
|||
""
|
|||
end
|
|||
9fd7478e | Paul Kelly | end
|
|
def authorized_edit_habtm klass, association
|
|||
return edit_habtm(klass, association) if authorized_for params[:controller], params[:action]
|
|||
show_habtm klass.send(association.name.pluralize.downcase)
|
|||
end
|
|||
cab0d8c6 | Ohad Levy | # renders a style=display based on an attribute properties
|
|
69f9cb82 | Ohad Levy | def display? attribute = true
|
|
36f93e4d | Ohad Levy | "style=#{display(attribute)}"
|
|
end
|
|||
def display attribute
|
|||
"display:#{attribute ? 'none' : 'inline'};"
|
|||
cab0d8c6 | Ohad Levy | end
|
|
743a5d9c | Ohad Levy | # return our current model instance type based on the current controller
|
|
# i.e. HostsController would return "host"
|
|||
def type
|
|||
controller_name.singularize
|
|||
end
|
|||
cdf02336 | Ohad Levy | def checked_icon condition
|
|
53c61d6d | Ohad Levy | return image_tag("toggle_check.png") if condition
|
|
cdf02336 | Ohad Levy | end
|
|
80516e41 | Ohad Levy | def searchable?
|
|
8003e4f9 | Amos Benari | return false if (SETTINGS[:login] and !User.current )
|
|
01984fb7 | Amos Benari | (controller.action_name == "index") && (controller.respond_to?(:auto_complete_search)) rescue false
|
|
80516e41 | Ohad Levy | end
|
|
def auto_complete_search(method, val,tag_options = {}, completion_options = {})
|
|||
path = eval("#{controller_name}_path")
|
|||
options = tag_options.merge(:class => "auto_complete_input")
|
|||
text_field_tag(method, val, options) + auto_complete_clear_value_button(method) +
|
|||
auto_complete_field_jquery(method, "#{path}/auto_complete_#{method}", completion_options)
|
|||
end
|
|||
5563217a | Ohad Levy | end
|