Merge branch 'master' of github.com:diaspora/diaspora into production

This commit is contained in:
maxwell 2010-08-24 14:45:04 -07:00
commit f5316fb3c1
17 changed files with 138 additions and 107 deletions

View file

@ -37,6 +37,8 @@ def warzombie
def zombiefriendaccept def zombiefriendaccept
render :nothing => true render :nothing => true
set_profile_photo
Request.all.each{|r| Request.all.each{|r|
current_user.accept_and_respond(r.id, current_user.groups.first.id) current_user.accept_and_respond(r.id, current_user.groups.first.id)
} }
@ -54,4 +56,15 @@ def warzombie
file.write(seed_num_hash.to_yaml) file.write(seed_num_hash.to_yaml)
file.close file.close
end end
def set_profile_photo
album = current_user.post(:album, :name => "Profile Photos")
backer_number = YAML.load_file(Rails.root.join('config','backer_number.yml'))[:seed_number].to_i
username = backer_info[backer_number]['username'].gsub(/ /,'').downcase
photo = current_user.post(:photo, :album_id => album.id,
:user_file => "public/images/users/#{username}.jpg")
current_user.update_profile(:image_url => photo.url)
end
end end

View file

@ -3,8 +3,10 @@ class GroupsController < ApplicationController
def index def index
@posts = current_user.visible_posts(:by_members_of => :all).paginate :page => params[:page], :order => 'created_at DESC' @posts = current_user.visible_posts(:by_members_of => :all).paginate :page => params[:page], :order => 'created_at DESC'
@group = :all
@friends = current_user.friends @friends = current_user.friends
@groups = current_user.groups.find_all_by_id(params[:group_ids]) if params[:group_ids]
@groups ||= current_user.groups
end end
def create def create

View file

@ -9,7 +9,7 @@ class SocketsController < ApplicationController
def outgoing(uid,object,opts={}) def outgoing(uid,object,opts={})
@_request = ActionDispatch::Request.new({}) @_request = ActionDispatch::Request.new({})
Diaspora::WebSocket.push_to_user(uid, action_hash(uid, object, :group_id => opts[:group_id])) Diaspora::WebSocket.push_to_user(uid, action_hash(uid, object, opts))
end end
end end

View file

@ -6,16 +6,12 @@ class StatusMessagesController < ApplicationController
@status_message = current_user.post(:status_message, params[:status_message]) @status_message = current_user.post(:status_message, params[:status_message])
if @status_message.created_at if @status_message.created_at
flash[:notice] = "Successfully created status message." render :nothing => true
else else
render :action => 'new' redirect_to root_url
end end
end end
def new
@status_message = StatusMessage.new
end
def destroy def destroy
@status_message = StatusMessage.where(:id => params[:id]).first @status_message = StatusMessage.where(:id => params[:id]).first
@status_message.destroy @status_message.destroy

View file

@ -13,8 +13,8 @@ module SocketsHelper
Rails.logger.error("web socket view rendering failed for object #{object.inspect}.") Rails.logger.error("web socket view rendering failed for object #{object.inspect}.")
raise e raise e
end end
action_hash = {:class =>object.class.to_s.underscore.pluralize, :group_id => opts[:group_id] , :html => v, :post_id => obj_id(object)} action_hash = {:class =>object.class.to_s.underscore.pluralize, :html => v, :post_id => obj_id(object)}
action_hash.merge! opts
if object.is_a? Photo if object.is_a? Photo
action_hash[:photo_hash] = object.thumb_hash action_hash[:photo_hash] = object.thumb_hash
elsif object.is_a? StatusMessage elsif object.is_a? StatusMessage

View file

@ -80,10 +80,10 @@ class User
group.save group.save
target_people = target_people | group.people target_people = target_people | group.people
} }
post.socket_to_uid(id, :group_ids => groups.map{|g| g.id}) if post.respond_to?(:socket_to_uid)
post.push_to( target_people ) post.push_to( target_people )
post.socket_to_uid(id) if post.respond_to?(:socket_to_uid)
self.raw_visible_posts << post self.raw_visible_posts << post
self.save self.save
post post

View file

@ -9,7 +9,8 @@
//Attach onmessage to websocket //Attach onmessage to websocket
ws.onmessage = function(evt) { ws.onmessage = function(evt) {
var obj = jQuery.parseJSON(evt.data); var obj = jQuery.parseJSON(evt.data);
debug("got a " + obj['class'] + " for group " + obj['group_id']); console.log(obj)
debug("got a " + obj['class'] + " for groups " + obj['group_ids']);
if (obj['class']=="retractions"){ if (obj['class']=="retractions"){
processRetraction(obj['post_id']); processRetraction(obj['post_id']);
@ -19,10 +20,8 @@
}else if (obj['class']=='photos' && onPageForClass('albums')){ }else if (obj['class']=='photos' && onPageForClass('albums')){
processPhotoInAlbum(obj['photo_hash']) processPhotoInAlbum(obj['photo_hash'])
}else if (obj['class']=='status_messages'){
processStatusMessage(obj['class'], obj['html'], obj['status_message_hash'], obj['group_id'], obj['mine?'])
}else{ }else{
processPost(obj['class'], obj['html'], obj['group_id'], obj['mine?']) processPost(obj['class'], obj['html'], obj['group_ids'])
} }
@ -33,69 +32,68 @@
debug("connected..."); debug("connected...");
}; };
function processRetraction(post_id){
$('#' + post_id ).fadeOut(500, function(){
$(this).remove;
});
}
function processComment(post_id, html){
post = $('#' + post_id)[0]
$(' .comment_set li:last', post ).before(
$(html).fadeIn("fast", function(){})
);
toggler = $('.show_post_comments', post)
toggler.html(
toggler.html().replace(/\d/,$('.comment_set', post)[0].childElementCount -1));
}
function processPost(className, html, groupId, mineBool){
if(mineBool || onPageForClass(className) || onPageForGroup(groupId)){
$("#stream").prepend(
$(html).fadeIn("fast", function(){
$("#stream label:first").inFieldLabels();
})
);
}
}
function processStatusMessage(className, html, messageHash, groupId, mineBool){
processPost(className, html, groupId, mineBool);
console.log(messageHash)
if(messageHash['mine?']){
updateMyLatestStatus(messageHash);
}
}
function updateMyLatestStatus(messageHash){
$("#latest_message").text(messageHash['text']);
$("#latest_message_time").text(' - just now');
}
function processPhotoInAlbum(photoHash){
if (location.href.indexOf(photoHash['album_id']) == -1){
return ;
}
html = "<div class=\'image_thumb\' id=\'"+photoHash['id']+"\' style=\'padding-right:3px;\'> \
<a href=\"/photos/"+ photoHash['id'] +"\"> \
<img alt=\"New thumbnail\" src=\""+ photoHash['thumb_url'] +"\" /> \
</a> </div>"
$("#thumbnails").append( $(html) )
$("#"+ photoHash['id'] + " img").load( function() {
$(this).fadeIn("slow");
});
}
function onPageForClass(className){
return ((location.href.indexOf(className) != -1 ) || (location.pathname == '/')) && onPageOne();
}
function onPageForGroup(groupId){
return (location.href.indexOf(groupId) != -1 )
}
function onPageOne() {
var c = document.location.search.charAt(document.location.search.length-1);
return ((c =='') || (c== '1'));
}
}); });
function processRetraction(post_id){
$('#' + post_id ).fadeOut(500, function(){
$(this).remove;
});
}
function processComment(post_id, html){
post = $('#' + post_id)[0]
$(' .comment_set li:last', post ).before(
$(html).fadeIn("fast", function(){})
);
toggler = $('.show_post_comments', post)
toggler.html(
toggler.html().replace(/\d/,$('.comment_set', post)[0].childElementCount -1));
}
function processPost(className, html, groupIds){
if(onPageForGroups(groupIds)){
$("#stream").prepend(
$(html).fadeIn("fast", function(){
$("#stream label:first").inFieldLabels();
})
);
}
}
function processPhotoInAlbum(photoHash){
if (location.href.indexOf(photoHash['album_id']) == -1){
return ;
}
html = "<div class=\'image_thumb\' id=\'"+photoHash['id']+"\' style=\'padding-right:3px;\'> \
<a href=\"/photos/"+ photoHash['id'] +"\"> \
<img alt=\"New thumbnail\" src=\""+ photoHash['thumb_url'] +"\" /> \
</a> </div>"
$("#thumbnails").append( $(html) )
$("#"+ photoHash['id'] + " img").load( function() {
$(this).fadeIn("slow");
});
}
function onPageForClass(className){
return ((location.href.indexOf(className) != -1 ) || (location.pathname == '/')) && onPageOne();
}
function onPageForGroups(groupIds){
if(location.pathname == '/' && onPageOne()){
return true
}
var found = false;
$.each(groupIds, function(index, value) {
if(onPageForGroup(value)){ found = true };
});
return found;
}
function onPageForGroup(groupId){
return (location.href.indexOf(groupId) != -1 )
}
function onPageOne() {
var c = document.location.search.charAt(document.location.search.length-1);
return ((c =='') || (c== '1'));
}

View file

@ -1,9 +1,10 @@
#friend_pictures #friend_pictures
- for friend in @friends - for friend in @friends
= person_image_link(friend) = person_image_link(friend)
= link_to (image_tag 'add_friend_button.png'), "#add_request_pane", :id => 'add_request_button'
- unless @group == :all - unless @group == :all
= link_to (image_tag 'add_friend_button.png'), "#add_request_pane", :id => 'add_request_button'
.yo{:style => 'display:none'} .yo{:style => 'display:none'}
#add_request_pane #add_request_pane
= render "requests/new_request" = render "requests/new_request"

View file

@ -3,8 +3,8 @@
= form_for StatusMessage.new, :remote => true do |f| = form_for StatusMessage.new, :remote => true do |f|
= f.error_messages = f.error_messages
.span-15.last .span-15
.span-2.last .span-2
.user_image .user_image
= owner_image_tag = owner_image_tag
.span-13.last .span-13.last
@ -12,8 +12,7 @@
%label{:for => "status_message_message"} Message %label{:for => "status_message_message"} Message
= f.text_area :message, :rows => 2 = f.text_area :message, :rows => 2
.span-3.last .span-3
%ul.group_selector %ul.group_selector
going to... going to...
- for group in current_user.groups - for group in current_user.groups

View file

@ -1,13 +0,0 @@
- title "New Status Message"
= form_for @status_message, :remote => true do |f|
= f.error_messages
%p
= f.label :message
%br
= f.text_field :message
%p
= f.submit
%p= link_to "Back to List", status_messages_path

View file

@ -1,6 +1,6 @@
development: development:
debug: false debug: false
socket_debug : false socket_debug : true
socket_port: 8080 socket_port: 8080
pubsub_server: 'https://pubsubhubbub.appspot.com/' pubsub_server: 'https://pubsubhubbub.appspot.com/'

View file

@ -1,7 +1,7 @@
Diaspora::Application.routes.draw do Diaspora::Application.routes.draw do
resources :people, :only => [:index, :show, :destroy] resources :people, :only => [:index, :show, :destroy]
resources :users, :except => [:create, :new] resources :users, :except => [:create, :new]
resources :status_messages, :except => [:index] resources :status_messages, :only => [:create, :destroy, :show]
resources :comments, :except => [:index] resources :comments, :except => [:index]
resources :requests, :except => [:edit, :update] resources :requests, :except => [:edit, :update]
resources :photos, :except => [:index] resources :photos, :except => [:index]

View file

@ -19,10 +19,12 @@ def create
:password => "#{username+backer_info[backer_number]['pin'].to_s}", :password => "#{username+backer_info[backer_number]['pin'].to_s}",
:person => Person.new( :person => Person.new(
:email => "#{username}@#{username}.joindiaspora.com", :email => "#{username}@#{username}.joindiaspora.com",
:profile => Profile.new( :first_name => backer_info[backer_number]['given_name'], :last_name => backer_info[backer_number]['family_name'] ), :profile => Profile.new( :first_name => backer_info[backer_number]['given_name'], :last_name => backer_info[backer_number]['family_name'],
:image_url => "http://#{username}.joindiaspora.com/images/users/#{username}.jpg"),
:url=> "http://#{username}.joindiaspora.com/") :url=> "http://#{username}.joindiaspora.com/")
) )
user.person.save user.person.save
user.group(:name => "Presidents") user.group(:name => "Presidents")
end end

View file

@ -10,7 +10,7 @@ module Diaspora
end end
def self.subscribe(uid, ws) def self.subscribe(uid, ws)
Rails.logger.debug "Subscribing socket to #{User.first(:id => uid).email}" Rails.logger.debug "Subscribing socket to #{uid}"
self.ensure_channel(uid) self.ensure_channel(uid)
@channels[uid][0].subscribe{ |msg| ws.send msg } @channels[uid][0].subscribe{ |msg| ws.send msg }
@channels[uid][1] += 1 @channels[uid][1] += 1
@ -32,7 +32,8 @@ module Diaspora
module Socketable module Socketable
def socket_to_uid(id, opts={}) def socket_to_uid(id, opts={})
SocketsController.new.outgoing(id, self, :group_id => opts[:group_id]) puts "#{id}, #{self}, #{opts}"
SocketsController.new.outgoing(id, self, opts)
end end
def unsocket_from_uid id def unsocket_from_uid id

View file

@ -319,18 +319,27 @@ label {
height: 50px; height: 50px;
padding-left: 10px; } padding-left: 10px; }
#publisher ul.group_selector { #publisher ul.group_selector {
float: left;
padding: 0; padding: 0;
margin: 0; margin: 0;
width: 150px; width: auto;
z-index: 10;
position: absolute;
height: auto;
overflow: visible;
list-style: none; } list-style: none; }
#publisher ul.group_selector > li { #publisher ul.group_selector > li {
z-index: 10; height: auto;
font-size: smaller;
padding: 2px;
display: none; display: none;
background-color: white; } background-color: white; }
#publisher ul.group_selector > li:active { #publisher ul.group_selector > li:active {
background-color: yellow; } background-color: yellow; }
#publisher ul.group_selector:hover li { #publisher ul.group_selector:hover li {
display: block; } display: block; }
#publisher .button {
margin-left: 100px; }
#image_picker .small_photo { #image_picker .small_photo {
height: 100px; height: 100px;

View file

@ -397,14 +397,21 @@ label
:left 10px :left 10px
ul.group_selector ul.group_selector
:float left
:padding 0 :padding 0
:margin 0 :margin 0
:width 150px :width auto
:z-index 10
:position absolute
:height auto
:overflow visible
:list :list
:style none :style none
> li > li
:z-index 10 :height auto
:font-size smaller
:padding 2px
:display none :display none
:background :background
:color #fff :color #fff
@ -415,6 +422,9 @@ label
&:hover li &:hover li
:display block :display block
.button
:margin-left 100px
#image_picker #image_picker

View file

@ -144,5 +144,18 @@ describe Person do
it 'should search by email exactly' do it 'should search by email exactly' do
Person.by_webfinger(@friend_one.email).should == @friend_one Person.by_webfinger(@friend_one.email).should == @friend_one
end end
describe 'wall posting' do
it 'should be able to post on another persons wall' do
#user2 is in user's group, user is in group2 on user
friend_users(@user, @group, @user2, @group2)
@user.person.post_to_wall(:person => @user2.person, :message => "youve got a great smile")
@user.person.wall_posts.count.should == 1
end
end
end end
end end