summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2007-10-07 20:07:11 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2007-10-07 20:07:11 +0000
commitec51cdd0f9926d0fe42e9563e0f5bf1a3db18196 (patch)
tree9a6c7a92e250707b8fbd5ac9e9758a6ac56d3d9d /app
parentcdb2781b48f2a3ee2ba7d04574671ee195f7006f (diff)
downloadredmine-ec51cdd0f9926d0fe42e9563e0f5bf1a3db18196.tar.gz
redmine-ec51cdd0f9926d0fe42e9563e0f5bf1a3db18196.zip
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
Diffstat (limited to 'app')
-rw-r--r--app/controllers/my_controller.rb2
-rw-r--r--app/controllers/projects_controller.rb22
-rw-r--r--app/views/common/_calendar.rhtml36
-rw-r--r--app/views/my/blocks/_calendar.rhtml49
-rw-r--r--app/views/projects/calendar.rhtml50
5 files changed, 51 insertions, 108 deletions
diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb
index 11aa7f1d0..bbb3a6e22 100644
--- a/app/controllers/my_controller.rb
+++ b/app/controllers/my_controller.rb
@@ -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
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index d2d132458..cf1325518 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -512,26 +512,18 @@ class ProjectsController < ApplicationController
end
end
@year ||= Date.today.year
- @month ||= Date.today.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)
+ @month ||= Date.today.month
+ @calendar = Redmine::Helpers::Calendar.new(Date.civil(@year, @month, 1), current_language, :month)
- @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
diff --git a/app/views/common/_calendar.rhtml b/app/views/common/_calendar.rhtml
new file mode 100644
index 000000000..7534a1223
--- /dev/null
+++ b/app/views/common/_calendar.rhtml
@@ -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>
diff --git a/app/views/my/blocks/_calendar.rhtml b/app/views/my/blocks/_calendar.rhtml
index a2d556d90..bad729363 100644
--- a/app/views/my/blocks/_calendar.rhtml
+++ b/app/views/my/blocks/_calendar.rhtml
@@ -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> \ No newline at end of file
+<%= render :partial => 'common/calendar', :locals => {:calendar => calendar } %>
diff --git a/app/views/projects/calendar.rhtml b/app/views/projects/calendar.rhtml
index b6f2958f3..2c02d59ad 100644
--- a/app/views/projects/calendar.rhtml
+++ b/app/views/projects/calendar.rhtml
@@ -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' %>&nbsp;&nbsp;<%= l(:text_tip_task_begin_day) %><br />
<%= image_tag 'arrow_to.png' %>&nbsp;&nbsp;<%= l(:text_tip_task_end_day) %><br />