diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2014-10-06 22:44:03 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2014-10-06 22:44:03 +0200 |
commit | 46d6f0d94f528184f02d8a7de268a49364ffaec7 (patch) | |
tree | b549707ea4677d927b9acb8dd4b5df1860792902 | |
parent | 6ac7d32bc92d65d760bfc615427b12e32ed1025f (diff) | |
download | sonarqube-46d6f0d94f528184f02d8a7de268a49364ffaec7.tar.gz sonarqube-46d6f0d94f528184f02d8a7de268a49364ffaec7.zip |
SONAR-5699 Ruby pages are not listed in project sidebar
-rw-r--r-- | server/sonar-web/src/main/webapp/WEB-INF/app/controllers/plugins/resource_controller.rb | 55 | ||||
-rw-r--r-- | server/sonar-web/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb | 8 |
2 files changed, 63 insertions, 0 deletions
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/plugins/resource_controller.rb b/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/plugins/resource_controller.rb new file mode 100644 index 00000000000..88c12c78ab8 --- /dev/null +++ b/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/plugins/resource_controller.rb @@ -0,0 +1,55 @@ +# +# SonarQube, open source software quality management tool. +# Copyright (C) 2008-2014 SonarSource +# mailto:contact AT sonarsource DOT com +# +# SonarQube is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 3 of the License, or (at your option) any later version. +# +# SonarQube is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +class Plugins::ResourceController < ApplicationController + + SECTION=Navigation::SECTION_RESOURCE + helper :project + + def index + @resource = ::Project.by_key(params[:id]) + not_found("Not found") unless @resource + @project=@resource # for backward-compatibility + + @snapshot=@resource.last_snapshot + + page_id=params[:page] + @page_proxy=java_facade.getPage(page_id) + + return redirect_to(home_path) unless @page_proxy + + authorized=@page_proxy.getUserRoles().size==0 + unless authorized + @page_proxy.getUserRoles().each do |role| + authorized= (role=='user') || (role=='viewer') || has_role?(role, @resource) + break if authorized + end + end + + if authorized + @page=@page_proxy.getTarget() + render :template => 'plugins/rails_page' + else + access_denied + end + + rescue ActiveRecord::RecordNotFound + redirect_to home_path + end +end diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb index 1b6e846b19c..da3714624ca 100644 --- a/server/sonar-web/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb +++ b/server/sonar-web/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb @@ -97,6 +97,14 @@ <li class="<%= 'active' if request.request_uri.include?('/drilldown/issues') -%>"> <a href="<%= ApplicationController.root_context -%>/drilldown/issues/<%= @project.id -%><%= "?"+period_param if period_param -%>"><%= message('issues_drilldown.page') -%></a> </li> + <% project_metrics = @project.last_snapshot.metric_keys.to_java(:string) if @project.last_snapshot + controller.java_facade.getPages(Navigation::SECTION_RESOURCE.key, @project.scope, @project.qualifier, @project.language, project_metrics).each do |page| + page_url = (page.isController() ? "#{page.getId()}?id=#{@project.id}" : "/plugins/resource/#{@project.id}?page=#{page.getId()}") + %> + <li class="<%= 'active' if request.request_uri.include?(page_url) -%>"> + <a href="<%= ApplicationController.root_context -%><%= page_url -%>"><%= h message(page.getId() + '.page', :default => page.getTitle()) -%></a> + </li> + <% end %> <li class="<%= 'active' if request.request_uri.include?('/design/index') -%>"> <a href="<%= ApplicationController.root_context -%>/design/index/<%= @project.key -%>"><%= message('design.page') -%></a> </li> |