<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>app/views/assets/_add_to_facebook.html.erb</filename>
    </added>
    <added>
      <filename>app/views/assets/_big_share.html.erb</filename>
    </added>
    <added>
      <filename>app/views/assets/share.html.erb</filename>
    </added>
    <added>
      <filename>app/views/users/create.html.erb</filename>
    </added>
    <added>
      <filename>public/images/buttons/facebook_share_icon.gif</filename>
    </added>
    <added>
      <filename>vendor/plugins/haml/init.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -9,7 +9,7 @@ class ApplicationController &lt; ActionController::Base
   before_filter :ie6
   before_filter :login_by_token, :display_news
   before_filter :set_page_title
-  before_filter :currently_online, :prep_bugaboo
+  before_filter :prep_bugaboo
   before_filter :update_last_seen_at, :only =&gt; [:index]
   before_filter :set_latest_update_title
   </diff>
      <filename>app/controllers/application.rb</filename>
    </modified>
    <modified>
      <diff>@@ -24,8 +24,6 @@ class AssetsController &lt; ApplicationController
       end
   end
 
-  # GET /assets/1
-  # GET /assets/1.xml
   def show
     respond_to do |format|
       format.html do
@@ -34,6 +32,7 @@ class AssetsController &lt; ApplicationController
         @listens = @asset.listens.find(:all)
         @comments = @asset.comments.find_all_by_spam(false)
         @listeners = @asset.listeners.first(5)
+        @single = true
       end
       format.mp3 do
         register_listen</diff>
      <filename>app/controllers/assets_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,10 +4,15 @@ class PagesController &lt; ApplicationController
 
   class Fuck &lt; StandardError; end
 
+  def index
+    @page_title = &quot;About alonetone, the kickass home for musicians&quot;
+  end
+
   def home
   end
 
   def about
+    @page_title = &quot;About alonetone, the kickass home for musicians&quot;
   end
   
   def actually_going_somewhere_with_facebooker_and_rails
@@ -27,7 +32,7 @@ class PagesController &lt; ApplicationController
   end
   
   def itunes
-    
+    @page_title = &quot;How to get your music on iTunes (as a music podcast) with alonetone&quot;
   end
   
   def sitemap</diff>
      <filename>app/controllers/pages_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@ class UpdatesController &lt; ApplicationController
   # GET /updates.xml
   def index
     @updates = Update.find(:all, :order =&gt; 'created_at DESC')
-
+    @page_title = &quot;Latest News about alonetone, the kick ass musician's home&quot;
     respond_to do |format|
       format.html # index.html.erb
       format.xml  { render :xml =&gt; @updates }</diff>
      <filename>app/controllers/updates_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@ class UserReportsController &lt; ApplicationController
   # GET /user_reports.xml
   def index
     @user_reports = UserReport.find_all_by_spam(false, :include =&gt; :user, :order =&gt; 'user_reports.created_at DESC')
-
+    @page_title = &quot;Feedback about alonetone&quot;
     respond_to do |format|
       format.html # index.html.erb
       format.xml  { render :xml =&gt; @user_reports }</diff>
      <filename>app/controllers/user_reports_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,11 @@
 class UsersController &lt; ApplicationController
   
-
   skip_before_filter :update_last_seen_at, :only =&gt; [:create, :new, :activate, :sudo]
   before_filter :find_user,      :except =&gt; [:new, :create, :sudo]
   
   before_filter :login_required, :except =&gt; [:index, :show, :new, :create, :activate, :bio]
   skip_before_filter :login_by_token, :only =&gt; :sudo
   
-  rescue_from NoMethodError, :with =&gt; :display_user_home_or_index
 
 
   def index
@@ -41,7 +39,7 @@ class UsersController &lt; ApplicationController
         @assets = @user.assets.find(:all, :limit =&gt; 5)
         @playlists = @user.playlists.find(:all,:conditions =&gt; [ &quot;tracks_count &gt; 0&quot;])
         @listens = @user.listens.find(:all, :limit =&gt;5)
-        @track_plays = @user.track_plays.find(:all, :limit =&gt;10) 
+        @track_plays = @user.track_plays.from_user.find(:all, :limit =&gt;10) 
         @comments = @user.comments.find_all_by_spam(false, :limit =&gt; 10)
       end
       format.xml { @assets = @user.assets.find(:all, :order =&gt; 'created_at DESC')}
@@ -55,7 +53,8 @@ class UsersController &lt; ApplicationController
 
   def new
     @user = User.new
-    @page_title = &quot;Sign up with alonetone to upload your mp3s or discover new music&quot;
+    @page_title = &quot;Sign up to upload your mp3s on alonetone&quot;
+    flash.now[:error] = &quot;Join alonetone to upload and create playlists (it is quick: about 45 seconds)&quot; if params[:new]
   end
   
   
@@ -77,11 +76,11 @@ class UsersController &lt; ApplicationController
           flash[:error] = &quot;The signup message cannot be sent to '#{CGI.escapeHTML @user.email}' at this moment. Please, try again later.&quot;
           redirect_to :action =&gt; &quot;new&quot;
         end
-        flash[:ok] = &quot;An email was sent to '#{CGI.escapeHTML @user.email}'. &lt;br/&gt;You just have to click the link in the email, and the hard work is over! &lt;br/&gt; Note: check your junk/spam inbox if you don't see a new email right away.&quot;
-        redirect_to login_path
+        flash[:ok] = &quot;We just sent you an email to '#{CGI.escapeHTML @user.email}'.&lt;br/&gt;&lt;br/&gt;You just have to click the link in the email, and the hard work is over! &lt;br/&gt; Note: check your junk/spam inbox if you don't see a new email right away.&quot;
       end
     end
     rescue ActiveRecord::RecordInvalid
+      flash[:error] = &quot;Whups, there was a small issue&quot;
       render :action =&gt; 'new'
   end
   </diff>
      <filename>app/controllers/users_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -47,8 +47,9 @@ module ApplicationHelper
     link_to ' ', formatted_user_track_path(asset.user.login, asset.permalink, :mp3), :id=&gt;&quot;play-#{asset.id}&quot;, :class =&gt; 'play_link', :referer =&gt; referer
   end
   
-  def user_nav_item(text, link, added_class='link')
-    content_tag(:li, link_to_unless_current(text, link),:class=&gt; (&quot;#{added_class} #{&quot;current&quot; if current_page?(link)}&quot;))
+  def user_nav_item(text, link, options=nil)
+    added_class = options.delete(:added_class) if options.is_a? Hash
+    content_tag(:li, link_to_unless_current(text, link, options),:class=&gt; (&quot;#{added_class} #{&quot;current&quot; if current_page?(link)}&quot;))
   end
   
   def link_source(source)</diff>
      <filename>app/helpers/application_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,7 @@
 # end
 
 class Asset &lt; ActiveRecord::Base
-  
+    
   # used for extra mime types that dont follow the convention
   @@extra_content_types = { :audio =&gt; ['application/ogg'], :movie =&gt; ['application/x-shockwave-flash'], :pdf =&gt; ['application/pdf'] }.freeze
   @@allowed_extensions = %w(.mp3)
@@ -34,6 +34,8 @@ class Asset &lt; ActiveRecord::Base
   cattr_reader *%w(movie audio image other).collect! { |t| &quot;#{t}_condition&quot;.to_sym }
   
   has_many :tracks, :dependent =&gt; :destroy
+  has_many :playlists, :through =&gt; :tracks
+  
   belongs_to :user, :counter_cache =&gt; true
   
   has_many :listens, :dependent =&gt; :destroy</diff>
      <filename>app/models/asset.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,7 @@
 class Comment &lt; ActiveRecord::Base
+  
+  named_scope :valid, :conditions =&gt; [:spam =&gt; false]
+  
   belongs_to :commentable, :polymorphic =&gt; true
 
   # optional user who made the comment</diff>
      <filename>app/models/comment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,21 +1,11 @@
-# == Schema Information
-# Schema version: 16
-#
-# Table name: listens
-#
-#  id         :integer(11)   not null, primary key
-#  asset_id   :integer(11)   
-#  user_id    :integer(11)   
-#  created_at :datetime      
-#  updated_at :datetime      
-#
-
 class Listen &lt; ActiveRecord::Base
   
   @@launch_date = 'Tue Jan 01 00:00:00 +0100 2008'.to_time
   
   # A &quot;Listen&quot; occurs when a user listens to another users track
   belongs_to :asset, :counter_cache =&gt; true
+
+  named_scope :from_user, {:conditions =&gt; ['listener_id != &quot;&quot;']}
   
   belongs_to :listener, :class_name =&gt; 'User', :foreign_key =&gt; 'listener_id'
   belongs_to :track_owner, :class_name =&gt; 'User', :counter_cache =&gt; true</diff>
      <filename>app/models/listen.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,34 +1,13 @@
-# == Schema Information
-# Schema version: 16
-#
-# Table name: users
-#
-#  id               :integer(11)   not null, primary key
-#  login            :string(40)    
-#  email            :string(100)   
-#  salt             :string(40)    
-#  activation_code  :string(40)    
-#  activated_at     :datetime      
-#  created_at       :datetime      
-#  updated_at       :datetime      
-#  deleted_at       :datetime      
-#  token            :string(255)   
-#  token_expires_at :datetime      
-#  admin            :boolean(1)    
-#  last_seen_at     :datetime      
-#  crypted_password :string(40)    
-#  assets_count     :integer(11)   
-#  display_name     :string(255)   
-#  identity_url     :string(255)   
-#  pic_id           :integer(11)   
-#
-
 require 'digest/sha1'
 class User &lt; ActiveRecord::Base
   
   # has a bunch of prefs
   serialize :settings
   
+  named_scope :musicians, {:conditions =&gt; ['assets_count &gt; ?',0], :order =&gt; 'assets_count DESC', :include =&gt; :pic}
+  named_scope :activated, {:conditions =&gt; {:activation_code =&gt; nil}, :order =&gt; 'created_at DESC', :include =&gt; :pic}
+  named_scope :recently_seen, {:order =&gt; 'last_seen_at DESC', :include =&gt; :pic}
+  
   # Can create music
   has_many   :assets,        :dependent =&gt; :destroy, :order =&gt; 'created_at DESC'
   has_many   :playlists,     :dependent =&gt; :destroy, :order =&gt; 'playlists.created_at DESC'
@@ -139,7 +118,7 @@ class User &lt; ActiveRecord::Base
   end
   
   def listens_average
-    (self.listens_count.to_f / ((((Time.now - self.assets.first.created_at)  / 60 / 60 / 24 )).ceil)).ceil
+    (self.listens_count.to_f / ((((Time.now - self.assets.find(:all, :limit =&gt; 1, :order =&gt; 'created_at').first.created_at)  / 60 / 60 / 24 )).ceil)).ceil
   end
   
   def dummy_pic(size)
@@ -159,9 +138,9 @@ class User &lt; ActiveRecord::Base
   def self.paginate_by_params(params)
     case params[:sort]
     when 'recently_joined' 
-      self.paginate_all_by_activation_code(nil, :per_page =&gt; 15, :include =&gt; :pic, :order =&gt; &quot;users.created_at DESC&quot;, :page =&gt; params[:page])
+      self.activated.paginate(:all, :per_page =&gt; 15, :page =&gt; params[:page])
     when 'monster_uploaders'
-      self.paginate(:all, :conditions =&gt; 'users.assets_count &gt; 0', :per_page =&gt; 15, :include =&gt; :pic, :order =&gt; &quot;users.assets_count DESC&quot;, :page =&gt; params[:page])
+      self.musicians.paginate(:all,:per_page =&gt; 15, :page =&gt; params[:page])
     when 'dedicated_listeners'
       @entries = WillPaginate::Collection.create((params[:page] || 1), 15) do |pager|
         # returns an array, like so: [User, number_of_listens]
@@ -187,7 +166,7 @@ class User &lt; ActiveRecord::Base
         end  
       end
     else # last_seen
-      self.paginate(:all, :include =&gt;:pic, :conditions =&gt; ['users.created_at &lt; ?',1.day.ago],:order =&gt; 'last_seen_at DESC', :page =&gt; params[:page], :per_page =&gt; 15)
+      self.recently_seen.paginate(:all, :page =&gt; params[:page], :per_page =&gt; 15)
     end
   end
   </diff>
      <filename>app/models/user.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,7 @@
 class UserReport &lt; ActiveRecord::Base
+  
+  named_scope :valid, :conditions =&gt; [:spam =&gt; false]
+
   validates_presence_of :description, :category
   belongs_to :user
   serialize :params</diff>
      <filename>app/models/user_report.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,4 +3,5 @@
      &lt;%= link_to h(asset.user.name), user_home_path(asset.user), :class =&gt; 'artist' %&gt;
   &lt;% end %&gt;
 &lt;% end %&gt;
-&lt;%= render :partial =&gt; 'assets/asset_tabs', :locals =&gt; {:asset =&gt; asset} %&gt;
+
+&lt;%= render :partial =&gt; 'assets/asset_tabs', :locals =&gt; {:asset =&gt; asset} unless @single %&gt;</diff>
      <filename>app/views/assets/_asset.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -22,9 +22,9 @@
 	        &lt;% end %&gt;
 	    &lt;/div&gt;
 	    
-	    &lt;div class=&quot;panel&quot;&gt;
+	    &lt;div class=&quot;panel no_border&quot;&gt;
 	        &lt;div class=&quot;track_links&quot;&gt;
-    	      &lt;%= link_to &quot;view more&quot;, user_track_path(asset.user, asset.permalink), :class =&gt; 'view_more' %&gt;
+    	      &lt;%= link_to &quot;view more&quot;, user_track_path(asset.user, asset.permalink), :class =&gt; 'view_more' unless @single %&gt;
             &lt;% if authorized_for(asset) %&gt;
     	        &lt;%= link_to &quot;edit&quot;, edit_user_track_path(asset.user, asset), :class =&gt; 'edit' %&gt;
             &lt;% end %&gt;</diff>
      <filename>app/views/assets/_asset_tabs.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 &lt;% object = object.asset if object.respond_to?(:asset) -%&gt;
 
-&lt;div id=&quot;comment_&lt;%= object.unique_id%&gt;&quot; class=&quot;comment_asset footer_content&quot;&gt;
+&lt;div id=&quot;comment_&lt;%= object.unique_id %&gt;&quot; class=&quot;comment_asset&quot;&gt;
   &lt;div class=&quot;comment_form&quot;&gt;
     &lt;% form_for :comment, :url =&gt; user_track_comments_path(object.user, object) do |f| %&gt;
      &lt;%= f.text_area :body, :rows =&gt; 4, :cols =&gt; 40, :class=&gt; 'double_trouble' %&gt;</diff>
      <filename>app/views/assets/_comment.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,42 +1,13 @@
 &lt;% id = object.id.to_s %&gt;
 &lt;% object = object.asset if object.respond_to?(:asset) -%&gt;
 
-&lt;div id=&quot;share_&lt;%=id%&gt;&quot; class=&quot;share_asset footer_content&quot;&gt;
-
-
-&lt;%= link_to &quot;Home page&quot;, user_track_url(object.user, object.permalink) %&gt; for this song:&lt;br/&gt;
-&lt;%= text_field_tag &quot;home_#{id}&quot;, user_track_url(object.user, object.permalink), :size =&gt; 40,:class =&gt; 'tabbed_input' %&gt; &lt;br/&gt;
-Mp3 download link:&lt;br/&gt;
-&lt;%= text_field_tag &quot;link_#{id}&quot;, formatted_user_track_url(object.user, object.permalink, :mp3), :size =&gt; 40, :class =&gt; 'tabbed_input' %&gt; &lt;br/&gt;
-
-&lt;!--&gt;
-&lt;div class=&quot;download-button button&quot;&gt;
-		&lt;%= link_to &quot;&lt;i&gt;download&lt;/i&gt;&quot;,formatted_user_track_url(object.user, object.permalink, :mp3) %&gt;
-	&lt;/div&gt;
---&gt;
-Put the music on your website:&lt;br/&gt;
-Get the &lt;%= link_to 'HTML code', '#' %&gt; or the &lt;%= link_to 'embedded_flash_player', '#'%&gt;
-
-&lt;div id=&quot;html_code_&lt;%=id%&gt;&quot; style=&quot;display:none;&quot;&gt;
-  &lt;div class=&quot;scriptaculous&quot;&gt;
-  &lt;h3&gt;HTML code&lt;/h3&gt;
-  &lt;%= text_area_tag 'code', &quot;&lt;a href='#{formatted_user_track_url(object.user, object, :mp3)}'&gt;Download #{object.name}&lt;/a&gt;&quot;, :rows =&gt; 2, :cols =&gt; 50 %&gt;
-  &lt;/div&gt;
+&lt;div id=&quot;share_&lt;%=id%&gt;&quot; class=&quot;panel no_border&quot;&gt;
+    &lt;%= link_to &quot;Home page&quot;, user_track_url(object.user, object.permalink) %&gt; for this song:&lt;br/&gt;
+    &lt;%= text_field_tag &quot;home_#{id}&quot;, user_track_url(object.user, object.permalink), :size =&gt; 40,:class =&gt; 'tabbed_input' %&gt; &lt;br/&gt;    
 &lt;/div&gt;
-
-&lt;div id=&quot;flash_code_&lt;%=id%&gt;&quot; style=&quot;display:none;&quot;&gt;
-  &lt;div class=&quot;scriptaculous&quot;&gt;
-    &lt;h3&gt;Embedd a Flash Player&lt;/h3&gt;
-    &lt;%= text_area_tag 'flash_player', &quot;&lt;embed src=\&quot;#{FLASH_PLAYER}\&quot; width=\&quot;250\&quot; height=\&quot;20\&quot; allowfullscreen=\&quot;true\&quot; allowscriptaccess=\&quot;always\&quot; flashvars=\&quot;&amp;file=#{formatted_user_track_url(object.user, object.permalink, :mp3)}&amp;height=20&amp;width=250&amp;frontcolor=0x3C3C3C&amp;backcolor=0xf3f3f3&amp;lightcolor=0xFF944B&amp;screencolor=0xFF944B&amp;showdigits=false\&quot; /&gt;&quot;, :rows =&gt; 3, :cols =&gt;50 %&gt;
-    &lt;p class=&quot;tip&quot;&gt;(customize how it looks by visiting &lt;%= link_to 'the setup wizard', 'http://www.jeroenwijering.com/?page=wizard&amp;example=2'%&gt;)
-    &lt;/p&gt;
-  &lt;/div&gt;
+&lt;div class=&quot;panel no_border&quot;&gt;
+    &lt;%= render :partial =&gt; 'assets/add_to_facebook', :object =&gt; object %&gt;
 &lt;/div&gt;
-&lt;!--
-&lt;h3&gt;Email link to a friend&lt;/h3&gt;
-&lt;%= text_field_tag 'email', 'your_friend@someplace.com', :size=&gt; 30%&gt;
-&lt;%= submit_tag 'send email now'%&gt;
-&lt;h3&gt;Put '&lt;%=h object.name %&gt;' on your facebook Profile&lt;/h3&gt;
-COMING SOON
---&gt;
+&lt;div class=&quot;panel no_border&quot;&gt;
+    &lt;%= link_to &quot;more sharing options&quot;, user_track_path(object.user,object.permalink), :class =&gt; 'view_more' %&gt;
 &lt;/div&gt;
\ No newline at end of file</diff>
      <filename>app/views/assets/_share.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,9 @@
-&lt;div id=&quot;recent_listeners&quot;&gt;
+&lt;% if present?(@listeners)%&gt;
+&lt;h2 class=&quot;box&quot;&gt;Recent Listeners&lt;/h2&gt;
+&lt;div id=&quot;recent_listeners&quot; class=&quot;box static_content&quot;&gt;
 
-&lt;h2&gt;Recent Listeners&lt;/h2&gt;
-  
-&lt;%= render :partial =&gt; 'shared/small_user', :collection =&gt; @listeners %&gt;
+    &lt;%= render :partial =&gt; 'shared/small_user', :collection =&gt; @listeners %&gt;
 
-&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
-&lt;/div&gt;
\ No newline at end of file
+    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
+&lt;/div&gt;
+&lt;% end %&gt;
\ No newline at end of file</diff>
      <filename>app/views/assets/_users.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -2,27 +2,39 @@
   
   &lt;% content_for :left do %&gt;
   &lt;div id=&quot;single_track&quot; class=&quot;box&quot;&gt;
-    &lt;h2&gt;&lt;%= @asset.name %&gt;&lt;/h2&gt;
-    &lt;%= render :partial =&gt; 'assets/assets'%&gt;
-  &lt;/div&gt;
-  
-  &lt;div id=&quot;track details&quot;&gt;
-    &lt;% if @asset.description &amp;&amp; !@asset.description.empty? %&gt;
-      &lt;h2 class=&quot;big&quot;&gt;About this track&lt;/h2&gt;
-      &lt;p&gt;&lt;%= @asset.description %&gt;&lt;/p&gt;
-    &lt;% end %&gt;
-    &lt;% if @asset.youtube_embed &amp;&amp; !@asset.youtube_embed.empty? %&gt;
-      &lt;object width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/&lt;%=@asset.youtube_embed%&gt;&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0&amp;border=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/&lt;%=@asset.youtube_embed%&gt;&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0&amp;border=0&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
+      &lt;%= render :partial =&gt; 'assets/assets'%&gt;
+
+      &lt;% if @asset.description &amp;&amp; !@asset.description.empty? %&gt;
+      &lt;div id=&quot;track_details&quot; class=&quot;static_content&quot;&gt;
+          &lt;h1&gt;About &quot;&lt;%=h @asset.title %&gt;&quot;&lt;/h1&gt;
+          &lt;p&gt;&lt;%= @asset.description %&gt;&lt;/p&gt;
+      &lt;/div&gt;
+     &lt;% end %&gt;
+     
+     &lt;% if @asset.youtube_embed &amp;&amp; !@asset.youtube_embed.empty? %&gt;
+      &lt;div class='static_content'&gt;
+        &lt;object width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/&lt;%=@asset.youtube_embed%&gt;&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0&amp;border=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/&lt;%=@asset.youtube_embed%&gt;&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0&amp;border=0&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
+      &lt;/div&gt;
     &lt;% end %&gt;
+    
+    &lt;div class=&quot;static_content&quot;&gt;
+    Add your thoughts:&lt;br/&gt;
+    &lt;%= render :partial =&gt; 'comment', :object =&gt; @asset %&gt;
+    &lt;/div&gt;
   &lt;/div&gt;
+  
+  &lt;%= render :partial =&gt; 'big_share'%&gt;
+  &lt;%= render :partial =&gt; 'stats'%&gt;
+
+
       
-   &lt;%= render :partial =&gt; 'stats'%&gt;
   &lt;% end %&gt;
   
   &lt;% content_for :right do %&gt;
     &lt;%= render :partial =&gt; 'users'%&gt;
     &lt;div class=&quot;clear&quot;&gt; &lt;/div&gt;
     &lt;%= render :partial =&gt; 'shared/comments' if @comments &amp;&amp; @comments.size &gt; 0%&gt;
+
   &lt;% end %&gt;
   
   </diff>
      <filename>app/views/assets/show.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@
     &lt;% if @facebook_account %&gt;
     &lt;div style=&quot;margin-left:20px;width:200px&quot;&gt;
    
-     &lt;% facebook_form_for(:asset, asset, :url =&gt; (add_to_profile_facebook_path(@facebook_account, :addable_type =&gt; 'asset', :addable_id =&gt; asset.id))) do |f| %&gt;
+     &lt;% facebook_form_for(:asset,  asset, :url =&gt; (add_to_profile_facebook_path(:addable_type =&gt; 'asset', :addable_id =&gt; asset.id))) do |f| %&gt;
         &lt;%= f.buttons &quot;Add track to your profile&quot; %&gt;
      &lt;% end %&gt;
     &lt;/div&gt;</diff>
      <filename>app/views/facebook_accounts/_asset.fbml.erb</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,7 @@
     &lt;td style=&quot;width:40px;&quot;&gt;&lt;h4 style=&quot;margin-bottom:20px&quot;&gt;Search:&lt;/h4&gt;&lt;/td&gt;
     &lt;td style=&quot;padding:20px&quot;&gt; 
 
-      &lt;% facebook_form_for(:asset, nil, :url =&gt; (add_to_profile_facebook_path(@facebook_account, :addable_type =&gt; 'asset')), :width =&gt; 50, :style =&gt; &quot;height:40px&quot;, :label_width =&gt; 0 ) do |f| %&gt;
+      &lt;% facebook_form_for(:asset, :url =&gt; (add_to_profile_facebook_path(:addable_type =&gt; 'asset')), :width =&gt; 50, :style =&gt; &quot;height:40px&quot;, :label_width =&gt; 0 ) do |f| %&gt;
       &lt;fb:typeahead-input name=&quot;addable_id&quot; style=&quot;display:inline;width:200px;&quot;&gt;
         &lt;% @search_assets.each do |asset| %&gt;
           &lt;fb:typeahead-option value=&quot;&lt;%= asset.id %&gt;&quot;&gt;&lt;%= asset.name %&gt;&lt;/fb:typeahead-option&gt;</diff>
      <filename>app/views/facebook_accounts/_search.fbml.erb</filename>
    </modified>
    <modified>
      <diff>@@ -6,9 +6,9 @@
   #links
     %ul.links
       = user_nav_item &quot;What is alonetone?&quot;, {:controller =&gt; 'pages', :action =&gt; 'index' } 
-      = user_nav_item &quot;Stats&quot;, {:controller =&gt; 'pages', :action =&gt; 'stats'}, 'contact'
-      = user_nav_item &quot;Latest News&quot;,{:controller =&gt; 'updates', :action =&gt; 'index' }, 'contact'
-      = user_nav_item &quot;User reports&quot;, {:controller =&gt; 'user_reports', :action =&gt; 'index'}, 'contact'
+      = user_nav_item &quot;Stats&quot;, {:controller =&gt; 'pages', :action =&gt; 'stats'}, :added_class =&gt; 'contact'
+      = user_nav_item &quot;Latest News&quot;,{:controller =&gt; 'updates', :action =&gt; 'index' }, :added_class =&gt; 'contact'
+      = user_nav_item &quot;User reports&quot;, {:controller =&gt; 'user_reports', :action =&gt; 'index'}, :added_class =&gt; 'contact'
 
 - content_for :static do
   = yield</diff>
      <filename>app/views/pages/_halp.html.haml</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 &lt;% form_tag sessions_path do -%&gt;
 &lt;p&gt;
   &lt;label for=&quot;login&quot;&gt;&lt;%= 'Login' %&gt;&lt;/label&gt;&lt;br /&gt;
-  &lt;%= text_field_tag :login, params[:login], :onkeypress =&gt; 'LoginForm.checkLogin(this)' %&gt;
+  &lt;%= text_field_tag :login, params[:login] %&gt;
 &lt;/p&gt;
 
 &lt;div id=&quot;password_fields&quot;&gt;</diff>
      <filename>app/views/sessions/_login.rhtml</filename>
    </modified>
    <modified>
      <diff>@@ -16,10 +16,10 @@
 	
 	&lt;% else %&gt;
 	&lt;li id='upload'&gt;
-		&lt;%= link_to ' ', signup_path, :title =&gt; &quot;upload new mp3 on alonetone&quot;, :class =&gt; &quot;tab#{' active' if @tab == 'upload' }&quot; %&gt;
+		&lt;%= link_to ' ', signup_path(:new =&gt; true), :title =&gt; &quot;upload new mp3 on alonetone&quot;, :class =&gt; &quot;tab#{' active' if @tab == 'upload' }&quot; %&gt;
 	&lt;/li&gt;
 	&lt;li id='your_stuff'&gt;
-		&lt;%= link_to ' ', signup_path, :title =&gt; &quot;your stuff on alonetone&quot;, :class =&gt; &quot;tab#{' active' if @tab == 'your_stuff' }&quot; %&gt;
+		&lt;%= link_to ' ', signup_path(:new =&gt; true), :title =&gt; &quot;your stuff on alonetone&quot;, :class =&gt; &quot;tab#{' active' if @tab == 'your_stuff' }&quot; %&gt;
 	&lt;/li&gt;	
 	
 	&lt;% end %&gt;</diff>
      <filename>app/views/shared/_nav.rhtml</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 &lt;p&gt;
   &lt;label for=&quot;user_login&quot;&gt;Login &lt;/label&gt; (Letters and numbers only)&lt;br /&gt;
-  &lt;%= form.text_field :login, :onkeypress =&gt; 'LoginForm.checkLogin(this)' %&gt;
+  &lt;%= form.text_field :login %&gt;
 &lt;/p&gt;
 
 &lt;p&gt;</diff>
      <filename>app/views/users/_form.rhtml</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@
 		&lt;h2 class=&quot;box&quot;&gt;Latest listens to your music&lt;/h2&gt;
 		&lt;%= link_to 'view all', listens_path(@user.login), :class =&gt; 'view_all' if @track_plays.size &gt; 0 %&gt;
     &lt;div class=&quot;static_content&quot;&gt;
-      &lt;strong&gt;&lt;%= @user.listens.today %&gt;&lt;/strong&gt; new plays &amp;amp; downloads today &lt;br/&gt;
+      &lt;strong&gt;&lt;%= @user.track_plays.today %&gt;&lt;/strong&gt; new plays &amp;amp; downloads today &lt;br/&gt;
 		  &lt;%= @user.listens_count %&gt; total plays and downloads (&lt;strong&gt;&lt;%= @user.listens_average %&gt;&lt;/strong&gt; per/day) 
     &lt;/div&gt;
 	  &lt;%= render :partial =&gt; 'users/track_play', :collection =&gt; @track_plays %&gt;</diff>
      <filename>app/views/users/_track_plays.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -11,15 +11,15 @@
     &lt;% end %&gt;
   &lt;div id=&quot;user_links&quot;&gt;
     &lt;ul class=&quot;user_links&quot;&gt;
-     &lt;%= user_nav_item &quot;Latest&quot;, user_home_path(@user) %&gt;
-     &lt;%= user_nav_item &quot;Albums &amp; Playlists&quot;, user_playlists_path(@user) if @user.has_public_playlists? %&gt;
-     &lt;%= user_nav_item &quot;Tracks&quot;, user_tracks_path(@user) if @user.assets_count &gt; 0 %&gt;
-     &lt;%= user_nav_item &quot;Profile&quot;, profile_path(@user) if @user.bio %&gt;
+     &lt;%= user_nav_item &quot;Latest&quot;, user_home_path(@user), :title =&gt; &quot;#{h @user.name}'s latest stuff on alonetone&quot; %&gt;
+     &lt;%= user_nav_item &quot;Albums &amp; Playlists&quot;, user_playlists_path(@user), :title =&gt; &quot;#{h @user.name}'s albums and playlists on alonetone&quot; if @user.has_public_playlists? %&gt;
+     &lt;%= user_nav_item &quot;Tracks&quot;, user_tracks_path(@user), :title =&gt; &quot;#{h @user.name}'s uploaded mp3s on alonetone&quot; if @user.assets_count &gt; 0 %&gt;
+     &lt;%= user_nav_item &quot;Profile&quot;, profile_path(@user), :title =&gt; &quot;#{h @user.name}'s profile on alonetone&quot; if @user.bio %&gt;
   
-      &lt;%= user_nav_item &quot;Email&quot;, &quot;mailto://#{@user.email}&quot;,&quot;contact&quot; if admin? %&gt;
-      &lt;%= user_nav_item &quot;Myspace&quot;, &quot;http://myspace.com/#{@user.myspace}&quot;,&quot;contact&quot; if @user.present?(:myspace)%&gt;
-      &lt;%= user_nav_item &quot;iTunes&quot;, &quot;http://#{@user.itunes}&quot;,&quot;contact&quot; if @user.present?(:itunes) %&gt;
-      &lt;%= user_nav_item &quot;Sudo&quot;, sudo_user_path(@user),&quot;contact&quot; if (admin? || @sudo)%&gt;   
+      &lt;%= user_nav_item &quot;Email&quot;, &quot;mailto://#{@user.email}&quot;,:added_class =&gt; &quot;contact&quot; if admin? %&gt;
+      &lt;%= user_nav_item &quot;Myspace&quot;, &quot;http://myspace.com/#{@user.myspace}&quot;,:added_class =&gt; &quot;contact&quot; if @user.present?(:myspace)%&gt;
+      &lt;%= user_nav_item &quot;iTunes&quot;, &quot;http://#{@user.itunes}&quot;,:added_class =&gt; &quot;contact&quot; if @user.present?(:itunes) %&gt;
+      &lt;%= user_nav_item &quot;Sudo&quot;, sudo_user_path(@user),:added_class =&gt; &quot;contact&quot; if (admin? || @sudo)%&gt;   
     &lt;/ul&gt;
   &lt;/div&gt;
 &lt;/div&gt;</diff>
      <filename>app/views/users/_user.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,24 +1,26 @@
 &lt;%= error_messages_for :user %&gt;
 
 &lt;% content_for :left do %&gt;
-  &lt;h1&gt;Join alonetone&lt;/h1&gt;
-  &lt;div id=&quot;signup&quot;&gt;
+  &lt;h2 class=&quot;box&quot;&gt;Join alonetone&lt;/h2&gt;
+  &lt;%= link_to &quot;or login here&quot;, login_path, :class=&gt; 'view_more'%&gt;
+  &lt;div id=&quot;signup&quot; class=&quot;static_content box&quot;&gt;
 
   	&lt;% form_for :user, :url =&gt; users_path do |f| -%&gt;
   	  &lt;%= render :partial =&gt; &quot;form&quot;, :object =&gt; f %&gt;
-  	  &lt;div class=&quot;join_wrapper&quot;&gt;&lt;%= submit_tag 'Join alonetone' %&gt;&lt;/div&gt;
+  	  &lt;div class=&quot;submit_wrapper&quot;&gt;&lt;%= submit_tag 'Join alonetone' %&gt;&lt;/div&gt;
   	&lt;% end -%&gt;
-	  
-    &lt;div id=&quot;signup-questions&quot;&gt;
-    &lt;%= pretty_text &quot;More questions?&quot;,:h3 %&gt;&lt;br/&gt;
-    get the answers you need by &lt;%= link_to 'clicking here', about_path %&gt;
-    &lt;/div&gt;
+  &lt;/div&gt;
+  &lt;h2 class=&quot;playlist_title box&quot;&gt;Want to know more?&lt;/h2&gt;
+  &lt;div id=&quot;signup-questions&quot; class=&quot;static_content box&quot;&gt;
+    alonetone is a non-commercial venture, giving musicians a free home for their music and the tools they need to promote it&lt;br/&gt;&lt;br/&gt;
+    Read our FAQ by &lt;%= link_to 'clicking here', about_path %&gt;
   &lt;/div&gt;
 &lt;% end %&gt;
 
 &lt;% content_for :right do %&gt;
-  &lt;div id=&quot;what-you-get&quot;&gt;
-  	&lt;h1&gt;Why alonetone?&lt;/h1&gt;
+  	&lt;h2 class=&quot;box&quot;&gt;Why alonetone?&lt;/h2&gt;
+  	&lt;div id=&quot;what-you-get&quot; class=&quot;box static_content&quot;&gt;
+
   	&lt;%= image_tag 'promo/unlimited-uploads.jpg'%&gt;
   	&lt;h2 class='hug'&gt;Upload your music (mp3 format)&lt;/h2&gt;
 	</diff>
      <filename>app/views/users/new.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -23,7 +23,6 @@ require 'goodies'
 PASSWORD_SALT = 'so_salty_its_unbearable'
 
 # DEPENDENCIES 
-
 begin 
   require 'mp3info'
   require 'zip/zip'
@@ -33,4 +32,7 @@ rescue
 end
 
 WillPaginate::ViewHelpers.pagination_options[:inner_window] = 2
-WillPaginate::ViewHelpers.pagination_options[:outer_window] = 0
\ No newline at end of file
+WillPaginate::ViewHelpers.pagination_options[:outer_window] = 0
+
+# Take advantage of rails 2.1
+ActiveRecord::Base.partial_updates = true
\ No newline at end of file</diff>
      <filename>config/initializers/setup.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,10 @@ ActionController::Routing::Routes.draw do |map|
   
   # RESTFUL WORKAROUND FOR FACEBOOK
   map.facebook_home '', :controller =&gt; 'facebook_accounts', :conditions =&gt; {:canvas =&gt; true}
-  map.resources 'facebook', :controller =&gt; 'facebook_accounts', :member =&gt; {:add_to_profile =&gt; :post, :remove_from_profile =&gt; :get}, :conditions =&gt;{:canvas =&gt; true}
+  map.resources 'facebook', :controller =&gt; 'facebook_accounts', 
+      :member =&gt; {:remove_from_profile =&gt; :get},
+      :collection =&gt; {:add_to_profile =&gt; :any}, # hack, because we're not actually using resources
+      :conditions =&gt;{:canvas =&gt; true}
   #map.facebook_resources :facebook_accounts, 'facebook_accounts', :controller =&gt; 'facebook_accounts', :condition =&gt; {:canvas =&gt; true}
 
   map.sitemap 'sitemap.xml', :controller =&gt; 'pages', :action =&gt; 'sitemap', :format =&gt; 'xml'
@@ -46,7 +49,7 @@ ActionController::Routing::Routes.draw do |map|
   map.comments ':login/comments', :controller =&gt; 'comments'
    
   map.resources :users, :controller =&gt; :users, :member =&gt; {:attach_pic =&gt; :post, :sudo =&gt; :any} do |user|
-    user.resources :tracks, :controller =&gt; :assets, :collection =&gt; {:latest =&gt; :get, :search =&gt; :post}, :path_prefix =&gt; ':login', :member_path =&gt; ':login/tracks/:id' do |track|
+    user.resources :tracks, :controller =&gt; :assets, :member =&gt; {:share =&gt; :get}, :collection =&gt; {:latest =&gt; :get, :search =&gt; :post}, :path_prefix =&gt; ':login', :member_path =&gt; ':login/tracks/:id' do |track|
       track.resources :comments
     end
    </diff>
      <filename>config/routes.rb</filename>
    </modified>
    <modified>
      <diff>@@ -375,7 +375,7 @@ Track = $.klass({
     this.originalDocumentTitle = document.title; // for prepending when playing tracks
     
     // dont allow tab details to be opened on editing playlists
-    this.allowDetailsOpen = (this.element.hasClass('unopenable')) ? false : true;
+    this.allowDetailsOpen = (this.element.hasClass('unopenable') || (this.element.parent().parent('#single_track').size() &gt; 0)) ? false : true;
   },
   
   
@@ -593,6 +593,9 @@ jQuery(function($) {
 
   // uploader
   $('#uploader').attach(Uploader);
+  
+  // comments on the single track page
+  $('#single_track .comment_form form').attach(CommentForm);
 
 });
 </diff>
      <filename>public/javascripts/application.js</filename>
    </modified>
    <modified>
      <diff>@@ -258,10 +258,6 @@
     div.pagination
       :height 32px
 
-#recent_listeners
-  :margin-bottom 30px
-  :height 120px
-
 // static headers are like the user header, but without pics
 #static_header
   .title, #links
@@ -290,7 +286,15 @@
     :font-size 18px
     :font-weight bold
     
-      
+    
+// sign up
+#what-you-get
+  :background-color #f3f3f3
+  h2
+    :color = !text_color
+    :font-size 14px
+    :margin-bottom 30px
+    :text-shadow none
 // static content
 
 .static_content
@@ -306,7 +310,8 @@
 #recent_listeners
   div
     :float left
-    :margin-left 27px
+    :margin-right 24px
+  :height 60px
 
 div.small_spinner
   :margin-top 5px</diff>
      <filename>public/stylesheets/sass/alonetone.sass</filename>
    </modified>
    <modified>
      <diff>@@ -90,3 +90,21 @@
       span.counter
         :opacity 0.99
         :color = !white
+
+#single_track
+  h1
+    :color = !text_color
+    :font-size 14px
+    :font-weight bold
+    :text-shadow none
+    :margin-bottom 10px
+  #track_details
+    :position relative
+    :display block
+    :background url(../images/backgrounds/album.png) repeat-x top left
+    :background-color = !playlist_box_silver
+    :padding 15px 15px 15px 20px
+    :margin-top 1px
+  textarea
+    :margin-top 10px
+    :width 380px</diff>
      <filename>public/stylesheets/sass/tracks.sass</filename>
    </modified>
    <modified>
      <diff>@@ -141,4 +141,17 @@ a.hidden
   :display none
   
 div.fieldWithErrors input
-  :border = !orange 2px solid 
\ No newline at end of file
+  :border = !orange 2px solid 
+  
+input.facebook
+  :background url(../images/buttons/facebook_share_icon.gif) no-repeat 2px center
+  :background-color #3B5998
+  :height 22px
+  :border-color #D8DFEA rgb(14, 31, 91) rgb(14, 31, 91) rgb(216, 223, 234)
+  :border-style solid
+  :border-width 1px
+  :color #FFFFFF
+  :font-family &quot;lucida grande&quot;,tahoma,verdana,arial,sans-serif
+  :font-size 11px
+  :margin 0pt 2px
+  :padding 2px 20px
\ No newline at end of file</diff>
      <filename>public/stylesheets/sass/typography.sass</filename>
    </modified>
    <modified>
      <diff>@@ -115,44 +115,58 @@ module Technoweenie # :nodoc:
       def image?(content_type)
         content_types.include?(content_type)
       end
-
-      # Callback after an image has been resized.
-      #
-      #   class Foo &lt; ActiveRecord::Base
-      #     acts_as_attachment
-      #     after_resize do |record, img| 
-      #       record.aspect_ratio = img.columns.to_f / img.rows.to_f
-      #     end
-      #   end
-      def after_resize(&amp;block)
-        write_inheritable_array(:after_resize, [block])
-      end
-
-      # Callback after an attachment has been saved either to the file system or the DB.
-      # Only called if the file has been changed, not necessarily if the record is updated.
-      #
-      #   class Foo &lt; ActiveRecord::Base
-      #     acts_as_attachment
-      #     after_attachment_saved do |record|
-      #       ...
-      #     end
-      #   end
-      def after_attachment_saved(&amp;block)
-        write_inheritable_array(:after_attachment_saved, [block])
+      
+      def self.extended(base)
+        base.class_inheritable_accessor :attachment_options
+        base.before_destroy :destroy_thumbnails
+        base.before_validation :set_size_from_temp_path
+        base.after_save :after_process_attachment
+        base.after_destroy :destroy_file
+        base.after_validation :process_attachment
+        if defined?(::ActiveSupport::Callbacks)
+          base.define_callbacks :after_resize, :after_attachment_saved, :before_thumbnail_saved
+        end
       end
-
-      # Callback before a thumbnail is saved.  Use this to pass any necessary extra attributes that may be required.
-      #
-      #   class Foo &lt; ActiveRecord::Base
-      #     acts_as_attachment
-      #     before_thumbnail_saved do |record, thumbnail|
-      #       ...
-      #     end
-      #   end
-      def before_thumbnail_saved(&amp;block)
-        write_inheritable_array(:before_thumbnail_saved, [block])
+ 
+      unless defined?(::ActiveSupport::Callbacks)
+        # Callback after an image has been resized.
+        #
+        #   class Foo &lt; ActiveRecord::Base
+        #     acts_as_attachment
+        #     after_resize do |record, img|
+        #       record.aspect_ratio = img.columns.to_f / img.rows.to_f
+        #     end
+        #   end
+        def after_resize(&amp;block)
+          write_inheritable_array(:after_resize, [block])
+        end
+ 
+        # Callback after an attachment has been saved either to the file system or the DB.
+        # Only called if the file has been changed, not necessarily if the record is updated.
+        #
+        #   class Foo &lt; ActiveRecord::Base
+        #     acts_as_attachment
+        #     after_attachment_saved do |record|
+        #       ...
+        #     end
+        #   end
+        def after_attachment_saved(&amp;block)
+          write_inheritable_array(:after_attachment_saved, [block])
+        end
+ 
+        # Callback before a thumbnail is saved.  Use this to pass any necessary extra attributes that may be required.
+        #
+        #   class Foo &lt; ActiveRecord::Base
+        #     acts_as_attachment
+        #     before_thumbnail_saved do |thumbnail|
+        #       record = thumbnail.parent
+        #       ...
+        #     end
+        #   end
+        def before_thumbnail_saved(&amp;block)
+          write_inheritable_array(:before_thumbnail_saved, [block])
+        end
       end
-
       # Get the thumbnail class, which is the current attachment class by default.
       # Configure this with the :thumbnail_class option.
       def thumbnail_class
@@ -179,6 +193,10 @@ module Technoweenie # :nodoc:
     end
 
     module InstanceMethods
+      def self.included(base)
+        base.define_callbacks *[:after_resize, :after_attachment_saved, :before_thumbnail_saved] if base.respond_to?(:define_callbacks)
+      end
+      
       # Checks whether the attachment's content type is an image content type
       def image?
         self.class.image?(content_type)
@@ -323,6 +341,41 @@ module Technoweenie # :nodoc:
       end
 
       protected
+      
+       # Yanked from ActiveRecord::Callbacks, modified so I can pass args to the callbacks besides self.
+        # Only accept blocks, however
+        if ActiveSupport.const_defined?(:Callbacks)
+          # Rails 2.1 and beyond!
+          def callback_with_args(method, arg = self)
+            notify(method)
+ 
+            result = run_callbacks(method, { :object =&gt; arg }) { |result, object| result == false }
+ 
+            if result != false &amp;&amp; respond_to_without_attributes?(method)
+              result = send(method)
+            end
+ 
+            result
+          end
+ 
+          def run_callbacks(kind, options = {}, &amp;block)
+            options.reverse_merge!( :object =&gt; self )
+            self.class.send(&quot;#{kind}_callback_chain&quot;).run(options[:object], options, &amp;block)
+          end
+        else
+          # Rails 2.0
+          def callback_with_args(method, arg = self)
+            notify(method)
+ 
+            result = nil
+            callbacks_for(method).each do |callback|
+              result = callback.call(self, arg)
+              return false if result == false
+            end
+            result
+          end
+        end
+ 
         # Generates a unique filename for a Tempfile. 
         def random_tempfile_filename
           &quot;#{rand Time.now.to_i}#{filename || 'attachment'}&quot;
@@ -387,19 +440,6 @@ module Technoweenie # :nodoc:
           end
         end
 
-        # Yanked from ActiveRecord::Callbacks, modified so I can pass args to the callbacks besides self.
-        # Only accept blocks, however
-        def callback_with_args(method, arg = self)
-          notify(method)
-
-          result = nil
-          callbacks_for(method).each do |callback|
-            result = callback.call(self, arg)
-            return false if result == false
-          end
-
-          return result
-        end
         
         # Removes the thumbnails for the attachment, if it has any
         def destroy_thumbnails</diff>
      <filename>vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb</filename>
    </modified>
    <modified>
      <diff>@@ -16,7 +16,7 @@ module Technoweenie # :nodoc:
             rescue
               # Log the failure to load the image.  This should match ::Magick::ImageMagickError
               # but that would cause acts_as_attachment to require rmagick.
-              logger.debug(&quot;Exception working with image: #{$!}&quot;)
+              logger.warn(&quot;Exception working with image: #{$!}&quot;)
               binary_data = nil
             end
             block.call binary_data if block &amp;&amp; binary_data
@@ -45,7 +45,8 @@ module Technoweenie # :nodoc:
           else
             img.change_geometry(size.to_s) { |cols, rows, image| image.resize!(cols, rows) }
           end
-          self.temp_path = write_to_temp_file(img.to_blob)
+          img.strip!
+          self.temp_path = write_to_temp_file(img.to_blob{self.quality = 90})
         end
       end
     end</diff>
      <filename>vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/rmagick_processor.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>4426d950e202e33e3d5de7da3764d2cf71c53645</id>
    </parent>
  </parents>
  <author>
    <name>Sudara</name>
    <email>sudara@alonetone.com</email>
  </author>
  <url>http://github.com/sudara/alonetone/commit/bfc34288b2efd27df188c1a83d6e896b8e649248</url>
  <id>bfc34288b2efd27df188c1a83d6e896b8e649248</id>
  <committed-date>2008-04-28T13:01:09-07:00</committed-date>
  <authored-date>2008-04-28T13:01:09-07:00</authored-date>
  <message>Major reworking of sharing functionality and tweaks across the css</message>
  <tree>279c2b7fad50edcc243f126d31ee97ee61a18d67</tree>
  <committer>
    <name>Sudara</name>
    <email>sudara@alonetone.com</email>
  </committer>
</commit>
