From d514833a1579d50070fc687acc2af4f135b25a56 Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Mon, 2 Jun 2014 16:18:16 +0300
Subject: [PATCH] Dont show new file link on protected branch for developers

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
---
 app/helpers/branches_helper.rb          | 25 ++++++++++++++++++-------
 app/views/projects/tree/_tree.html.haml |  2 +-
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/app/helpers/branches_helper.rb b/app/helpers/branches_helper.rb
index e08ffccb94c..2ec2cc96157 100644
--- a/app/helpers/branches_helper.rb
+++ b/app/helpers/branches_helper.rb
@@ -1,11 +1,22 @@
 module BranchesHelper
   def can_remove_branch?(project, branch_name)
-     if project.protected_branch? branch_name
-       false
-     elsif branch_name == project.repository.root_ref
-       false
-     else
-       can?(current_user, :push_code, project)
-     end
+    if project.protected_branch? branch_name
+      false
+    elsif branch_name == project.repository.root_ref
+      false
+    else
+      can?(current_user, :push_code, project)
+    end
+  end
+
+  def can_push_branch?(project, branch_name)
+    return false unless project.repository.branch_names.include?(branch_name)
+    action = if project.protected_branch?(branch_name)
+               :push_code_to_protected_branches
+             else
+               :push_code
+             end
+
+    current_user.can?(action, project)
   end
 end
diff --git a/app/views/projects/tree/_tree.html.haml b/app/views/projects/tree/_tree.html.haml
index ee850e2bc1b..1fc06928bcf 100644
--- a/app/views/projects/tree/_tree.html.haml
+++ b/app/views/projects/tree/_tree.html.haml
@@ -9,7 +9,7 @@
         = link_to truncate(title, length: 40), project_tree_path(@project, path)
       - else
         = link_to title, '#'
-  - if current_user && @repository.branch_names.include?(@ref) && current_user.can?(:push_code, @project)
+  - if current_user && can_push_branch?(@project, @ref)
     %li
       = link_to project_new_tree_path(@project, @id), title: 'New file', id: 'new-file-link' do
         %small
-- 
2.30.9