Project

General

Profile

Feature #32302 » 0001-Option-to-filter-after-my-bookmarked-projects.patch

Marius BĂLTEANU, 2019-10-20 17:03

View differences:

app/models/query.rb
528 528

  
529 529
  def project_values
530 530
    project_values = []
531
    if User.current.logged? && User.current.memberships.any?
532
      project_values << ["<< #{l(:label_my_projects).downcase} >>", "mine"]
531
    if User.current.logged?
532
      project_values << ["<< #{l(:label_my_projects).downcase} >>", "mine"] if User.current.memberships.any?
533
      project_values << ["<< #{l(:label_my_bookmarks).downcase} >>", "bookmarks"] if User.current.bookmarked_project_ids.any?
533 534
    end
534 535
    project_values += all_projects_values
535 536
    project_values
......
915 916
        if v.delete('mine')
916 917
          v += User.current.memberships.map(&:project_id).map(&:to_s)
917 918
        end
919
        if v.delete('bookmarks')
920
          v += User.current.bookmarked_project_ids
921
        end
918 922
      end
919 923

  
920 924
      if field =~ /^cf_(\d+)\.cf_(\d+)$/
app/models/user.rb
840 840
    end
841 841
  end
842 842

  
843
  def bookmarked_project_ids
844
    project_ids = []
845
    bookmarked_project_ids = self.pref[:bookmarked_project_ids]
846
    project_ids = bookmarked_project_ids.split(',') unless bookmarked_project_ids.nil?
847
    project_ids.map(&:to_i)
848
  end
849

  
843 850
  protected
844 851

  
845 852
  def validate_password_length
config/locales/en.yml
1076 1076
  label_display_type: Display results as
1077 1077
  label_display_type_list: List
1078 1078
  label_display_type_board: Board
1079
  label_my_bookmarks: My bookmarks
1079 1080

  
1080 1081
  button_login: Login
1081 1082
  button_submit: Submit
test/fixtures/user_preferences.yml
1
--- 
2
user_preferences_001: 
1
---
2
user_preferences_001:
3 3
  others: |
4
    --- 
4
    ---
5 5
    :no_self_notified: false
6
    :my_page_layout: 
7
      left: 
6
    :my_page_layout:
7
      left:
8 8
      - latestnews
9 9
      - documents
10
      right: 
10
      right:
11 11
      - issuesassignedtome
12
      top: 
12
      top:
13 13
      - calendar
14
    :bookmarked_project_ids: "1,5"
14 15

  
15 16
  id: 1
16 17
  user_id: 1
17 18
  hide_mail: true
18
user_preferences_002: 
19
user_preferences_002:
19 20
  others: |
20
    --- 
21
    ---
21 22
    :no_self_notified: false
22
  
23

  
23 24
  id: 2
24 25
  user_id: 2
25 26
  hide_mail: true
26
user_preferences_003: 
27
user_preferences_003:
27 28
  others: |
28
    --- 
29
    ---
29 30
    :no_self_notified: false
30
    :my_page_layout: 
31
      left: 
31
    :my_page_layout:
32
      left:
32 33
      - latestnews
33 34
      - documents
34
      right: 
35
      right:
35 36
      - issuesassignedtome
36
      top: 
37
      top:
37 38
      - calendar
38
  
39

  
39 40
  id: 3
40 41
  user_id: 3
41 42
  hide_mail: false
test/unit/query_test.rb
922 922
    assert_nil result.detect {|issue| !User.current.member_of?(issue.project)}
923 923
  end
924 924

  
925
  def test_filter_my_bookmarks
926
    User.current = User.find(1)
927
    query = ProjectQuery.new(:name => '_')
928
    filter = query.available_filters['id']
929
    assert_not_nil filter
930
    assert_include 'bookmarks', filter[:values].map{|v| v[1]}
931

  
932
    query.filters = { 'id' => {:operator => '=', :values => ['bookmarks']}}
933
    result = query.results_scope
934

  
935
    assert_equal [1,5], result.map(&:id).sort
936
  end
937

  
938
  def test_filter_my_bookmarks_for_user_without_bookmarked_projects
939
    User.current = User.find(2)
940
    query = ProjectQuery.new(:name => '_')
941
    filter = query.available_filters['id']
942

  
943
    assert_not_include 'bookmarks', filter[:values].map{|v| v[1]}
944
  end
945

  
925 946
  def test_filter_watched_issues
926 947
    User.current = User.find(1)
927 948
    query = IssueQuery.new(:name => '_', :filters => { 'watcher_id' => {:operator => '=', :values => ['me']}})
test/unit/user_test.rb
1280 1280
    assert_equal user, User.try_to_login(user.login, "unsalted")
1281 1281
  end
1282 1282

  
1283
  def test_bookmarked_project_ids
1284
    # User with bookmarked projects
1285
    assert_equal [1, 5], User.find(1).bookmarked_project_ids
1286
    # User without bookmarked projects
1287
    assert_equal [], User.find(2).bookmarked_project_ids
1288
  end
1289

  
1283 1290
  if Object.const_defined?(:OpenID)
1284 1291
    def test_setting_identity_url
1285 1292
      normalized_open_id_url = 'http://example.com/'
(3-3/3)