Commit b765a7958d5d8602d0f8cc3b23b07cfa4f304208

Authored by Dmitriy Zaporozhets
1 parent 112dc875

Move snippets to own tab as feature. Make it disabled for new projects by default

app/contexts/projects/create_context.rb
@@ -32,8 +32,9 @@ module Projects @@ -32,8 +32,9 @@ module Projects
32 @project.namespace_id = current_user.namespace_id 32 @project.namespace_id = current_user.namespace_id
33 end 33 end
34 34
35 - # Disable wall by default 35 + # Disable less important features by default
36 @project.wall_enabled = false 36 @project.wall_enabled = false
  37 + @project.snippets_enabled = false
37 38
38 @project.creator = current_user 39 @project.creator = current_user
39 40
app/controllers/snippets_controller.rb
1 class SnippetsController < ProjectResourceController 1 class SnippetsController < ProjectResourceController
  2 + before_filter :module_enabled
2 before_filter :snippet, only: [:show, :edit, :destroy, :update, :raw] 3 before_filter :snippet, only: [:show, :edit, :destroy, :update, :raw]
3 4
4 # Allow read any snippet 5 # Allow read any snippet
@@ -84,4 +85,8 @@ class SnippetsController &lt; ProjectResourceController @@ -84,4 +85,8 @@ class SnippetsController &lt; ProjectResourceController
84 def authorize_admin_snippet! 85 def authorize_admin_snippet!
85 return render_404 unless can?(current_user, :admin_snippet, @snippet) 86 return render_404 unless can?(current_user, :admin_snippet, @snippet)
86 end 87 end
  88 +
  89 + def module_enabled
  90 + return render_404 unless @project.snippet_enabled
  91 + end
87 end 92 end
app/models/project.rb
@@ -29,7 +29,7 @@ class Project &lt; ActiveRecord::Base @@ -29,7 +29,7 @@ class Project &lt; ActiveRecord::Base
29 class TransferError < StandardError; end 29 class TransferError < StandardError; end
30 30
31 attr_accessible :name, :path, :description, :default_branch, :issues_tracker, 31 attr_accessible :name, :path, :description, :default_branch, :issues_tracker,
32 - :issues_enabled, :wall_enabled, :merge_requests_enabled, :issues_tracker_id, 32 + :issues_enabled, :wall_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id,
33 :wiki_enabled, :public, :import_url, as: [:default, :admin] 33 :wiki_enabled, :public, :import_url, as: [:default, :admin]
34 34
35 attr_accessible :namespace_id, :creator_id, as: :admin 35 attr_accessible :namespace_id, :creator_id, as: :admin
app/views/layouts/project_resource.html.haml
@@ -43,6 +43,10 @@ @@ -43,6 +43,10 @@
43 = nav_link(path: 'projects#wall') do 43 = nav_link(path: 'projects#wall') do
44 = link_to 'Wall', wall_project_path(@project) 44 = link_to 'Wall', wall_project_path(@project)
45 45
  46 + - if @project.snippets_enabled
  47 + = nav_link(controller: :snippets) do
  48 + = link_to 'Snippets', project_snippets_path(@project)
  49 +
46 - if can? current_user, :admin_project, @project 50 - if can? current_user, :admin_project, @project
47 = nav_link(html_options: {class: "#{project_tab_class}"}) do 51 = nav_link(html_options: {class: "#{project_tab_class}"}) do
48 = link_to edit_project_path(@project), class: "stat-tab tab " do 52 = link_to edit_project_path(@project), class: "stat-tab tab " do
app/views/projects/_form.html.haml
@@ -88,6 +88,12 @@ @@ -88,6 +88,12 @@
88 %span.descr Simple chat system for broadcasting inside project 88 %span.descr Simple chat system for broadcasting inside project
89 89
90 .control-group 90 .control-group
  91 + = f.label :snippets_enabled, "Snippets", class: 'control-label'
  92 + .controls
  93 + = f.check_box :snippets_enabled
  94 + %span.descr Share code pastes with others out of git repository
  95 +
  96 + .control-group
91 = f.label :wiki_enabled, "Wiki", class: 'control-label' 97 = f.label :wiki_enabled, "Wiki", class: 'control-label'
92 .controls 98 .controls
93 = f.check_box :wiki_enabled 99 = f.check_box :wiki_enabled
db/migrate/20130318212250_add_snippets_to_features.rb 0 → 100644
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
  1 +class AddSnippetsToFeatures < ActiveRecord::Migration
  2 + def change
  3 + add_column :projects, :snippets_enabled, :boolean, null: false, default: true
  4 + end
  5 +end
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 # 11 #
12 # It's strongly recommended to check this file into your version control system. 12 # It's strongly recommended to check this file into your version control system.
13 13
14 -ActiveRecord::Schema.define(:version => 20130315124931) do 14 +ActiveRecord::Schema.define(:version => 20130318212250) do
15 15
16 create_table "events", :force => true do |t| 16 create_table "events", :force => true do |t|
17 t.string "target_type" 17 t.string "target_type"
@@ -155,6 +155,7 @@ ActiveRecord::Schema.define(:version =&gt; 20130315124931) do @@ -155,6 +155,7 @@ ActiveRecord::Schema.define(:version =&gt; 20130315124931) do
155 t.boolean "public", :default => false, :null => false 155 t.boolean "public", :default => false, :null => false
156 t.string "issues_tracker", :default => "gitlab", :null => false 156 t.string "issues_tracker", :default => "gitlab", :null => false
157 t.string "issues_tracker_id" 157 t.string "issues_tracker_id"
  158 + t.boolean "snippets_enabled", :default => true, :null => false
158 end 159 end
159 160
160 add_index "projects", ["creator_id"], :name => "index_projects_on_owner_id" 161 add_index "projects", ["creator_id"], :name => "index_projects_on_owner_id"