Commit 149195ed authored by Douwe Maan's avatar Douwe Maan

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
parents 1ff40a79 3d2c3878
...@@ -4,6 +4,7 @@ v 7.10.0 (unreleased) ...@@ -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 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) - 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) - 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) - 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) - Set Application controller default URL options to ensure all url_for calls are consistent (Stan Hu)
- Allow HTML tags in Markdown input - Allow HTML tags in Markdown input
......
...@@ -8,6 +8,7 @@ class @UsersSelect ...@@ -8,6 +8,7 @@ class @UsersSelect
@groupId = $(select).data('group-id') @groupId = $(select).data('group-id')
showNullUser = $(select).data('null-user') showNullUser = $(select).data('null-user')
showAnyUser = $(select).data('any-user') showAnyUser = $(select).data('any-user')
firstUser = $(select).data('first-user')
$(select).select2 $(select).select2
placeholder: "Search for a user" placeholder: "Search for a user"
...@@ -32,6 +33,13 @@ class @UsersSelect ...@@ -32,6 +33,13 @@ class @UsersSelect
id: 0 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 if showNullUser
data.results.unshift(nullUser) data.results.unshift(nullUser)
if showAnyUser if showAnyUser
......
...@@ -8,12 +8,14 @@ module SelectsHelper ...@@ -8,12 +8,14 @@ module SelectsHelper
null_user = opts[:null_user] || false null_user = opts[:null_user] || false
any_user = opts[:any_user] || false any_user = opts[:any_user] || false
first_user = opts[:first_user] && current_user ? current_user.username : false
html = { html = {
class: css_class, class: css_class,
'data-placeholder' => placeholder, 'data-placeholder' => placeholder,
'data-null-user' => null_user, 'data-null-user' => null_user,
'data-any-user' => any_user, 'data-any-user' => any_user,
'data-first-user' => first_user
} }
unless opts[:scope] == :all unless opts[:scope] == :all
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
- else - else
none none
- if can?(current_user, :modify_issue, @issue) - 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 %div.prepend-top-20.clearfix
.issuable-context-title .issuable-context-title
......
...@@ -24,11 +24,11 @@ ...@@ -24,11 +24,11 @@
.issues-other-filters .issues-other-filters
.filter-item.inline .filter-item.inline
= users_select_tag(:assignee_id, selected: params[:assignee_id], = 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 .filter-item.inline
= users_select_tag(:author_id, selected: params[:author_id], = 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 .filter-item.inline.milestone-filter
= select_tag('milestone_id', projects_milestones_options, class: "select2 trigger-submit", prompt: 'Milestone') = select_tag('milestone_id', projects_milestones_options, class: "select2 trigger-submit", prompt: 'Milestone')
......
...@@ -25,6 +25,12 @@ Feature: Project Issues ...@@ -25,6 +25,12 @@ Feature: Project Issues
Given I click link "Release 0.4" Given I click link "Release 0.4"
Then I should see issue "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 Scenario: I submit new unassigned issue
Given I click link "New Issue" Given I click link "New Issue"
And I submit new issue "500 error on profile" And I submit new issue "500 error on profile"
......
...@@ -59,6 +59,18 @@ class Spinach::Features::ProjectIssues < Spinach::FeatureSteps ...@@ -59,6 +59,18 @@ class Spinach::Features::ProjectIssues < Spinach::FeatureSteps
click_link "New Issue" click_link "New Issue"
end 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 step 'I submit new issue "500 error on profile"' do
fill_in "issue_title", with: "500 error on profile" fill_in "issue_title", with: "500 error on profile"
click_button "Submit new issue" click_button "Submit new issue"
......
...@@ -14,6 +14,13 @@ module SharedProject ...@@ -14,6 +14,13 @@ module SharedProject
@project.team << [@user, :master] @project.team << [@user, :master]
end 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" # Create another specific project called "Forum"
step 'I own project "Forum"' do step 'I own project "Forum"' do
@project = Project.find_by(name: "Forum") @project = Project.find_by(name: "Forum")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment