Chris@245: # Redmine - project management software
Chris@245: # Copyright (C) 2006-2011 Jean-Philippe Lang
Chris@0: #
Chris@0: # This program is free software; you can redistribute it and/or
Chris@0: # modify it under the terms of the GNU General Public License
Chris@0: # as published by the Free Software Foundation; either version 2
Chris@0: # of the License, or (at your option) any later version.
Chris@441: #
Chris@0: # This program is distributed in the hope that it will be useful,
Chris@0: # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0: # GNU General Public License for more details.
Chris@441: #
Chris@0: # You should have received a copy of the GNU General Public License
Chris@0: # along with this program; if not, write to the Free Software
Chris@0: # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@0:
Chris@0: module IssuesHelper
Chris@0: include ApplicationHelper
Chris@0:
Chris@0: def issue_list(issues, &block)
Chris@0: ancestors = []
Chris@0: issues.each do |issue|
Chris@0: while (ancestors.any? && !issue.is_descendant_of?(ancestors.last))
Chris@0: ancestors.pop
Chris@0: end
Chris@0: yield issue, ancestors.size
Chris@0: ancestors << issue unless issue.leaf?
Chris@0: end
Chris@0: end
chris@22:
chris@22: # Renders a HTML/CSS tooltip
chris@22: #
chris@22: # To use, a trigger div is needed. This is a div with the class of "tooltip"
chris@22: # that contains this method wrapped in a span with the class of "tip"
chris@22: #
chris@22: #
<%= link_to_issue(issue) %>
chris@22: # <%= render_issue_tooltip(issue) %>
chris@22: #
chris@22: #
Chris@0: def render_issue_tooltip(issue)
Chris@14: @cached_label_status ||= l(:field_status)
Chris@0: @cached_label_start_date ||= l(:field_start_date)
Chris@0: @cached_label_due_date ||= l(:field_due_date)
Chris@0: @cached_label_assigned_to ||= l(:field_assigned_to)
Chris@0: @cached_label_priority ||= l(:field_priority)
chris@22: @cached_label_project ||= l(:field_project)
chris@22:
Chris@0: link_to_issue(issue) + "
" +
chris@22: "#{@cached_label_project}: #{link_to_project(issue.project)}
" +
Chris@14: "#{@cached_label_status}: #{issue.status.name}
" +
Chris@0: "#{@cached_label_start_date}: #{format_date(issue.start_date)}
" +
Chris@0: "#{@cached_label_due_date}: #{format_date(issue.due_date)}
" +
Chris@0: "#{@cached_label_assigned_to}: #{issue.assigned_to}
" +
Chris@0: "#{@cached_label_priority}: #{issue.priority.name}"
Chris@0: end
Chris@441:
Chris@441: def issue_heading(issue)
Chris@441: h("#{issue.tracker} ##{issue.id}")
Chris@441: end
Chris@441:
Chris@0: def render_issue_subject_with_tree(issue)
Chris@0: s = ''
Chris@441: ancestors = issue.root? ? [] : issue.ancestors.visible.all
Chris@441: ancestors.each do |ancestor|
Chris@0: s << '' + content_tag('p', link_to_issue(ancestor))
Chris@0: end
Chris@441: s << '
'
Chris@441: subject = h(issue.subject)
Chris@441: if issue.is_private?
Chris@441: subject = content_tag('span', l(:field_is_private), :class => 'private') + ' ' + subject
Chris@441: end
Chris@441: s << content_tag('h3', subject)
Chris@441: s << '
' * (ancestors.size + 1)
Chris@0: s
Chris@0: end
Chris@441:
Chris@0: def render_descendants_tree(issue)
Chris@0: s = '