diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-10-07 20:07:11 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-10-07 20:07:11 +0000 |
commit | ec51cdd0f9926d0fe42e9563e0f5bf1a3db18196 (patch) | |
tree | 9a6c7a92e250707b8fbd5ac9e9758a6ac56d3d9d /app | |
parent | cdb2781b48f2a3ee2ba7d04574671ee195f7006f (diff) | |
download | redmine-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.rb | 2 | ||||
-rw-r--r-- | app/controllers/projects_controller.rb | 22 | ||||
-rw-r--r-- | app/views/common/_calendar.rhtml | 36 | ||||
-rw-r--r-- | app/views/my/blocks/_calendar.rhtml | 49 | ||||
-rw-r--r-- | app/views/projects/calendar.rhtml | 50 |
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' %> <%= l(:text_tip_task_begin_day) %><br /> <%= image_tag 'arrow_to.png' %> <%= l(:text_tip_task_end_day) %><br /> |