diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index 56dbd9a..935d24e 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -358,3 +358,33 @@ table { background: #555; color: #BBB; } + +.ajax-users-select { + width: 400px; + + &.input-large { + width: 210px; + } +} + +.user-result { + .user-image { + float: left; + } + .user-name { + } + .user-username { + color: #999; + } +} + +.namespace-result { + .namespace-kind { + color: #AAA; + font-weight: normal; + } + .namespace-path { + margin-left: 10px; + font-weight: bolder; + } +} diff --git a/app/assets/stylesheets/selects.scss b/app/assets/stylesheets/selects.scss index 3b61594..8a695d8 100644 --- a/app/assets/stylesheets/selects.scss +++ b/app/assets/stylesheets/selects.scss @@ -1,22 +1,3 @@ -.ajax-users-select { - width: 400px; - - &.input-large { - width: 210px; - } -} - -.user-result { - .user-image { - float: left; - } - .user-name { - } - .user-username { - color: #999; - } -} - /** Chosen.js selectbox style override **/ .chosen-container { min-width: 100px; diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb index 088174f..4de0a65 100644 --- a/app/controllers/admin/projects_controller.rb +++ b/app/controllers/admin/projects_controller.rb @@ -1,5 +1,7 @@ class Admin::ProjectsController < Admin::ApplicationController - before_filter :project, only: [:edit, :show, :update, :destroy, :team_update] + before_filter :project, only: [:show, :transfer] + before_filter :group, only: [:show, :transfer] + before_filter :repository, only: [:show, :transfer] def index owner_id = params[:owner_id] @@ -14,8 +16,16 @@ class Admin::ProjectsController < Admin::ApplicationController end def show - @repository = @project.repository - @group = @project.group + end + + def transfer + result = ::Projects::TransferContext.new(@project, current_user, project: params).execute(:admin) + + if result + redirect_to [:admin, @project] + else + render :show + end end protected @@ -26,4 +36,12 @@ class Admin::ProjectsController < Admin::ApplicationController @project = Project.find_with_namespace(id) @project || render_404 end + + def group + @group ||= project.group + end + + def repository + @repository ||= project.repository + end end diff --git a/app/models/namespace.rb b/app/models/namespace.rb index fde0664..8f837c7 100644 --- a/app/models/namespace.rb +++ b/app/models/namespace.rb @@ -87,4 +87,8 @@ class Namespace < ActiveRecord::Base def send_update_instructions projects.each(&:send_move_instructions) end + + def kind + type == 'Group' ? 'group' : 'user' + end end diff --git a/app/views/admin/projects/show.html.haml b/app/views/admin/projects/show.html.haml index 65b9911..c9c9c38 100644 --- a/app/views/admin/projects/show.html.haml +++ b/app/views/admin/projects/show.html.haml @@ -74,6 +74,23 @@ %span.cgreen %i.icon-lock Private + .ui-box + .title + Transfer project + .ui-box-body + = form_for @project, url: transfer_admin_project_path(@project), method: :put do |f| + .control-group + = f.label :namespace_id, "Namespace" + .controls + = namespace_select_tag :namespace_id, selected: params[:namespace_id], class: 'input-large' + + .control-group + .controls + = f.submit 'Transfer', class: 'btn btn-primary' + + + + .span6 - if @group .ui-box diff --git a/config/routes.rb b/config/routes.rb index 3b69239..06e8fdd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -89,7 +89,13 @@ Gitlab::Application.routes.draw do resources :broadcast_messages, only: [:index, :create, :destroy] resource :logs, only: [:show] resource :background_jobs, controller: 'background_jobs', only: [:show] - resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ }, only: [:index, :show] + + resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ }, only: [:index, :show] do + member do + put :transfer + end + end + root to: "dashboard#index" end -- libgit2 0.21.2