From 923062895315afa9fe4ae4487432f72af455bd0d Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 2 Dec 2012 21:08:03 +0000 Subject: [PATCH] Adds helpers for retrieving my page data. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10922 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/helpers/my_helper.rb | 50 +++++++++++++++++++ app/views/my/blocks/_calendar.html.erb | 4 +- app/views/my/blocks/_documents.html.erb | 8 +-- .../my/blocks/_issuesassignedtome.html.erb | 6 +-- .../my/blocks/_issuesreportedbyme.html.erb | 6 +-- app/views/my/blocks/_issueswatched.html.erb | 2 +- app/views/my/blocks/_news.html.erb | 7 +-- app/views/my/blocks/_timelog.html.erb | 5 +- 8 files changed, 57 insertions(+), 31 deletions(-) diff --git a/app/helpers/my_helper.rb b/app/helpers/my_helper.rb index d8a624cc1..f81f09463 100644 --- a/app/helpers/my_helper.rb +++ b/app/helpers/my_helper.rb @@ -18,4 +18,54 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module MyHelper + def calendar_items(startdt, enddt) + Issue.visible. + where(:project_id => User.current.projects.map(&:id)). + where("(start_date>=? and start_date<=?) or (due_date>=? and due_date<=?)", startdt, enddt, startdt, enddt). + includes(:project, :tracker, :priority, :assigned_to). + all + end + + def documents_items + Document.visible.order("#{Document.table_name}.created_on DESC").limit(10).all + end + + def issuesassignedtome_items + Issue.visible.open. + where(:assigned_to_id => ([User.current.id] + User.current.group_ids)). + limit(10). + includes(:status, :project, :tracker, :priority). + order("#{IssuePriority.table_name}.position DESC, #{Issue.table_name}.updated_on DESC"). + all + end + + def issuesreportedbyme_items + Issue.visible. + where(:author_id => User.current.id). + limit(10). + includes(:status, :project, :tracker). + order("#{Issue.table_name}.updated_on DESC"). + all + end + + def issueswatched_items + Issue.visible.on_active_project.watched_by(User.current.id).recently_updated.limit(10).all + end + + def news_items + News.visible. + where(:project_id => User.current.projects.map(&:id)). + limit(10). + includes(:project, :author). + order("#{News.table_name}.created_on DESC"). + all + end + + def timelog_items + TimeEntry. + where("#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", User.current.id, Date.today - 6, Date.today). + includes(:activity, :project, {:issue => [:tracker, :status]}). + order("#{TimeEntry.table_name}.spent_on DESC, #{Project.table_name}.name ASC, #{Tracker.table_name}.position ASC, #{Issue.table_name}.id ASC"). + all + end end diff --git a/app/views/my/blocks/_calendar.html.erb b/app/views/my/blocks/_calendar.html.erb index 9c6b793bf..41ca18a10 100644 --- a/app/views/my/blocks/_calendar.html.erb +++ b/app/views/my/blocks/_calendar.html.erb @@ -1,8 +1,6 @@

<%= l(:label_calendar) %>

<% calendar = Redmine::Helpers::Calendar.new(Date.today, current_language, :week) - calendar.events = Issue.visible.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? %> + calendar.events = calendar_items(calendar.startdt, calendar.enddt) %> <%= render :partial => 'common/calendar', :locals => {:calendar => calendar } %> diff --git a/app/views/my/blocks/_documents.html.erb b/app/views/my/blocks/_documents.html.erb index d222e4203..a55094cf1 100644 --- a/app/views/my/blocks/_documents.html.erb +++ b/app/views/my/blocks/_documents.html.erb @@ -1,9 +1,3 @@

<%=l(:label_document_plural)%>

-<% project_ids = @user.projects.select {|p| @user.allowed_to?(:view_documents, p)}.collect(&:id) %> -<%= render(:partial => 'documents/document', - :collection => Document.find(:all, - :limit => 10, - :order => "#{Document.table_name}.created_on DESC", - :conditions => "#{Document.table_name}.project_id in (#{project_ids.join(',')})", - :include => [:project])) unless project_ids.empty? %> \ No newline at end of file +<%= render :partial => 'documents/document', :collection => documents_items %> diff --git a/app/views/my/blocks/_issuesassignedtome.html.erb b/app/views/my/blocks/_issuesassignedtome.html.erb index 539108435..02d8c9aa6 100644 --- a/app/views/my/blocks/_issuesassignedtome.html.erb +++ b/app/views/my/blocks/_issuesassignedtome.html.erb @@ -1,10 +1,6 @@

<%=l(:label_assigned_to_me_issues)%> (<%= Issue.visible.open.count(:conditions => {:assigned_to_id => ([User.current.id] + User.current.group_ids)})%>)

-<% assigned_issues = Issue.visible.open.find(:all, - :conditions => {:assigned_to_id => ([User.current.id] + User.current.group_ids)}, - :limit => 10, - :include => [ :status, :project, :tracker, :priority ], - :order => "#{IssuePriority.table_name}.position DESC, #{Issue.table_name}.updated_on DESC") %> +<% assigned_issues = issuesassignedtome_items %> <%= render :partial => 'issues/list_simple', :locals => { :issues => assigned_issues } %> <% if assigned_issues.length > 0 %>

<%= link_to l(:label_issue_view_all), :controller => 'issues', diff --git a/app/views/my/blocks/_issuesreportedbyme.html.erb b/app/views/my/blocks/_issuesreportedbyme.html.erb index 7bd9bc28d..06bbda7f8 100644 --- a/app/views/my/blocks/_issuesreportedbyme.html.erb +++ b/app/views/my/blocks/_issuesreportedbyme.html.erb @@ -1,10 +1,6 @@

<%=l(:label_reported_issues)%> (<%= Issue.visible.count(:conditions => { :author_id => User.current.id }) %>)

-<% reported_issues = Issue.visible.find(:all, - :conditions => { :author_id => User.current.id }, - :limit => 10, - :include => [ :status, :project, :tracker ], - :order => "#{Issue.table_name}.updated_on DESC") %> +<% reported_issues = issuesreportedbyme_items %> <%= render :partial => 'issues/list_simple', :locals => { :issues => reported_issues } %> <% if reported_issues.length > 0 %>

<%= link_to l(:label_issue_view_all), :controller => 'issues', diff --git a/app/views/my/blocks/_issueswatched.html.erb b/app/views/my/blocks/_issueswatched.html.erb index 6bc31ae37..510920a08 100644 --- a/app/views/my/blocks/_issueswatched.html.erb +++ b/app/views/my/blocks/_issueswatched.html.erb @@ -1,5 +1,5 @@

<%=l(:label_watched_issues)%> (<%= Issue.visible.watched_by(user.id).count %>)

-<% watched_issues = Issue.visible.on_active_project.watched_by(user.id).recently_updated.limit(10) %> +<% watched_issues = issueswatched_items %> <%= render :partial => 'issues/list_simple', :locals => { :issues => watched_issues } %> <% if watched_issues.length > 0 %> diff --git a/app/views/my/blocks/_news.html.erb b/app/views/my/blocks/_news.html.erb index 3c391cedf..c478e4196 100644 --- a/app/views/my/blocks/_news.html.erb +++ b/app/views/my/blocks/_news.html.erb @@ -1,8 +1,3 @@

<%=l(:label_news_latest)%>

-<%= render(:partial => 'news/news', - :collection => News.find(:all, - :limit => 10, - :order => "#{News.table_name}.created_on DESC", - :conditions => "#{News.table_name}.project_id in (#{@user.projects.collect{|m| m.id}.join(',')})", - :include => [:project, :author])) unless @user.projects.empty? %> +<%= render :partial => 'news/news', :collection => news_items %> diff --git a/app/views/my/blocks/_timelog.html.erb b/app/views/my/blocks/_timelog.html.erb index a1fe39b15..0e0e6142f 100644 --- a/app/views/my/blocks/_timelog.html.erb +++ b/app/views/my/blocks/_timelog.html.erb @@ -1,9 +1,6 @@

<%=l(:label_spent_time)%> (<%= l(:label_last_n_days, 7) %>)

<% -entries = TimeEntry.find(:all, - :conditions => ["#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", @user.id, Date.today - 6, Date.today], - :include => [:activity, :project, {:issue => [:tracker, :status]}], - :order => "#{TimeEntry.table_name}.spent_on DESC, #{Project.table_name}.name ASC, #{Tracker.table_name}.position ASC, #{Issue.table_name}.id ASC") +entries = timelog_items entries_by_day = entries.group_by(&:spent_on) %>