Project

General

Profile

RE: Show/Hide history of issues ยป redmine-history-collapse.patch

Filip Krikava, 2010-02-24 13:51

View differences:

app/controllers/issues_controller.rb (working copy)
43 43
  helper :timelog
44 44
  include Redmine::Export::PDF
45 45

  
46
  verify :method => :post,
47
         :only => :destroy,
48
         :render => { :nothing => true, :status => :method_not_allowed }
49
           
46 50
  def index
47 51
    retrieve_query
48 52
    sort_init 'id', 'desc'
......
102 106
    @edit_allowed = User.current.allowed_to?(:edit_issues, @project)
103 107
    @priorities = Enumeration::get_values('IPRI')
104 108
    @time_entry = TimeEntry.new
109
    @show_history = params[:show_history] == 'true'
105 110
    respond_to do |format|
106 111
      format.html { render :template => 'issues/show.rhtml' }
107 112
      format.atom { render :action => 'changes', :layout => false, :content_type => 'application/atom+xml' }
108
      format.pdf  { send_data(issue_to_pdf(@issue), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") }
113
      format.pdf  { send_data(issue_to_pdf(@issue, @show_history), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") }
109 114
    end
110 115
  end
111 116

  
......
147 152
        attach_files(@issue, params[:attachments])
148 153
        flash[:notice] = l(:notice_successful_create)
149 154
        Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added')
155
        call_hook(:controller_issues_new_after_save, { :params => params, :issue => @issue})
150 156
        redirect_to(params[:continue] ? { :action => 'new', :tracker_id => @issue.tracker } :
151 157
                                        { :action => 'show', :id => @issue })
152 158
        return
......
194 200
          flash[:notice] = l(:notice_successful_update)
195 201
          Mailer.deliver_issue_edit(journal) if Setting.notified_events.include?('issue_updated')
196 202
        end
203
        call_hook(:controller_issues_edit_after_save, { :params => params, :issue => @issue, :time_entry => @time_entry, :journal => journal})
197 204
        redirect_to(params[:back_to] || {:action => 'show', :id => @issue})
198 205
      end
199 206
    end
app/views/issues/show.rhtml (working copy)
5 5
<%= link_to_if_authorized l(:button_copy), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-copy' %>
6 6
<%= link_to_if_authorized l(:button_move), {:controller => 'issues', :action => 'move', :id => @issue }, :class => 'icon icon-move' %>
7 7
<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
8
<% if @show_history %>
9
<%= link_to l(:button_hide_history), {:show_history => 'false'}, :class => 'icon icon-hide_history' %>
10
<% else %>
11
<%= link_to l(:button_show_history), {:show_history => 'true'}, :class => 'icon icon-show_history' %>
12
<% end %>
8 13
</div>
9 14

  
10 15
<h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
......
95 100
</div>
96 101
<% end %>
97 102

  
103
<% if @show_history %>
98 104
<% if @journals.any? %>
99 105
<div id="history">
100 106
<h3><%=l(:label_history)%></h3>
101 107
<%= render :partial => 'history', :locals => { :journals => @journals } %>
102 108
</div>
103 109
<% end %>
110
<% end %>
111

  
104 112
<div style="clear: both;"></div>
105 113

  
106 114
<% if authorize_for('issues', 'edit') %>
......
113 121
<p class="other-formats">
114 122
<%= l(:label_export_to) %>
115 123
<span><%= link_to 'Atom', {:format => 'atom', :key => User.current.rss_key}, :class => 'feed' %></span>
116
<span><%= link_to 'PDF', {:format => 'pdf'}, :class => 'pdf' %></span>
124
<span><%= link_to 'PDF', {:format => 'pdf',:show_history => @show_history == true ? 'true' : 'false'}, :class => 'pdf' %></span>
117 125
</p>
118 126

  
119 127
<% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %>
lib/redmine/export/pdf.rb (working copy)
153 153
      end
154 154
      
155 155
      # Returns a PDF string of a single issue
156
      def issue_to_pdf(issue)
156
      def issue_to_pdf(issue, show_history)
157 157
        pdf = IFPDF.new(current_language)
158 158
        pdf.SetTitle("#{issue.project} - ##{issue.tracker} #{issue.id}")
159 159
        pdf.AliasNbPages
......
244 244
          end
245 245
        end
246 246
        
247
        pdf.SetFontStyle('B',9)
248
        pdf.Cell(190,5, l(:label_history), "B")
249
        pdf.Ln  
250
        for journal in issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC")
251
          pdf.SetFontStyle('B',8)
252
          pdf.Cell(190,5, format_time(journal.created_on) + " - " + journal.user.name)
253
          pdf.Ln
254
          pdf.SetFontStyle('I',8)
255
          for detail in journal.details
256
            pdf.Cell(190,5, "- " + show_detail(detail, true))
247
	if show_history
248
          pdf.SetFontStyle('B',9)
249
          pdf.Cell(190,5, l(:label_history), "B")
250
          pdf.Ln  
251
          for journal in issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC")
252
            pdf.SetFontStyle('B',8)
253
            pdf.Cell(190,5, format_time(journal.created_on) + " - " + journal.user.name)
257 254
            pdf.Ln
255
            pdf.SetFontStyle('I',8)
256
            for detail in journal.details
257
              pdf.Cell(190,5, "- " + show_detail(detail, true))
258
              pdf.Ln
259
            end
260
            if journal.notes?
261
              pdf.SetFontStyle('',8)
262
              pdf.MultiCell(190,5, journal.notes)
263
            end   
264
            pdf.Ln
258 265
          end
259
          if journal.notes?
260
            pdf.SetFontStyle('',8)
261
            pdf.MultiCell(190,5, journal.notes)
262
          end   
263
          pdf.Ln
264 266
        end
265 267
        
266 268
        if issue.attachments.any?
public/stylesheets/application.css (working copy)
76 76
a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
77 77
a img{ border: 0; }
78 78

  
79
a.issue.closed, a.issue.closed:link, a.issue.closed:visited { text-decoration: line-through; }
79
a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
80 80

  
81 81
/***** Tables *****/
82 82
table.list { border: 1px solid #e4e4e4;  border-collapse: collapse; width: 100%; margin-bottom: 4px; }
......
619 619
.icon-details  { background-image: url(../images/zoom_in.png); }
620 620
.icon-report  { background-image: url(../images/report.png); }
621 621
.icon-comment  { background-image: url(../images/comment.png); }
622
.icon-show_history { background-image: url(../images/show_history.png); }
623
.icon-hide_history { background-image: url(../images/hide_history.png); }
622 624

  
623 625
.icon22-projects { background-image: url(../images/22x22/projects.png); }
624 626
.icon22-users { background-image: url(../images/22x22/users.png); }
    (1-1/1)