Calendar:
* added an helper and moved the rendering code to a shared partial (used by project calendar and my calendar) * first day of week can now be set in lang files (general_first_day_of_week) git-svn-id: http://redmine.rubyforge.org/svn/trunk@815 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
class MyController < ApplicationController
|
||||
helper :issues
|
||||
|
||||
layout 'base'
|
||||
before_filter :require_login
|
||||
|
||||
|
||||
@@ -512,26 +512,18 @@ class ProjectsController < ApplicationController
|
||||
end
|
||||
end
|
||||
@year ||= Date.today.year
|
||||
@month ||= Date.today.month
|
||||
@month ||= Date.today.month
|
||||
@calendar = Redmine::Helpers::Calendar.new(Date.civil(@year, @month, 1), current_language, :month)
|
||||
|
||||
@date_from = Date.civil(@year, @month, 1)
|
||||
@date_to = (@date_from >> 1)-1
|
||||
# start on monday
|
||||
@date_from = @date_from - (@date_from.cwday-1)
|
||||
# finish on sunday
|
||||
@date_to = @date_to + (7-@date_to.cwday)
|
||||
|
||||
@events = []
|
||||
events = []
|
||||
@project.issues_with_subprojects(params[:with_subprojects]) do
|
||||
@events += Issue.find(:all,
|
||||
events += Issue.find(:all,
|
||||
:include => [:tracker, :status, :assigned_to, :priority, :project],
|
||||
:conditions => ["((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?)) and #{Issue.table_name}.tracker_id in (#{@selected_tracker_ids.join(',')})", @date_from, @date_to, @date_from, @date_to]
|
||||
: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]
|
||||
) unless @selected_tracker_ids.empty?
|
||||
end
|
||||
@events += @project.versions.find(:all, :conditions => ["effective_date BETWEEN ? AND ?", @date_from, @date_to])
|
||||
|
||||
@ending_events_by_days = @events.group_by {|event| event.due_date}
|
||||
@starting_events_by_days = @events.group_by {|event| event.start_date}
|
||||
events += @project.versions.find(:all, :conditions => ["effective_date BETWEEN ? AND ?", @calendar.startdt, @calendar.enddt])
|
||||
@calendar.events = events
|
||||
|
||||
render :layout => false if request.xhr?
|
||||
end
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
<table class="cal">
|
||||
<thead>
|
||||
<tr><td></td><% 7.times do |i| %><th><%= day_name( (calendar.first_wday+i)%7 ) %></th><% end %></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<% day = calendar.startdt
|
||||
while day <= calendar.enddt %>
|
||||
<%= "<th>#{day.cweek}</th>" if day.cwday == calendar.first_wday %>
|
||||
<td class="<%= day.month==calendar.month ? 'even' : 'odd' %><%= ' today' if Date.today == day %>">
|
||||
<p class="day-num"><%= day.day %></p>
|
||||
<% calendar.events_on(day).each do |i| %>
|
||||
<% if i.is_a? Issue %>
|
||||
<div class="tooltip">
|
||||
<%= if day == i.start_date && day == i.due_date
|
||||
image_tag('arrow_bw.png')
|
||||
elsif day == i.start_date
|
||||
image_tag('arrow_from.png')
|
||||
elsif day == i.due_date
|
||||
image_tag('arrow_to.png')
|
||||
end %>
|
||||
<%= h("#{i.project.name} -") unless @project && @project == i.project %>
|
||||
<%= link_to_issue i %>: <%= h(truncate(i.subject, 30)) %>
|
||||
<span class="tip"><%= render_issue_tooltip i %></span>
|
||||
</div>
|
||||
<% else %>
|
||||
<%= link_to_version i, :class => "icon icon-package" %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</td>
|
||||
<%= '</tr><tr>' if day.cwday==calendar.last_wday and day!=calendar.enddt %>
|
||||
<% day = day + 1
|
||||
end %>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -1,47 +1,8 @@
|
||||
<h3><%= l(:label_calendar) %></h3>
|
||||
|
||||
<%
|
||||
@date_from = Date.today - (Date.today.cwday-1)
|
||||
@date_to = Date.today + (7-Date.today.cwday)
|
||||
@issues = Issue.find :all,
|
||||
:conditions => ["#{Issue.table_name}.project_id in (#{@user.projects.collect{|m| m.id}.join(',')}) AND ((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?))", @date_from, @date_to, @date_from, @date_to],
|
||||
:include => [:project, :tracker] unless @user.projects.empty?
|
||||
@issues ||= []
|
||||
%>
|
||||
<% calendar = Redmine::Helpers::Calendar.new(Date.today, current_language, :week)
|
||||
calendar.events = Issue.find :all,
|
||||
:conditions => ["#{Issue.table_name}.project_id in (#{@user.projects.collect{|m| m.id}.join(',')}) AND ((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?))", calendar.startdt, calendar.enddt, calendar.startdt, calendar.enddt],
|
||||
:include => [:project, :tracker, :priority, :assigned_to] unless @user.projects.empty? %>
|
||||
|
||||
<table class="cal">
|
||||
<thead><tr>
|
||||
<td></td>
|
||||
<% 1.upto(7) do |d| %>
|
||||
<th align="center" width="14%"><%= day_name(d) %></th>
|
||||
<% end %>
|
||||
</tr></thead>
|
||||
<tbdoy>
|
||||
<tr height="100">
|
||||
<% day = @date_from
|
||||
while day <= @date_to
|
||||
if day.cwday == 1 %>
|
||||
<th valign="middle"><%= day.cweek %></th>
|
||||
<% end %>
|
||||
<td valign="top" width="14%" class="<%= day.month==@month ? "even" : "odd" %>">
|
||||
<p align="right"><%= day==Date.today ? "<b>#{day.day}</b>" : day.day %></p>
|
||||
<% day_issues = []
|
||||
@issues.each { |i| day_issues << i if i.start_date == day or i.due_date == day }
|
||||
day_issues.each do |i| %>
|
||||
<%= if day == i.start_date and day == i.due_date
|
||||
image_tag('arrow_bw.png')
|
||||
elsif day == i.start_date
|
||||
image_tag('arrow_from.png')
|
||||
elsif day == i.due_date
|
||||
image_tag('arrow_to.png')
|
||||
end %>
|
||||
<small><%= link_to_issue i %>: <%=h i.subject.sub(/^(.{30}[^\s]*\s).*$/, '\1 (...)') %></small><br />
|
||||
<% end %>
|
||||
</td>
|
||||
<%= '</tr><tr height="100">' if day.cwday >= 7 and day!=@date_to %>
|
||||
<%
|
||||
day = day + 1
|
||||
end %>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<%= render :partial => 'common/calendar', :locals => {:calendar => calendar } %>
|
||||
|
||||
@@ -15,55 +15,7 @@
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
<table class="cal">
|
||||
<thead>
|
||||
<tr>
|
||||
<td></td>
|
||||
<% 1.upto(7) do |d| %>
|
||||
<th style="width:14%"><%= day_name(d) %></th>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr style="height:100px">
|
||||
<% day = @date_from
|
||||
while day <= @date_to
|
||||
if day.cwday == 1 %>
|
||||
<th><%= day.cweek %></th>
|
||||
<% end %>
|
||||
<td valign="top" class="<%= day.month==@month ? "even" : "odd" %> <%= Date.today == day ? 'today' : '' %>" style="width:14%;">
|
||||
<p class="textright"><%= day==Date.today ? "<b>#{day.day}</b>" : day.day %></p>
|
||||
<% ((@ending_events_by_days[day] || []) + (@starting_events_by_days[day] || [])).uniq.each do |i| %>
|
||||
<% if i.is_a? Issue %>
|
||||
<div class="tooltip">
|
||||
<%= if day == i.start_date and day == i.due_date
|
||||
image_tag('arrow_bw.png')
|
||||
elsif day == i.start_date
|
||||
image_tag('arrow_from.png')
|
||||
elsif day == i.due_date
|
||||
image_tag('arrow_to.png')
|
||||
end %>
|
||||
<small>
|
||||
<%= h("#{i.project.name} -") unless @project && @project == i.project %>
|
||||
<%= link_to_issue i %>:
|
||||
<%= h(truncate(i.subject, 30)) %>
|
||||
</small>
|
||||
<span class="tip">
|
||||
<%= render_issue_tooltip i %>
|
||||
</span>
|
||||
</div>
|
||||
<% else %>
|
||||
<small><%= link_to_version i, :class => "icon icon-package" %></small>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</td>
|
||||
<%= '</tr><tr style="height:100px">' if day.cwday >= 7 and day!=@date_to %>
|
||||
<%
|
||||
day = day + 1
|
||||
end %>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<%= render :partial => 'common/calendar', :locals => {:calendar => @calendar} %>
|
||||
|
||||
<%= image_tag 'arrow_from.png' %> <%= l(:text_tip_task_begin_day) %><br />
|
||||
<%= image_tag 'arrow_to.png' %> <%= l(:text_tip_task_end_day) %><br />
|
||||
|
||||
Reference in New Issue
Block a user