Commit 552b3105fba11493d25575ee9220631a816141f6
1 parent
2b683b0d
Exists in
master
and in
4 other branches
Fixed admin area. Create project only from one place
Showing
9 changed files
with
42 additions
and
101 deletions
Show diff stats
app/controllers/admin/projects_controller.rb
| 1 | 1 | class Admin::ProjectsController < AdminController |
| 2 | - before_filter :admin_project, only: [:edit, :show, :update, :destroy, :team_update] | |
| 2 | + before_filter :project, only: [:edit, :show, :update, :destroy, :team_update] | |
| 3 | 3 | |
| 4 | 4 | def index |
| 5 | - @admin_projects = Project.scoped | |
| 6 | - @admin_projects = @admin_projects.search(params[:name]) if params[:name].present? | |
| 7 | - @admin_projects = @admin_projects.order("name ASC").page(params[:page]).per(20) | |
| 5 | + @projects = Project.scoped | |
| 6 | + @projects = @projects.search(params[:name]) if params[:name].present? | |
| 7 | + @projects = @projects.order("name ASC").page(params[:page]).per(20) | |
| 8 | 8 | end |
| 9 | 9 | |
| 10 | 10 | def show |
| 11 | 11 | @users = User.scoped |
| 12 | - @users = @users.not_in_project(@admin_project) if @admin_project.users.present? | |
| 12 | + @users = @users.not_in_project(@project) if @project.users.present? | |
| 13 | 13 | @users = @users.all |
| 14 | 14 | end |
| 15 | 15 | |
| 16 | - def new | |
| 17 | - @admin_project = Project.new | |
| 18 | - end | |
| 19 | - | |
| 20 | 16 | def edit |
| 21 | 17 | end |
| 22 | 18 | |
| 23 | 19 | def team_update |
| 24 | - @admin_project.add_users_ids_to_team(params[:user_ids], params[:project_access]) | |
| 25 | - | |
| 26 | - redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.' | |
| 27 | - end | |
| 28 | - | |
| 29 | - def create | |
| 30 | - @admin_project = Project.new(params[:project]) | |
| 31 | - @admin_project.owner = current_user | |
| 20 | + @project.add_users_ids_to_team(params[:user_ids], params[:project_access]) | |
| 32 | 21 | |
| 33 | - if @admin_project.save | |
| 34 | - redirect_to [:admin, @admin_project], notice: 'Project was successfully created.' | |
| 35 | - else | |
| 36 | - render action: "new" | |
| 37 | - end | |
| 22 | + redirect_to [:admin, @project], notice: 'Project was successfully updated.' | |
| 38 | 23 | end |
| 39 | 24 | |
| 40 | 25 | def update |
| 41 | 26 | owner_id = params[:project].delete(:owner_id) |
| 42 | 27 | |
| 43 | 28 | if owner_id |
| 44 | - @admin_project.owner = User.find(owner_id) | |
| 29 | + @project.owner = User.find(owner_id) | |
| 45 | 30 | end |
| 46 | 31 | |
| 47 | - if @admin_project.update_attributes(params[:project]) | |
| 48 | - redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.' | |
| 32 | + if @project.update_attributes(params[:project], as: :admin) | |
| 33 | + redirect_to [:admin, @project], notice: 'Project was successfully updated.' | |
| 49 | 34 | else |
| 50 | 35 | render action: "edit" |
| 51 | 36 | end |
| 52 | 37 | end |
| 53 | 38 | |
| 54 | 39 | def destroy |
| 55 | - @admin_project.destroy | |
| 56 | - | |
| 57 | - redirect_to admin_projects_url, notice: 'Project was successfully deleted.' | |
| 58 | - end | |
| 59 | - | |
| 60 | - private | |
| 40 | + @project.destroy | |
| 61 | 41 | |
| 62 | - def admin_project | |
| 63 | - @admin_project = Project.find_by_code(params[:id]) | |
| 42 | + redirect_to projects_url, notice: 'Project was successfully deleted.' | |
| 64 | 43 | end |
| 65 | 44 | end | ... | ... |
app/models/project.rb
| ... | ... | @@ -28,7 +28,10 @@ class Project < ActiveRecord::Base |
| 28 | 28 | include Team |
| 29 | 29 | |
| 30 | 30 | attr_accessible :name, :path, :description, :code, :default_branch, :issues_enabled, |
| 31 | - :wall_enabled, :merge_requests_enabled, :wiki_enabled | |
| 31 | + :wall_enabled, :merge_requests_enabled, :wiki_enabled, as: [:default, :admin] | |
| 32 | + | |
| 33 | + attr_accessible :namespace_id, as: :admin | |
| 34 | + | |
| 32 | 35 | attr_accessor :error_code |
| 33 | 36 | |
| 34 | 37 | # Relations | ... | ... |
app/views/admin/projects/_form.html.haml
| ... | ... | @@ -11,16 +11,13 @@ |
| 11 | 11 | .input |
| 12 | 12 | = f.text_field :name, placeholder: "Example Project", class: "xxlarge" |
| 13 | 13 | |
| 14 | - %hr | |
| 15 | - .adv_settings | |
| 16 | - %h6 Advanced settings: | |
| 14 | + %fieldset.adv_settings | |
| 15 | + %legend Advanced settings: | |
| 17 | 16 | .clearfix |
| 18 | 17 | = f.label :path do |
| 19 | 18 | Path |
| 20 | 19 | .input |
| 21 | - .input-prepend | |
| 22 | - %strong | |
| 23 | - = text_field_tag :ppath, @admin_project.path_to_repo, class: "xlarge", disabled: true | |
| 20 | + = text_field_tag :ppath, @project.path_to_repo, class: "xlarge", disabled: true | |
| 24 | 21 | .clearfix |
| 25 | 22 | = f.label :code do |
| 26 | 23 | URL |
| ... | ... | @@ -31,6 +28,10 @@ |
| 31 | 28 | |
| 32 | 29 | - unless project.new_record? |
| 33 | 30 | .clearfix |
| 31 | + = f.label :namespace_id | |
| 32 | + .input= f.select :namespace_id, namespaces_options, {}, {class: 'chosen'} | |
| 33 | + | |
| 34 | + .clearfix | |
| 34 | 35 | = f.label :owner_id |
| 35 | 36 | .input= f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'} |
| 36 | 37 | |
| ... | ... | @@ -40,9 +41,8 @@ |
| 40 | 41 | .input= f.select(:default_branch, project.heads.map(&:name), {}, style: "width:210px;") |
| 41 | 42 | |
| 42 | 43 | - unless project.new_record? |
| 43 | - %hr | |
| 44 | - .adv_settings | |
| 45 | - %h6 Features: | |
| 44 | + %fieldset.adv_settings | |
| 45 | + %legend Features: | |
| 46 | 46 | |
| 47 | 47 | .clearfix |
| 48 | 48 | = f.label :issues_enabled, "Issues" | ... | ... |
app/views/admin/projects/_new_form.html.haml
| ... | ... | @@ -1,29 +0,0 @@ |
| 1 | -= form_for [:admin, @admin_project] do |f| | |
| 2 | - - if @admin_project.errors.any? | |
| 3 | - .alert-message.block-message.error | |
| 4 | - %span= @admin_project.errors.full_messages.first | |
| 5 | - .clearfix.project_name_holder | |
| 6 | - = f.label :name do | |
| 7 | - Project name is | |
| 8 | - .input | |
| 9 | - = f.text_field :name, placeholder: "Example Project", class: "xxlarge" | |
| 10 | - = f.submit 'Create project', class: "btn primary project-submit" | |
| 11 | - | |
| 12 | - %hr | |
| 13 | - %div.adv_settings | |
| 14 | - %h6 Advanced settings: | |
| 15 | - .clearfix | |
| 16 | - = f.label :path do | |
| 17 | - Git Clone | |
| 18 | - .input | |
| 19 | - .input-prepend | |
| 20 | - %span.add-on= Gitlab.config.ssh_path | |
| 21 | - = f.text_field :path, placeholder: "example_project", disabled: !@admin_project.new_record? | |
| 22 | - %span.add-on= ".git" | |
| 23 | - .clearfix | |
| 24 | - = f.label :code do | |
| 25 | - URL | |
| 26 | - .input | |
| 27 | - .input-prepend | |
| 28 | - %span.add-on= web_app_url | |
| 29 | - = f.text_field :code, placeholder: "example" |
app/views/admin/projects/edit.html.haml
app/views/admin/projects/index.html.haml
| 1 | 1 | = render 'admin/shared/projects_head' |
| 2 | 2 | %h3.page_title |
| 3 | 3 | Projects |
| 4 | - = link_to 'New Project', new_admin_project_path, class: "btn small right" | |
| 4 | + = link_to 'New Project', new_project_path, class: "btn small right" | |
| 5 | 5 | %br |
| 6 | 6 | = form_tag admin_projects_path, method: :get, class: 'form-inline' do |
| 7 | 7 | = text_field_tag :name, params[:name], class: "xlarge" |
| ... | ... | @@ -16,7 +16,7 @@ |
| 16 | 16 | %th Edit |
| 17 | 17 | %th.cred Danger Zone! |
| 18 | 18 | |
| 19 | - - @admin_projects.each do |project| | |
| 19 | + - @projects.each do |project| | |
| 20 | 20 | %tr |
| 21 | 21 | %td= link_to project.name, [:admin, project] |
| 22 | 22 | %td= project.path |
| ... | ... | @@ -24,4 +24,4 @@ |
| 24 | 24 | %td= last_commit(project) |
| 25 | 25 | %td= link_to 'Edit', edit_admin_project_path(project), id: "edit_#{dom_id(project)}", class: "btn small" |
| 26 | 26 | %td.bgred= link_to 'Destroy', [:admin, project], confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn small danger" |
| 27 | -= paginate @admin_projects, theme: "admin" | |
| 27 | += paginate @projects, theme: "admin" | ... | ... |
app/views/admin/projects/new.html.haml
| ... | ... | @@ -1,12 +0,0 @@ |
| 1 | -.project_new_holder | |
| 2 | - %h3.page_title | |
| 3 | - New Project | |
| 4 | - %hr | |
| 5 | - = render 'new_form' | |
| 6 | -%div.save-project-loader.hide | |
| 7 | - %center | |
| 8 | - = image_tag "ajax_loader.gif" | |
| 9 | - %h3 Creating project & repository. Please wait a few minutes | |
| 10 | - | |
| 11 | -:javascript | |
| 12 | - $(function(){ new Projects(); }); |
app/views/admin/projects/show.html.haml
| 1 | 1 | = render 'admin/shared/projects_head' |
| 2 | 2 | %h3.page_title |
| 3 | - Project: #{@admin_project.name} | |
| 4 | - = link_to edit_admin_project_path(@admin_project), class: "btn right" do | |
| 3 | + Project: #{@project.name} | |
| 4 | + = link_to edit_admin_project_path(@project), class: "btn right" do | |
| 5 | 5 | %i.icon-edit |
| 6 | 6 | Edit |
| 7 | 7 | |
| 8 | -- if !@admin_project.has_post_receive_file? && @admin_project.has_commits? | |
| 8 | +- if !@project.has_post_receive_file? && @project.has_commits? | |
| 9 | 9 | %br |
| 10 | 10 | .alert.alert-error |
| 11 | 11 | %span |
| ... | ... | @@ -25,36 +25,36 @@ |
| 25 | 25 | %b |
| 26 | 26 | Name: |
| 27 | 27 | %td |
| 28 | - = @admin_project.name | |
| 28 | + = @project.name | |
| 29 | 29 | %tr |
| 30 | 30 | %td |
| 31 | 31 | %b |
| 32 | 32 | Code: |
| 33 | 33 | %td |
| 34 | - = @admin_project.code | |
| 34 | + = @project.code | |
| 35 | 35 | %tr |
| 36 | 36 | %td |
| 37 | 37 | %b |
| 38 | 38 | Path: |
| 39 | 39 | %td |
| 40 | - = @admin_project.path | |
| 40 | + %code= @project.path_to_repo | |
| 41 | 41 | %tr |
| 42 | 42 | %td |
| 43 | 43 | %b |
| 44 | 44 | Owner: |
| 45 | 45 | %td |
| 46 | - = @admin_project.owner_name || '(deleted)' | |
| 46 | + = @project.owner_name || '(deleted)' | |
| 47 | 47 | %tr |
| 48 | 48 | %td |
| 49 | 49 | %b |
| 50 | 50 | Post Receive File: |
| 51 | 51 | %td |
| 52 | - = check_box_tag :post_receive_file, 1, @admin_project.has_post_receive_file?, disabled: true | |
| 52 | + = check_box_tag :post_receive_file, 1, @project.has_post_receive_file?, disabled: true | |
| 53 | 53 | %br |
| 54 | 54 | %h3 |
| 55 | 55 | Team |
| 56 | 56 | %small |
| 57 | - (#{@admin_project.users_projects.count}) | |
| 57 | + (#{@project.users_projects.count}) | |
| 58 | 58 | %br |
| 59 | 59 | %table.zebra-striped |
| 60 | 60 | %thead |
| ... | ... | @@ -64,7 +64,7 @@ |
| 64 | 64 | %th Repository Access |
| 65 | 65 | %th |
| 66 | 66 | |
| 67 | - - @admin_project.users_projects.each do |tm| | |
| 67 | + - @project.users_projects.each do |tm| | |
| 68 | 68 | %tr |
| 69 | 69 | %td |
| 70 | 70 | = link_to tm.user_name, admin_user_path(tm.user) |
| ... | ... | @@ -75,7 +75,7 @@ |
| 75 | 75 | %br |
| 76 | 76 | %h3 Add new team member |
| 77 | 77 | %br |
| 78 | -= form_tag team_update_admin_project_path(@admin_project), class: "bulk_import", method: :put do | |
| 78 | += form_tag team_update_admin_project_path(@project), class: "bulk_import", method: :put do | |
| 79 | 79 | %table.zebra-striped |
| 80 | 80 | %thead |
| 81 | 81 | %tr | ... | ... |
config/routes.rb
| ... | ... | @@ -49,7 +49,7 @@ Gitlab::Application.routes.draw do |
| 49 | 49 | delete :remove_project |
| 50 | 50 | end |
| 51 | 51 | end |
| 52 | - resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ } do | |
| 52 | + resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ }, except: [:new, :create] do | |
| 53 | 53 | member do |
| 54 | 54 | get :team |
| 55 | 55 | put :team_update | ... | ... |