From 04c199a0ab2db012e8c5a190ce2836f22e846305 Mon Sep 17 00:00:00 2001
From: Phil Hughes <me@iamphill.com>
Date: Tue, 7 Jun 2016 10:54:02 +0100
Subject: [PATCH] Fixed bug with sidebar when user is not logged in

---
 app/helpers/issuables_helper.rb              |  4 +++-
 app/views/shared/issuable/_sidebar.html.haml | 22 +++++++++++---------
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb
index 88ef1a6468c..2ae7f5c5f32 100644
--- a/app/helpers/issuables_helper.rb
+++ b/app/helpers/issuables_helper.rb
@@ -78,7 +78,9 @@ module IssuablesHelper
   end
 
   def has_todo(issuable)
-    current_user.todos.find_by(target_id: issuable.id, state: :pending)
+    unless current_user.nil?
+      current_user.todos.find_by(target_id: issuable.id, state: :pending)
+    end
   end
 
   private
diff --git a/app/views/shared/issuable/_sidebar.html.haml b/app/views/shared/issuable/_sidebar.html.haml
index baeee7f57ec..e3aacb50c97 100644
--- a/app/views/shared/issuable/_sidebar.html.haml
+++ b/app/views/shared/issuable/_sidebar.html.haml
@@ -3,18 +3,20 @@
   .issuable-sidebar
     - can_edit_issuable = can?(current_user, :"admin_#{issuable.to_ability_name}", @project)
     .block.issuable-sidebar-header
-      %span.issuable-header-text.hide-collapsed.pull-left
-        Todo
+      - if current_user
+        %span.issuable-header-text.hide-collapsed.pull-left
+          Todo
       %a.gutter-toggle.pull-right.js-sidebar-toggle{ role: "button", href: "#", aria: { label: "Toggle sidebar" } }
         = sidebar_gutter_toggle_icon
-      %button.btn.btn-default.issuable-header-btn.pull-right.js-issuable-todo{ type: "button", data: { todo_text: "Add Todo", mark_text: "Mark Done", id: (todo.id unless todo.nil?), url: issuable_todo_path(issuable) } }
-        - if todo.nil?
-          %span
-            Add Todo
-        - else
-          %span
-            Mark Done
-        = icon('spin spinner', class: 'hidden js-issuable-todo-loading')
+      - if current_user
+        %button.btn.btn-default.issuable-header-btn.pull-right.js-issuable-todo{ type: "button", data: { todo_text: "Add Todo", mark_text: "Mark Done", id: (todo.id unless todo.nil?), url: issuable_todo_path(issuable) } }
+          - if todo.nil?
+            %span
+              Add Todo
+          - else
+            %span
+              Mark Done
+          = icon('spin spinner', class: 'hidden js-issuable-todo-loading')
 
     = form_for [@project.namespace.becomes(Namespace), @project, issuable], remote: true, format: :json, html: {class: 'issuable-context-form inline-update js-issuable-update'} do |f|
       .block.assignee
-- 
2.30.9