Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-12-03 11:52:04 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-12-03 11:52:04 +0400
commitd793bceb90c3e2a7e2302531a69d6e693e66ae78 (patch)
treeb1662b38a35b887fb50f215b4ef73facd4ec60c3
parentaa69e29e701088a3f28a2735254ac6166018bd1e (diff)
parentb08608b261f8c9c552d8957b6231c7725b9529ac (diff)
Merge pull request #5733 from bke-drewb/issue-5716
Issue 5716 - Allow removal of avatar
-rw-r--r--CHANGELOG1
-rw-r--r--app/assets/stylesheets/sections/profile.scss4
-rw-r--r--app/controllers/profiles/avatars_controller.rb11
-rw-r--r--app/views/profiles/show.html.haml15
-rw-r--r--config/routes.rb1
-rw-r--r--features/profile/profile.feature8
-rw-r--r--features/steps/profile/profile.rb23
-rw-r--r--spec/routing/routing_spec.rb7
8 files changed, 66 insertions, 4 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 08a36e308bb..884bb253284 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -6,6 +6,7 @@ v 6.4.0
- Minimal password length increased to 8 symbols
- Side-by-side diff view (Steven Thonus)
- Internal projects (Jason Hollingsworth)
+ - Allow removal of avatar (Drew Blessing)
v 6.3.0
- API for adding gitlab-ci service
diff --git a/app/assets/stylesheets/sections/profile.scss b/app/assets/stylesheets/sections/profile.scss
index 21f4ed0577d..068e8994cb1 100644
--- a/app/assets/stylesheets/sections/profile.scss
+++ b/app/assets/stylesheets/sections/profile.scss
@@ -42,3 +42,7 @@
margin-right: 12px;
}
+.remove_avatar {
+ margin-top: 10px;
+}
+
diff --git a/app/controllers/profiles/avatars_controller.rb b/app/controllers/profiles/avatars_controller.rb
new file mode 100644
index 00000000000..e90eaafd440
--- /dev/null
+++ b/app/controllers/profiles/avatars_controller.rb
@@ -0,0 +1,11 @@
+class Profiles::AvatarsController < ApplicationController
+ layout "profile"
+
+ def destroy
+ @user = current_user
+ @user.remove_avatar!
+
+ @user.save
+ redirect_to profile_path
+ end
+end
diff --git a/app/views/profiles/show.html.haml b/app/views/profiles/show.html.haml
index c22e00d3d77..69fc7b62c5d 100644
--- a/app/views/profiles/show.html.haml
+++ b/app/views/profiles/show.html.haml
@@ -59,9 +59,14 @@
.clearfix
.profile-avatar-form-option
%p.light
- You can upload an avatar here
- %br
- or change it at #{link_to "gravatar.com", "http://gravatar.com"}
+ - if @user.avatar?
+ You can change your avatar here
+ %br
+ or remove the current avatar to revert to #{link_to "gravatar.com", "http://gravatar.com"}
+ - else
+ You can upload an avatar here
+ %br
+ or change it at #{link_to "gravatar.com", "http://gravatar.com"}
%hr
%a.choose-btn.btn.btn-small.js-choose-user-avatar-button
%i.icon-paper-clip
@@ -70,6 +75,8 @@
%span.file_name.js-avatar-filename File name...
= f.file_field :avatar, class: "js-user-avatar-input hide"
%span.help-block The maximum file size allowed is 100KB.
+ - if @user.avatar?
+ = link_to 'Remove avatar', profile_avatar_path, confirm: "Avatar will be removed. Are you sure?", method: :delete, class: "btn btn-remove remove_avatar"
.form-actions
- = f.submit 'Save changes', class: "btn btn-save"
+ = f.submit 'Save changes', class: "btn btn-save" \ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index d89fc20c6c9..35143a4268c 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -127,6 +127,7 @@ Gitlab::Application.routes.draw do
delete :leave
end
end
+ resource :avatar, only: [:destroy]
end
end
diff --git a/features/profile/profile.feature b/features/profile/profile.feature
index 6198fd2b306..6b0421a20b3 100644
--- a/features/profile/profile.feature
+++ b/features/profile/profile.feature
@@ -26,6 +26,14 @@ Feature: Profile
Given I visit profile page
Then I change my avatar
And I should see new avatar
+ And I should see the "Remove avatar" button
+
+ Scenario: I remove my avatar
+ Given I visit profile page
+ And I have an avatar
+ When I remove my avatar
+ Then I should see my gravatar
+ And I should not see the "Remove avatar" button
Scenario: My password is expired
Given my password is expired
diff --git a/features/steps/profile/profile.rb b/features/steps/profile/profile.rb
index 9d091e93aa2..3e4a105ec55 100644
--- a/features/steps/profile/profile.rb
+++ b/features/steps/profile/profile.rb
@@ -31,6 +31,29 @@ class Profile < Spinach::FeatureSteps
@user.avatar.url.should == "/uploads/user/avatar/#{ @user.id }/gitlab_logo.png"
end
+ step 'I should see the "Remove avatar" button' do
+ page.should have_link("Remove avatar")
+ end
+
+ step 'I have an avatar' do
+ attach_file(:user_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png'))
+ click_button "Save changes"
+ @user.reload
+ end
+
+ step 'I remove my avatar' do
+ click_link "Remove avatar"
+ @user.reload
+ end
+
+ step 'I should see my gravatar' do
+ @user.avatar?.should be_false
+ end
+
+ step 'I should not see the "Remove avatar" button' do
+ page.should_not have_link("Remove avatar")
+ end
+
step 'I try change my password w/o old one' do
within '.update-password' do
fill_in "user_password", with: "22233344"
diff --git a/spec/routing/routing_spec.rb b/spec/routing/routing_spec.rb
index 1b1d19d26b1..1af052d8739 100644
--- a/spec/routing/routing_spec.rb
+++ b/spec/routing/routing_spec.rb
@@ -185,6 +185,13 @@ describe Profiles::KeysController, "routing" do
end
end
+# profile_avatar DELETE /profile/avatar(.:format) profiles/avatars#destroy
+describe Profiles::AvatarsController, "routing" do
+ it "to #destroy" do
+ delete("/profile/avatar").should route_to('profiles/avatars#destroy')
+ end
+end
+
# dashboard GET /dashboard(.:format) dashboard#show
# dashboard_issues GET /dashboard/issues(.:format) dashboard#issues
# dashboard_merge_requests GET /dashboard/merge_requests(.:format) dashboard#merge_requests