summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home>2016-03-19 20:19:51 -0400
committerJacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home>2016-03-25 09:53:14 -0400
commit5db2622aeafe40bf6027bb45592f2fda5bfec396 (patch)
treee9dfbea1fd7d239bc9b44c6f31a28b6ea73bed35
parentf649126095481dc39ef7e8606672ae77509a5516 (diff)
downloadgitlab-ce-5db2622aeafe40bf6027bb45592f2fda5bfec396.tar.gz
Assign current user when no user is assigned link
-rw-r--r--app/assets/javascripts/labels_select.js.coffee21
-rw-r--r--app/assets/javascripts/users_select.js.coffee81
-rw-r--r--app/assets/stylesheets/pages/issuable.scss6
-rw-r--r--app/views/shared/issuable/_sidebar.html.haml9
4 files changed, 77 insertions, 40 deletions
diff --git a/app/assets/javascripts/labels_select.js.coffee b/app/assets/javascripts/labels_select.js.coffee
index 285e15feffe..d77490cae4e 100644
--- a/app/assets/javascripts/labels_select.js.coffee
+++ b/app/assets/javascripts/labels_select.js.coffee
@@ -31,17 +31,16 @@ class @LabelsSelect
issueURLSplit = issueUpdateURL.split('/') if issueUpdateURL?
if issueUpdateURL
labelHTMLTemplate = _.template(
- '<% _.each(labels, function(label){ %>'+
- '<a href="'+
- ['',issueURLSplit[1], issueURLSplit[2],''].join('/') +
- 'issues?label_name=<%= label.title %>">'+
- '<span class="label color-label" '+
- 'style="background-color: <%= label.color %>; '+
- 'color: #FFFFFF">'+
- '<%= label.title %>'+
- '</span>'+
- '</a>'+
- '<% }); %>');
+ '<% _.each(labels, function(label){ %>
+ <a href="
+ #{["",issueURLSplit[1], issueURLSplit[2],""].join("/")}
+ issues?label_name=<%= label.title %>">
+ <span class="label color-label" style="background-color: <%= label.color %>; color: #FFFFFF">
+ <%= label.title %>
+ </span>
+ </a>
+ <% }); %>'
+ );
labelNoneHTMLTemplate = _.template('<div class="light">None</div>')
if newLabelField.length and $dropdown.hasClass 'js-extra-options'
diff --git a/app/assets/javascripts/users_select.js.coffee b/app/assets/javascripts/users_select.js.coffee
index 2f6d365237b..cb3e16a6007 100644
--- a/app/assets/javascripts/users_select.js.coffee
+++ b/app/assets/javascripts/users_select.js.coffee
@@ -19,6 +19,27 @@ class @UsersSelect
$value = $block.find('.value')
$loading = $block.find('.block-loading').fadeOut()
+ noAssigneeTemplate = _.template(
+ '<% if (username) { %>
+ <a class="author_link " href="/u/<%= username %>">
+ <% if( avatar ) { %>
+ <img width="32" class="avatar avatar-inline s32" alt="" src="<%= avatar %>">
+ <% } %>
+ <span class="author"><%= name %></span>
+ <span class="username">
+ @<%= username %>
+ </span>
+ </a>
+ <% } else { %>
+ <span class="assign-yourself">
+ No assignee -
+ <a href="#" class="js-assign-yourself">
+ assign yourself
+ </a>
+ </span>
+ <% } %>'
+ )
+
$dropdown.glDropdown(
data: (term, callback) =>
@users term, (users) =>
@@ -100,21 +121,21 @@ class @UsersSelect
).done (data) ->
$loading.fadeOut()
$selectbox.hide()
- href = $value
- .show()
- .find('.author')
- .text(data.assignee.name)
- .end()
- .find('.username')
- .text("@#{data.assignee.username}")
- .end()
- .find('a')
- .attr('href')
- splitHref = href.split('/')
- splitHref[splitHref.length - 1] = data.assignee.username
- $value
- .find('a')
- .attr('href',splitHref.join('/'))
+
+ if data.assignee
+ user =
+ name: data.assignee.name
+ username: data.assignee.username
+ avatar: data.assignee.avatar.url
+ else
+ user =
+ name: 'Unassigned'
+ username: ''
+ avatar: ''
+
+ $value.html(noAssigneeTemplate(user))
+ $value.find('a').attr('href')
+
renderRow: (user) ->
username = if user.username then "@#{user.username}" else ""
avatar = if user.avatar_url then user.avatar_url else false
@@ -131,17 +152,25 @@ class @UsersSelect
if avatar
img = "<img src='#{avatar}' class='avatar avatar-inline' width='30' />"
- "<li>
- <a href='#' class='dropdown-menu-user-link #{selected}'>
- #{img}
- <strong class='dropdown-menu-user-full-name'>
- #{user.name}
- </strong>
- <span class='dropdown-menu-user-username'>
- #{username}
- </span>
- </a>
- </li>"
+ # split into three parts so we can remove the username section if nessesary
+ listWithName = "<li>
+ <a href='#' class='dropdown-menu-user-link #{selected}'>
+ #{img}
+ <strong class='dropdown-menu-user-full-name'>
+ #{user.name}
+ </strong>"
+
+ listWithUserName = "<span class='dropdown-menu-user-username'>
+ #{username}
+ </span>"
+ listClosingTags = "</a>
+ </li>"
+
+
+ if username is ''
+ listWithUserName = ''
+
+ listWithName + listWithUserName + listClosingTags
)
$('.ajax-users-select').each (i, select) =>
diff --git a/app/assets/stylesheets/pages/issuable.scss b/app/assets/stylesheets/pages/issuable.scss
index 467df4c3653..70a8fc5a9e2 100644
--- a/app/assets/stylesheets/pages/issuable.scss
+++ b/app/assets/stylesheets/pages/issuable.scss
@@ -133,6 +133,12 @@
.value {
line-height: 1;
+
+ .assign-yourself {
+ margin-top: 10px;
+ font-weight: normal;
+ display: block;
+ }
}
.bold {
diff --git a/app/views/shared/issuable/_sidebar.html.haml b/app/views/shared/issuable/_sidebar.html.haml
index fe6bb77fdcc..162c7787c55 100644
--- a/app/views/shared/issuable/_sidebar.html.haml
+++ b/app/views/shared/issuable/_sidebar.html.haml
@@ -44,11 +44,14 @@
%span.username
= issuable.assignee.to_reference
- else
- .light None
+ %span.assign-yourself
+ No assignee -
+ %a.js-assign-yourself{href:'#'}
+ assign yourself
.selectbox.hide-collapsed
- = f.hidden_field 'assignee_id', value: issuable.assignee_id, id: nil
- = dropdown_tag('Select assignee', options: { toggle_class: 'js-user-search js-author-search', title: 'Assign user', filter: true, dropdown_class: 'dropdown-menu-user dropdown-menu-selectable dropdown-menu-author', placeholder: 'Search users', data: { first_user: (current_user.username if current_user), current_user: true, project_id: (@project.id if @project), field_name: "#{issuable.to_ability_name}[assignee_id]", issue_update: issuable_url, ability_name: issuable.to_ability_name } })
+ = f.hidden_field 'assignee_id', value: issuable.assignee_id, id: 'issue_assignee_id'
+ = dropdown_tag('Select assignee', options: { toggle_class: 'js-user-search js-author-search', title: 'Assign user', filter: true, dropdown_class: 'dropdown-menu-user dropdown-menu-selectable dropdown-menu-author', placeholder: 'Search users', data: { first_user: (current_user.username if current_user), current_user: true, project_id: (@project.id if @project), field_name: "#{issuable.to_ability_name}[assignee_id]", issue_update: issuable_url, ability_name: issuable.to_ability_name, null_user: true } })
.block.milestone
.sidebar-collapsed-icon