summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2012-12-02 21:08:03 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2012-12-02 21:08:03 +0000
commit923062895315afa9fe4ae4487432f72af455bd0d (patch)
tree77bf37a72e791fcaea9b747c7497fd28be0c6776
parent45ea24ecad0e7e40ff499de7b7eab5678f88c31a (diff)
downloadredmine-923062895315afa9fe4ae4487432f72af455bd0d.tar.gz
redmine-923062895315afa9fe4ae4487432f72af455bd0d.zip
Adds helpers for retrieving my page data.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10922 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/helpers/my_helper.rb50
-rw-r--r--app/views/my/blocks/_calendar.html.erb4
-rw-r--r--app/views/my/blocks/_documents.html.erb8
-rw-r--r--app/views/my/blocks/_issuesassignedtome.html.erb6
-rw-r--r--app/views/my/blocks/_issuesreportedbyme.html.erb6
-rw-r--r--app/views/my/blocks/_issueswatched.html.erb2
-rw-r--r--app/views/my/blocks/_news.html.erb7
-rw-r--r--app/views/my/blocks/_timelog.html.erb5
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 @@
<h3><%= l(:label_calendar) %></h3>
<% 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 @@
<h3><%=l(:label_document_plural)%></h3>
-<% 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 @@
<h3><%=l(:label_assigned_to_me_issues)%> (<%= Issue.visible.open.count(:conditions => {:assigned_to_id => ([User.current.id] + User.current.group_ids)})%>)</h3>
-<% 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 %>
<p class="small"><%= 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 @@
<h3><%=l(:label_reported_issues)%> (<%= Issue.visible.count(:conditions => { :author_id => User.current.id }) %>)</h3>
-<% 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 %>
<p class="small"><%= 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 @@
<h3><%=l(:label_watched_issues)%> (<%= Issue.visible.watched_by(user.id).count %>)</h3>
-<% 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 @@
<h3><%=l(:label_news_latest)%></h3>
-<%= 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 @@
<h3><%=l(:label_spent_time)%> (<%= l(:label_last_n_days, 7) %>)</h3>
<%
-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)
%>