Module: WatchersHelper

Included in:
IssuesController
Defined in:
app/helpers/watchers_helper.rb

Overview

Redmine - project management software Copyright (C) 2006-2014 Jean-Philippe Lang

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Instance Method Summary collapse

Instance Method Details

#watcher_css(objects) ⇒ Object

Returns the css class used to identify watch links for a given object


40
41
42
43
44
# File 'app/helpers/watchers_helper.rb', line 40

def watcher_css(objects)
  objects = Array.wrap(objects)
  id = (objects.size == 1 ? objects.first.id : 'bulk')
  "#{objects.first.class.to_s.underscore}-#{id}-watcher"
end

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'app/helpers/watchers_helper.rb', line 22

def watcher_link(objects, user)
  return '' unless user && user.logged?
  objects = Array.wrap(objects)
  return '' unless objects.any?

  watched = Watcher.any_watched?(objects, user)
  css = [watcher_css(objects), watched ? 'icon icon-fav' : 'icon icon-fav-off'].join(' ')
  text = watched ? l(:button_unwatch) : l(:button_watch)
  url = watch_path(
    :object_type => objects.first.class.to_s.underscore,
    :object_id => (objects.size == 1 ? objects.first.id : objects.map(&:id).sort)
  )
  method = watched ? 'delete' : 'post'

  link_to text, url, :remote => true, :method => method, :class => css
end

#watchers_checkboxes(object, users, checked = nil) ⇒ Object


69
70
71
72
73
74
75
76
77
# File 'app/helpers/watchers_helper.rb', line 69

def watchers_checkboxes(object, users, checked=nil)
  users.map do |user|
    c = checked.nil? ? object.watched_by?(user) : checked
    tag = check_box_tag 'issue[watcher_user_ids][]', user.id, c, :id => nil
     'label', "#{tag} #{h(user)}".html_safe,
                :id => "issue_watcher_user_ids_#{user.id}",
                :class => "floating"
  end.join.html_safe
end

#watchers_list(object) ⇒ Object

Returns a comma separated list of users watching the given object


47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'app/helpers/watchers_helper.rb', line 47

def watchers_list(object)
  remove_allowed = User.current.allowed_to?("delete_#{object.class.name.underscore}_watchers".to_sym, object.project)
  content = ''.html_safe
  lis = object.watcher_users.collect do |user|
    s = ''.html_safe
    s << avatar(user, :size => "16").to_s
    s << link_to_user(user, :class => 'user')
    if remove_allowed
      url = {:controller => 'watchers',
             :action => 'destroy',
             :object_type => object.class.to_s.underscore,
             :object_id => object.id,
             :user_id => user}
      s << ' '
      s << link_to(image_tag('delete.png'), url,
                   :remote => true, :method => 'delete', :class => "delete")
    end
    content << ('li', s, :class => "user-#{user.id}")
  end
  content.present? ? ('ul', content, :class => 'watchers') : content
end