<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>app/controllers/links_controller.rb</filename>
    </added>
    <added>
      <filename>app/helpers/links_helper.rb</filename>
    </added>
    <added>
      <filename>app/models/link.rb</filename>
    </added>
    <added>
      <filename>app/models/visit.rb</filename>
    </added>
    <added>
      <filename>app/views/layouts/application.rhtml</filename>
    </added>
    <added>
      <filename>app/views/links/_form.rhtml</filename>
    </added>
    <added>
      <filename>app/views/links/about.rhtml</filename>
    </added>
    <added>
      <filename>app/views/links/index.rhtml</filename>
    </added>
    <added>
      <filename>app/views/links/invalid.rhtml</filename>
    </added>
    <added>
      <filename>app/views/links/new.rhtml</filename>
    </added>
    <added>
      <filename>app/views/links/show.rhtml</filename>
    </added>
    <added>
      <filename>app/views/shared/_footer.rhtml</filename>
    </added>
    <added>
      <filename>app/views/shared/_header.rhtml</filename>
    </added>
    <added>
      <filename>db/migrate/20080831060313_create_links.rb</filename>
    </added>
    <added>
      <filename>db/migrate/20080831060323_create_visits.rb</filename>
    </added>
    <added>
      <filename>db/migrate/20080831060337_add_index_on_website_url.rb</filename>
    </added>
    <added>
      <filename>public/_clipboard.swf</filename>
    </added>
    <added>
      <filename>public/images/bloatMe.gif</filename>
    </added>
    <added>
      <filename>public/images/blue.gif</filename>
    </added>
    <added>
      <filename>public/images/drag.gif</filename>
    </added>
    <added>
      <filename>public/stylesheets/master.css</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,15 +1,11 @@
-# Filters added to this controller apply to all controllers in the application.
-# Likewise, all the methods added will be available for all controllers.
-
 class ApplicationController &lt; ActionController::Base
   helper :all # include all helpers, all the time
-
-  # See ActionController::RequestForgeryProtection for details
-  # Uncomment the :secret if you're not using the cookie session store
-  protect_from_forgery # :secret =&gt; '923b0212b9d9e282a97f17ebe9e6fa5a'
+  protect_from_forgery
   
-  # See ActionController::Base for details 
-  # Uncomment this to filter the contents of submitted sensitive data parameters
-  # from your application log (in this case, all fields with names like &quot;password&quot;). 
-  # filter_parameter_logging :password
+  before_filter :calculate_links
+  
+  # refactor to some sort of cache tool
+  def calculate_links
+    @cached_data = {:link_count =&gt; Link.count}
+  end
 end</diff>
      <filename>app/controllers/application.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,63 +1,13 @@
-# Be sure to restart your web server when you modify this file.
+RAILS_GEM_VERSION = '2.1.0' unless defined? RAILS_GEM_VERSION
 
-# Uncomment below to force Rails into production mode when 
-# you don't control web/app server and can't set it the proper way
-# ENV['RAILS_ENV'] ||= 'production'
-
-# Specifies gem version of Rails to use when vendor/rails is not present
-#RAILS_GEM_VERSION = '1.2.5' unless defined? RAILS_GEM_VERSION
-
-# Bootstrap the Rails environment, frameworks, and default configuration
 require File.join(File.dirname(__FILE__), 'boot')
 
 Rails::Initializer.run do |config|
-  # Settings in config/environments/* take precedence over those specified here
-  
-  # Skip frameworks you're not going to use (only works if using vendor/rails)
+  config.time_zone = 'UTC'
   config.frameworks -= [ :action_web_service, :action_mailer ]
 
-  # Only load the plugins named here, by default all plugins in vendor/plugins are loaded
-  # config.plugins = %W( exception_notification ssl_requirement )
-
-  # Add additional load paths for your own custom dirs
-  # config.load_paths += %W( #{RAILS_ROOT}/extras )
-
-  # Force all environments to use the same logger level 
-  # (by default production uses :info, the others :debug)
-  # config.log_level = :debug
-
-  # Use the database for sessions instead of the file system
-  # (create the session table with 'rake db:sessions:create')
-  # config.action_controller.session_store = :active_record_store
-
-  # Use SQL instead of Active Record's schema dumper when creating the test database.
-  # This is necessary if your schema can't be completely dumped by the schema dumper, 
-  # like if you have constraints or database-specific column types
-  # config.active_record.schema_format = :sql
-
-  # Activate observers that should always be running
-  # config.active_record.observers = :cacher, :garbage_collector
-
-  # Make Active Record use UTC-base instead of local time
-  # config.active_record.default_timezone = :utc
-  
-  # See Rails::Configuration for more options
-
-  config.action_controller.session = { :session_key =&gt; &quot;_bloatme_session&quot;, :secret =&gt; (RAILS_ENV == 'production') ? File.read(File.join(File.dirname(__FILE__), 'cookie_secret')) : 'oy8j2c45ync4ny43n3cmtho3cht35y4t8hn7' }
+  config.action_controller.session = { 
+    :session_key =&gt; &quot;_bloatme_session&quot;, 
+    :secret =&gt; (RAILS_ENV == 'production') ? File.read(File.join(File.dirname(__FILE__), 'cookie_secret')) : 'oy8j2c45ync4ny43n3cmtho3cht35y4t8hn7'
+  }
 end
-
-# Add new inflection rules using the following format 
-# (all these examples are active by default):
-# Inflector.inflections do |inflect|
-#   inflect.plural /^(ox)$/i, '\1en'
-#   inflect.singular /^(ox)en/i, '\1'
-#   inflect.irregular 'person', 'people'
-#   inflect.uncountable %w( fish sheep )
-# end
-
-# Add new mime types for use in respond_to blocks:
-# Mime::Type.register &quot;text/richtext&quot;, :rtf
-# Mime::Type.register &quot;application/x-mobile&quot;, :mobile
-
-# Include your application configuration below
-require 'hash_extensions'</diff>
      <filename>config/environment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,16 +8,12 @@ config.cache_classes = false
 # Log error messages when you accidentally call methods on nil.
 config.whiny_nils = true
 
-# Enable the breakpoint server that script/breakpointer connects to
-config.breakpoint_server = true
-
 # Show full error reports and disable caching
 config.action_controller.consider_all_requests_local = true
-config.action_controller.perform_caching             = false
-config.action_view.cache_template_extensions         = false
 config.action_view.debug_rjs                         = true
+config.action_controller.perform_caching             = false
 
 # Don't care if the mailer can't send
 config.action_mailer.raise_delivery_errors = false
 
-DOMAIN_NAME = 'http://localhost:3000/'
\ No newline at end of file
+DOMAIN_NAME = 'http://localhost:3000/'</diff>
      <filename>config/environments/development.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,2 +1,31 @@
 // Place your application-specific JavaScript functions and classes here
 // This file is automatically included by javascript_include_tag :defaults
+
+//
+// copied from: http://www.tek-tips.com/viewthread.cfm?qid=1465395&amp;page=5
+// TODO: reference original author...
+//
+function copy(rubyurl) {
+    var flashcopier = 'flashcopier';
+    if(!document.getElementById(flashcopier)) {
+      var divholder = document.createElement('div');
+      divholder.id = flashcopier;
+      document.body.appendChild(divholder);
+    }
+    document.getElementById(flashcopier).innerHTML = '';
+    var divinfo = '&lt;embed src=&quot;/_clipboard.swf&quot; FlashVars=&quot;clipboard='+encodeURIComponent(rubyurl)+'&quot; width=&quot;0&quot; height=&quot;0&quot; type=&quot;application/x-shockwave-flash&quot;&gt;&lt;/embed&gt;';
+    document.getElementById(flashcopier).innerHTML = divinfo;
+		$('x_copy_button').hide();
+		$('x_copied').show();
+		
+}
+
+Event.observe(window, 'load', function() {
+  // Watch for user's click on &quot;Auto Copy&quot; checkbox
+  if ($('auto_copy'))
+    Event.observe('auto_copy', 'change', function(event) { document.cookie = 'auto_copy='+($F('auto_copy') ? 1 : 0); });
+
+  // Perform auto-copy if prudent
+  if ((link = $$('#url.arrow a')).length &amp;&amp; document.cookie.match(/auto_copy=1/))
+    copy(link[0].href);
+});
\ No newline at end of file</diff>
      <filename>public/javascripts/application.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
 //           (c) 2005-2007 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
 //           (c) 2005-2007 Jon Tirsen (http://www.tirsen.com)
 // Contributors:</diff>
      <filename>public/javascripts/controls.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
 //           (c) 2005-2007 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
 // 
 // script.aculo.us is freely distributable under the terms of an MIT-style license.</diff>
      <filename>public/javascripts/dragdrop.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
 // Contributors:
 //  Justin Palmer (http://encytemedia.com/)
 //  Mark Pilgrim (http://diveintomark.org/)</diff>
      <filename>public/javascripts/effects.js</filename>
    </modified>
    <modified>
      <diff>@@ -45,3 +45,9 @@ Spec::Runner.configure do |config|
   # 
   # For more information take a look at Spec::Example::Configuration and Spec::Runner
 end
+
+module LinkSpecHelper
+  def valid_attributes
+    {:website_url =&gt; 'http://www.google.com/', :ip_address =&gt; '192.168.1.1'}
+  end
+end</diff>
      <filename>spec/spec_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>public/dispatch.cgi</filename>
    </removed>
    <removed>
      <filename>public/dispatch.fcgi</filename>
    </removed>
    <removed>
      <filename>public/dispatch.rb</filename>
    </removed>
    <removed>
      <filename>public/images/rails.png</filename>
    </removed>
    <removed>
      <filename>public/index.html</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>f9f02f644228f9537ad558e2975fb5c52b72d6f1</id>
    </parent>
  </parents>
  <author>
    <name>Michael Hale</name>
    <email>mikehale@gmail.com</email>
  </author>
  <url>http://github.com/kohlhofer/rubyurl/commit/51783b28b1d5303c564e00837b34cd20106073e2</url>
  <id>51783b28b1d5303c564e00837b34cd20106073e2</id>
  <committed-date>2008-08-30T23:21:41-07:00</committed-date>
  <authored-date>2008-08-30T23:21:41-07:00</authored-date>
  <message>copy public stuff
works!</message>
  <tree>8eb29ccdde06c1b39a9ab0e88bb4ad86cb946607</tree>
  <committer>
    <name>Michael Hale</name>
    <email>mikehale@gmail.com</email>
  </committer>
</commit>
