extended user profile with social fields

This commit is contained in:
Aleksei Kvitinskii 2011-10-20 01:34:05 +03:00
parent 9ad444f02e
commit 59704f481e
10 changed files with 93 additions and 4 deletions

View file

@ -3,6 +3,12 @@ class ProfileController < ApplicationController
@user = current_user
end
def social_update
@user = current_user
@user.update_attributes(params[:user])
redirect_to [:profile]
end
def password
@user = current_user
end

View file

@ -5,7 +5,8 @@ class User < ActiveRecord::Base
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :projects_limit
attr_accessible :email, :password, :password_confirmation, :remember_me,
:name, :projects_limit, :skype, :linkedin, :twitter
has_many :users_projects, :dependent => :destroy
has_many :projects, :through => :users_projects
@ -58,5 +59,8 @@ end
# name :string(255)
# admin :boolean default(FALSE), not null
# projects_limit :integer
# skype :string
# linkedin :string
# twitter :string
#

View file

@ -25,13 +25,26 @@
= f.label :password_confirmation
%br
= f.password_field :password_confirmation
.span-11
.field.prepend-top.append-bottom
.field.prepend-top
= f.check_box :admin
= f.label :admin
.span-11
.field.prepend-top
= f.text_field :projects_limit, :class => "small_input"
= f.label :projects_limit
.field
= f.label :skype
%br
= f.text_field :skype
.field
= f.label :linkedin
%br
= f.text_field :linkedin
.field
= f.label :twitter
%br
= f.text_field :twitter
.clear
%br
.actions

View file

@ -14,6 +14,17 @@
%b Projects limit:
= @admin_user.projects_limit
%p
%b Skype:
= @admin_user.skype
%p
%b LinkedIn:
= @admin_user.linkedin
%p
%b Twitter:
= @admin_user.twitter
.clear
= link_to 'Edit', edit_admin_user_path(@admin_user)
\|

View file

@ -6,3 +6,28 @@
%p
%b Email:
= @user.email
%br
= form_for @user, :url => profile_edit_path, :method => :put do |f|
-if @user.errors.any?
#error_explanation
%ul
- @user.errors.full_messages.each do |msg|
%li= msg
.div
= f.label :skype
%br
= f.text_field :skype
.div
= f.label :linkedin
%br
= f.text_field :linkedin
.div
= f.label :twitter
%br
= f.text_field :twitter
.actions
= f.submit 'Save', :class => "lbutton vm"

View file

@ -13,6 +13,7 @@ Gitlab::Application.routes.draw do
get "errors/gitosis"
get "profile/password", :to => "profile#password"
put "profile/password", :to => "profile#password_update"
put "profile/edit", :to => "profile#social_update"
get "profile", :to => "profile#show"
#get "profile/:id", :to => "profile#show"

View file

@ -0,0 +1,7 @@
class AddSocialToUser < ActiveRecord::Migration
def change
add_column :users, :skype, :string
add_column :users, :linkedin, :string
add_column :users, :twitter, :string
end
end

View file

@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20111016195506) do
ActiveRecord::Schema.define(:version => 20111019212429) do
create_table "issues", :force => true do |t|
t.string "title"
@ -82,6 +82,9 @@ ActiveRecord::Schema.define(:version => 20111016195506) do
t.string "name"
t.boolean "admin", :default => false, :null => false
t.integer "projects_limit", :default => 10
t.string "skype"
t.string "linkedin"
t.string "twitter"
end
add_index "users", ["email"], :name => "index_users_on_email", :unique => true

View file

@ -39,5 +39,8 @@ end
# name :string(255)
# admin :boolean default(FALSE), not null
# projects_limit :integer
# skype :string
# linkedin :string
# twitter :string
#

View file

@ -14,6 +14,22 @@ describe "Profile" do
it { page.should have_content(@user.email) }
end
describe "Profile update" do
before do
visit profile_path
fill_in "user_skype", :with => "testskype"
fill_in "user_linkedin", :with => "testlinkedin"
fill_in "user_twitter", :with => "testtwitter"
click_button "Save"
@user.reload
end
it { @user.skype.should == 'testskype' }
it { @user.linkedin.should == 'testlinkedin' }
it { @user.twitter.should == 'testtwitter' }
end
describe "Password update" do
before do
visit profile_password_path