Project

General

Profile

Feature #3058 » 0007-user-preference-for-issue-history-default-tab.patch

Marius BĂLTEANU, 2019-06-20 08:19

View differences:

app/helpers/issues_helper.rb
562 562
    tabs
563 563
  end
564 564

  
565
  def issue_history_default_tab
566
    # tab params overrides user default tab preference
567
    return params[:tab] if params[:tab].present?
568
    user_default_tab = User.current.pref.history_default_tab
569

  
570
    case user_default_tab
571
    when 'last_tab_visited'
572
      cookies['history_last_tab'].present? ? cookies['history_last_tab'] : 'notes'
573
    when ''
574
      'notes'
575
    else
576
      user_default_tab
577
    end
578
  end
579

  
565 580
end
app/helpers/users_helper.rb
33 33
    [[l(:label_font_default), '']] + UserPreference::TEXTAREA_FONT_OPTIONS.map {|o| [l("label_font_#{o}"), o]}
34 34
  end
35 35

  
36
  def history_default_tab_options
37
    [[l('label_issue_history_notes'), 'notes'],
38
     [l('label_history'), 'history'],
39
     [l('label_issue_history_properties'), 'properties'],
40
     [l('label_time_entry_plural'), 'time_entries'],
41
     [l('label_associated_revisions'), 'changesets'],
42
     [l('label_last_tab_visited'), 'last_tab_visited']]
43
  end
44

  
36 45
  def change_status_link(user)
37 46
    url = {:controller => 'users', :action => 'update', :id => user, :page => params[:page], :status => params[:status], :tab => nil}
38 47

  
app/models/user_preference.rb
33 33
    'warn_on_leaving_unsaved',
34 34
    'no_self_notified',
35 35
    'textarea_font',
36
    'recently_used_projects'
36
    'recently_used_projects',
37
    'history_default_tab'
37 38

  
38 39
  TEXTAREA_FONT_OPTIONS = ['monospace', 'proportional']
39 40

  
......
93 94

  
94 95
  def recently_used_projects; (self[:recently_used_projects] || 3).to_i; end
95 96
  def recently_used_projects=(value); self[:recently_used_projects] = value.to_i; end
97
  def history_default_tab; self[:history_default_tab]; end
98
  def history_default_tab=(value); self[:history_default_tab]=value; end
96 99

  
97 100
  # Returns the names of groups that are displayed on user's page
98 101
  # Example:
app/views/issues/show.html.erb
124 124

  
125 125
<div id="history">
126 126
<h3><%=l(:label_history)%></h3>
127
<%= render_tabs issue_history_tabs, params[:tab] ? params[:tab] : 'notes' %>
127
<%= render_tabs issue_history_tabs, issue_history_default_tab %>
128 128
</div>
129 129

  
130 130
<%= render partial: 'action_menu_edit' unless User.current.wants_comments_in_reverse_order? %>
app/views/users/_preferences.html.erb
5 5
<p><%= pref_fields.check_box :warn_on_leaving_unsaved %></p>
6 6
<p><%= pref_fields.select :textarea_font, textarea_font_options %></p>
7 7
<p><%= pref_fields.text_field :recently_used_projects, :size => 2 %></p>
8
<p><%= pref_fields.select :history_default_tab, history_default_tab_options %></p>
8 9
<% end %>
config/locales/en.yml
383 383
  field_digest: Checksum
384 384
  field_default_assigned_to: Default assignee
385 385
  field_recently_used_projects: Number of recently used projects in jump box
386
  field_history_default_tab: Issue's history default tab
386 387

  
387 388
  setting_app_title: Application title
388 389
  setting_welcome_text: Welcome text
......
1058 1059
  label_preferred_body_part_html: HTML (experimental)
1059 1060
  label_issue_history_properties: Property changes
1060 1061
  label_issue_history_notes: Notes
1062
  label_last_tab_visited: Last visited tab
1061 1063

  
1062 1064
  button_login: Login
1063 1065
  button_submit: Submit
public/javascripts/application.js
929 929
$(document).ready(function(){
930 930
  $('#content').on('change', 'input[data-disables], input[data-enables], input[data-shows]', toggleDisabledOnChange);
931 931
  toggleDisabledInit();
932

  
933
  $('#history .tabs').on('click', 'a', function(e){
934
    var tab = $(e.target).attr('id').replace('tab-','');
935
    document.cookie = 'history_last_tab=' + tab
936
  });
932 937
});
933 938

  
934 939
$(document).ready(function(){
test/functional/users_controller_test.rb
292 292
          'time_zone' => 'Paris',
293 293
          'comments_sorting' => 'desc',
294 294
          'warn_on_leaving_unsaved' => '0',
295
          'textarea_font' => 'proportional'
295
          'textarea_font' => 'proportional',
296
          'history_default_tab' => 'history'
296 297
        }
297 298
      }
298 299
    end
......
303 304
    assert_equal 'desc', user.pref[:comments_sorting]
304 305
    assert_equal '0', user.pref[:warn_on_leaving_unsaved]
305 306
    assert_equal 'proportional', user.pref[:textarea_font]
307
    assert_equal 'history', user.pref[:history_default_tab]
306 308
  end
307 309

  
308 310
  def test_create_with_generate_password_should_email_the_password
(28-28/28)