From dc5b321b62713d3da5c623829e8aa10a6da66037 Mon Sep 17 00:00:00 2001
From: maxwell <maxwell@joindiaspora.com>
Date: Wed, 30 Jun 2010 00:20:44 -0700
Subject: [PATCH] sorry for the monster commit.... 4 small chores...1) moved
 tons of dynamic javascript to haml partials in the new js view folder, and
 moved some of the js that got put in the application layout into view.js 2.
 set up a static config prefrence loader in initializers, loaded from yaml 3)
 fixed the top right login text from being pushed over. 4) fixed a bug when no
 user is on the node and someone hits the landing page.... you still cant
 create a new user from there, but now at least it doesnt blow up.

---
 app/controllers/application_controller.rb |  1 +
 app/controllers/blogs_controller.rb       |  1 -
 app/views/js/_google_a_js.haml            | 11 ++++
 app/views/js/_websocket_js.haml           | 27 +++++++++
 app/views/layouts/application.html.haml   | 68 ++---------------------
 app/views/layouts/session_wall.html.haml  | 13 +++--
 config/app_config.yml                     | 11 ++++
 config/initializers/load_app_config.rb    |  2 +
 config/initializers/socket.rb             |  7 ++-
 public/javascripts/view.js                | 19 +++++++
 public/stylesheets/application.css        |  6 +-
 public/stylesheets/sass/application.sass  |  4 +-
 12 files changed, 92 insertions(+), 78 deletions(-)
 create mode 100644 app/views/js/_google_a_js.haml
 create mode 100644 app/views/js/_websocket_js.haml
 create mode 100644 config/app_config.yml
 create mode 100644 config/initializers/load_app_config.rb

diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 7f0ca264e6..890d32a1c1 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,6 +1,7 @@
 class ApplicationController < ActionController::Base
   protect_from_forgery :except => :receive
   layout 'application'
+  
   before_filter :set_friends
 
   layout :layout_by_resource
diff --git a/app/controllers/blogs_controller.rb b/app/controllers/blogs_controller.rb
index 333cb694ad..7ca1f2441f 100644
--- a/app/controllers/blogs_controller.rb
+++ b/app/controllers/blogs_controller.rb
@@ -1,7 +1,6 @@
 class BlogsController < ApplicationController
   before_filter :authenticate_user!
 
-
   def index
     @blogs = Blog.paginate :page => params[:page], :order => 'created_at DESC'
   end
diff --git a/app/views/js/_google_a_js.haml b/app/views/js/_google_a_js.haml
new file mode 100644
index 0000000000..d160024f41
--- /dev/null
+++ b/app/views/js/_google_a_js.haml
@@ -0,0 +1,11 @@
+:javascript
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-17207587-1']);
+  _gaq.push(['_setDomainName', '#{root_url}']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
\ No newline at end of file
diff --git a/app/views/js/_websocket_js.haml b/app/views/js/_websocket_js.haml
new file mode 100644
index 0000000000..00d130029f
--- /dev/null
+++ b/app/views/js/_websocket_js.haml
@@ -0,0 +1,27 @@
+-  if user_signed_in?
+  - unless request.user_agent.include? "Safari" ||"Chrome"
+    = javascript_include_tag 'FABridge', 'swfobject', 'web_socket'
+    :javascript
+        WebSocket.__swfLocation = "/javascripts/WebSocketMain.swf";
+  :javascript
+    $(document).ready(function(){
+      function debug(str){ $("#debug").append("<p>" +  str); };
+
+      ws = new WebSocket("ws://#{request.host}:8080/");
+      ws.onmessage = function(evt) { 
+        var obj = jQuery.parseJSON(evt.data);
+        debug("got a " + obj['class']);
+        if((location.href.indexOf(obj['class']) != -1 ) || (location.pathname == '/')) {
+          $("#stream").prepend(
+            $(obj['html']).fadeIn("fast", function(){
+              $("#stream label:first").inFieldLabels();
+              }
+            )
+          ); 
+        };
+      };
+      ws.onclose = function() { debug("socket closed"); };
+      ws.onopen = function() {
+        ws.send(location.pathname);
+        debug("connected...");
+        };});
\ No newline at end of file
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 2cf2f02d64..94b5b87dc1 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -2,7 +2,8 @@
 %html
   %head
     %title
-      = "diaspora" 
+      = "diaspora "
+      = "- #{User.first.real_name}" if User.first
     %meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}/
     %meta{"http-equiv"=> "X-UA-Compatible", :content =>"chrome=1" }
     
@@ -11,73 +12,12 @@
     /= javascript_include_tag"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"
     = javascript_include_tag 'jquery142', 'rails', 'view', 'publisher'
     = javascript_include_tag 'tiny_mce/tiny_mce.js','jquery.infieldlabel'
-    :javascript
-      var _gaq = _gaq || [];
-      _gaq.push(['_setAccount', 'UA-17207587-1']);
-      _gaq.push(['_setDomainName', '#{root_url}']);
-      _gaq.push(['_trackPageview']);
-
-      (function() {
-        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-      })();
-
-    - unless request.user_agent.include? "Safari" ||"Chrome"
-      = javascript_include_tag 'FABridge', 'swfobject', 'web_socket'
-      :javascript
-          WebSocket.__swfLocation = "/javascripts/WebSocketMain.swf";
-    
+    = render "js/google_a_js"
+    = render "js/websocket_js"
     
     = csrf_meta_tag
     = yield(:head)
 
-    -  if user_signed_in?
-      :javascript
-        $(document).ready(function(){
-          function debug(str){ $("#debug").append("<p>" +  str); };
-
-          ws = new WebSocket("ws://#{request.host}:8080/");
-          ws.onmessage = function(evt) { 
-            var obj = jQuery.parseJSON(evt.data);
-            debug("got a " + obj['class']);
-            if((location.href.indexOf(obj['class']) != -1 ) || (location.pathname == '/')) {
-              $("#stream").prepend(
-                $(obj['html']).fadeIn("fast", function(){
-                  $("#stream label:first").inFieldLabels();
-                  }
-                )
-              ); 
-            };
-          };
-          ws.onclose = function() { debug("socket closed"); };
-          ws.onopen = function() {
-            ws.send(location.pathname);
-            debug("connected...");
-            };
-
-
-          $("#stream li").hover(function() {
-            $(this).children(".destroy_link").fadeIn(0);
-          }, function() {
-            $(this).children(".destroy_link").fadeOut(0);
-          });
-
-          // in field label plugin
-
-          $(".show_post_comments").click( function() {
-            if( $(this).hasClass( "visible" )) {
-              $(this).html($(this).html().replace("hide", "show"));
-              $(this).parents("li").children(".comments").fadeOut(100);
-            } else {
-              $(this).html($(this).html().replace("show", "hide"));
-              $(this).parents("li").children(".comments").fadeIn(100);
-            }
-            $(this).toggleClass( "visible" );
-          });
-
-
-        });
   
   = javascript_include_tag 'satisfaction' , 'satisfaction-display'
   %body
diff --git a/app/views/layouts/session_wall.html.haml b/app/views/layouts/session_wall.html.haml
index dfcd5d12c8..3838ba0d24 100644
--- a/app/views/layouts/session_wall.html.haml
+++ b/app/views/layouts/session_wall.html.haml
@@ -18,10 +18,13 @@
     .container
       - flash.each do |name, msg|
         = content_tag :div, msg, :id => "flash_#{name}"
-        
-      %div#huge_text
-        welcome back, 
-        %span
-          = User.first.real_name.downcase
+      - if User.first  
+        %div#huge_text
+          welcome back, 
+          %span
+            = User.first.real_name.downcase
+      -else
+        %div#huge_text
+          you need to add a user first!
 
       = yield
diff --git a/config/app_config.yml b/config/app_config.yml
new file mode 100644
index 0000000000..56f8420066
--- /dev/null
+++ b/config/app_config.yml
@@ -0,0 +1,11 @@
+development:
+  debug: true
+  socket_port: 8080
+
+test:
+  debug: false
+  socket_port: 8081
+
+production:
+  debug: false
+  socket_port: 8080
diff --git a/config/initializers/load_app_config.rb b/config/initializers/load_app_config.rb
new file mode 100644
index 0000000000..4e5bbdd9dd
--- /dev/null
+++ b/config/initializers/load_app_config.rb
@@ -0,0 +1,2 @@
+raw_config = File.read("#{Rails.root}/config/app_config.yml")
+APP_CONFIG = YAML.load(raw_config)[Rails.env].symbolize_keys
diff --git a/config/initializers/socket.rb b/config/initializers/socket.rb
index 3c716ef052..105314b8ae 100644
--- a/config/initializers/socket.rb
+++ b/config/initializers/socket.rb
@@ -11,7 +11,10 @@ module WebSocket
       SocketRenderer.instantiate_view 
     end
     
-    EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080, :debug =>true) do |ws|
+    EventMachine::WebSocket.start(
+                  :host => "0.0.0.0", 
+                  :port => APP_CONFIG[:socket_port],
+                  :debug =>APP_CONFIG[:debug]) do |ws|
       ws.onopen {
         sid = @channel.subscribe { |msg| ws.send msg }
         
@@ -25,6 +28,4 @@ module WebSocket
   def self.update_clients(object)
     @channel.push(SocketRenderer.view_hash(object).to_json) if @channel
   end
-  
- 
 end
diff --git a/public/javascripts/view.js b/public/javascripts/view.js
index 4ec1ed95b3..3b062b36ae 100644
--- a/public/javascripts/view.js
+++ b/public/javascripts/view.js
@@ -53,4 +53,23 @@ $(document).ready(function(){
   $('#flash_notice, #flash_error, #flash_alert').delay(1500).slideUp(130);
   
 
+  $("#stream li").hover(function() {
+    $(this).children(".destroy_link").fadeIn(0);
+  }, function() {
+    $(this).children(".destroy_link").fadeOut(0);
+  });
+
+  // in field label plugin
+
+  $(".show_post_comments").click( function() {
+    if( $(this).hasClass( "visible" )) {
+      $(this).html($(this).html().replace("hide", "show"));
+      $(this).parents("li").children(".comments").fadeOut(100);
+    } else {
+      $(this).html($(this).html().replace("show", "hide"));
+      $(this).parents("li").children(".comments").fadeIn(100);
+    }
+    $(this).toggleClass( "visible" );
+  });
+
 });//end document ready
diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css
index 2145ea5854..f80f31bc04 100644
--- a/public/stylesheets/application.css
+++ b/public/stylesheets/application.css
@@ -64,10 +64,10 @@ header {
     border: none;
     top: 10px; }
   header #session_action {
-    position: absolute;
-    right: 300px;
+    float: right;
     font-size: 110%;
-    top: 7px; }
+    top: 7px;
+    padding-right: 10px; }
     header #session_action a {
       color: #cccccc;
       border: none; }
diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass
index 201c5bf584..6017941363 100644
--- a/public/stylesheets/sass/application.sass
+++ b/public/stylesheets/sass/application.sass
@@ -71,14 +71,14 @@ header
     :top 10px
 
   #session_action
-    :position absolute
-    :right 300px
+    :float right
     :font
       :size 110%
     :top 7px
     a
       :color #ccc
       :border none
+    :padding-right 10px
 
 #show_filters
   :z-index 100
-- 
GitLab