SysMO-DB/seek

View on GitHub
app/helpers/favourites_helper.rb

Summary

Maintainability
A
25 mins
Test Coverage
module FavouritesHelper

  def model_to_drag_id object
    version = nil
    model_name=object.class.to_s
    if object.class.name.include?("::Version")
      version = object.version
      model_name = model_name.gsub('::', '')
    end

    uuid=UUIDTools::UUID.random_create.to_s.split("-")[0..2].join
    return "drag_#{model_name}_#{object.id.to_s}_#{version}_#{uuid}".html_safe
  end

  def fav_line_tag favourite
    fav_image_tag(favourite) + "<span class='fav_title'>#{h(favourite.resource.title)}</span>".html_safe
  end
  
  def fav_image_tag favourite
    item = favourite.resource
    title = get_object_title(item)
    tiny_image = ""

    if item.avatar_key
      tiny_image = image item.avatar_key, :class=>"fav_icon"
    elsif item.defines_own_avatar?
      if (item.avatar_selected?)
        tiny_image = image_tag avatar_url(item, item.avatar_id, 32), :alt=> h(title), :class => 'fav_icon'
      else
        tiny_image = default_avatar(item.class.name, 32, h(title))
      end
    elsif item.use_mime_type_for_avatar?
      tiny_image = image_tag(file_type_icon_url(item), :class=>"fav_icon")
    end

    link_to_draggable(tiny_image, show_resource_path(item), :title=>tooltip_title_attrib(title),:class=>"favourite", :id=>"fav_#{favourite.id}")

  end
  
  def favourite_drag_element drag_id
    return draggable_element(drag_id, :revert=>true, :ghosting=>false)
  end
  
  #an avatar with an image_tag_for_key in the corner to show it can be favourited
  def favouritable_icon(item, size=100)
    #the image_tag_for_key:
    html = avatar(item, size, true)

    html = link_to_draggable(html, show_resource_path(item), :id=>model_to_drag_id(item), :class=> "asset", :title=>tooltip_title_attrib(get_object_title(item)))
    html = "<div class='favouritable_icon'>#{html}</div>"
    html.html_safe
  end 
  
  private
end