Commit 6c416aaac85fe16cd4900a686714627e9a0fcdbc

Authored by Dmitriy Zaporozhets
1 parent da3e34c0

Issues, MR, Wall can be enabled/disabled per project

app/controllers/issues_controller.rb
1 1 class IssuesController < ApplicationController
2 2 before_filter :authenticate_user!
3 3 before_filter :project
  4 + before_filter :module_enabled
4 5 before_filter :issue, :only => [:edit, :update, :destroy, :show]
5 6 layout "project"
6 7  
... ... @@ -132,4 +133,8 @@ class IssuesController &lt; ApplicationController
132 133 def authorize_admin_issue!
133 134 can?(current_user, :admin_issue, @issue)
134 135 end
  136 +
  137 + def module_enabled
  138 + return render_404 unless @project.issues_enabled
  139 + end
135 140 end
... ...
app/controllers/merge_requests_controller.rb
1 1 class MergeRequestsController < ApplicationController
2 2 before_filter :authenticate_user!
3 3 before_filter :project
  4 + before_filter :module_enabled
4 5 before_filter :merge_request, :only => [:edit, :update, :destroy, :show, :commits, :diffs]
5 6 layout "project"
6 7  
... ... @@ -114,4 +115,8 @@ class MergeRequestsController &lt; ApplicationController
114 115 def authorize_admin_merge_request!
115 116 can?(current_user, :admin_merge_request, @merge_request)
116 117 end
  118 +
  119 + def module_enabled
  120 + return render_404 unless @project.merge_requests_enabled
  121 + end
117 122 end
... ...
app/controllers/projects_controller.rb
... ... @@ -85,6 +85,8 @@ class ProjectsController &lt; ApplicationController
85 85 #
86 86  
87 87 def wall
  88 + return render_404 unless @project.wall_enabled
  89 +
88 90 @note = Note.new
89 91 @notes = @project.common_notes.order("created_at DESC")
90 92 @notes = @notes.fresh.limit(20)
... ...
app/views/layouts/_project_side.html.haml
... ... @@ -9,11 +9,15 @@
9 9 = link_to "Code", tree_project_ref_path(@project, @project.root_ref), :class => tree_tab_class
10 10 = link_to "Commits", project_commits_path(@project), :class => (controller.controller_name == "commits") ? "current" : nil
11 11 = link_to "Network", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil
12   - = link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do
13   - Issues
14   - = link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do
15   - Merge Requests
16   - = link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do
17   - @Wall
18   - - if @project.common_notes.today.count > 0
19   - %span.label= @project.common_notes.today.count
  12 + - if @project.issues_enabled
  13 + = link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do
  14 + Issues
  15 + - if @project.merge_requests_enabled
  16 + = link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do
  17 + Merge Requests
  18 +
  19 + - if @project.wall_enabled
  20 + = link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do
  21 + @Wall
  22 + - if @project.common_notes.today.count > 0
  23 + %span.label= @project.common_notes.today.count
... ...
app/views/projects/_form.html.haml
... ... @@ -23,10 +23,24 @@
23 23 = f.label :default_branch, "Default Branch"
24 24 .input= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:210px;")
25 25  
  26 + .well
  27 + %h5 Features
  28 +
  29 + .clearfix
  30 + = f.label :issues_enabled, "Issues"
  31 + .input= f.check_box :issues_enabled
  32 +
  33 + .clearfix
  34 + = f.label :merge_requests_enabled, "Merge Requests"
  35 + .input= f.check_box :merge_requests_enabled
  36 +
  37 + .clearfix
  38 + = f.label :wall_enabled, "Wall"
  39 + .input= f.check_box :wall_enabled
26 40  
27 41 .clearfix
28 42 = f.label :description
29   - .input= f.text_area :description, :placeholder => "project description", :style => "height:50px"
  43 + .input= f.text_area :description, :placeholder => "project description", :class => "xlarge", :rows => 4
30 44  
31 45 %br
32 46  
... ...
app/views/projects/info.html.haml
1 1 = render "project_head"
2   -%h3= @project.name
3   -%br
4 2  
5   -
  3 +.entry
  4 + %h3= @project.name
  5 + %br
  6 +
  7 +
  8 +
  9 + %pre
  10 + = "git clone #{@project.url_to_repo}"
  11 +
6 12  
7   -%pre
8   - = "git clone #{@project.url_to_repo}"
9 13  
  14 +%h4 Details:
10 15  
11 16 %table
12 17 %tr
... ... @@ -54,6 +59,38 @@
54 59 %tr
55 60 %td{:colspan => 2}= simple_format @project.description
56 61  
  62 +
  63 +%h4 Features:
  64 +
  65 +%table
  66 + %tr
  67 + %td Issues
  68 + %td
  69 + - if @project.issues_enabled
  70 + .alert-message.success
  71 + Enabled
  72 + - else
  73 + .alert-message.error
  74 + Disabled
  75 +
  76 + %tr
  77 + %td Merge Requests
  78 + %td
  79 + - if @project.merge_requests_enabled
  80 + .alert-message.success
  81 + Enabled
  82 + - else
  83 + .alert-message.error
  84 + Disabled
  85 + %tr
  86 + %td Wall
  87 + %td
  88 + - if @project.wall_enabled
  89 + .alert-message.success
  90 + Enabled
  91 + - else
  92 + .alert-message.error
  93 + Disabled
57 94 .actions
58 95 = link_to "Edit", edit_project_path(@project), :class => "btn"
59 96  
... ...
app/views/widgets/_project_member.html.haml
... ... @@ -16,13 +16,14 @@
16 16 %span.label= member.repo_access_human
17 17  
18 18 - if can? current_user, :write_project, @project
19   - %hr
20   - .span3
21   - %p You have access to create new issue or merge request.
22   - %div
23   - = link_to new_project_issue_path(@project), :title => "New Issue", :class => "" do
24   - New Issue »
25   - %div
26   - = link_to new_project_merge_request_path(@project), :title => "New Merge Request", :class => "" do
27   - New Merge Request »
  19 + - if @project.issues_enabled && @project.merge_requests_enabled
  20 + %hr
  21 + .span3
  22 + %p You have access to create new issue or merge request.
  23 + %div
  24 + = link_to new_project_issue_path(@project), :title => "New Issue", :class => "" do
  25 + New Issue »
  26 + %div
  27 + = link_to new_project_merge_request_path(@project), :title => "New Merge Request", :class => "" do
  28 + New Merge Request »
28 29  
... ...
db/migrate/20120206170141_add_modularity_fields_to_project.rb 0 → 100644
... ... @@ -0,0 +1,7 @@
  1 +class AddModularityFieldsToProject < ActiveRecord::Migration
  2 + def change
  3 + add_column :projects, :issues_enabled, :boolean, :null => false, :default => true
  4 + add_column :projects, :wall_enabled, :boolean, :null => false, :default => true
  5 + add_column :projects, :merge_requests_enabled, :boolean, :null => false, :default => true
  6 + end
  7 +end
... ...
db/schema.rb
... ... @@ -11,7 +11,19 @@
11 11 #
12 12 # It's strongly recommended to check this file into your version control system.
13 13  
14   -ActiveRecord::Schema.define(:version => 20120121122616) do
  14 +ActiveRecord::Schema.define(:version => 20120206170141) do
  15 +
  16 + create_table "features", :force => true do |t|
  17 + t.string "name"
  18 + t.string "branch_name"
  19 + t.integer "assignee_id"
  20 + t.integer "author_id"
  21 + t.integer "project_id"
  22 + t.datetime "created_at"
  23 + t.datetime "updated_at"
  24 + t.string "version"
  25 + t.integer "status", :default => 0, :null => false
  26 + end
15 27  
16 28 create_table "issues", :force => true do |t|
17 29 t.string "title"
... ... @@ -73,10 +85,13 @@ ActiveRecord::Schema.define(:version =&gt; 20120121122616) do
73 85 t.text "description"
74 86 t.datetime "created_at"
75 87 t.datetime "updated_at"
76   - t.boolean "private_flag", :default => true, :null => false
  88 + t.boolean "private_flag", :default => true, :null => false
77 89 t.string "code"
78 90 t.integer "owner_id"
79   - t.string "default_branch", :default => "master", :null => false
  91 + t.string "default_branch", :default => "master", :null => false
  92 + t.boolean "issues_enabled", :default => true, :null => false
  93 + t.boolean "wall_enabled", :default => true, :null => false
  94 + t.boolean "merge_requests_enabled", :default => true, :null => false
80 95 end
81 96  
82 97 create_table "snippets", :force => true do |t|
... ...