From a0c84b3c8e9a31d409a0803dc248a649e3ce13e9 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Lievremont Date: Wed, 25 Sep 2013 18:29:37 +0200 Subject: [PATCH] SONAR-4711 Initial version of provisioning page in settings --- .../resources/org/sonar/l10n/core.properties | 17 +++++ .../DefaultRubyComponentService.java | 1 + .../controllers/provisioning_controller.rb | 35 +++++++++- .../app/views/layouts/_breadcrumb.html.erb | 16 +++-- .../app/views/layouts/_layout.html.erb | 3 +- .../views/provisioning/_create_form.html.erb | 30 +++++++++ .../app/views/provisioning/index.html.erb | 65 ++++++++++++++++--- 7 files changed, 148 insertions(+), 19 deletions(-) create mode 100644 sonar-server/src/main/webapp/WEB-INF/app/views/provisioning/_create_form.html.erb diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties b/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties index 7de16a1dcd2..57dceb2706e 100644 --- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties +++ b/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties @@ -271,6 +271,14 @@ qualifiers.all.TRK=All Projects qualifiers.all.VW=All Views qualifiers.all.DEV=All Developers +qualifiers.new.TRK=New Project +qualifiers.new.VW=New View +qualifiers.new.DEV=New Developer + +qualifiers.create.TRK=Create Project +qualifiers.create.VW=Create View +qualifiers.create.DEV=Create Developer + #------------------------------------------------------------------------------ # # PROJECT LINKS @@ -1689,6 +1697,15 @@ bulk_deletion.following_ghosts_can_be_deleted=The following ghosts can be safely bulk_deletion.delete_all_ghosts=Delete all ghosts +#------------------------------------------------------------------------------ +# +# RESOURCE PROVISIONING +# +#------------------------------------------------------------------------------ +provisioning.missing.key=Key is missing +provisioning.missing.name=Name is missing + + #------------------------------------------------------------------------------ # # TREEMAP diff --git a/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java b/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java index fb81864132d..3fd456cb3f5 100644 --- a/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java +++ b/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java @@ -50,6 +50,7 @@ public class DefaultRubyComponentService implements RubyComponentService { new ResourceDto() .setKey(kee) .setName(name) + .setLongName(name) .setScope(scope) .setQualifier(qualifier) .setCreatedAt(new Date())); diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/provisioning_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/provisioning_controller.rb index 7e2deb3eca1..4159c2c8d62 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/provisioning_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/provisioning_controller.rb @@ -19,9 +19,10 @@ # class ProvisioningController < ApplicationController - SECTION=Navigation::SECTION_CONFIGURATION - before_filter :admin_required + verify :method => :delete, :only => [:delete], :redirect_to => {:action => :index} + + SECTION=Navigation::SECTION_CONFIGURATION def index @tabs = provisionable_qualifiers @@ -32,7 +33,35 @@ class ProvisioningController < ApplicationController params['pageSize'] = 20 params['qualifiers'] = @selected_tab - @query_results = Internal.component_api.findProvisioned(:qualifiers) + @query_result = Internal.component_api.findProvisionedProjects(params) + end + + def create + verify_post_request + access_denied unless is_admin? + @key = params[:key] + @name = params[:name] + @qualifier = params[:qualifier] + + begin + bad_request('provisioning.missing.key') if @key.blank? + bad_request('provisioning.missing.name') if @name.blank? + + Internal.component_api.createComponent(@key, @name, 'PRJ', @qualifier) + Internal.permissions.applyDefaultPermissionTemplate(@key) + + redirect_to :action => 'index' + rescue Exception => e + flash[:error]= Api::Utils.message(e.message) + render :partial => 'create_form', :qualifier => @qualifier, :key => @key, :name => @name, :status => 400 + end + end + + def create_form + @key = params[:key] + @name = params[:name] + @qualifier = params[:qualifier] + render :partial => 'create_form' end private diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_breadcrumb.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_breadcrumb.html.erb index c618d86d29b..817ee0c470e 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_breadcrumb.html.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_breadcrumb.html.erb @@ -61,12 +61,16 @@ # ======== Path for resources ======== - if displayed_resource && displayed_resource.last_snapshot - resources=[] - s=displayed_resource.last_snapshot - while (s!=nil) do - resources.insert(0, s.project) - s=s.parent + if displayed_resource + if displayed_resource.last_snapshot + resources=[] + s=displayed_resource.last_snapshot + while (s!=nil) do + resources.insert(0, s.project) + s=s.parent + end + else + resources = [displayed_resource] end %> <% diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb index 6d5a385a75d..4846e47b609 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_layout.html.erb @@ -85,7 +85,8 @@
  • "><%= message('issues_drilldown.page') -%>
  • - <% controller.java_facade.getPages(Navigation::SECTION_RESOURCE, @project.scope, @project.qualifier, @project.language, @project.last_snapshot.metric_keys.to_java(:string)).each do |page| + <% project_metrics = @project.last_snapshot.metric_keys.to_java(:string) if @project.last_snapshot + controller.java_facade.getPages(Navigation::SECTION_RESOURCE, @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()}") %>
  • diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/provisioning/_create_form.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/provisioning/_create_form.html.erb new file mode 100644 index 00000000000..1b4edee5e04 --- /dev/null +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/provisioning/_create_form.html.erb @@ -0,0 +1,30 @@ +
    + +
    + <% if flash[:error] %> +

    <%= h flash[:error] -%>

    + <% end %> + + + +
    +
    + + + diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/provisioning/index.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/provisioning/index.html.erb index 1639ec74647..652ebb56803 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/provisioning/index.html.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/provisioning/index.html.erb @@ -1,13 +1,60 @@ -

    <%= message('provisioning.page') -%>

    +
    +
      +
    • + <%= link_to message('create'), {:action => :create_form, :qualifier => @selected_tab}, :id => "create-link-provisioning", :class => 'open-modal link-action' %> +
    • +
    - +

    <%= message('provisioning.page') -%>

    -
    + + +
    + + <% + found_resources_count = @query_result.paging.total + found_resources_ids = @query_result.components.map {|r| r.id.to_s}.join(',') + %> + + <% if @query_result.components.empty? %> +
    + <%= message('no_results') -%> + <% else %> + + + + + + + + + + <% @query_result.components.each_with_index do |resource, index| %> + + + + + + <% end %> + + <%= paginate_java(@query_result.paging, :colspan => 3, :id => 'resource-provisioning-foot', :include_loading_icon => true) { |label, page_id| + link_to(label, params.merge({:pageIndex => page_id})) + } + %> +
    <%= message('name') -%> <%= message('key') -%><%= message('created') -%>
    + <%= link_to h(resource.name), {:controller => :project, :action => :settings, :id => resource.key}, + :id => "view-#{u resource.key}" %> + <%= h resource.key -%>
    + + <% end %> + +
    + -- 2.39.5