diff --git a/app/assets/stylesheets/pages/projects.scss b/app/assets/stylesheets/pages/projects.scss index 31a093fadd52612f9081a805848246961f19e023..32a66052659d951a1683f7d7ab7e7fc10d717352 100644 --- a/app/assets/stylesheets/pages/projects.scss +++ b/app/assets/stylesheets/pages/projects.scss @@ -115,7 +115,6 @@ margin-left: 4px; .arrow { - &:before { content: ''; display: inline-block; @@ -165,6 +164,10 @@ background-image: none; white-space: nowrap; margin: 0 11px 0px 4px; + + &:hover { + background: #FFF; + } } } } diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index bf5e25ff89514d0da9e62bdc76aa1cdc392ab52a..2dab04f2a7c03aff18c49ebee4fe4734c09d3a54 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -171,7 +171,7 @@ class ProjectsController < ApplicationController @project.reload render json: { - html: view_to_html_string("projects/buttons/_star") + star_count: @project.star_count } end diff --git a/app/views/projects/buttons/_star.html.haml b/app/views/projects/buttons/_star.html.haml index 27d63cc4cec3e244473cb344cb5601160c0349e6..4289d7afd267048685293ddba14cb16df13ff4e8 100644 --- a/app/views/projects/buttons/_star.html.haml +++ b/app/views/projects/buttons/_star.html.haml @@ -1,7 +1,10 @@ - if current_user = link_to toggle_star_namespace_project_path(@project.namespace, @project), class: 'btn star-btn toggle-star has_tooltip', method: :post, remote: true, title: "Star project" do = icon('star fw') - Star + - if current_user.starred?(@project) + %span.starred Unstar + - else + %span Star %div.count-with-arrow %span.arrow %span.count @@ -9,7 +12,19 @@ :javascript $('.project-home-panel .toggle-star').on('ajax:success', function (e, data, status, xhr) { - $(this).replaceWith(data.html); + var $this = $(this); + var $starSpan = $this.find('span'); + $this + .parent() + .find('span.count') + .text(data.star_count); + if($starSpan.hasClass('starred')){ + $starSpan.removeClass('starred'); + $starSpan.text('Star'); + } else { + $starSpan.addClass('starred'); + $starSpan.text('Unstar'); + } }) .on('ajax:error', function (e, xhr, status, error) { new Flash('Star toggle failed. Try again later.', 'alert');