Project

General

Profile

Patch #1116 » show_subproject_versions_in_calendar_and_gantt.patch

Peter Van den Bosch, 2008-04-26 19:29

View differences:

app/controllers/projects_controller.rb (working copy)
342 343
                           :conditions => ["((start_date BETWEEN ? AND ?) OR (due_date BETWEEN ? AND ?)) AND #{Issue.table_name}.tracker_id IN (#{@selected_tracker_ids.join(',')})", @calendar.startdt, @calendar.enddt, @calendar.startdt, @calendar.enddt]
343 344
                           ) unless @selected_tracker_ids.empty?
344 345
    end
345
    events += @project.versions.find(:all, :conditions => ["effective_date BETWEEN ? AND ?", @calendar.startdt, @calendar.enddt])
346
    events += @project.versions_with_subprojects(@with_subprojects, @calendar.startdt, @calendar.enddt)
346 347
    @calendar.events = events
347 348
    
348 349
    render :layout => false if request.xhr?
......
387 388
                           :conditions => ["(((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?) or (start_date<? and due_date>?)) and start_date is not null and due_date is not null and #{Issue.table_name}.tracker_id in (#{@selected_tracker_ids.join(',')}))", @date_from, @date_to, @date_from, @date_to, @date_from, @date_to]
388 389
                           ) unless @selected_tracker_ids.empty?
389 390
    end
390
    @events += @project.versions.find(:all, :conditions => ["effective_date BETWEEN ? AND ?", @date_from, @date_to])
391
    @events += @project.versions_with_subprojects(@with_subprojects, @date_from, @date_to)
391 392
    @events.sort! {|x,y| x.start_date <=> y.start_date }
392 393
    
393 394
    if params[:format]=='pdf'
app/models/project.rb (working copy)
83 83
      yield
84 84
    end 
85 85
  end
86
  
87
  def versions_with_subprojects(include_subprojects=false, startdt=nil, enddt=nil)
88
    conditions = nil
89
    if include_subprojects && !active_children.empty?
90
      ids = [id] + active_children.collect {|c| c.id}
91
      conditions = ["project_id IN (#{ids.join(',')})"] if not (startdt and enddt)
92
      conditions ||= ["project_id IN (#{ids.join(',')}) AND effective_date BETWEEN ? AND ?", startdt, enddt]
93
    else
94
      conditions = ["project_id = #{id}"] if not (startdt and enddt)
95
      conditions ||= ["project_id = #{id} AND effective_date BETWEEN ? AND ?", startdt, enddt]
96
    end
97

  
98
    Version.find :all, :conditions => conditions
99
  end
86 100

  
87 101
  # returns latest created projects
88 102
  # non public projects will be returned only if user is a member of those
app/views/common/_calendar.rhtml (working copy)
24 24
  <span class="tip"><%= render_issue_tooltip i %></span>
25 25
  </div>
26 26
  <% else %>
27
  <%= link_to_version i, :class => "icon icon-package" %>
27
  <span class="icon icon-package">  
28
    <%= h("#{i.project.name} -") unless @project && @project == i.project %>
29
    <%= link_to_version i%>
30
  </span>
28 31
  <% end %>
29 32
<% end %>
30 33
</td>
app/views/projects/gantt.rhtml (working copy)
73 73
      	<%= h("#{i.project.name} -") unless @project && @project == i.project %>
74 74
      	<%= link_to_issue i %>:	<%=h i.subject %>
75 75
  	<% else %>
76
      	<%= link_to_version i, :class => "icon icon-package" %>
76
		<span class="icon icon-package">
77
	      	<%= h("#{i.project.name} -") unless @project && @project == i.project %>
78
	      	<%= link_to_version i %>
79
		</span>
77 80
  	<% end %>  	
78 81
  	</small></div>
79 82
    <% top = top + 20
......
197 200
    %>
198 201
    <div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone">&nbsp;</div>
199 202
	<div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task">
200
	<strong><%= i.name %></strong>
203
		<%= h("#{i.project.name} -") unless @project && @project == i.project %>
204
		<strong><%= i.name %></strong>
201 205
	</div>
202 206
<% end %>
203 207
	<% top = top + 20
(1-1/2)