Version details view changes:
* display related issues on the version detail view * display total estimated and spent hours on the version detail view * fixed wiki headings size (same as r1168) git-svn-id: http://redmine.rubyforge.org/svn/trunk@1207 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
1830064918
commit
9b59ea7256
|
@ -18,12 +18,7 @@
|
||||||
module ProjectsHelper
|
module ProjectsHelper
|
||||||
def link_to_version(version, options = {})
|
def link_to_version(version, options = {})
|
||||||
return '' unless version && version.is_a?(Version)
|
return '' unless version && version.is_a?(Version)
|
||||||
link_to version.name, {:controller => 'projects',
|
link_to h(version.name), { :controller => 'versions', :action => 'show', :id => version }, options
|
||||||
:action => 'roadmap',
|
|
||||||
:id => version.project_id,
|
|
||||||
:completed => (version.completed? ? 1 : nil),
|
|
||||||
:anchor => version.name
|
|
||||||
}, options
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def format_activity_day(date)
|
def format_activity_day(date)
|
||||||
|
|
|
@ -34,6 +34,16 @@ class Version < ActiveRecord::Base
|
||||||
effective_date
|
effective_date
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns the total estimated time for this version
|
||||||
|
def estimated_hours
|
||||||
|
@estimated_hours ||= fixed_issues.sum(:estimated_hours).to_f
|
||||||
|
end
|
||||||
|
|
||||||
|
# Returns the total reported time for this version
|
||||||
|
def spent_hours
|
||||||
|
@spent_hours ||= TimeEntry.sum(:hours, :include => :issue, :conditions => ["#{Issue.table_name}.fixed_version_id = ?", id]).to_f
|
||||||
|
end
|
||||||
|
|
||||||
# Returns true if the version is completed: due date reached and no open issues
|
# Returns true if the version is completed: due date reached and no open issues
|
||||||
def completed?
|
def completed?
|
||||||
effective_date && (effective_date <= Date.today) && (open_issues_count == 0)
|
effective_date && (effective_date <= Date.today) && (open_issues_count == 0)
|
||||||
|
|
|
@ -4,11 +4,46 @@
|
||||||
|
|
||||||
<h2><%= h(@version.name) %></h2>
|
<h2><%= h(@version.name) %></h2>
|
||||||
|
|
||||||
|
<div id="version-summary">
|
||||||
|
<% if @version.estimated_hours > 0 || User.current.allowed_to?(:view_time_entries, @project) %>
|
||||||
|
<fieldset><legend><%= l(:label_time_tracking) %></legend>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td width="130px" align="right"><%= l(:field_estimated_hours) %></td>
|
||||||
|
<td width="240px" class="total-hours"width="130px" align="right"><%= html_hours(lwr(:label_f_hour, @version.estimated_hours)) %></td>
|
||||||
|
</tr>
|
||||||
|
<% if User.current.allowed_to?(:view_time_entries, @project) %>
|
||||||
|
<tr>
|
||||||
|
<td width="130px" align="right"><%= l(:label_spent_time) %></td>
|
||||||
|
<td width="240px" class="total-hours"><%= html_hours(lwr(:label_f_hour, @version.spent_hours)) %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<div id="status_by">
|
<div id="status_by">
|
||||||
<%= render_issue_status_by(@version, params[:status_by]) if @version.fixed_issues.count > 0 %>
|
<%= render_issue_status_by(@version, params[:status_by]) if @version.fixed_issues.count > 0 %>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="roadmap">
|
||||||
<%= render :partial => 'versions/overview', :locals => {:version => @version} %>
|
<%= render :partial => 'versions/overview', :locals => {:version => @version} %>
|
||||||
<%= render(:partial => "wiki/content", :locals => {:content => @version.wiki_page.content}) if @version.wiki_page %>
|
<%= render(:partial => "wiki/content", :locals => {:content => @version.wiki_page.content}) if @version.wiki_page %>
|
||||||
|
|
||||||
|
<% issues = @version.fixed_issues.find(:all,
|
||||||
|
:include => [:status, :tracker],
|
||||||
|
:order => "#{Tracker.table_name}.position, #{Issue.table_name}.id") %>
|
||||||
|
<% if issues.size > 0 %>
|
||||||
|
<fieldset class="related-issues"><legend><%= l(:label_related_issues) %></legend>
|
||||||
|
<ul>
|
||||||
|
<% issues.each do |issue| -%>
|
||||||
|
<li><%= link = link_to_issue(issue)
|
||||||
|
issue.status.is_closed? ? content_tag("del", link) : link %>: <%=h issue.subject %></li>
|
||||||
|
<% end -%>
|
||||||
|
</ul>
|
||||||
|
</fieldset>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
<% html_title @version.name %>
|
<% html_title @version.name %>
|
||||||
|
|
|
@ -174,14 +174,18 @@ div#roadmap .wiki h1:first-child { display: none; }
|
||||||
div#roadmap .wiki h1 { font-size: 120%; }
|
div#roadmap .wiki h1 { font-size: 120%; }
|
||||||
div#roadmap .wiki h2 { font-size: 110%; }
|
div#roadmap .wiki h2 { font-size: 110%; }
|
||||||
|
|
||||||
|
div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
|
||||||
|
div#version-summary fieldset { margin-bottom: 1em; }
|
||||||
|
div#version-summary .total-hours { text-align: right; }
|
||||||
|
|
||||||
table#time-report td.hours { text-align: right; padding-right: 0.5em; }
|
table#time-report td.hours { text-align: right; padding-right: 0.5em; }
|
||||||
table#time-report tbody tr { font-style: italic; color: #777; }
|
table#time-report tbody tr { font-style: italic; color: #777; }
|
||||||
table#time-report tbody tr.last-level { font-style: normal; color: #555; }
|
table#time-report tbody tr.last-level { font-style: normal; color: #555; }
|
||||||
table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
|
table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
|
||||||
table#time-report .hours-dec { font-size: 0.9em; }
|
table#time-report .hours-dec { font-size: 0.9em; }
|
||||||
|
|
||||||
div.total-hours { text-align: left; font-size: 110%; font-weight: bold; }
|
.total-hours { font-size: 110%; font-weight: bold; }
|
||||||
div.total-hours span.hours-int { font-size: 120%; }
|
.total-hours span.hours-int { font-size: 120%; }
|
||||||
|
|
||||||
.autoscroll {overflow-x: auto; padding:1px; width:100%; margin-bottom: 1.2em;}
|
.autoscroll {overflow-x: auto; padding:1px; width:100%; margin-bottom: 1.2em;}
|
||||||
#user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
|
#user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
|
||||||
|
@ -337,8 +341,6 @@ table.progress td.open { background: #FFF none repeat scroll 0%; }
|
||||||
p.pourcent {font-size: 80%;}
|
p.pourcent {font-size: 80%;}
|
||||||
p.progress-info {clear: left; font-style: italic; font-size: 80%;}
|
p.progress-info {clear: left; font-style: italic; font-size: 80%;}
|
||||||
|
|
||||||
div#status_by { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; }
|
|
||||||
|
|
||||||
/***** Tabs *****/
|
/***** Tabs *****/
|
||||||
#content .tabs {height: 2.6em; border-bottom: 1px solid #bbbbbb; margin-bottom:1.2em; position:relative;}
|
#content .tabs {height: 2.6em; border-bottom: 1px solid #bbbbbb; margin-bottom:1.2em; position:relative;}
|
||||||
#content .tabs ul {margin:0; position:absolute; bottom:-2px; padding-left:1em;}
|
#content .tabs ul {margin:0; position:absolute; bottom:-2px; padding-left:1em;}
|
||||||
|
|
Loading…
Reference in New Issue