]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2990 The category filter is lost when adding a widget to a dashboard
authorSimon Brandhof <simon.brandhof@gmail.com>
Mon, 16 Jan 2012 13:36:39 +0000 (14:36 +0100)
committerSimon Brandhof <simon.brandhof@gmail.com>
Mon, 16 Jan 2012 13:36:39 +0000 (14:36 +0100)
sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboard_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/_widget_definition.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/_widget_definitions.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/dashboard/configure.html.erb

index 5514e6b808b8a47f6e4913fe71ae091d9a187cb8..e73e418b2796d550e702c68ce6a695c538feb7d1 100644 (file)
@@ -51,7 +51,8 @@ class DashboardController < ApplicationController
     # TODO display error page if no dashboard or no resource
     load_resource()
     load_dashboard()
-    load_widget_definitions()
+    @category=params[:category]
+    load_widget_definitions(@category)
     unless @dashboard
       redirect_to home_path
     end
@@ -121,7 +122,7 @@ class DashboardController < ApplicationController
         end
       end
     end
-    redirect_to :action => 'configure', :did => dashboard.id, :id => params[:id], :highlight => widget_id
+    redirect_to :action => 'configure', :did => dashboard.id, :id => params[:id], :highlight => widget_id, :category => params[:category]
   end
 
 
@@ -146,8 +147,9 @@ class DashboardController < ApplicationController
   end
 
   def widget_definitions
-    load_widget_definitions(params[:category])
-    render :partial => 'dashboard/widget_definitions', :locals => {:dashboard_id => params[:did], :resource_id => params[:id], :filter_on_category => params[:category]}
+    @category=params[:category]
+    load_widget_definitions(@category)
+    render :partial => 'dashboard/widget_definitions', :locals => {:dashboard_id => params[:did], :resource_id => params[:id], :category => @category}
   end
 
 
index aa7a65bfd48282282d38178dea99af287a0342ae..32c120b6917e81becda8bc020cc92f009c70be04 100644 (file)
@@ -4,6 +4,7 @@
 
     <p><%= h message('widget.' + definition.getId() + '.description', :default => definition.getDescription()) -%></p>
     <%= form_tag :action => 'add_widget', :did => dashboard_id, :id => resource_id, :widget => definition.getId() %>
+    <input type="hidden" name="category" value="<%= category -%>">
     <input type="submit" value="<%= message('dashboard.add_widget') -%>">
     </form>
   </div>
index 7713ecf70e2406a16dc885fcad4dad5a457c9a4c..32f04c617e31c15d72246d9166d7c9aec72b8400 100644 (file)
@@ -1,9 +1,9 @@
 <p>
     <ul class="horizontal widget_categs">
       <li><%= message('filter_verb') -%>: </li>
-      <li class="<%= 'selected' if filter_on_category.blank? -%>"><a href="#" onClick="return filterWidgets('')"><%= message('none') -%></a></li>
-    <% @widget_categories.each do |category| %>
-      <li class="<%= 'selected' if filter_on_category==category -%>"><a href="#" onClick="return filterWidgets('<%= category -%>')"><%= h(category) -%></a></li>
+      <li class="<%= 'selected' if category.blank? -%>"><a href="#" onClick="return filterWidgets('')"><%= message('none') -%></a></li>
+    <% @widget_categories.each do |c| %>
+      <li class="<%= 'selected' if category==c -%>"><a href="#" onClick="return filterWidgets('<%= escape_javascript(c) -%>')"><%= h(c) -%></a></li>
     <% end %>
     </ul>
     <%= image_tag 'loading.gif', :style=>'vertical-align: top;display: none', :id => 'filter-widgets-loading' -%>
@@ -11,7 +11,7 @@
 <table width="100%">
   <% @widget_definitions.each_with_index do |definition, index| %>
     <% if index%4==0 %><tr><% end %>
-    <%= render :partial => 'dashboard/widget_definition', :locals => {:definition => definition, :dashboard_id => dashboard_id, :resource_id => resource_id} %>
+    <%= render :partial => 'dashboard/widget_definition', :locals => {:definition => definition, :dashboard_id => dashboard_id, :resource_id => resource_id, :category => category} %>
     <% if index%4==3 %></tr><% end %>
   <% end %>
   <% for i in 0..(4-(@widget_definitions.size%4)) %>
index 0ee8b00377089144c691012264ffdf3d09234128..12a599e1f3d044a686cab69e140724c03aa0ddf3 100644 (file)
@@ -28,7 +28,7 @@
   function filterWidgets(category) {
     new Ajax.Updater(
       'widget_defs',
-      '<%= url_for :controller => "dashboard", :action => "widget_definitions", :did => @dashboard.id, :id => @resource.id -%>&category=' + category,
+      '<%= url_for :controller => "dashboard", :action => "widget_definitions", :did => @dashboard.id, :id => @resource.id -%>&category=' + encodeURIComponent(category),
       {asynchronous:true, evalScripts:true});
     $('filter-widgets-loading').show();
     return false;
@@ -41,7 +41,7 @@
   <%= render :partial => 'dashboard/header', :locals => {:back => true} %>
 
   <div id="widget_defs">
-    <%= render :partial => 'dashboard/widget_definitions', :locals => {:dashboard_id => @dashboard.id, :resource_id => @resource.id, :filter_on_category => nil} -%>
+    <%= render :partial => 'dashboard/widget_definitions', :locals => {:dashboard_id => @dashboard.id, :resource_id => @resource.id, :category => @category} -%>
   </div>