Merge branch 'current-user-to-top-filter' into 'master'

Move current user to the top of the list in author/assignee filter

### What does this MR do?

This MR puts the current user at the top of the user list in the author/assignee filters.

### Are there points in the code the reviewer needs to double check?

Is it best to do this in the JavaScript as it is in this MR, or are we better off adding an argument to the `/users` API to put the current user on top?

Also, I elected to put the current user after "Any" and "Unassigned"--it looked better. Do you agree?

### Why was this MR needed?

If you're trying to look for "Me" in the list, often you have to scroll down a long way to find yourself. Using the filter to find yourself is yet another step requiring the keyboard, and it's easy to forget that feature is available.

### What are the relevant issue numbers / [Feature requests](http://feedback.gitlab.com/)?

#1321 and #1396

### Screenshots

Before:

![Screen_Shot_2015-04-08_at_11.18.44_PM](https://gitlab.com/stanhu/gitlab-ce/uploads/4c28ae5a3a51a8329c806ecfbc549071/Screen_Shot_2015-04-08_at_11.18.44_PM.png)

After:

![Screen_Shot_2015-04-08_at_11.20.06_PM](https://gitlab.com/stanhu/gitlab-ce/uploads/ff3b8bdf38467236edbcc29401cd1235/Screen_Shot_2015-04-08_at_11.20.06_PM.png)

See merge request !505
This commit is contained in:
Douwe Maan 2015-04-10 11:44:10 +00:00
commit 149195eded
8 changed files with 39 additions and 3 deletions

View file

@ -4,6 +4,7 @@ v 7.10.0 (unreleased)
- Fix bug where Wiki pages that included a '/' were no longer accessible (Stan Hu)
- Fix bug where error messages from Dropzone would not be displayed on the issues page (Stan Hu)
- Add ability to configure Reply-To address in gitlab.yml (Stan Hu)
- Move current user to the top of the list in assignee/author filters (Stan Hu)
- Fix broken side-by-side diff view on merge request page (Stan Hu)
- Set Application controller default URL options to ensure all url_for calls are consistent (Stan Hu)
- Allow HTML tags in Markdown input

View file

@ -8,6 +8,7 @@ class @UsersSelect
@groupId = $(select).data('group-id')
showNullUser = $(select).data('null-user')
showAnyUser = $(select).data('any-user')
firstUser = $(select).data('first-user')
$(select).select2
placeholder: "Search for a user"
@ -32,6 +33,13 @@ class @UsersSelect
id: 0
}
if firstUser
# Move current user to the front of the list
for obj, index in data.results
if obj.username == firstUser
data.results.splice(index, 1)
data.results.unshift(obj)
break
if showNullUser
data.results.unshift(nullUser)
if showAnyUser

View file

@ -8,12 +8,14 @@ module SelectsHelper
null_user = opts[:null_user] || false
any_user = opts[:any_user] || false
first_user = opts[:first_user] && current_user ? current_user.username : false
html = {
class: css_class,
'data-placeholder' => placeholder,
'data-null-user' => null_user,
'data-any-user' => any_user,
'data-first-user' => first_user
}
unless opts[:scope] == :all

View file

@ -8,7 +8,7 @@
- else
none
- if can?(current_user, :modify_issue, @issue)
= users_select_tag('issue[assignee_id]', placeholder: 'Select assignee', class: 'custom-form-control js-select2 js-assignee', selected: @issue.assignee_id, null_user: true)
= users_select_tag('issue[assignee_id]', placeholder: 'Select assignee', class: 'custom-form-control js-select2 js-assignee', selected: @issue.assignee_id, null_user: true, first_user: true)
%div.prepend-top-20.clearfix
.issuable-context-title

View file

@ -24,11 +24,11 @@
.issues-other-filters
.filter-item.inline
= users_select_tag(:assignee_id, selected: params[:assignee_id],
placeholder: 'Assignee', class: 'trigger-submit', any_user: true, null_user: true)
placeholder: 'Assignee', class: 'trigger-submit', any_user: true, null_user: true, first_user: true)
.filter-item.inline
= users_select_tag(:author_id, selected: params[:author_id],
placeholder: 'Author', class: 'trigger-submit', any_user: true)
placeholder: 'Author', class: 'trigger-submit', any_user: true, first_user: true)
.filter-item.inline.milestone-filter
= select_tag('milestone_id', projects_milestones_options, class: "select2 trigger-submit", prompt: 'Milestone')

View file

@ -25,6 +25,12 @@ Feature: Project Issues
Given I click link "Release 0.4"
Then I should see issue "Release 0.4"
@javascript
Scenario: I visit issue page
Given I add a user to project "Shop"
And I click "author" dropdown
Then I see current user as the first user
Scenario: I submit new unassigned issue
Given I click link "New Issue"
And I submit new issue "500 error on profile"

View file

@ -59,6 +59,18 @@ class Spinach::Features::ProjectIssues < Spinach::FeatureSteps
click_link "New Issue"
end
step 'I click "author" dropdown' do
first('.ajax-users-select').click
end
step 'I see current user as the first user' do
expect(page).to have_selector('.user-result', visible: true, count: 4)
users = page.all('.user-name')
users[0].text.should == 'Any'
users[1].text.should == 'Unassigned'
users[2].text.should == current_user.name
end
step 'I submit new issue "500 error on profile"' do
fill_in "issue_title", with: "500 error on profile"
click_button "Submit new issue"

View file

@ -14,6 +14,13 @@ module SharedProject
@project.team << [@user, :master]
end
# Add another user to project "Shop"
step 'I add a user to project "Shop"' do
@project = Project.find_by(name: "Shop")
other_user = create(:user, name: 'Alpha')
@project.team << [other_user, :master]
end
# Create another specific project called "Forum"
step 'I own project "Forum"' do
@project = Project.find_by(name: "Forum")