tagging profiles complete

This commit is contained in:
danielgrippi 2011-03-15 13:20:59 -07:00
parent 1988e195fb
commit c608c70ca7
25 changed files with 158 additions and 95 deletions

View file

@ -22,6 +22,9 @@ class PostsController < ApplicationController
@posts = @posts.tagged_with(params[:tag]) @posts = @posts.tagged_with(params[:tag])
@posts = @posts.includes(:comments, :photos).paginate(:page => params[:page], :per_page => 15, :order => 'created_at DESC') @posts = @posts.includes(:comments, :photos).paginate(:page => params[:page], :per_page => 15, :order => 'created_at DESC')
profiles = Profile.tagged_with(params[:tag]).select('profiles.id')
@people = Person.where(:id => profiles.map{|p| p.id}).limit(15)
@fakes = PostsFake.new(@posts) @fakes = PostsFake.new(@posts)
@commenting_disabled = true @commenting_disabled = true
@pod_url = AppConfig[:pod_uri].host @pod_url = AppConfig[:pod_uri].host

View file

@ -19,15 +19,19 @@ class ProfilesController < ApplicationController
if current_user.update_profile params[:profile] if current_user.update_profile params[:profile]
flash[:notice] = I18n.t 'profiles.update.updated' flash[:notice] = I18n.t 'profiles.update.updated'
if params[:getting_started]
redirect_to getting_started_path(:step => params[:getting_started].to_i+1)
else
redirect_to current_user.person
end
else else
flash[:error] = I18n.t 'profiles.update.failed' flash[:error] = I18n.t 'profiles.update.failed'
if params[:getting_started]
redirect_to getting_started_path(:step => params[:getting_started])
else
redirect_to edit_profile_path
end
end end
if params[:getting_started]
redirect_to getting_started_path(:step => params[:getting_started].to_i+1)
else
redirect_to edit_profile_path
end
end end
end end

View file

@ -12,6 +12,7 @@ class Profile < ActiveRecord::Base
acts_as_taggable_on :tags acts_as_taggable_on :tags
extract_tags_from :tag_string extract_tags_from :tag_string
validates_length_of :tag_list, :maximum => 5
xml_attr :diaspora_handle xml_attr :diaspora_handle
xml_attr :first_name xml_attr :first_name

View file

@ -10,7 +10,10 @@
| |
= link_to_if(session[:sort_order] == 'updated_at', t('.post_time'), aspects_path(:a_ids => params[:a_ids], :sort_order => 'created_at' )) = link_to_if(session[:sort_order] == 'updated_at', t('.post_time'), aspects_path(:a_ids => params[:a_ids], :sort_order => 'created_at' ))
#main_stream.stream{:data => {:guids => aspect_ids.join(',')}} #main_stream.stream{:data => {:guids => aspect_ids.join(',')}}
= render 'shared/stream', :posts => fakes - if posts.length > 0
%a.paginate = render 'shared/stream', :posts => fakes
= t("more") %a.paginate
= t("more")
- else
= render 'aspects/no_posts_message', :post_count => posts.length
= will_paginate posts = will_paginate posts

View file

@ -39,9 +39,8 @@
.avatar .avatar
= owner_image_tag(:thumb_small) = owner_image_tag(:thumb_small)
= link_to current_user.name, '#' = link_to current_user.name, '#'
%li= link_to t('.view_profile'), current_user.person %li= link_to t('.profile'), current_user.person
%li= link_to t('.edit_profile'), edit_profile_path %li= link_to t('.settings'), edit_user_path(current_user)
%li= link_to t('.account_settings'), edit_user_path(current_user)
%li= link_to t('.logout'), destroy_user_session_path %li= link_to t('.logout'), destroy_user_session_path
-unless @landing_page -unless @landing_page

View file

@ -3,8 +3,7 @@
-# the COPYRIGHT file. -# the COPYRIGHT file.
.stream_element{:id => person.id} .stream_element{:id => person.id}
.right
.right{:style=>"display:inline;"}
- if person.owner_id == current_user.id - if person.owner_id == current_user.id
= t('.thats_you') = t('.thats_you')
- elsif contact && !contact.pending - elsif contact && !contact.pending

View file

@ -37,13 +37,6 @@
-if user_signed_in? && ((contact.persisted? && !contact.pending?) || person == current_user.person || @incoming_request) -if user_signed_in? && ((contact.persisted? && !contact.pending?) || person == current_user.person || @incoming_request)
%ul#profile_information %ul#profile_information
- unless person.profile.tags.blank?
%li
%h4
tags
= person.profile.format_tags(person.profile.tag_string)
- unless person.profile.bio.blank? - unless person.profile.bio.blank?
%li %li
%h4 %h4

View file

@ -18,9 +18,7 @@
%span.term %span.term
= params[:q] = params[:q]
.span-15.append-1 .span-15.append-1
- if @hashes.empty? - if @hashes.empty?
%p %p
=t('.no_one_found') =t('.no_one_found')

View file

@ -56,8 +56,10 @@
%h3 %h3
= @person.name = @person.name
.description %span.diaspora_handle
= @person.diaspora_handle = @person.diaspora_handle
.description
= @person.profile.format_tags(@person.profile.tag_string)
%hr %hr
- if @posts.count > 0 - if @posts.count > 0

View file

@ -2,22 +2,37 @@
-# licensed under the Affero General Public License version 3 or later. See -# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file. -# the COPYRIGHT file.
- content_for :page_title do
= t('.whatup', :pod => @pod_url)
- content_for :page_title do
- if params[:tag]
= "##{params[:tag]}"
- else
= t('.whatup', :pod => @pod_url)
- content_for :head do - content_for :head do
= include_javascripts :home = include_javascripts :home
%h1 .span-24.last
- if params[:tag] %h1
= t('.posts_tagged_with', :tag => params[:tag]) - if params[:tag]
- else = "##{params[:tag]}"
= t('.whatup', :pod => @pod_url)
- else
= t('.whatup', :pod => @pod_url)
.span-15 .span-15
#main_stream.stream #main_stream.stream
= render 'shared/stream', :posts => @fakes - if @fakes.length > 0
%a.paginate = render 'shared/stream', :posts => @fakes
= t("more") %a.paginate
= t("more")
- else
nobody likes ##{params[:tag]}.
= will_paginate @posts = will_paginate @posts
.prepend-2.span-7.last
%h3
People tagged with ##{params[:tag]}
.side_stream
= render :collection => @people, :partial => 'people/person'

View file

@ -6,17 +6,16 @@
= t('.edit_profile') = t('.edit_profile')
= form_tag profile_path(profile), :method => :put, :multipart => true, :id => 'update_profile_form' do = form_tag profile_path(profile), :method => :put, :multipart => true, :id => 'update_profile_form' do
%h3 = render 'profiles/edit_public', :profile => profile, :aspect => aspect, :person => person
= t('profiles.edit.your_profile')
.description
= t('profiles.edit.info_available_to')
= error_messages_for profile %hr
%br
%h3
= t('profiles.edit.your_private_profile')
%h4 %h4
= t('profiles.edit.your_name') = t('profiles.edit.your_bio')
= text_field_tag 'profile[first_name]', profile.first_name, :placeholder => t('profiles.edit.first_name') = text_area_tag 'profile[bio]', profile.bio, :rows => 5, :placeholder => t('fill_me_out')
= text_field_tag 'profile[last_name]', profile.last_name, :placeholder => t('profiles.edit.last_name')
%h4 %h4
= t('profiles.edit.your_gender') = t('profiles.edit.your_gender')
@ -29,28 +28,14 @@
= select_date profile.birthday, :prompt => true, = select_date profile.birthday, :prompt => true,
:default => true, :order => t('date.order'), :start_year => 2000, :end_year => 1930, :prefix => 'profile[date]' :default => true, :order => t('date.order'), :start_year => 2000, :end_year => 1930, :prefix => 'profile[date]'
%h4
= t('profiles.edit.your_tags')
= text_field_tag 'profile[tags]', profile.tag_string, :placeholder => t('.your_tags_placeholder')
%h4
= t('profiles.edit.your_bio')
= text_area_tag 'profile[bio]', profile.bio, :rows => 5, :placeholder => t('fill_me_out')
%h4
= t('profiles.edit.your_photo')
= render 'photos/new_profile_photo', :aspect => aspect, :person => person
%b
%h4 %h4
= t('search') = t('search')
%p{:class=>"checkbox_select"} %p{:class=>"checkbox_select"}
= label_tag 'profile[searchable]', t('profiles.edit.allow_search') = label_tag 'profile[searchable]', t('profiles.edit.allow_search')
= check_box_tag 'profile[searchable]', true, profile.searchable = check_box_tag 'profile[searchable]', true, profile.searchable
= hidden_field_tag :getting_started, step if step %br
.submit_block .submit_block
=yield(:submit_block) =yield(:submit_block)

View file

@ -0,0 +1,22 @@
-# Copyright (c) 2010, Diaspora Inc. This file is
-# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file.
%h3
= t('profiles.edit.your_public_profile')
= error_messages_for profile
%h4
= t('profiles.edit.your_name')
= text_field_tag 'profile[first_name]', profile.first_name, :placeholder => t('profiles.edit.first_name')
= text_field_tag 'profile[last_name]', profile.last_name, :placeholder => t('profiles.edit.last_name')
%h4
= t('profiles.edit.your_tags')
= text_field_tag 'profile[tags]', profile.tag_string, :placeholder => t('profiles.edit.your_tags_placeholder')
%h4
= t('profiles.edit.your_photo')
= render 'photos/new_profile_photo', :aspect => aspect, :person => person
%br

View file

@ -11,7 +11,7 @@
%li=link_to t('account'), edit_user_path(current_user) %li=link_to t('account'), edit_user_path(current_user)
%li=link_to t('_services'), services_path %li=link_to t('_services'), services_path
.span-19.prepend-5.last .span-12.prepend-5.last
- content_for :submit_block do - content_for :submit_block do
= link_to t('cancel'), edit_user_path(current_user) = link_to t('cancel'), edit_user_path(current_user)
= t('or') = t('or')

View file

@ -5,5 +5,5 @@
= person.name = person.name
#person_nav_links #person_nav_links
= link_to t('layouts.header.view_profile'), person_path(person) = link_to t('layouts.header.profile'), person_path(person)
= link_to t('_photos'), person_photos_path(person) = link_to t('_photos'), person_photos_path(person)

View file

@ -3,14 +3,9 @@
-# the COPYRIGHT file. -# the COPYRIGHT file.
- if posts.length > 0 = render :partial => 'shared/stream_element',
-# for post in posts :collection => posts,
= render 'shared/stream_element', :post => post, :all_aspects => @all_aspects, :commenting_disabled => defined?(@commenting_disabled) :as => :post,
= render :partial => 'shared/stream_element', :locals => {:all_aspects => @all_aspects,
:collection => posts, :commenting_disabled => defined?(@commenting_disabled)}
:as => :post,
:locals => {:all_aspects => @all_aspects,
:commenting_disabled => defined?(@commenting_disabled)}
- else
= render 'aspects/no_posts_message', :post_count => posts.length

View file

@ -13,16 +13,16 @@
%li=link_to t('account'), edit_user_path(current_user) %li=link_to t('account'), edit_user_path(current_user)
%li=link_to t('_services'), services_path %li=link_to t('_services'), services_path
.span-19.prepend-5.last .span-12.prepend-5.last
%h2 %h2
= t('account') = t('account')
.span-8.append-2 .span-5.append-1
%h3 %h3
= t('.your_handle') = t('.your_handle')
%p %p
%b= current_user.diaspora_handle %b= current_user.diaspora_handle
.span-8.last .span-5.last
%h3 %h3
= t('.your_email') = t('.your_email')
%p %p
@ -117,14 +117,14 @@
%br %br
#account_data.span-9.append-2 #account_data.span-5.append-2
%h3 %h3
= t('.export_data') = t('.export_data')
= link_to t('.download_xml'), users_export_path, :class => "button" = link_to t('.download_xml'), users_export_path, :class => "button"
%br %br
= link_to t('.download_photos'), users_export_photos_path, :class => "button" = link_to t('.download_photos'), users_export_photos_path, :class => "button"
.span-8.last .span-5.last
%h3 %h3
= t('.close_account') = t('.close_account')
= link_to t('.close_account'), current_user, = link_to t('.close_account'), current_user,

View file

@ -2,8 +2,21 @@
-# licensed under the Affero General Public License version 3 or later. See -# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file. -# the COPYRIGHT file.
- content_for :submit_block do
= submit_tag "#{t('users.getting_started.save_and_continue')} →"
= render :partial => 'profiles/edit', :locals => {:person => @person,
:profile => @profile, :aspect => @aspect, :step => @step}
= form_tag profile_path(@profile), :method => :put, :multipart => true, :id => 'update_profile_form' do
%div{:style => "width:360px"}
= render 'profiles/edit_public', :profile => @profile, :aspect => @aspect, :person => @person
= hidden_field_tag :getting_started, @step
%h4
= t('search')
%p{:class=>"checkbox_select"}
= label_tag 'profile[searchable]', t('profiles.edit.allow_search')
= check_box_tag 'profile[searchable]', true, @profile.searchable
%br
%br
%br
.submit_block
= submit_tag "#{t('users.getting_started.save_and_continue')} →"

View file

@ -246,9 +246,8 @@ en:
layouts: layouts:
header: header:
view_profile: "view profile" profile: "profile"
edit_profile: "edit profile" settings: "settings"
account_settings: "account settings"
logout: "logout" logout: "logout"
blog: "blog" blog: "blog"
login: "login" login: "login"
@ -402,15 +401,15 @@ en:
profiles: profiles:
edit: edit:
info_available_to: "This info will be available to whomever you connect with on Diaspora." your_public_profile: "Your public profile"
your_profile: "Your profile" your_private_profile: "Your private profile"
your_name: "Your name" your_name: "Your name"
first_name: "First name" first_name: "First name"
last_name: "Last name" last_name: "Last name"
your_gender: "Your gender" your_gender: "Your gender"
your_birthday: "Your birthday" your_birthday: "Your birthday"
your_tags: "You: in 5 tags" your_tags: "You: in 5 tags"
your_tags_placeholder: "i.e. #ironing #knitting #kittens #knees #doors" your_tags_placeholder: "i.e. #diaspora #ironing #kittens #music"
your_bio: "Your bio" your_bio: "Your bio"
your_photo: "Your photo" your_photo: "Your photo"
update_profile: "Update Profile" update_profile: "Update Profile"

View file

@ -12,7 +12,7 @@ Feature: invitation acceptance
And I should see "getting_started_logo" And I should see "getting_started_logo"
When I fill in "profile_first_name" with "O" When I fill in "profile_first_name" with "O"
And I fill in "profile_last_name" with "Hai" And I fill in "profile_last_name" with "Hai"
And I fill in "profile_gender" with "guess!" And I fill in "profile_tags" with "#beingawesome"
And I press "Save and continue" And I press "Save and continue"
Then I should see "Profile updated" Then I should see "Profile updated"
And I should see "Would you like to find your Facebook friends on Diaspora?" And I should see "Would you like to find your Facebook friends on Diaspora?"
@ -30,7 +30,7 @@ Feature: invitation acceptance
And I should see "getting_started_logo" And I should see "getting_started_logo"
When I fill in "profile_first_name" with "O" When I fill in "profile_first_name" with "O"
And I fill in "profile_last_name" with "Hai" And I fill in "profile_last_name" with "Hai"
And I fill in "profile_gender" with "guess!" And I fill in "profile_tags" with "#tags"
And I press "Save and continue" And I press "Save and continue"
Then I should see "Profile updated" Then I should see "Profile updated"

View file

@ -4,7 +4,7 @@ Feature: Change password
Scenario: Change my password Scenario: Change my password
Given I am signed in Given I am signed in
And I click on my name in the header And I click on my name in the header
And I follow "account settings" And I follow "settings"
Then I should be on my account settings page Then I should be on my account settings page
When I put in my password in "user_current_password" When I put in my password in "user_current_password"
And I fill in "user_password" with "newsecret" And I fill in "user_password" with "newsecret"
@ -15,4 +15,4 @@ Feature: Change password
And I follow "logout" And I follow "logout"
Then I should be on the home page Then I should be on the home page
And I sign in with password "newsecret" And I sign in with password "newsecret"
Then I should be on the aspects page Then I should be on the aspects page

View file

@ -7,7 +7,7 @@ Feature: Close Account
Scenario: user closes account Scenario: user closes account
Given I am signed in Given I am signed in
When I click on my name in the header When I click on my name in the header
And I follow "account settings" And I follow "settings"
And I click ok in the confirm dialog to appear next And I click ok in the confirm dialog to appear next
And I follow "Close Account" And I follow "Close Account"
Then I should be on the home page Then I should be on the home page
@ -30,7 +30,7 @@ Feature: Close Account
And I log out And I log out
Then I sign in as "bob@bob.bob" Then I sign in as "bob@bob.bob"
When I click on my name in the header When I click on my name in the header
And I follow "account settings" And I follow "settings"
And I click ok in the confirm dialog to appear next And I click ok in the confirm dialog to appear next
And I follow "Close Account" And I follow "Close Account"
Then I sign in as "alice@alice.alice" Then I sign in as "alice@alice.alice"

View file

@ -4,7 +4,8 @@ Feature: editing your profile
Background: Background:
Given I am signed in Given I am signed in
And I click on my name in the header And I click on my name in the header
And I follow "edit profile" And I follow "profile"
And I follow "Edit my profile"
Then I should be on my edit profile page Then I should be on my edit profile page
Scenario: editing gender with a textbox Scenario: editing gender with a textbox
@ -39,4 +40,4 @@ Feature: editing your profile
And I should see "Profile updated" And I should see "Profile updated"
And I click on my name in the header And I click on my name in the header
And I follow "view profile" And I follow "view profile"
Then I should see "November 30 1986" Then I should see "November 30 1986"

View file

@ -14,7 +14,7 @@ Feature: new user registration
Scenario: new user goes through the setup wizard Scenario: new user goes through the setup wizard
When I fill in "profile_first_name" with "O" When I fill in "profile_first_name" with "O"
And I fill in "profile_last_name" with "Hai" And I fill in "profile_last_name" with "Hai"
And I fill in "profile_gender" with "guess!" And I fill in "profile_tags" with "#gender"
And I press "Save and continue" And I press "Save and continue"
And I wait for "step 2" to load And I wait for "step 2" to load
Then I should see "Profile updated" Then I should see "Profile updated"

View file

@ -9,7 +9,7 @@ $background: rgb(252,252,252)
body body
:padding 2em :padding 2em
:margin 0 :margin 0
:top 50px :top 60px
:background-color $background :background-color $background
a a
:color #107FC9 :color #107FC9
@ -327,6 +327,8 @@ header
h4, h4,
h5 h5
:display inline-block :display inline-block
:margin
:bottom 10px
&.show &.show
a a
@ -781,7 +783,7 @@ textarea
:size 14px :size 14px
:padding 0.3em :padding 0.3em
:display block :display block
:width 66% :width 100%
:border 1px solid #ccc :border 1px solid #ccc
:height auto :height auto
@ -2744,3 +2746,27 @@ ul.show_comments
#contact_visibility_padlock:hover #contact_visibility_padlock:hover
:opacity 0.7 :opacity 0.7
.side_stream
.avatar
:float left
.right
:display none
.stream_element:hover
.right
:display none
.tag
:background
:color lighten($blue, 47%)
:font
:weight bold
.diaspora_handle
:font
:size 12px
:weight normal
:color #999
:margin
:left 6px

View file

@ -151,6 +151,11 @@ describe Profile do
person = Factory.create(:person) person = Factory.create(:person)
@object = person.profile @object = person.profile
end end
it 'allows 5 tags' do
@object.tag_string = '#one #two #three #four #five #six'
@object.build_tags
@object.valid?.should be_false
end
it_should_behave_like 'it is taggable' it_should_behave_like 'it is taggable'
end end