From: David Gageot Date: Thu, 3 May 2012 07:43:49 +0000 (+0200) Subject: SONAR-1927 Introduce more duplication to hopefully improve things after X-Git-Tag: 3.1~309 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=eb96f23f68fb87bddb8edd0df4a4523ba4de95ed;p=sonarqube.git SONAR-1927 Introduce more duplication to hopefully improve things after --- diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboard_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboard_controller.rb index 6b27afd7a08..c743653fed8 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboard_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboard_controller.rb @@ -54,7 +54,6 @@ class DashboardController < ApplicationController unless @dashboard redirect_to home_path end - end def edit_layout @@ -123,7 +122,6 @@ class DashboardController < ApplicationController redirect_to :action => 'configure', :did => dashboard.id, :id => params[:id], :highlight => widget_id, :category => params[:category] end - def save_widget widget=Widget.find(params[:wid].to_i) #TODO check owner of dashboard @@ -202,12 +200,9 @@ class DashboardController < ApplicationController def load_widget_definitions(filter_on_category=nil) @widget_definitions=java_facade.getWidgets() - @widget_categories=[] - @widget_definitions.each { |definition| @widget_categories< :post, :only => [:create, :update, :delete, :up, :down, :follow, :unfollow], :redirect_to => {:action => :index} + verify :method => :post, :only => [:set_layout, :add_widget, :set_dashboard, :save_widget], :redirect_to => {:action => :index} before_filter :login_required, :except => [:index] def index + # TODO display error page if no dashboard or no resource + load_resource() load_dashboard() load_authorized_widget_definitions() unless @dashboard @@ -33,6 +35,8 @@ class DetachedController < ApplicationController end def configure + # TODO display error page if no dashboard or no resource + load_resource() load_dashboard() @category=params[:category] load_widget_definitions(@category) @@ -42,11 +46,12 @@ class DetachedController < ApplicationController end def edit_layout + load_resource() load_dashboard() end def set_layout - dashboard=Dashboard.find(params[:id]) + dashboard=Dashboard.find(params[:id].to_i) if dashboard.editable_by?(current_user) dashboard.column_layout=params[:layout] dashboard.save! @@ -85,7 +90,7 @@ class DetachedController < ApplicationController end def add_widget - dashboard=Dashboard.find(params[:id]) + dashboard=Dashboard.find(params[:id].to_i) widget_id=nil if dashboard.editable_by?(current_user) definition=java_facade.getWidget(params[:widget]) @@ -148,7 +153,23 @@ class DetachedController < ApplicationController @dashboard_configuration=Api::DashboardConfiguration.new(@dashboard, :period_index => params[:period], :snapshot => @snapshot) if @dashboard && @snapshot end + def load_resource + end + def load_authorized_widget_definitions + if @resource + @authorized_widget_definitions = java_facade.getWidgets(@resource.scope, @resource.qualifier, @resource.language, @snapshot.metric_keys.to_java(:string)) + @authorized_widget_definitions=@authorized_widget_definitions.select do |widget| + authorized=widget.getUserRoles().size==0 + unless authorized + widget.getUserRoles().each do |role| + authorized=(role=='user') || (role=='viewer') || has_role?(role, @resource) + break if authorized + end + end + authorized + end + end end def load_widget_definitions(filter_on_category=nil) diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/_widget_definitions.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/_widget_definitions.html.erb index aaaa7840898..aaee68693d9 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/_widget_definitions.html.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/_widget_definitions.html.erb @@ -16,6 +16,8 @@ <% end %> <% for i in 0..(4-(@widget_definitions.size%4)) %> - <% end %> - <% if @widget_definitions.size%4<3 %><% end %> + <% end %> + <% if @widget_definitions.size%4<3 %> + + <% end %>