diff options
Diffstat (limited to 'sonar-server/src/main/webapp/WEB-INF/app/controllers/issues_controller.rb')
-rw-r--r-- | sonar-server/src/main/webapp/WEB-INF/app/controllers/issues_controller.rb | 114 |
1 files changed, 99 insertions, 15 deletions
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/issues_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/issues_controller.rb index da523e067fa..cafdd7f75a7 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/issues_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/issues_controller.rb @@ -20,36 +20,120 @@ class IssuesController < ApplicationController - before_filter :init + before_filter :init_options + # GET /issues/index def index redirect_to :action => 'search' end + # GET /issues/search def search - init_results + if params[:id] + @filter = find_filter(params[:id].to_i) + else + @filter = Internal.issues.createFilterFromMap(criteria_params) + end - @criteria_params = params.merge({:controller => nil, :action => nil, :search => nil, :widget_id => nil, :edit => nil}) - @criteria_params['pageSize'] = 100 - @issue_query = Internal.issues.toQuery(@criteria_params) + @issue_query = Internal.issues.toQuery(@filter.dataAsMap) @issues_result = Internal.issues.execute(@issue_query) - @paging = @issues_result.paging - @issues = @issues_result.issues end - private + # Load existing filter + # GET /issues/filter/<filter id> + def filter + require_parameters :id + + @filter = find_filter(params[:id].to_i) + @issue_query = Internal.issues.toQuery(@filter.dataAsMap) + + # criteria can be overridden + # TODO ? + #@filter.override_criteria(criteria_params) + + @issues_result = Internal.issues.execute(@issue_query) + @unchanged = true + render :action => 'search' + end - def init_results - @issues_result = nil - @paging = nil - @issues = nil - #criteria['pageSize'] = 100 - self + # GET /issues/save_as_form?[id=<id>][&criteria] + def save_as_form + if params[:id].present? + @filter = find_filter(params[:id]) + else + @filter = Internal.issues.createFilterFromMap(criteria_params) + end + render :partial => 'issues/save_as_form' end - def init + # POST /issues/save_as?[id=<id>]&name=<name>[¶meters] + def save_as + verify_post_request + access_denied unless logged_in? + + options = {'name' => params[:name], 'description' => params[:description], 'data' => URI.unescape(params[:data]), 'shared' => params[:shared]=='true' } + add_to_favourites=false + if params[:id].present? + # TODO + #@filter = Internal.issues.updateIssueFilter(params[:id], options) + else + filter_result = Internal.issues.createIssueFilter(options) + add_to_favourites=true + end + + if filter_result.ok + @filter = filter_result.get() + puts "#### "+ @filter.id.to_s + #current_user.favourited_measure_filters<<@filter if add_to_favourites + render :text => @filter.id.to_s, :status => 200 + else + @errors = filter_result.errors + render :partial => 'issues/save_as_form', :status => 400 + end + end + + # POST /issues/save?id=<id>&[criteria] + # TODO + def save + verify_post_request + require_parameters :id + access_denied unless logged_in? + + @filter = find_filter(params[:id]) + + #@filter = Internal.issues.updateIssueFilter(params[:id], options) + + #@filter.criteria=criteria_params_without_page_id + #@filter.convert_criteria_to_data + #unless @filter.save + # flash[:error]='Error' + #end + redirect_to :action => 'filter', :id => @filter.id + end + + private + + def init_options @options_for_statuses = Internal.issues.listStatus().map {|s| [message('issue.status.' + s), s]} @options_for_resolutions = Internal.issues.listResolutions().map {|s| [message('issue.resolution.' + s), s]} end + # TODO + def find_filter(id) + filter = Internal.issues.findIssueFilter(id) + # TODO + #access_denied unless filter.shared || filter.owner?(current_user) + filter + end + + def criteria_params + criteria = params + criteria.delete('controller') + criteria.delete('action') + criteria.delete('search') + criteria.delete('edit') + criteria.delete('pageSize') + criteria + end + end
\ No newline at end of file |