]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2984 review widgets must not fail if reviews have no comments
authorSimon Brandhof <simon.brandhof@gmail.com>
Wed, 14 Dec 2011 16:37:08 +0000 (17:37 +0100)
committerSimon Brandhof <simon.brandhof@gmail.com>
Wed, 14 Dec 2011 16:37:08 +0000 (17:37 +0100)
plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/reviews/project_reviews.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/project/widgets/reviews/_reviews_list.html.erb

index 84a76981c3beec69e1ea9b4f4dc53e37367e3008..2d89c60c43e7f29c736aa3a32ddd741eb5be9b93 100644 (file)
@@ -1,31 +1,33 @@
-<% 
-  if has_role?(:user, @project)
-    limit = widget_properties["numberOfLines"].to_i == 0 ? 5 : widget_properties["numberOfLines"].to_i
-    
-    if @dashboard_configuration.selected_period?
-      from_date = @dashboard_configuration.from_datetime
-      to_date = DateTime.now
-    end
+<%
+   if has_role?(:user, @project)
+     limit = widget_properties["numberOfLines"].to_i == 0 ? 5 : widget_properties["numberOfLines"].to_i
+
+     from_date=nil
+     to_date=nil
+     if @dashboard_configuration.selected_period?
+       from_date = @dashboard_configuration.from_datetime
+       to_date = DateTime.now
+     end
 %>
 
-<div class="line-block">
-  <div style="float:right">
-    <a href="<%= url_for :controller => 'reviews', :action => 'index', :projects => [@project.id], 
-                         :assignee_login => '', :from => from_date, :to => to_date -%>">
-      <%= message('widgets.more') -%>
-    </a>
+  <div class="line-block">
+    <div style="float:right">
+      <a href="<%= url_for :controller => 'reviews', :action => 'index', :projects => [@project.id],
+                           :assignee_login => '', :from => from_date, :to => to_date -%>">
+        <%= message('widgets.more') -%>
+      </a>
+    </div>
+    <h3><%= message('widget.project_reviews.name') -%></h3>
   </div>
-  <h3><%= message('widget.project_reviews.name') -%></h3>
-</div>
 
-<div id="reviews-widget-<%= widget.id -%>">
-  <%= render :partial => 'project/widgets/reviews/reviews_list', 
-             :locals => {:assignee_login => '', 
-                         :project_key => @project.key,
-                         :statuses => 'OPEN,REOPENED',
-                         :resolution => '',
-                         :limit => limit,
-                         :widget_id => widget.id.to_s} %>
-</div>
+  <div id="reviews-widget-<%= widget.id -%>">
+    <%= render :partial => 'project/widgets/reviews/reviews_list',
+               :locals => {:assignee_login => '',
+                           :project_key => @project.key,
+                           :statuses => 'OPEN,REOPENED',
+                           :resolution => '',
+                           :limit => limit,
+                           :widget_id => widget.id.to_s} %>
+  </div>
 
 <% end %>
index 4652fa0e99b0cc124e728086ef37b86283d8aded..9e2ea6b765a7d0eea1e2f77b004debb9c5268329 100644 (file)
@@ -1,38 +1,38 @@
-<% 
-       assignee_login = params[:assignee_login] unless assignee_login
-       project_key = params[:project_key] unless project_key
-       statuses = params[:statuses] unless statuses
-       resolution = params[:resolution] unless resolution
-       limit = params[:limit] unless limit
-    widget_id = params[:widget_id] unless widget_id
-       
-    options = {}
-    options['statuses'] = statuses
-    options['assignees'] = assignee_login
-    options['projects'] = project_key
-    options['resolutions'] = resolution
-    options['sort'] = 'updated_at'
-    if @dashboard_configuration.selected_period?
-      from_date = @dashboard_configuration.from_datetime
-      options['from'] = from_date
-      to_date = DateTime.now
-      options['to'] = to_date
-    end
-    reviews = Review.search(options)
-    
-    # table pagination
-    page_size = 20
-    page_size = limit.to_i
-    total_number = reviews.size
-    if reviews.size > page_size
-      page_id = (params[:page_id] ? params[:page_id].to_i : 1)
-      page_count = reviews.size / page_size
-      page_count += 1 if (reviews.size % page_size > 0)
-      from = (page_id-1) * page_size
-      to = (page_id*page_size)-1
-      to = reviews.size-1 if to >= reviews.size
-      reviews = reviews[from..to]
-    end    
+<%
+   assignee_login = params[:assignee_login] unless assignee_login
+   project_key = params[:project_key] unless project_key
+   statuses = params[:statuses] unless statuses
+   resolution = params[:resolution] unless resolution
+   limit = params[:limit] unless limit
+   widget_id = params[:widget_id] unless widget_id
+
+   options = {}
+   options['statuses'] = statuses
+   options['assignees'] = assignee_login
+   options['projects'] = project_key
+   options['resolutions'] = resolution
+   options['sort'] = 'updated_at'
+   if @dashboard_configuration.selected_period?
+     from_date = @dashboard_configuration.from_datetime
+     options['from'] = from_date
+     to_date = DateTime.now
+     options['to'] = to_date
+   end
+   reviews = Review.search(options)
+
+   # table pagination
+   page_size = 20
+   page_size = limit.to_i
+   total_number = reviews.size
+   if reviews.size > page_size
+     page_id = (params[:page_id] ? params[:page_id].to_i : 1)
+     page_count = reviews.size / page_size
+     page_count += 1 if (reviews.size % page_size > 0)
+     from = (page_id-1) * page_size
+     to = (page_id*page_size)-1
+     to = reviews.size-1 if to >= reviews.size
+     reviews = reviews[from..to]
+   end
 %>
 
 <% if reviews.size ==0 %>
 
 <% else %>
 
-    <table id="reviews-widget-list-<%= widget_id -%>" class="data width100">
-      <thead>
-        <tr>
-          <th coslpan="4">
-          </th>
-        </tr>
-      </thead>
-      <tfoot>
-        <tr>
-          <td colspan="4">
-            <%= total_number -%> <%= message('results').downcase -%>
-               <% 
-                 if page_count
-                   page_count = 20 if page_count>20
-                   link_params = {}
-                   link_params[:controller] = 'reviews'
-                   link_params[:action] = 'widget_reviews_list'
-                   link_params[:assignee_login] = assignee_login if assignee_login && !assignee_login.blank?
-                   link_params[:project_key] = project_key
-                   link_params[:snapshot_id] = @snapshot.id
-                   link_params[:statuses] = statuses
-                   link_params[:resolution] = resolution if resolution && !resolution.blank?
-                   link_params[:limit] = limit
-                   link_params[:widget_id] = widget_id
-                   link_params[:period] = params[:period]
-               %>
-                 |
-                 <%= link_to_remote(message('paging_previous'),
-                                     :update => "reviews-widget-#{widget_id}",
-                                     :url => {:params => link_params.merge({:page_id => page_id-1})})  if page_id>1 %>
-                 <%= message('paging_previous') unless page_id>1 %>
-                 <% for index in 1..page_count %>
-                   <%= index.to_s if index==page_id %>
-                   <%= link_to_remote(index.to_s,
-                                      :update => "reviews-widget-#{widget_id}",
-                                      :url => {:params => link_params.merge({:page_id => index})}) unless index==page_id %>
-                 <% end %>
-                 <%= link_to_remote(message('paging_next'),
-                                     :update => "reviews-widget-#{widget_id}", 
-                                     :url => {:params => link_params.merge({:page_id => page_id+1})}) if page_id<page_count %>
-                 <%= message('paging_next') unless page_id<page_count %>
-               <% 
-                 end 
-               %>
-          </td>
-        </tr>
-      </tfoot>
-      <tbody>
-      <%
-         reviews.each do |review|
-           comment = review.comments.last
-      %>
-        <tr class="<%= cycle 'even', 'odd', :name => ('reviews-widget-list-' + widget_id) -%>">
-          <td>
-            <%= link_to h(review.id), :controller => "reviews", :action => "view", :id => review.id -%>
-          </td>
-          <td><img src="<%= ApplicationController.root_context -%>/images/priority/<%= review.severity -%>.png" title="<%= message(review.severity.downcase).capitalize -%>"/></td>
-          <td>
-            <%= link_to h(review.title), :controller => "reviews", :action => "view", :id => review.id -%>
+  <table id="reviews-widget-list-<%= widget_id -%>" class="data width100">
+    <thead>
+    <tr>
+      <th coslpan="4">
+      </th>
+    </tr>
+    </thead>
+    <tfoot>
+    <tr>
+      <td colspan="4">
+        <%= total_number -%> <%= message('results').downcase -%>
+        <%
+           if page_count
+             page_count = 20 if page_count>20
+             link_params = {}
+             link_params[:controller] = 'reviews'
+             link_params[:action] = 'widget_reviews_list'
+             link_params[:assignee_login] = assignee_login if assignee_login && !assignee_login.blank?
+             link_params[:project_key] = project_key
+             link_params[:snapshot_id] = @snapshot.id
+             link_params[:statuses] = statuses
+             link_params[:resolution] = resolution if resolution && !resolution.blank?
+             link_params[:limit] = limit
+             link_params[:widget_id] = widget_id
+             link_params[:period] = params[:period]
+        %>
+          |
+          <%= link_to_remote(message('paging_previous'),
+                             :update => "reviews-widget-#{widget_id}",
+                             :url => {:params => link_params.merge({:page_id => page_id-1})}) if page_id>1 %>
+          <%= message('paging_previous') unless page_id>1 %>
+          <% for index in 1..page_count %>
+            <%= index.to_s if index==page_id %>
+            <%= link_to_remote(index.to_s,
+                               :update => "reviews-widget-#{widget_id}",
+                               :url => {:params => link_params.merge({:page_id => index})}) unless index==page_id %>
+          <% end %>
+          <%= link_to_remote(message('paging_next'),
+                             :update => "reviews-widget-#{widget_id}",
+                             :url => {:params => link_params.merge({:page_id => page_id+1})}) if page_id<page_count %>
+          <%= message('paging_next') unless page_id<page_count %>
+        <%
+           end
+        %>
+      </td>
+    </tr>
+    </tfoot>
+    <tbody>
+    <%
+       reviews.each do |review|
+         comment = review.comments.last
+    %>
+      <tr class="<%= cycle 'even', 'odd', :name => ('reviews-widget-list-' + widget_id) -%>">
+        <td>
+          <%= link_to h(review.id), :controller => "reviews", :action => "view", :id => review.id -%>
+        </td>
+        <td><img src="<%= ApplicationController.root_context -%>/images/priority/<%= review.severity -%>.png" title="<%= message(review.severity.downcase).capitalize -%>"/></td>
+        <td>
+          <%= link_to h(review.title), :controller => "reviews", :action => "view", :id => review.id -%>
+          <% if comment %>
             <div class="comment-excerpt">
               <img src="<%= ApplicationController.root_context -%>/images/reviews/comment.png"/>
-              &nbsp;<b><%= comment.user.name -%> :</b> 
+              &nbsp;<b><%= comment.user.name -%> :</b>
               <%= comment.excerpt -%>
-               </div>            
-          </td>
-          <td class="nowrap"><%= distance_of_time_in_words_to_now(review.updated_at) -%></td>
-        </tr>
-      <%
-         end
-      %>
-      </tbody>
-    </table>
-    
+            </div>
+          <% end %>
+        </td>
+        <td class="nowrap"><%= distance_of_time_in_words_to_now(review.updated_at) -%></td>
+      </tr>
+    <%
+       end
+    %>
+    </tbody>
+  </table>
+
 <% end %>
\ No newline at end of file