end
end
- def render_projects_for_jump_box(projects, selected=nil)
- jump_box = Redmine::ProjectJumpBox.new User.current
- query = params[:q] if request.format.js?
- bookmarked = jump_box.bookmarked_projects(query)
- recents = jump_box.recently_used_projects(query)
- projects = projects - (recents + bookmarked)
- projects_label = (bookmarked.any? || recents.any?) ? :label_optgroup_others : :label_project_plural
+ def render_projects_for_jump_box(projects, selected: nil, query: nil)
+ if query.blank?
+ jump_box = Redmine::ProjectJumpBox.new User.current
+ bookmarked = jump_box.bookmarked_projects
+ recents = jump_box.recently_used_projects
+ projects_label = :label_project_all
+ else
+ projects_label = :label_result_plural
+ end
jump = params[:jump].presence || current_menu_item
s = (+'').html_safe
build_project_link = ->(project, level = 0){
content =
content_tag('div',
content_tag('div', q, :class => 'quick-search') +
- content_tag('div', render_projects_for_jump_box(projects, @project),
+ content_tag('div', render_projects_for_jump_box(projects, selected: @project),
:class => 'drdn-items projects selection') +
content_tag('div', all, :class => 'drdn-items all-projects selection'),
:class => 'drdn-content')
<%
s = ''
if @projects.any?
- s = render_projects_for_jump_box(@projects)
+ s = render_projects_for_jump_box(@projects, query: params[:q])
elsif params[:q].present?
s = content_tag('span', l(:label_no_data))
end
-$('#project-jump div.drdn-items.projects').html('<%= j render_projects_for_jump_box(projects_for_jump_box(User.current), @project) %>');
+$('#project-jump div.drdn-items.projects').html('<%= j render_projects_for_jump_box(projects_for_jump_box(User.current), selected: @project) %>');
$('.contextual a.icon.bookmark').replaceWith('<%= j bookmark_link @project %>');
@user.pref.recently_used_projects
end
- def recently_used_projects(query = nil)
+ def recently_used_projects
project_ids = recently_used_project_ids
- projects = Project.where(id: project_ids)
- if query
- projects = projects.like(query)
- end
- projects.
+ Project.where(id: project_ids).
index_by(&:id).
values_at(*project_ids). # sort according to stored order
compact
end
- def bookmarked_projects(query = nil)
- projects = Project.where(id: bookmarked_project_ids).visible
- if query
- projects = projects.like(query)
- end
- projects.to_a
+ def bookmarked_projects
+ Project.where(id: bookmarked_project_ids).visible.to_a
end
def project_used(project)
@onlinestore = Project.find 'onlinestore'
end
- def test_should_filter_bookmarked_projects
+ def test_should_find_bookmarked_projects
pjb = Redmine::ProjectJumpBox.new @user
pjb.bookmark_project @ecookbook
-
assert_equal 1, pjb.bookmarked_projects.size
- assert_equal 0, pjb.bookmarked_projects('online').size
- assert_equal 1, pjb.bookmarked_projects('ecook').size
end
def test_should_not_include_bookmark_in_recently_used_list
assert_equal 0, pjb.recently_used_projects.size
end
- def test_should_filter_recently_used_projects
+ def test_should_find_recently_used_projects
pjb = Redmine::ProjectJumpBox.new @user
pjb.project_used @ecookbook
-
assert_equal 1, pjb.recently_used_projects.size
- assert_equal 0, pjb.recently_used_projects('online').size
- assert_equal 1, pjb.recently_used_projects('ecook').size
end
def test_should_limit_recently_used_projects
@user.pref.recently_used_projects = 1
assert_equal 1, pjb.recently_used_projects.size
- assert_equal 1, pjb.recently_used_projects('online').size
- assert_equal 0, pjb.recently_used_projects('ecook').size
end
def test_should_record_recently_used_projects_order