Project

General

Profile

Download (6.52 KB) Statistics
| Branch: | Tag: | Revision:
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