diff --git a/app/models/issue.rb b/app/models/issue.rb old mode 100644 new mode 100755 index f984e03..01c0f05 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -132,6 +132,10 @@ class Issue < ActiveRecord::Base when 'own' user_ids = [user.id] + user.groups.map(&:id).compact "(#{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))" + when 'watched' + user_ids = [user.id] + user.groups.map(&:id).compact + watcher_select = Watcher.where(watchable_type: self.base_class.name, user_id: user.id).select(:watchable_id).to_sql + "(#{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}) OR #{table_name}.id IN (#{watcher_select}))" else '1=0' end @@ -161,6 +165,8 @@ class Issue < ActiveRecord::Base !self.is_private? || (self.author == user || user.is_or_belongs_to?(assigned_to)) when 'own' self.author == user || user.is_or_belongs_to?(assigned_to) + when 'watched' + self.author == user || user.is_or_belongs_to?(assigned_to) || self.watched_by?(user) else false end diff --git a/app/models/role.rb b/app/models/role.rb index 8bd2e72..c701bfc 100644 --- a/app/models/role.rb +++ b/app/models/role.rb @@ -38,7 +38,8 @@ class Role < ActiveRecord::Base ISSUES_VISIBILITY_OPTIONS = [ ['all', :label_issues_visibility_all], ['default', :label_issues_visibility_public], - ['own', :label_issues_visibility_own] + ['own', :label_issues_visibility_own], + ['watched', :label_issues_visibility_watched] ] TIME_ENTRIES_VISIBILITY_OPTIONS = [ diff --git a/app/views/messages/show.html.erb b/app/views/messages/show.html.erb old mode 100644 new mode 100755 index 180a2ba..c9aec77 --- a/app/views/messages/show.html.erb +++ b/app/views/messages/show.html.erb @@ -80,7 +80,7 @@ <% if !@topic.locked? && authorize_for('messages', 'reply') %>

<%= toggle_link l(:button_reply), "reply", :focus => 'message_content' %>