diff --git a/tracks/app/controllers/contexts_controller.rb b/tracks/app/controllers/contexts_controller.rb
index 08eab114..82883b79 100644
--- a/tracks/app/controllers/contexts_controller.rb
+++ b/tracks/app/controllers/contexts_controller.rb
@@ -155,12 +155,14 @@ class ContextsController < ApplicationController
def init_todos
set_context_from_params
unless @context.nil?
- @done = @context.done_todos
+ @context.todos.with_scope :find => { :include => [:project, :tags] } do
+ @done = @context.done_todos
+ end
# @not_done_todos = @context.not_done_todos
# TODO: Temporarily doing this search manually until I can work out a way
# to do the same thing using not_done_todos acts_as_todo_container method
# Hides actions in hidden projects from context.
- @not_done_todos = @context.todos.find(:all, :conditions => ['todos.state = ?', 'active'], :order => "todos.due IS NULL, todos.due ASC, todos.created_at ASC", :include => :project)
+ @not_done_todos = @context.todos.find(:all, :conditions => ['todos.state = ?', 'active'], :order => "todos.due IS NULL, todos.due ASC, todos.created_at ASC", :include => [:project, :tags])
@count = @not_done_todos.size
@default_project_context_name_map = build_default_project_context_name_map(@projects).to_json
end
diff --git a/tracks/app/controllers/projects_controller.rb b/tracks/app/controllers/projects_controller.rb
index 441ff225..fd43c6cb 100644
--- a/tracks/app/controllers/projects_controller.rb
+++ b/tracks/app/controllers/projects_controller.rb
@@ -27,9 +27,11 @@ class ProjectsController < ApplicationController
def show
init_data_for_sidebar
@page_title = "TRACKS::Project: #{@project.name}"
- @not_done = @project.not_done_todos(:include_project_hidden_todos => true)
- @deferred = @project.deferred_todos.sort_by { |todo| todo.show_from }
- @done = @project.done_todos
+ @project.todos.with_scope :find => { :include => [:context, :tags] } do
+ @not_done = @project.not_done_todos(:include_project_hidden_todos => true)
+ @deferred = @project.deferred_todos.sort_by { |todo| todo.show_from }
+ @done = @project.done_todos
+ end
@count = @not_done.size
@next_project = current_user.projects.next_from(@project)
@previous_project = current_user.projects.previous_from(@project)
diff --git a/tracks/app/helpers/todos_helper.rb b/tracks/app/helpers/todos_helper.rb
index 9b9ecca4..23139eb1 100644
--- a/tracks/app/helpers/todos_helper.rb
+++ b/tracks/app/helpers/todos_helper.rb
@@ -93,19 +93,23 @@ module TodosHelper
end
end
- def project_and_context_links(parent_container_type)
+ def project_and_context_links(parent_container_type, opts = {})
+ str = ''
if @todo.completed?
- "(#{@todo.context.name}#{", " + @todo.project.name unless @todo.project.nil?})"
+ str += @todo.context.name unless opts[:suppress_context]
+ should_suppress_project = opts[:suppress_project] || @todo.project.nil?
+ str += ", " unless str.blank? || should_suppress_project
+ str += @todo.project.name unless should_suppress_project
+ str = "(#{str})" unless str.blank?
else
- str = ''
if (['project', 'tag'].include?(parent_container_type))
str << item_link_to_context( @todo )
end
if (['context', 'tickler', 'tag'].include?(parent_container_type)) && @todo.project_id
str << item_link_to_project( @todo )
end
- str
end
+ return str
end
# Uses the 'staleness_starts' value from settings.yml (in days) to colour the
diff --git a/tracks/app/views/contexts/show.rhtml b/tracks/app/views/contexts/show.rhtml
index e2c4caf9..a269d379 100644
--- a/tracks/app/views/contexts/show.rhtml
+++ b/tracks/app/views/contexts/show.rhtml
@@ -1,6 +1,6 @@
<%= render :partial => "contexts/context", :locals => { :context => @context, :collapsible => false } %>
-<%= render :partial => "todos/completed", :locals => { :done => @done, :collapsible => false, :append_descriptor => "in this context (last #{prefs.show_number_completed})" } %>
+<%= render :partial => "todos/completed", :locals => { :done => @done, :suppress_context => true, :collapsible => false, :append_descriptor => "in this context (last #{prefs.show_number_completed})" } %>
diff --git a/tracks/app/views/projects/show.rhtml b/tracks/app/views/projects/show.rhtml
index c474f38a..cc9501cf 100644
--- a/tracks/app/views/projects/show.rhtml
+++ b/tracks/app/views/projects/show.rhtml
@@ -5,7 +5,7 @@
<%= render :partial => "projects/project", :locals => { :project => @project, :collapsible => false } %>
<%= render :partial => "todos/deferred", :locals => { :deferred => @deferred, :collapsible => false, :append_descriptor => "in this project" } %>
-<%= render :partial => "todos/completed", :locals => { :done => @done, :collapsible => false, :append_descriptor => "in this project" } %>
+<%= render :partial => "todos/completed", :locals => { :done => @done, :collapsible => false, :suppress_project => true, :append_descriptor => "in this project" } %>
diff --git a/tracks/app/views/todos/_completed.rhtml b/tracks/app/views/todos/_completed.rhtml
index 4a1c41b3..e2a1f962 100644
--- a/tracks/app/views/todos/_completed.rhtml
+++ b/tracks/app/views/todos/_completed.rhtml
@@ -1,10 +1,13 @@
-<% suffix = append_descriptor ? append_descriptor : '' -%>
+<% suffix = append_descriptor ? append_descriptor : ''
+ suppress_context ||= false
+ suppress_project ||= false
+-%>
<% if collapsible %>
<%= image_tag("collapse.png") %>
<% end %>
- Completed actions <%= append_descriptor ? append_descriptor : '' %>
+ Completed actions <%= suffix %>
@@ -12,6 +15,6 @@
Currently there are no completed actions.
- <%= render :partial => "todos/todo", :collection => done, :locals => { :parent_container_type => "completed" } %>
+ <%= render :partial => "todos/todo", :collection => done, :locals => { :parent_container_type => "completed", :suppress_context => suppress_context, :suppress_project => suppress_project } %>
\ No newline at end of file
diff --git a/tracks/app/views/todos/_todo.rhtml b/tracks/app/views/todos/_todo.rhtml
index 7815a462..d49753f6 100644
--- a/tracks/app/views/todos/_todo.rhtml
+++ b/tracks/app/views/todos/_todo.rhtml
@@ -1,5 +1,7 @@
<%
@todo = todo
+ suppress_context ||= false
+ suppress_project ||= false
%>
@@ -12,7 +14,7 @@
<%= sanitize(todo.description) %>
<%= tag_list %>
<%= deferred_due_date %>
- <%= project_and_context_links( parent_container_type ) %>
+ <%= project_and_context_links( parent_container_type, :suppress_context => suppress_context, :suppress_project => suppress_project ) %>
<%= render(:partial => "todos/toggle_notes", :locals => { :item => todo }) if todo.notes? %>
diff --git a/tracks/lib/tasks/query_trace_toggle.rake b/tracks/lib/tasks/query_trace_toggle.rake
index 23186e7c..a6321541 100644
--- a/tracks/lib/tasks/query_trace_toggle.rake
+++ b/tracks/lib/tasks/query_trace_toggle.rake
@@ -21,4 +21,30 @@ namespace :query_trace do
FileUtils.rm_rf("#{RAILS_ROOT}/vendor/plugins/query_trace")
puts "QueryTrace plugin disabled. Must restart server to take effect."
end
-end
\ No newline at end of file
+end
+
+namespace :query_analyzer do
+ desc "Enables the query_analyzer plugin. Must restart server to take effect."
+ task :on => :environment do
+ unless File.exist?("#{RAILS_ROOT}/vendor/query_analyzer.tar.gz")
+ Dir.chdir("#{RAILS_ROOT}/vendor") do
+ url = "http://svn.nfectio.us/plugins/query_analyzer"
+ puts "Loading query_analyzer from #{url}..."
+ system "svn co #{url} query_analyzer"
+ system "tar zcf query_analyzer.tar.gz --exclude=.svn query_analyzer"
+ FileUtils.rm_rf("query_analyzer")
+ end
+ end
+ Dir.chdir("#{RAILS_ROOT}/vendor/plugins") do
+ system "tar zxf ../query_analyzer.tar.gz query_analyzer"
+ end
+ puts "QueryAnalyzer plugin enabled. Must restart server to take effect."
+ end
+
+ desc "Disables the query_analyzer plugin. Must restart server to take effect."
+ task :off => :environment do
+ FileUtils.rm_rf("#{RAILS_ROOT}/vendor/plugins/query_analyzer")
+ puts "QueryAnalyzer plugin disabled. Must restart server to take effect."
+ end
+end
+
diff --git a/tracks/vendor/query_analyzer.tar.gz b/tracks/vendor/query_analyzer.tar.gz
new file mode 100644
index 00000000..6ace5199
Binary files /dev/null and b/tracks/vendor/query_analyzer.tar.gz differ