Refactor aspectscontroller and aspect_contacts.haml

This commit is contained in:
Raphael 2010-12-06 17:19:21 -08:00
parent 14a9bc02f9
commit 9442553504
6 changed files with 81 additions and 47 deletions

View file

@ -14,6 +14,7 @@ class AspectsController < ApplicationController
@aspect_hashes = hashes_for_aspects @aspects.all, @contacts @aspect_hashes = hashes_for_aspects @aspects.all, @contacts
@aspect = :all @aspect = :all
@contact_hashes = hashes_for_contacts @contacts
if current_user.getting_started == true if current_user.getting_started == true
redirect_to getting_started_path redirect_to getting_started_path
@ -63,7 +64,7 @@ class AspectsController < ApplicationController
unless @aspect unless @aspect
render :file => "#{Rails.root}/public/404.html", :layout => false, :status => 404 render :file => "#{Rails.root}/public/404.html", :layout => false, :status => 404
else else
@aspect_contacts = @aspect.contacts @aspect_contacts = hashes_for_contacts @aspect.contacts
@aspect_contacts_count = @aspect_contacts.count @aspect_contacts_count = @aspect_contacts.count
@posts = @aspect.posts.find_all_by__type("StatusMessage", :order => 'created_at desc').paginate :page => params[:page], :per_page => 15 @posts = @aspect.posts.find_all_by__type("StatusMessage", :order => 'created_at desc').paginate :page => params[:page], :per_page => 15
@ -140,6 +141,13 @@ class AspectsController < ApplicationController
end end
private private
def hashes_for_contacts contacts
people = Person.all(:id.in => contacts.map{|c| c.person_id})
people_hash = {}
people.each{|p| people_hash[p.id] = p}
contacts.map{|c| {:contact => c, :person => people_hash[c.person_id.to_id]}}
end
def hashes_for_aspects aspects, contacts def hashes_for_aspects aspects, contacts
aspects.map do |a| aspects.map do |a|
hash = {:aspect => a} hash = {:aspect => a}

View file

@ -0,0 +1,36 @@
-# Copyright (c) 2010, Diaspora Inc. This file is
-# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file.
- if @request_count > 0
#new_request_pane{:class => "everyone"}
%h1.new_request{:style => 'text-align:center'}
= new_request_link(@request_count)
#left_pane.everyone
%h3= t('.all_contacts')
.section.contact_pictures
- for contact in @contact_hashes
= person_image_link(contact[:person])
- if @contacts.count == 0
%h4
= t('.no_contacts')
= form_tag(people_path, :method => 'get') do
= text_field_tag 'q', nil, :placeholder => t('search'), :type => 'search', :results => 5
.section.aspect_listings
%h3
= link_to(t('.aspects'), aspects_manage_path)
.right{:style=>"font-size:12px;top:7px;"}
= link_to t('.add_aspect'), '#add_aspect_pane', :class => "add_aspect_button"
%ul
- for a_hash in @aspect_hashes
= render :partial => 'aspects/aspect', :locals => a_hash
.section
%h3= t('shared.invitations.invites')
= render "shared/invitations", :invites => @invites

View file

@ -10,44 +10,18 @@
editAspect:"#{t('aspects.show.edit_aspect')}" editAspect:"#{t('aspects.show.edit_aspect')}"
}); });
- if aspect != :all && aspect.contacts.count == 0 - if aspect.contacts.count == 0
:javascript :javascript
$(document).ready(function(){ $(document).ready(function(){
EditPane.fadeIn(); EditPane.fadeIn();
}); });
- if (aspect == :all) && @request_count > 0 #left_pane
#new_request_pane{:class => "everyone"}
%h1.new_request{:style => 'text-align:center'}
= new_request_link(@request_count)
#left_pane{:class => ("everyone" if aspect == :all)}
- if aspect == :all
%h3= t('.all_contacts')
.section.contact_pictures .section.contact_pictures
- for contact in contacts - for contact in contacts
= person_image_link(contact.person) = person_image_link(contact[:person])
- if aspect == :all && @contacts.count == 0
%h4
= t('.no_contacts')
= form_tag(people_path, :method => 'get') do
= text_field_tag 'q', nil, :placeholder => t('search'), :type => 'search', :results => 5
-if aspect == :all
.section.aspect_listings
%h3
= link_to(t('.aspects'), aspects_manage_path)
.right{:style=>"font-size:12px;top:7px;"}
= link_to t('.add_aspect'), '#add_aspect_pane', :class => "add_aspect_button"
%ul
- for a_hash in @aspect_hashes
= render :partial => 'aspects/aspect', :locals => a_hash
.section .section
%h3= t('.invites') %h3= t('shared.invitations.invites')
= render "shared/invitations", :invites => @invites = render "shared/invitations", :invites => @invites

View file

@ -21,5 +21,5 @@
= will_paginate @posts = will_paginate @posts
.span-8.last .span-8.last
= render 'aspects/aspect_contacts', :contacts => @contacts, :aspect => @aspect = render 'aspects/all_aspects_contacts'

View file

@ -85,18 +85,6 @@ en:
add_photos: "add photos" add_photos: "add photos"
all_contacts: "all contacts" all_contacts: "all contacts"
share_with_all: "share across all of your aspects" share_with_all: "share across all of your aspects"
aspect_contacts:
add_to: "add to %{aspect}"
done_editing: "done editing"
add_existing: "Add an existing contact"
aspect_settings: "Aspect settings"
remove_aspect: "Delete this aspect"
confirm_remove_aspect: "Are you sure you want to delete this aspect?"
no_contacts: "You currently have no contacts. Find your contacts here."
aspects: "Aspects"
add_aspect: "add aspect"
invites: "Invites"
all_contacts: "All contacts"
add_contact: add_contact:
enter_a_diaspora_username: "Enter a Diaspora username:" enter_a_diaspora_username: "Enter a Diaspora username:"
your_diaspora_username_is: "Your Diaspora username is: %{diaspora_handle}" your_diaspora_username_is: "Your Diaspora username is: %{diaspora_handle}"
@ -104,6 +92,7 @@ en:
diaspora_handle: "diaspora@handle.org" diaspora_handle: "diaspora@handle.org"
know_email: "Know their email address? You should invite them" know_email: "Know their email address? You should invite them"
invitations: invitations:
invites: "Invites"
invite_someone: "Invite someone" invite_someone: "Invite someone"
invitations_left: "(%{count} left)" invitations_left: "(%{count} left)"
dont_have_now: "You don't have any right now, but more invites are coming soon!" dont_have_now: "You don't have any right now, but more invites are coming soon!"
@ -121,6 +110,13 @@ en:
all_contacts: "All contacts" all_contacts: "All contacts"
cannot_remove: "Cannot remove person from last aspect. (If you want to disconnect from this person you must remove contact.)" cannot_remove: "Cannot remove person from last aspect. (If you want to disconnect from this person you must remove contact.)"
aspects: aspects:
all_aspects_contacts:
all_contacts: "All contacts"
add_aspect: "add aspect"
aspects: "Aspects"
no_contacts: "You currently have no contacts. Find your contacts here."
aspect_contacts:
done_editing: "done editing"
show: show:
edit_aspect: "edit aspect" edit_aspect: "edit aspect"
no_contacts_message: no_contacts_message:
@ -168,8 +164,8 @@ en:
index: index:
handle_explanation: "This is your diaspora handle. Like an email address, you can give this to people to reach you." handle_explanation: "This is your diaspora handle. Like an email address, you can give this to people to reach you."
edit_aspect_pane: edit_aspect_pane:
remove_aspect: "Remove Aspect" remove_aspect: "Delete this aspect"
confirm_remove_aspect: "Remove aspect?" confirm_remove_aspect: "Are you sure you want to delete this aspect?"
add_existing: "Add an existing contact" add_existing: "Add an existing contact"
users: users:
edit: edit:

View file

@ -66,7 +66,9 @@ describe AspectsController do
it "assigns aspect, aspect_contacts, and posts" do it "assigns aspect, aspect_contacts, and posts" do
get :show, 'id' => @aspect.id.to_s get :show, 'id' => @aspect.id.to_s
assigns(:aspect).should == @aspect assigns(:aspect).should == @aspect
assigns(:aspect_contacts).should == @aspect.contacts achash = @controller.send(:hashes_for_contacts, @aspect.contacts).first
assigns(:aspect_contacts).first[:contact].should == achash[:contact]
assigns(:aspect_contacts).first[:person].should == achash[:person]
assigns(:posts).should == [] assigns(:posts).should == []
end end
it "paginates" do it "paginates" do
@ -153,6 +155,24 @@ describe AspectsController do
end end
end end
describe "#hashes_for_contacts" do
before do
@people = []
10.times {@people << Factory.create(:person)}
@people.each{|p| @user.reload.activate_contact(p, @user.aspects.first.reload)}
@hashes = @controller.send(:hashes_for_contacts,@user.reload.contacts)
@hash = @hashes.first
end
it 'has as many hashes as contacts' do
@hashes.length.should == @user.contacts.length
end
it 'has a contact' do
@hash[:contact].should == @user.contacts.first
end
it 'has a person' do
@hash[:person].should == @user.contacts.first.person
end
end
describe "#hashes_for_aspects" do describe "#hashes_for_aspects" do
before do before do
@people = [] @people = []