11class TasksController < ApplicationController
22 unloadable
33 before_filter :find_project , :except => [ :destroy ]
4+ helper :queries
5+ include QueriesHelper
6+ helper :sort
7+ include SortHelper
8+ include IssuesHelper
49 # GET /tasks
510 # GET /tasks.xml
611 def index
@@ -12,6 +17,33 @@ def index
1217 end
1318 end
1419
20+ def issues
21+ retrieve_query
22+ sort_init ( @query . sort_criteria . empty? ? [ [ 'id' , 'desc' ] ] : @query . sort_criteria )
23+ sort_update ( { 'id' => "#{ Issue . table_name } .id" } . merge ( @query . available_columns . inject ( { } ) { |h , c | h [ c . name . to_s ] = c . sortable ; h } ) )
24+ @unassigned_tasks = [ ]
25+ if @query . valid?
26+ limit = per_page_option
27+
28+ @issue_count = @query . issue_count
29+ @issue_pages = Paginator . new self , @issue_count , limit , params [ 'page' ]
30+ @issues = @query . issues ( :include => [ :assigned_to , :tracker , :priority , :category , :fixed_version ] ,
31+ :order => sort_clause ,
32+ :offset => @issue_pages . current . offset ,
33+ :limit => limit )
34+ @issue_count_by_group = @query . issue_count_by_group
35+ # @unassigned_tasks = Issue.find(:all, :joins => :status,
36+ # :conditions => ["issue_statuses.is_closed = ? AND user_story_id IS NULL AND project_id = ?", false, @project.id ])
37+ @unassigned_tasks = @issues
38+ @issue_statuses = IssueStatus . find ( :all )
39+ @project_users = User . find ( :all , :joins => :members , :conditions => [ "members.project_id = ?" , @project . id ] )
40+ end
41+ render :layout => false
42+ rescue ActiveRecord ::RecordNotFound
43+ render_404
44+ end
45+
46+
1547 # GET /tasks/1
1648 # GET /tasks/1.xml
1749 def show
@@ -141,4 +173,37 @@ def find_project
141173 rescue ActiveRecord ::RecordNotFound
142174 render_404
143175 end
176+
177+ def retrieve_query
178+ if !params [ :query_id ] . blank?
179+ cond = "project_id IS NULL"
180+ cond << " OR project_id = #{ @project . id } " if @project
181+ @query = Query . find ( params [ :query_id ] , :conditions => cond )
182+ @query . project = @project
183+ session [ :query ] = { :id => @query . id , :project_id => @query . project_id }
184+ sort_clear
185+ else
186+ if params [ :set_filter ] || session [ :query ] . nil? || session [ :query ] [ :project_id ] != ( @project ? @project . id : nil )
187+ # Give it a name, required to be valid
188+ @query = Query . new ( :name => "_" )
189+ @query . project = @project
190+ if params [ :fields ] and params [ :fields ] . is_a? Array
191+ params [ :fields ] . each do |field |
192+ @query . add_filter ( field , params [ :operators ] [ field ] , params [ :values ] [ field ] )
193+ end
194+ else
195+ @query . available_filters . keys . each do |field |
196+ @query . add_short_filter ( field , params [ field ] ) if params [ field ]
197+ end
198+ end
199+ @query . group_by = params [ :group_by ]
200+ @query . column_names = params [ :query ] && params [ :query ] [ :column_names ]
201+ session [ :query ] = { :project_id => @query . project_id , :filters => @query . filters , :group_by => @query . group_by , :column_names => @query . column_names }
202+ else
203+ @query = Query . find_by_id ( session [ :query ] [ :id ] ) if session [ :query ] [ :id ]
204+ @query ||= Query . new ( :name => "_" , :project => @project , :filters => session [ :query ] [ :filters ] , :group_by => session [ :query ] [ :group_by ] , :column_names => session [ :query ] [ :column_names ] )
205+ @query . project = @project
206+ end
207+ end
208+ end
144209end
0 commit comments