0007-user-preference-for-issue-history-default-tab.patch

Marius BALTEANU, 2018-12-16 15:59

Download (6.79 KB)

View differences:

app/helpers/issues_helper.rb
559 559
    tabs
560 560
  end
561 561

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

  
567
    case user_default_tab
568
    when 'last_tab_visited'
569
      cookies['history_last_tab'].present? ? cookies['history_last_tab'] : 'notes'
570
    when ''
571
      'notes'
572
    else
573
      user_default_tab
574
    end
575
  end
576

  
562 577
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
30 30
    'comments_sorting',
31 31
    'warn_on_leaving_unsaved',
32 32
    'no_self_notified',
33
    'textarea_font'
33
    'textarea_font',
34
    'history_default_tab'
34 35

  
35 36
  TEXTAREA_FONT_OPTIONS = ['monospace', 'proportional']
36 37

  
......
88 89
  def textarea_font; self[:textarea_font] end
89 90
  def textarea_font=(value); self[:textarea_font]=value; end
90 91

  
92
  def history_default_tab; self[:history_default_tab]; end
93
  def history_default_tab=(value); self[:history_default_tab]=value; end
94

  
91 95
  # Returns the names of groups that are displayed on user's page
92 96
  # Example:
93 97
  #   preferences.my_page_groups
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
4 4
<p><%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %></p>
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
<p><%= pref_fields.select :history_default_tab, history_default_tab_options %></p>
7 8
<% end %>
config/locales/en.yml
380 380
  field_full_width_layout: Full width layout
381 381
  field_digest: Checksum
382 382
  field_default_assigned_to: Default assignee
383
  field_history_default_tab: Issue's history default tab
383 384

  
384 385
  setting_app_title: Application title
385 386
  setting_welcome_text: Welcome text
......
1037 1038
  label_nothing_to_preview: Nothing to preview
1038 1039
  label_issue_history_properties: Property changes
1039 1040
  label_issue_history_notes: Notes
1041
  label_last_tab_visited: Last visited tab
1040 1042

  
1041 1043
  button_login: Login
1042 1044
  button_submit: Submit
public/javascripts/application.js
918 918
$(document).ready(function(){
919 919
  $('#content').on('change', 'input[data-disables], input[data-enables], input[data-shows]', toggleDisabledOnChange);
920 920
  toggleDisabledInit();
921

  
922
  $('#history .tabs').on('click', 'a', function(e){
923
    var tab = $(e.target).attr('id').replace('tab-','');
924
    document.cookie = 'history_last_tab=' + tab
925
  });
921 926
});
922 927

  
923 928
$(document).ready(function(){
test/functional/users_controller_test.rb
244 244
          'time_zone' => 'Paris',
245 245
          'comments_sorting' => 'desc',
246 246
          'warn_on_leaving_unsaved' => '0',
247
          'textarea_font' => 'proportional'
247
          'textarea_font' => 'proportional',
248
          'history_default_tab' => 'history'
248 249
        }
249 250
      }
250 251
    end
......
255 256
    assert_equal 'desc', user.pref[:comments_sorting]
256 257
    assert_equal '0', user.pref[:warn_on_leaving_unsaved]
257 258
    assert_equal 'proportional', user.pref[:textarea_font]
259
    assert_equal 'history', user.pref[:history_default_tab]
258 260
  end
259 261

  
260 262
  def test_create_with_generate_password_should_email_the_password
test/helpers/issues_helper_test.rb
329 329
  def test_find_name_by_reflection_should_return_nil_for_missing_record
330 330
    assert_nil find_name_by_reflection('status', 99)
331 331
  end
332

  
332 333
end
333
-