OSDN Git Service

Fixed admin area. Create project only from one place
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Fri, 23 Nov 2012 04:31:09 +0000 (07:31 +0300)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Fri, 23 Nov 2012 04:31:09 +0000 (07:31 +0300)
app/controllers/admin/projects_controller.rb
app/models/project.rb
app/views/admin/projects/_form.html.haml
app/views/admin/projects/_new_form.html.haml [deleted file]
app/views/admin/projects/edit.html.haml
app/views/admin/projects/index.html.haml
app/views/admin/projects/new.html.haml [deleted file]
app/views/admin/projects/show.html.haml
config/routes.rb

index d27b657..7829cc9 100644 (file)
@@ -1,65 +1,44 @@
 class Admin::ProjectsController < AdminController
-  before_filter :admin_project, only: [:edit, :show, :update, :destroy, :team_update]
+  before_filter :project, only: [:edit, :show, :update, :destroy, :team_update]
 
   def index
-    @admin_projects = Project.scoped
-    @admin_projects = @admin_projects.search(params[:name]) if params[:name].present?
-    @admin_projects = @admin_projects.order("name ASC").page(params[:page]).per(20)
+    @projects = Project.scoped
+    @projects = @projects.search(params[:name]) if params[:name].present?
+    @projects = @projects.order("name ASC").page(params[:page]).per(20)
   end
 
   def show
     @users = User.scoped
-    @users = @users.not_in_project(@admin_project) if @admin_project.users.present?
+    @users = @users.not_in_project(@project) if @project.users.present?
     @users = @users.all
   end
 
-  def new
-    @admin_project = Project.new
-  end
-
   def edit
   end
 
   def team_update
-    @admin_project.add_users_ids_to_team(params[:user_ids], params[:project_access])
-
-    redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.'
-  end
-
-  def create
-    @admin_project = Project.new(params[:project])
-    @admin_project.owner = current_user
+    @project.add_users_ids_to_team(params[:user_ids], params[:project_access])
 
-    if @admin_project.save
-      redirect_to [:admin, @admin_project], notice: 'Project was successfully created.'
-    else
-      render action: "new"
-    end
+    redirect_to [:admin, @project], notice: 'Project was successfully updated.'
   end
 
   def update
     owner_id = params[:project].delete(:owner_id)
 
     if owner_id
-      @admin_project.owner = User.find(owner_id)
+      @project.owner = User.find(owner_id)
     end
 
-    if @admin_project.update_attributes(params[:project])
-      redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.'
+    if @project.update_attributes(params[:project], as: :admin)
+      redirect_to [:admin, @project], notice: 'Project was successfully updated.'
     else
       render action: "edit"
     end
   end
 
   def destroy
-    @admin_project.destroy
-
-    redirect_to admin_projects_url, notice: 'Project was successfully deleted.'
-  end
-
-  private
+    @project.destroy
 
-  def admin_project
-    @admin_project = Project.find_by_code(params[:id])
+    redirect_to projects_url, notice: 'Project was successfully deleted.'
   end
 end
index eb3b1b3..07697b1 100644 (file)
@@ -28,7 +28,10 @@ class Project < ActiveRecord::Base
   include Team
 
   attr_accessible :name, :path, :description, :code, :default_branch, :issues_enabled,
-                  :wall_enabled, :merge_requests_enabled, :wiki_enabled
+                  :wall_enabled, :merge_requests_enabled, :wiki_enabled, as: [:default, :admin]
+
+  attr_accessible :namespace_id, as: :admin
+
   attr_accessor :error_code
 
   # Relations
index 4848e73..a238d93 100644 (file)
     .input
       = f.text_field :name, placeholder: "Example Project", class: "xxlarge"
 
-  %hr
-  .adv_settings
-    %h6 Advanced settings:
+  %fieldset.adv_settings
+    %legend Advanced settings:
     .clearfix
       = f.label :path do
         Path
       .input
-        .input-prepend
-          %strong
-            = text_field_tag :ppath, @admin_project.path_to_repo, class: "xlarge", disabled: true
+        = text_field_tag :ppath, @project.path_to_repo, class: "xlarge", disabled: true
     .clearfix
       = f.label :code do
         URL
 
     - unless project.new_record?
       .clearfix
+        = f.label :namespace_id
+        .input= f.select :namespace_id, namespaces_options, {}, {class: 'chosen'}
+
+      .clearfix
         = f.label :owner_id
         .input= f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
 
@@ -40,9 +41,8 @@
           .input= f.select(:default_branch, project.heads.map(&:name), {}, style: "width:210px;")
 
   - unless project.new_record?
-    %hr
-    .adv_settings
-      %h6 Features:
+    %fieldset.adv_settings
+      %legend Features:
 
       .clearfix
         = f.label :issues_enabled, "Issues"
diff --git a/app/views/admin/projects/_new_form.html.haml b/app/views/admin/projects/_new_form.html.haml
deleted file mode 100644 (file)
index d793b6f..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-= form_for [:admin, @admin_project] do |f|
-  - if @admin_project.errors.any?
-    .alert-message.block-message.error
-      %span= @admin_project.errors.full_messages.first
-  .clearfix.project_name_holder
-    = f.label :name do
-      Project name is
-    .input
-      = f.text_field :name, placeholder: "Example Project", class: "xxlarge"
-      = f.submit 'Create project', class: "btn primary project-submit"
-
-  %hr
-  %div.adv_settings
-    %h6 Advanced settings:
-    .clearfix
-      = f.label :path do
-        Git Clone
-      .input
-        .input-prepend
-          %span.add-on= Gitlab.config.ssh_path
-          = f.text_field :path, placeholder: "example_project", disabled: !@admin_project.new_record?
-          %span.add-on= ".git"
-    .clearfix
-      = f.label :code do
-        URL
-      .input
-        .input-prepend
-          %span.add-on= web_app_url
-          = f.text_field :code, placeholder: "example"
index b525567..7b59a0c 100644 (file)
@@ -1,3 +1,3 @@
-%h3.page_title #{@admin_project.name} &rarr; Edit project 
+%h3.page_title #{@project.name} &rarr; Edit project
 %hr
-= render 'form', project: @admin_project
+= render 'form', project: @project
index 3335fce..7239794 100644 (file)
@@ -1,7 +1,7 @@
 = render 'admin/shared/projects_head'
 %h3.page_title
   Projects
-  = link_to 'New Project', new_admin_project_path, class: "btn small right"
+  = link_to 'New Project', new_project_path, class: "btn small right"
 %br
 = form_tag admin_projects_path, method: :get, class: 'form-inline' do
   = text_field_tag :name, params[:name], class: "xlarge"
@@ -16,7 +16,7 @@
     %th Edit
     %th.cred Danger Zone!
 
-  - @admin_projects.each do |project|
+  - @projects.each do |project|
     %tr
       %td= link_to project.name, [:admin, project]
       %td= project.path
@@ -24,4 +24,4 @@
       %td= last_commit(project)
       %td= link_to 'Edit', edit_admin_project_path(project), id: "edit_#{dom_id(project)}", class: "btn small"
       %td.bgred= link_to 'Destroy', [:admin, project], confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn small danger"
-= paginate @admin_projects, theme: "admin"
+= paginate @projects, theme: "admin"
diff --git a/app/views/admin/projects/new.html.haml b/app/views/admin/projects/new.html.haml
deleted file mode 100644 (file)
index 933cb67..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-.project_new_holder
-  %h3.page_title
-    New Project
-  %hr
-  = render 'new_form'
-%div.save-project-loader.hide
-  %center
-    = image_tag "ajax_loader.gif"
-    %h3 Creating project &amp; repository. Please wait a few minutes
-
-:javascript
-  $(function(){ new Projects(); });
index 78df8f2..ae5da37 100644 (file)
@@ -1,11 +1,11 @@
 = render 'admin/shared/projects_head'
 %h3.page_title
-  Project: #{@admin_project.name}
-  = link_to edit_admin_project_path(@admin_project), class: "btn right" do
+  Project: #{@project.name}
+  = link_to edit_admin_project_path(@project), class: "btn right" do
     %i.icon-edit
     Edit
 
-- if !@admin_project.has_post_receive_file? && @admin_project.has_commits?
+- if !@project.has_post_receive_file? && @project.has_commits?
   %br
   .alert.alert-error
     %span
       %b
         Name:
     %td
-      = @admin_project.name
+      = @project.name
   %tr
     %td
       %b
         Code:
     %td
-      = @admin_project.code
+      = @project.code
   %tr
     %td
       %b
         Path:
     %td
-      = @admin_project.path
+      %code= @project.path_to_repo
   %tr
     %td
       %b
         Owner:
     %td
-      = @admin_project.owner_name || '(deleted)'
+      = @project.owner_name || '(deleted)'
   %tr
     %td
       %b
         Post Receive File:
     %td
-      = check_box_tag :post_receive_file, 1, @admin_project.has_post_receive_file?, disabled: true
+      = check_box_tag :post_receive_file, 1, @project.has_post_receive_file?, disabled: true
 %br
 %h3
   Team
   %small
-    (#{@admin_project.users_projects.count})
+    (#{@project.users_projects.count})
 %br
 %table.zebra-striped
   %thead
@@ -64,7 +64,7 @@
       %th Repository Access
       %th
 
-  - @admin_project.users_projects.each do |tm|
+  - @project.users_projects.each do |tm|
     %tr
       %td
         = link_to tm.user_name, admin_user_path(tm.user)
@@ -75,7 +75,7 @@
 %br
 %h3 Add new team member
 %br
-= form_tag team_update_admin_project_path(@admin_project), class: "bulk_import", method: :put  do
+= form_tag team_update_admin_project_path(@project), class: "bulk_import", method: :put  do
   %table.zebra-striped
     %thead
       %tr
index 192f488..a7006ec 100644 (file)
@@ -49,7 +49,7 @@ Gitlab::Application.routes.draw do
         delete :remove_project
       end
     end
-    resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ } do
+    resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ }, except: [:new, :create] do
       member do
         get :team
         put :team_update