diff --git a/Gemfile b/Gemfile
index 77627808d..cc92bec3d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -28,9 +28,12 @@ gem 'redfinger', :git => 'git://github.com/rsofaer/redfinger.git'
#EventMachine
gem 'em-http-request',:git => 'git://github.com/igrigorik/em-http-request.git', :require => 'em-http'
-gem 'em-websocket'
gem 'thin'
+#Websocket
+gem 'em-websocket'
+gem 'magent', :git => 'http://github.com/dcu/magent.git'
+
#File uploading
gem 'carrierwave', :git => 'git://github.com/rsofaer/carrierwave.git' , :branch => 'master' #Untested mongomapper branch
gem 'mini_magick'
diff --git a/Gemfile.lock b/Gemfile.lock
index 007810850..dd181b320 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -47,6 +47,14 @@ GIT
bcrypt-ruby (~> 2.1.2)
warden (~> 0.10.7)
+GIT
+ remote: http://github.com/dcu/magent.git
+ revision: 06513f3dac812469a55f2e365c349af4d2abc92a
+ specs:
+ magent (0.4.2)
+ mongo (>= 0.1.0)
+ uuidtools (>= 2.0.0)
+
GIT
remote: http://github.com/jnunemaker/mongomapper.git
revision: 931dab779011aa7acf60c1a4c7ad19e1ba838345
@@ -213,6 +221,7 @@ GEM
treetop (1.4.8)
polyglot (>= 0.3.1)
tzinfo (0.3.23)
+ uuidtools (2.1.1)
warden (0.10.7)
rack (>= 1.0.0)
webmock (1.3.5)
@@ -242,6 +251,7 @@ DEPENDENCIES
haml
jnunemaker-validatable (= 1.8.4)!
json
+ magent!
mini_magick
mocha
mongo_mapper (= 0.8.4)!
diff --git a/README.md b/README.md
index 9ae943073..d941ac182 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,13 @@ GEMS: We would like to keep external dependencies unduplicated. We're using No
The privacy aware, personally controlled, do-it-all, open source social network.
**DISCLAIMER: THIS IS PRE-ALPHA SOFTWARE AND SHOULD BE TREATED ACCORDINGLY.**
+**PLEASE, DO NOT RUN IN PRODUCTION. IT IS FUN TO GET RUNNING, BUT EXPECT THINGS TO BE BROKEN**
+
+Also, we really want to continue to focus on features and improving the code base. When we think it is
+ready for general use, we will post more detailed instructions.
+
+
+
These instructions are for machines running [Ubuntu](http://www.ubuntu.com/), [Fedora](http://www.fedoraproject.org) or Mac OS X. We are developing Diaspora for the latest and greatest browsers, so please update your Firefox, Chrome or Safari to the latest and greatest.
## Preparing your system
@@ -147,13 +154,13 @@ To install Git on **Mac OS X**, run the following:
### Rubygems
-On **Ubuntu**, run the following:
+On **Ubuntu** 10.04, run the following:
- wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz
- tar -xf rubygems-1.3.7.tgz
- cd rubygems-1.3.7
- sudo ruby setup.rb
- sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
+ sudo add-apt-repository ppa:maco.m/ruby
+ sudo apt-get update
+ sudo apt-get install rubygems
+
+This PPA is maintained by an Ubuntu Developer. For Ubuntu 10.10, this version of rubygems is in the repositories.
On **Fedora**, run the following:
@@ -164,7 +171,7 @@ On **Mac OS X**, RubyGems comes preinstalled; however, you might need to update
### Bundler
-After RubyGems is updated, simply run `sudo gem install bundler` to get Bundler.
+After RubyGems is updated, simply run `sudo gem install bundler` to get Bundler. If you're using Ubuntu repository .debs, bundler is found at /var/lib/gems/1.8/bin/bundle
## Getting Diaspora
@@ -184,6 +191,8 @@ If you installed the Ubuntu package, MongoDB should already be running (if not,
If you installed the Fedora package, MongoDB will need to be started via `service mongodb start`. If you installed the binary manually, run `sudo mongod` from where mongo is installed to start mongo.
+If you installed the OsX package through "brew", MongoDB will need to be started via `sudo launchctl load /Library/LaunchDaemons/org.mongodb.mongod.plist`. (before you have to go to /Library/LaunchDaemons and add a symlink to /usr/local/Cellar/mongodb/1.6.2-x86_64/org.mongodb.mongod.plist)
+
Diaspora will not run unless mongo is running. Mongo will not run by default, and will need to be started every time you wish to use or run the test suite for Diaspora.
### Run the app server
diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb
index 88da5cc88..ab144ad12 100644
--- a/app/controllers/aspects_controller.rb
+++ b/app/controllers/aspects_controller.rb
@@ -47,7 +47,7 @@ class AspectsController < ApplicationController
def manage
@aspect = :manage
- @remote_requests = Request.for_user current_user
+ @remote_requests = Request.for_user(current_user).all
end
def update
diff --git a/app/controllers/sockets_controller.rb b/app/controllers/sockets_controller.rb
index 2852a7160..9b90ea831 100644
--- a/app/controllers/sockets_controller.rb
+++ b/app/controllers/sockets_controller.rb
@@ -14,7 +14,7 @@ class SocketsController < ApplicationController
def outgoing(uid,object,opts={})
@_request = ActionDispatch::Request.new({})
- Diaspora::WebSocket.push_to_user(uid, action_hash(uid, object, opts))
+ Diaspora::WebSocket.queue_to_user(uid, action_hash(uid, object, opts))
end
end
diff --git a/app/models/person.rb b/app/models/person.rb
index bed5bb246..48e8b0816 100644
--- a/app/models/person.rb
+++ b/app/models/person.rb
@@ -85,6 +85,7 @@ class Person
local_person
elsif !identifier.include?("localhost") && !opts[:local]
begin
+ puts "begin finger"
f = Redfinger.finger(identifier)
rescue SocketError => e
raise "Diaspora server for #{identifier} not found" if e.message =~ /Name or service not known/
diff --git a/app/models/post.rb b/app/models/post.rb
index e2dd53d3d..9f7c3ff27 100644
--- a/app/models/post.rb
+++ b/app/models/post.rb
@@ -4,6 +4,7 @@
class Post
+ require 'lib/diaspora/websocket'
require 'lib/encryptable'
include MongoMapper::Document
include ApplicationHelper
diff --git a/app/models/request.rb b/app/models/request.rb
index 739500e4e..da62edd93 100644
--- a/app/models/request.rb
+++ b/app/models/request.rb
@@ -26,8 +26,8 @@ class Request
validates_presence_of :destination_url, :callback_url
before_validation :clean_link
- scope :for_user, lambda{ |user| where(:destination_url => user.person.receive_url) }
- scope :from_user, lambda{ |user| where(:destination_url.ne => user.person.receive_url) }
+ scope :for_user, lambda{ |user| where(:destination_url => user.receive_url) }
+ scope :from_user, lambda{ |user| where(:destination_url.ne => user.receive_url) }
def self.instantiate(options = {})
person = options[:from]
diff --git a/app/views/aspects/manage.html.haml b/app/views/aspects/manage.html.haml
index 9a98b9d06..667196b85 100644
--- a/app/views/aspects/manage.html.haml
+++ b/app/views/aspects/manage.html.haml
@@ -12,7 +12,7 @@
Requests
.requests
- %ul
+ %ul.dropzone
- for request in @remote_requests
%li.requested_person{:id => request.person.id, :request_id => request.id}
= person_image_tag(request.person)
@@ -22,7 +22,7 @@
Ignore/Remove
%li.remove
- %ul
+ %ul.dropzone
- content_for :publish do
= link_to("add a new aspect", "#add_aspect_pane", :id => "add_aspect_button", :class => "new_aspect button", :title => "Add a new aspect")
diff --git a/app/views/posts/_debug.haml b/app/views/posts/_debug.haml
index 27d508cf2..17d7baad8 100644
--- a/app/views/posts/_debug.haml
+++ b/app/views/posts/_debug.haml
@@ -7,6 +7,9 @@
%h5 DEBUG INFO
#debug_more{ :style => "display:none;" }
%ul
+ %li
+ %b
+ = GIT_INFO
%li
%b params
= params.inspect
@@ -14,3 +17,4 @@
%b websocket status
#debug
.msg
+
diff --git a/config/app_config.yml b/config/app_config.yml
index 0a206c366..a138424ee 100644
--- a/config/app_config.yml
+++ b/config/app_config.yml
@@ -8,6 +8,7 @@ development:
debug: false
socket_debug : false
socket_port: 8080
+ socket_collection_name: 'websocket'
pubsub_server: 'https://pubsubhubbub.appspot.com/'
test:
diff --git a/config/application.rb b/config/application.rb
index ef8a567a5..b409f91d3 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -6,9 +6,9 @@
require File.expand_path('../boot', __FILE__)
-require "action_controller/railtie"
-require "action_mailer/railtie"
-require "active_resource/railtie"
+require 'action_controller/railtie'
+require 'action_mailer/railtie'
+require 'active_resource/railtie'
# If you have a Gemfile, require the gems listed there, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(:default, Rails.env) if defined?(Bundler)
diff --git a/config/deploy.rb b/config/deploy.rb
index 0ffb5ca4c..bceef51b5 100644
--- a/config/deploy.rb
+++ b/config/deploy.rb
@@ -53,6 +53,11 @@ namespace :deploy do
task :start do
start_mongo
start_thin
+ start_websocket
+ end
+
+ task :start_websocket do
+ run("cd #{current_path} && bundle exec ruby ./script/websocket_server.rb > /dev/null&")
end
task :start_mongo do
diff --git a/config/environment.rb b/config/environment.rb
index dc11087dd..385a96651 100644
--- a/config/environment.rb
+++ b/config/environment.rb
@@ -7,6 +7,7 @@
# Load the rails application
require File.expand_path('../application', __FILE__)
Haml::Template.options[:format] = :html5
+Haml::Template.options[:escape_html] = true
# Initialize the rails application
Diaspora::Application.initialize!
diff --git a/config/initializers/git_info.rb b/config/initializers/git_info.rb
new file mode 100644
index 000000000..a6d767aa4
--- /dev/null
+++ b/config/initializers/git_info.rb
@@ -0,0 +1,6 @@
+# Copyright (c) 2010, Diaspora Inc. This file is
+# licensed under the Affero General Public License version 3. See
+# the COPYRIGHT file.
+
+
+GIT_INFO = `git show`
diff --git a/config/sprinkle/provision.rb b/config/sprinkle/provision.rb
index 8157fd952..fc81b1ca3 100644
--- a/config/sprinkle/provision.rb
+++ b/config/sprinkle/provision.rb
@@ -7,11 +7,11 @@
-require "#{File.dirname(__FILE__)}/packages/essential"
-require "#{File.dirname(__FILE__)}/packages/database"
-require "#{File.dirname(__FILE__)}/packages/server"
-require "#{File.dirname(__FILE__)}/packages/scm"
-require "#{File.dirname(__FILE__)}/packages/ruby"
+require '#{File.dirname(__FILE__)}/packages/essential'
+require '#{File.dirname(__FILE__)}/packages/database'
+require '#{File.dirname(__FILE__)}/packages/server'
+require '#{File.dirname(__FILE__)}/packages/scm'
+require '#{File.dirname(__FILE__)}/packages/ruby'
policy :diaspora, :roles => [:pivots] do
# requires :clean_dreamhost
diff --git a/lib/diaspora/websocket.rb b/lib/diaspora/websocket.rb
index fc79559f6..687bd2b7c 100644
--- a/lib/diaspora/websocket.rb
+++ b/lib/diaspora/websocket.rb
@@ -6,6 +6,11 @@
module Diaspora
module WebSocket
+ def self.queue_to_user(uid, data)
+ channel = Magent::GenericChannel.new('websocket')
+ channel.enqueue({:uid => uid, :data => data})
+ end
+
def self.initialize_channels
@channels = {}
end
@@ -44,6 +49,5 @@ module Diaspora
def unsocket_from_uid(id, opts={})
SocketsController.new.outgoing(id, Retraction.for(self), opts)
end
-
end
end
diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake
index 22f995325..80e3bafe5 100644
--- a/lib/tasks/db.rake
+++ b/lib/tasks/db.rake
@@ -63,6 +63,7 @@ namespace :db do
return this.diaspora_handle.charAt(this.diaspora_handle.length-1) == '@'
}")
+ puts "Found #{people.count} people with broken diaspora_handle fields"
people.each do |person|
if person.owner
puts "Resetting diaspora handle for #{person.owner.username}"
diff --git a/public/javascripts/aspect-edit.js b/public/javascripts/aspect-edit.js
index e1d9b6c6c..86c61ba93 100644
--- a/public/javascripts/aspect-edit.js
+++ b/public/javascripts/aspect-edit.js
@@ -39,6 +39,7 @@ $(function() {
});
$(".aspect ul").droppable({
+ hoverClass: 'active',
drop: function(event, ui) {
if ($(ui.draggable[0]).hasClass('requested_person')){
@@ -69,6 +70,7 @@ $(function() {
});
$(".remove ul").droppable({
+ hoverClass: 'active',
drop: function(event, ui) {
if ($(ui.draggable[0]).hasClass('requested_person')){
@@ -91,7 +93,7 @@ $(function() {
});
});
-$(".aspect h1").live( 'click', function() {
+$(".aspect h1").live( 'focus', function() {
var $this = $(this);
var id = $this.closest("li").children("ul").attr("id");
diff --git a/public/javascripts/fancybox/jquery.fancybox-1.3.1.js b/public/javascripts/fancybox/jquery.fancybox-1.3.1.js
index 688f93aa3..e9b4f404b 100755
--- a/public/javascripts/fancybox/jquery.fancybox-1.3.1.js
+++ b/public/javascripts/fancybox/jquery.fancybox-1.3.1.js
@@ -262,6 +262,11 @@
close.show();
}
+ $("#fancybox-inner input[type='text'], #fancybox-inner textarea").focus(function() {
+ $(document).unbind('keydown.fb');
+ });
+
+
fancybox_set_navigation();
$(window).bind("resize.fb", $.fancybox.center);
@@ -1074,4 +1079,4 @@
fancybox_init();
});
-})(jQuery);
\ No newline at end of file
+})(jQuery);
diff --git a/public/javascripts/fancybox/jquery.fancybox-1.3.1.pack.js b/public/javascripts/fancybox/jquery.fancybox-1.3.1.pack.js
index 8421d53a6..8efd14070 100755
--- a/public/javascripts/fancybox/jquery.fancybox-1.3.1.pack.js
+++ b/public/javascripts/fancybox/jquery.fancybox-1.3.1.pack.js
@@ -14,31 +14,6 @@
* http://www.gnu.org/licenses/gpl.html
*/
-(function(b){var m,u,x,g,D,i,z,A,B,p=0,e={},q=[],n=0,c={},j=[],E=null,s=new Image,G=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,S=/[^\.]\.(swf)\s*$/i,H,I=1,k,l,h=false,y=b.extend(b("