<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre, #msg p { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[589] trunk/rails: Refactored cookie requirement code into lib/
 cookies_required module</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd>589</dd>
<dt>Author</dt> <dd>mwmitchell</dd>
<dt>Date</dt> <dd>2008-06-06 14:28:19 -0400 (Fri, 06 Jun 2008)</dd>
</dl>

<h3>Log Message</h3>
<pre>Refactored cookie requirement code into lib/cookies_required module
Cleaned up application controller
Cleaned up auth controller
Added auth/cookies_required template
Removed Flare.boot! requirement - just require the darn thing now
Moved will_paginate link_renderer out of Flare into lib
Updated lib/uva/z3950 code to work propertly with jRuby</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkrailsappcontrollersapplicationrb">trunk/rails/app/controllers/application.rb</a></li>
<li><a href="#trunkrailsappcontrollersauth_controllerrb">trunk/rails/app/controllers/auth_controller.rb</a></li>
<li><a href="#trunkrailsappcontrollersusers_controllerrb">trunk/rails/app/controllers/users_controller.rb</a></li>
<li><a href="#trunkrailsapphelpersapplication_helperrb">trunk/rails/app/helpers/application_helper.rb</a></li>
<li><a href="#trunkrailsapphelperscatalog_helperrb">trunk/rails/app/helpers/catalog_helper.rb</a></li>
<li><a href="#trunkrailsappviewscatalog_search_formhtmlerb">trunk/rails/app/views/catalog/_search_form.html.erb</a></li>
<li><a href="#trunkrailsappviewscatalogindexhtmlerb">trunk/rails/app/views/catalog/index.html.erb</a></li>
<li><a href="#trunkrailsappviewslayoutsapplicationhtmlerb">trunk/rails/app/views/layouts/application.html.erb</a></li>
<li><a href="#trunkrailsconfigenvironmentrb">trunk/rails/config/environment.rb</a></li>
<li><a href="#trunkrailsconfigroutesrb">trunk/rails/config/routes.rb</a></li>
<li><a href="#trunkrailslibtaggable_paginationrb">trunk/rails/lib/taggable_pagination.rb</a></li>
<li><a href="#trunkrailslibuvaz3950rb">trunk/rails/lib/uva/z3950.rb</a></li>
<li><a href="#trunkrailsvendorgemsblacklightCHANGELOGtxt">trunk/rails/vendor/gems/blacklight/CHANGELOG.txt</a></li>
<li><a href="#trunkrailsvendorgemsblacklightManifesttxt">trunk/rails/vendor/gems/blacklight/Manifest.txt</a></li>
<li><a href="#trunkrailsvendorgemsblacklightlibblacklightrb">trunk/rails/vendor/gems/blacklight/lib/blacklight.rb</a></li>
<li><a href="#trunkrailsvendorgemsflareREADMEtxt">trunk/rails/vendor/gems/flare/README.txt</a></li>
<li><a href="#trunkrailsvendorgemsflarelibflareview_helpercommonrb">trunk/rails/vendor/gems/flare/lib/flare/view_helper/common.rb</a></li>
<li><a href="#trunkrailsvendorgemsflarelibflareview_helperdocumentsrb">trunk/rails/vendor/gems/flare/lib/flare/view_helper/documents.rb</a></li>
<li><a href="#trunkrailsvendorgemsflarelibflarerb">trunk/rails/vendor/gems/flare/lib/flare.rb</a></li>
<li><a href="#trunkrailsvendorgemsflarelibwill_paginate_link_rendererrb">trunk/rails/vendor/gems/flare/lib/will_paginate_link_renderer.rb</a></li>
<li><a href="#trunkrailsvendorgemsflaretestunitflare_testrb">trunk/rails/vendor/gems/flare/test/unit/flare_test.rb</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkrailsappviewsauthcookies_requiredhtmlerb">trunk/rails/app/views/auth/cookies_required.html.erb</a></li>
<li><a href="#trunkrailslibcookies_requiredrb">trunk/rails/lib/cookies_required.rb</a></li>
<li><a href="#trunkrailslibwill_paginate_link_rendererrb">trunk/rails/lib/will_paginate_link_renderer.rb</a></li>
<li><a href="#trunkrailstestfunctionalcatalog_testrb">trunk/rails/test/functional/catalog_test.rb</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkrailsappcontrollersapplicationrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/app/controllers/application.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/app/controllers/application.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/app/controllers/application.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -2,20 +2,12 @@
</span><span class="cx"> # Filters added to this controller apply to all controllers in the application.
</span><span class="cx"> # Likewise, all the methods added will be available for all controllers.
</span><span class="cx"> #
</span><del>-# This controller handles the following:
-#  * master layout
-#  * authentication
-#  * sets @current_user instance variable from session
-#
</del><span class="cx"> class ApplicationController &lt; ActionController::Base
</span><span class="cx">   
</span><del>-  helper_method :request_is_for_user_resource?
</del><ins>+  helper_method [:request_is_for_user_resource?, :user_logged_in?]
</ins><span class="cx">   
</span><del>-  before_filter :require_cookies
</del><ins>+  before_filter [:set_current_user, :restrict_user_access]
</ins><span class="cx">   
</span><del>-  before_filter :set_current_user
-  before_filter :restrict_user
-  
</del><span class="cx">   helper :all # include all helpers, all the time
</span><span class="cx">   
</span><span class="cx">   # See ActionController::RequestForgeryProtection for details
</span><span class="lines">@@ -26,45 +18,35 @@
</span><span class="cx">   
</span><span class="cx">   protected
</span><span class="cx">     
</span><del>-    def require_cookies
-      if params[:cookie_check].to_s.empty?
-        session[:ok]=true
-        redirect_to :controller=&gt;params[:controller], :action=&gt;params[:action], :cookie_check=&gt;true
-      else
-        if params[:controller]!='messages' and params[:action]!='no_cookies' and ! session[:ok]==true
-          redirect_to messages_path(:action=&gt;:no_cookies, :cookie_check=&gt;false)
-        end
-      end
</del><ins>+    #
+    # Sets the @current_user variable; for use in templates etc.
+    #
+    def set_current_user
+      @current_user=user_logged_in? ? User.find(session[:user_id]) : nil
</ins><span class="cx">     end
</span><span class="cx">     
</span><span class="cx">     #
</span><span class="cx">     # Controller and view helper for determining if the current url is a request for a user resource
</span><span class="cx">     #
</span><span class="cx">     def request_is_for_user_resource?
</span><del>-      (request.env['PATH_INFO'] =~ /^\/users/)==0
</del><ins>+      request.env['PATH_INFO'] =~ /\/?users\/?/
</ins><span class="cx">     end
</span><span class="cx">     
</span><span class="cx">     #
</span><del>-    # If a param[:no_layout] is set, don't use a layout
-    # otherwise use the &quot;application.html.erb&quot; layout
</del><ins>+    # Checks if the session[:user_id] value is set
+    # if it is, verify that the id is valid
</ins><span class="cx">     #
</span><del>-    def choose_layout
-      return false unless params[:no_layout].nil?
-      'application'
</del><ins>+    def user_logged_in?
+      return false unless session[:user_id]
+      return User.count(:conditions=&gt;{:id=&gt;session[:user_id]})==1
</ins><span class="cx">     end
</span><span class="cx">     
</span><span class="cx">     #
</span><del>-    # Sets the @current user instance variable from the session[:user]
-    # If the session[:user] is nil or is not real (not in database)
-    # then execute the &quot;authorize!&quot; method.
</del><ins>+    # If a param[:no_layout] is set, don't use a layout
+    # otherwise use the &quot;application.html.erb&quot; layout
</ins><span class="cx">     #
</span><del>-    def set_current_user
-      # get the @current_user from the session - this is the value the views should be using
-      @current_user = User.find(session[:uid]) rescue nil
-      # ensure the user is value
-      if ! @current_user or ! @current_user.is_real?
-        authorize!
-      end
</del><ins>+    def choose_layout
+      params[:no_layout].nil? ? 'application' : false
</ins><span class="cx">     end
</span><span class="cx">     
</span><span class="cx">     #
</span><span class="lines">@@ -74,26 +56,30 @@
</span><span class="cx">     # and the @current_user's id does NOT match the url user id
</span><span class="cx">     # redirect to the catalog page
</span><span class="cx">     #
</span><del>-    def restrict_user
-      # If the controller is THE &quot;users&quot; controller
-      if params[:controller]=='users'
-        uid=params[:id]
-      # if the controller is a sub user controller (nested)
-      elsif params[:controller]=~/^users/
-        uid=params[:user_id]
</del><ins>+    def restrict_user_access
+      return unless request_is_for_user_resource?
+      
+      # we are now working with a user related resource...
+      
+      # if the user is not logged in and the current controller is NOT auth/index
+      # redirect to the auth/index controller
+      if ! user_logged_in? and (params[:controller]!='auth' and params[:action]!='index')
+        redirect_to auth_path
</ins><span class="cx">       end
</span><ins>+      
+      #
+      # If the controller is &quot;users&quot; the user id is params[:id]
+      # if the controller is a parent controller of a user (users/1/bookmarks)
+      # then the user id is params[:user_id] - this nested behavior comes from ResourceController:
+      # http://github.com/giraffesoft/resource_controller/tree/master
+      #
+      uid = params[:controller]=='users' ? params[:id] : params[:user_id]
+      
</ins><span class="cx">       # redirect if the request user id does not match the session user id and a user resource is being requested
</span><span class="cx">       if @current_user and uid and (uid.to_s != @current_user.id.to_s)
</span><ins>+        # don't allow access to this resource, it doesn't belong to the user...
</ins><span class="cx">         redirect_to catalog_index_path
</span><span class="cx">       end
</span><span class="cx">     end
</span><span class="cx">     
</span><del>-    #
-    # If the current controller is not the &quot;auth&quot; controller,
-    # redirect to the &quot;auth/pubcookie&quot; url
-    #
-    def authorize!
-      redirect_to pubcookie_auth_path if params[:controller]=='auth' and params[:controller]=='messages' and params[:action]!='no_cookies'
-    end
-    
</del><span class="cx"> end
</span><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailsappcontrollersauth_controllerrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/app/controllers/auth_controller.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/app/controllers/auth_controller.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/app/controllers/auth_controller.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -1,6 +1,21 @@
</span><span class="cx"> class AuthController &lt; ApplicationController
</span><span class="cx">   
</span><ins>+  extend CookiesRequired
+  cookies_required do |options, auth_controller_instance|
+    options[:success_redirect_to]=auth_controller_instance.send(:catalog_index_path)
+  end
+  
</ins><span class="cx">   #
</span><ins>+  # Authorization requests should be made to /auth instead of /auth/pubcookie
+  # The cookies_required call above handles the cookies requirement logic, 
+  # but if /auth/pubcookies is accessed directly, the check might not work as it should
+  # due to Apache taking over the request before this app does.
+  #
+  def index
+    redirect_to :action=&gt;:pubcookie
+  end
+  
+  #
</ins><span class="cx">   # PubCookie will only be used to trigger the authentication server once.
</span><span class="cx">   # After the user succesfully logs in, PubCookie will redirect back to the pubcookie action here.
</span><span class="cx">   # Once we get the REMOTE_USER value from PubCookie (Apache)
</span><span class="lines">@@ -9,21 +24,20 @@
</span><span class="cx">   
</span><span class="cx">   #
</span><span class="cx">   # Apache should be setup to do a redirect if this controller (/auth/pubcookie) is requested.
</span><del>-  # If Apache isn't setup to do the redirect to PubCookie, then use this controller to set
-  # A TEST session[:uid] IF we're NOT in production mode.
</del><ins>+  # If not, a temp account will be created
</ins><span class="cx">   #
</span><span class="cx">   def pubcookie
</span><del>-    #eos# if RAILS_ENV=='production'
-      # The REMOTE_USER value needs to be forwarded in the request from Apache
-    #eos#  raise 'PubCookie has not been properly setup on this server.' if request.env['HTTP_REMOTE_USER'].to_s.empty?
-    else
-      #eos#if session[:uid]
-      #eos#  session[:uid] = nil if (User.count(:conditions=&gt;{:id=&gt;session[:uid]})!=1)
-      #eos# end
-      user = User.find(session[:uid]) rescue User.create(:login=&gt;'demo_' + User.count.to_s)
-      user.update_attribute(:last_login, Time.new)
-      session[:uid] = user.id # The ApplicationController will check this value after the redirect
-    #eos# end
</del><ins>+    # if the session is already set, use the session user_id
+    user=User.find(session[:user_id]) rescue nil
+    # request coming from PubCookie... get login from REMOTE_USER
+    user=User.find_by_login(request.env['HTTP_REMOTE_USER']) if user.nil?
+    # Create the temp/demo user if the above methods didn't work
+    user=User.create(:login=&gt;'temp_account_' + User.count.to_s) if user.nil?
+    # set the last login date
+    user.update_attribute(:last_login, Time.new)
+    # store the user_id in the session
+    session[:user_id] = user.id
+    # redirect to the catalog!
</ins><span class="cx">     redirect_to catalog_index_path
</span><span class="cx">   end
</span><span class="cx">   
</span></span></pre></div>
<a id="trunkrailsappcontrollersusers_controllerrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/app/controllers/users_controller.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/app/controllers/users_controller.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/app/controllers/users_controller.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -2,11 +2,14 @@
</span><span class="cx">   
</span><span class="cx">   resource_controller
</span><span class="cx">   
</span><del>-  #before_filter :redirect_to_catalog, :only=&gt;[:index, :edit, :new, :create, :update, :destroy]
</del><ins>+  #
+  # Only allow the &quot;show&quot; view for now
+  #
+  before_filter :redirect_to_catalog, :only=&gt;[:index, :edit, :new, :create, :update, :destroy]
</ins><span class="cx">   
</span><del>-  #protected
-  #  def redirect_to_catalog
-  #    redirect_to catalog_index_path
-  #  end
</del><ins>+  protected
+    def redirect_to_catalog
+      redirect_to catalog_index_path
+    end
</ins><span class="cx">   
</span><span class="cx"> end
</span><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailsapphelpersapplication_helperrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/app/helpers/application_helper.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/app/helpers/application_helper.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/app/helpers/application_helper.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -13,40 +13,6 @@
</span><span class="cx">     javascript_include_tag(params[:controller]) if File.file?(&quot;public/javascripts/#{params[:controller]}.js&quot;)
</span><span class="cx">   end
</span><span class="cx">   
</span><del>-  def zotero_export_url(document)
-    #http://blog.reciprocallattice.com/2007/12/add-unapi-support-in-rails-application.html
-  end
-  
-  def delicious_export_url(document)
-    base_url=&quot;http://del.icio.us/post&quot;
-    url=document_resource_url(document['id'])
-    title=document['title_display'] ? document['title_display'].join('; ') : document['id']
-    &quot;#{base_url}?url=#{url}&amp;title=#{title}&quot;
-  end
-  
-  def refworks_export_url(document)
-    #http://refworks.scholarsportal.info/express/ExpressImport.asp
-    #http://www.refworks.com/express/expressimport.asp
-    # &quot;http://www.refworks.com/express/ExpressImport.asp/?vendor=RefWorks%20Tagged%20Format&amp;url=#{file_url}&quot;
-    base_url='http://www.refworks.com/express/ExpressImport.asp'
-    file_url = URI.escape(refworks_catalog_url(document['id']))
-    group='RWUVirginia'
-    vendor='RefWorks%20Tagged%20Format'
-    &quot;#{base_url}?g=#{group}&amp;vendor=#{vendor}&amp;url=#{file_url}&quot;
-  end
-  
-  def new_user_bookmark_form_view(user,document)
-    if user.bookmarks.find_by_document_id(document['id'])
-                        &quot;This is in your #{link_to('Bookmarks', user_bookmarks_path(user))}&quot;
-                else
-                        render(:partial=&gt;'catalog/new_user_bookmark_form', :locals=&gt;{:user=&gt;user, :document=&gt;document})
-                end
-        end
-  
-  def refworks_export_link(document)
-    link_to image_tag('refworks.gif'), refworks_export_url(document), :target=&gt;'RefWorksMain', :title=&gt;'Export to RefWorks'
-  end
-  
</del><span class="cx">   def link_for_show_document(document, text='view')
</span><span class="cx">     link_to text, document_resource_path(document['id'])#, current_search_params)
</span><span class="cx">   end
</span></span></pre></div>
<a id="trunkrailsapphelperscatalog_helperrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/app/helpers/catalog_helper.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/app/helpers/catalog_helper.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/app/helpers/catalog_helper.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -27,4 +27,54 @@
</span><span class="cx">     UVA::PartialMapper.map!(document)
</span><span class="cx">   end
</span><span class="cx">   
</span><ins>+  def zotero_export_url(document)
+    #http://blog.reciprocallattice.com/2007/12/add-unapi-support-in-rails-application.html
+  end
+  
+  def delicious_export_url(document)
+    base_url=&quot;http://del.icio.us/post&quot;
+    url=document_resource_url(document['id'])
+    title=document['title_display'] ? document['title_display'].join('; ') : document['id']
+    &quot;#{base_url}?url=#{url}&amp;title=#{title}&quot;
+  end
+  
+  #
+  # http://www.refworks.com/DirectExport.htm
+  # https://mail.eservices.virginia.edu/owa/redir.aspx?C=bb3bd0657ca5495284d286be26ae4de2&amp;URL=http%3a%2f%2fwiki.helsinki.fi%2fdisplay%2fNelli%2fDirect%2bExport%2bto%2bRefWorks%2bfrom%2bMetaLib
+  # https://mail.eservices.virginia.edu/owa/redir.aspx?C=bb3bd0657ca5495284d286be26ae4de2&amp;URL=http%3a%2f%2fwww.nationallibrary.fi%2flibraries%2flinnea%2fpwebrecon2.html
+  #
+  def refworks_export_url(document)
+    #http://refworks.scholarsportal.info/express/ExpressImport.asp
+    #http://www.refworks.com/express/expressimport.asp
+    # &quot;http://www.refworks.com/express/ExpressImport.asp/?vendor=RefWorks%20Tagged%20Format&amp;url=#{file_url}&quot;
+    base_url='http://www.refworks.com/express/ExpressImport.asp'
+    file_url = URI.escape(refworks_catalog_url(document['id']))
+    group='RWUVirginia'
+    vendor='RefWorks%20Tagged%20Format'
+    &quot;#{base_url}?g=#{group}&amp;vendor=#{vendor}&amp;url=#{file_url}&quot;
+  end
+  
+  def refworks_export_link(document)
+    link_to image_tag('refworks.gif'), refworks_export_url(document), :target=&gt;'RefWorksMain', :title=&gt;'Export to RefWorks'
+  end
+  
+  def new_user_bookmark_form_view(user,document)
+    if user.bookmarks.find_by_document_id(document['id'])
+                        &quot;This is in your #{link_to('Bookmarks', user_bookmarks_path(user))}&quot;
+                else
+                        render(:partial=&gt;'catalog/new_user_bookmark_form', :locals=&gt;{:user=&gt;user, :document=&gt;document})
+                end
+        end
+  
+  def render_partial_view_for_document(document)
+    view_type = partial_type_for_document(document)
+                render(
+                        :partial=&gt;&quot;catalog/_index_partials/#{view_type}&quot;,
+                        :locals=&gt;{
+                                :view_type=&gt;view_type,
+                                :document=&gt;document
+                        }
+                )
+        end
+  
</ins><span class="cx"> end
</span><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailsappviewsauthcookies_requiredhtmlerb"></a>
<div class="addfile"><h4>Added: trunk/rails/app/views/auth/cookies_required.html.erb (0 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/app/views/auth/cookies_required.html.erb                                (rev 0)
+++ trunk/rails/app/views/auth/cookies_required.html.erb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+Cookies are required.
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailsappviewscatalog_search_formhtmlerb"></a>
<div class="modfile"><h4>Modified: trunk/rails/app/views/catalog/_search_form.html.erb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/app/views/catalog/_search_form.html.erb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/app/views/catalog/_search_form.html.erb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -22,18 +22,5 @@
</span><span class="cx">                         &lt;/span&gt;
</span><span class="cx">                 &lt;/span&gt;
</span><span class="cx">         &lt;/div&gt;
</span><del>-        
-&lt;%
-=begin
-        &lt;div class=&quot;row yui-content yui-skin-sam&quot;&gt;
-                &lt;label&gt;&amp;nbsp;&lt;/label&gt;
-                &lt;span class=&quot;yui-button yui-submit-button&quot;&gt;
-                        &lt;span class=&quot;first-child&quot;&gt;
-                                &lt;button tabindex=&quot;0&quot; type=&quot;button&quot;&gt;New Search&lt;/button&gt;
-                        &lt;/span&gt;
-                &lt;/span&gt;
-        &lt;/div&gt;
-=end
-%&gt;
</del><span class="cx"> 
</span><span class="cx"> &lt;/form&gt;
</span><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailsappviewscatalogindexhtmlerb"></a>
<div class="modfile"><h4>Modified: trunk/rails/app/views/catalog/index.html.erb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/app/views/catalog/index.html.erb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/app/views/catalog/index.html.erb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -48,17 +48,10 @@
</span><span class="cx">                                 &lt;/div&gt;
</span><span class="cx">                         &lt;/div&gt;
</span><span class="cx"> 
</span><del>-                        &lt;% view_type = partial_type_for_document(document) %&gt;
-                        &lt;%= render(
-                                :partial=&gt;&quot;catalog/_index_partials/#{view_type}&quot;,
-                                :locals=&gt;{
-                                        :view_type=&gt;view_type,
-                                        :document=&gt;document
-                                }
-                        )%&gt;
-        
</del><ins>+                        &lt;%= render_partial_view_for_document(document) %&gt;
+          
</ins><span class="cx">                 &lt;/div&gt;
</span><del>-        
</del><ins>+          
</ins><span class="cx">     &lt;% end %&gt;
</span><span class="cx">   &lt;% end %&gt;
</span><span class="cx"> &lt;% end #end if filters empty? %&gt;
</span></span></pre></div>
<a id="trunkrailsappviewslayoutsapplicationhtmlerb"></a>
<div class="modfile"><h4>Modified: trunk/rails/app/views/layouts/application.html.erb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/app/views/layouts/application.html.erb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/app/views/layouts/application.html.erb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">                 &lt;!--[if IE 7]&gt;
</span><span class="cx">                 &lt;%############= stylesheet_link_tag 'browsers/ie7.css' %&gt;
</span><span class="cx">                 &lt;![endif]--&gt;
</span><del>-            
</del><ins>+    
</ins><span class="cx">                 &lt;script&gt;
</span><span class="cx">                         var CURRENT_USER='&lt;%= @current_user ? @current_user.to_json : 'null' %&gt;';
</span><span class="cx">                         var USER_BOOKMARKS_PATH='&lt;%= @current_user ? user_bookmarks_path(@current_user) : 'null' %&gt;';
</span><span class="lines">@@ -51,8 +51,11 @@
</span><span class="cx">                 &lt;%= javascript_include_tag 'jquery-1.2.3.min.js' %&gt;
</span><span class="cx">                 &lt;%= javascript_include_tag 'application' %&gt;
</span><span class="cx">                 
</span><del>-                &lt;%= load_controller_stylesheet %&gt;
-                &lt;%= load_controller_javascript %&gt;
</del><ins>+                &lt;%# not used yet, just some ideas %&gt;
+                &lt;%#= set_javascript_var(:current_user, @current_user.to_json) if @current_user %&gt;
+    &lt;%#= set_javascript_var(:user_bookmarks_path, user_bookmarks_path(@current_user)) if @current_user %&gt;
+                &lt;%#= load_controller_stylesheet %&gt;
+                &lt;%#= load_controller_javascript %&gt;
</ins><span class="cx">                 
</span><span class="cx">         &lt;/head&gt;
</span><span class="cx">         
</span></span></pre></div>
<a id="trunkrailsconfigenvironmentrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/config/environment.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/config/environment.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/config/environment.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -23,7 +23,6 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> Rails::Initializer.run do |config|
</span><span class="cx">   # Settings in config/environments/* take precedence over those specified here.
</span><span class="cx">   # Application configuration should go into files in config/initializers
</span><span class="lines">@@ -71,12 +70,15 @@
</span><span class="cx">   # Make Active Record use UTC-base instead of local time
</span><span class="cx">   # config.active_record.default_timezone = :utc
</span><span class="cx">   
</span><del>-  require 'blacklight'
-  require 'flare'
-  Flare.boot!(config)
</del><ins>+  #
+  # Add the &quot;flare&quot; method to ActionController::Base and ActionController::Routing::RouteSet::Mapper
+  #
+  require 'blacklight'  # in vendor/gems
+  require 'flare'       # in vendor/gems
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> Flare.connection = Solr::Connection.new(SolrUtil.new.config[:url])
</span><span class="cx"> 
</span><del>-require 'will_paginate'
-require 'taggable_pagination'# in local lib
</del><span class="cx">\ No newline at end of file
</span><ins>+require 'will_paginate'                 # you *will* paginate! (gem)
+require 'will_paginate_link_renderer'   # in local ./lib
+require 'taggable_pagination'           # in local ./lib
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailsconfigroutesrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/config/routes.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/config/routes.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/config/routes.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -1,5 +1,7 @@
</span><span class="cx"> ActionController::Routing::Routes.draw do |map|
</span><span class="cx">   
</span><ins>+  map.auth 'auth', :controller=&gt;'auth', :action=&gt;'index'
+  map.cookies_test 'auth/cookies_test', :controller=&gt;'auth', :action=&gt;'cookies_test'
</ins><span class="cx">   map.pubcookie_auth 'auth/pubcookie', :controller=&gt;'auth', :action=&gt;'pubcookie'
</span><span class="cx">   
</span><span class="cx">   # Set the default controller:
</span></span></pre></div>
<a id="trunkrailslibcookies_requiredrb"></a>
<div class="addfile"><h4>Added: trunk/rails/lib/cookies_required.rb (0 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/lib/cookies_required.rb                                (rev 0)
+++ trunk/rails/lib/cookies_required.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+#
+#
+# Be sure to add this to functional tests:
+# * @request.cookies['_session_id'] = 'fake cookie bypasses filter'
+#
+# usage:
+#
+# class MyController &lt; ApplicationController
+#   extend CookiesRequired
+#   cookies_required
+# end
+#
+module CookiesRequired
+  
+  def self.extended(base)
+    base.send :include, InstanceMethods
+  end
+  
+  #
+  # Possible options are:
+  # * :controller - the path of the controller running this code (not including action)
+  # * :template - the template to display if the user doesn't have cookies enabled
+  # * :success_redirect_to - if cookies are enabled, redirect to this path
+  # Can also use a block
+  #
+  def cookies_required(options={}, &amp;block)
+    options[:controller]||=self.to_s.sub(/Controller$/, '').underscore
+    options[:template]||=options[:controller] + '/cookies_required'
+    self.before_filter do |controller|
+      controller.instance_variable_set('@cookies_required_options', options)
+      yield options, controller
+    end
+    before_filter :cookies_required!, :except =&gt; :cookies_test
+  end
+  
+  module InstanceMethods
+    
+    #
+    #
+    #
+    def cookies_required!
+      #
+      # config.action_controller.session[:session_key] ???
+      #
+      if request.cookies.to_s.blank?
+        session[:return_to] = request.request_uri
+        redirect_to(:controller =&gt; @cookies_required_options[:controller], :action =&gt; :cookies_test)
+        return false
+      end
+    end
+    
+    #
+    #
+    #
+    def cookies_test
+      if request.cookies.to_s.blank?
+        logger.warn('=== cookies are disabled')
+        render :template =&gt; @cookies_required_options[:template]
+      else
+        raise 'Please specify a :success_redirect_to - example -&gt; cookies_required(:success_redirect_to=&gt;&quot;/success.html&quot;)' unless @cookies_required_options[:success_redirect_to]
+        redirect_to(*@cookies_required_options[:success_redirect_to])
+      end
+    end
+    
+  end
+  
+end
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailslibtaggable_paginationrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/lib/taggable_pagination.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/lib/taggable_pagination.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/lib/taggable_pagination.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -12,7 +12,7 @@
</span><span class="cx">         end
</span><span class="cx">         
</span><span class="cx">         def paginate_by_tag(tag, options = {}, find_options = {})
</span><del>-          page, per_page, total = wp_parse_options(options)
</del><ins>+          page, per_page, total = wp_parse_options(options)#WillPaginate::Finder::ClassMethods.send(:wp_parse_options, options)
</ins><span class="cx">           offset = (page.to_i - 1) * per_page
</span><span class="cx">           find_options.merge!(:offset =&gt; offset, :limit =&gt; per_page.to_i)
</span><span class="cx">           items = tag ? find_tagged_with(tag, find_options) : paginate(options)
</span></span></pre></div>
<a id="trunkrailslibuvaz3950rb"></a>
<div class="modfile"><h4>Modified: trunk/rails/lib/uva/z3950.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/lib/uva/z3950.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/lib/uva/z3950.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> require 'rubygems'
</span><span class="cx"> 
</span><del>-JRUBY_VERSION = 1
</del><ins>+# JRUBY_VERSION = 1
</ins><span class="cx"> 
</span><span class="cx"> if defined?(JRUBY_VERSION)
</span><span class="cx">   require 'java'
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx">   require 'java/marc4j.jar'
</span><span class="cx">   require 'java/zclient.jar'
</span><span class="cx"> else
</span><del>-  eval &quot;require 'zoom'&quot;
</del><ins>+  require 'zoom'
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> require 'marc'
</span></span></pre></div>
<a id="trunkrailslibwill_paginate_link_rendererrb"></a>
<div class="addfile"><h4>Added: trunk/rails/lib/will_paginate_link_renderer.rb (0 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/lib/will_paginate_link_renderer.rb                                (rev 0)
+++ trunk/rails/lib/will_paginate_link_renderer.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+require 'rubygems'
+require 'will_paginate'
+require 'will_paginate/collection'
+require 'will_paginate/view_helpers'
+
+#
+# Override WillPaginate - this inserts commas into large page numbers
+# example: 443719 becomes 443,719
+#
+class WillPaginate::LinkRenderer
+  alias_method :orig_page_link_or_span, :page_link_or_span
+  def page_link_or_span(page, span_class = 'current', text = nil)
+    # format the page number, unless there is first/last page text (the last arg)
+    text ||= @template.number_with_delimiter(page)
+    orig_page_link_or_span(page, span_class, text)
+  end
+end
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailstestfunctionalcatalog_testrb"></a>
<div class="addfile"><h4>Added: trunk/rails/test/functional/catalog_test.rb (0 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/test/functional/catalog_test.rb                                (rev 0)
+++ trunk/rails/test/functional/catalog_test.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+require File.dirname(__FILE__) + '/../test_helper'
+
+class CatalogControllerTest &lt; ActionController::TestCase
+  
+  def setup()
+    @controller=CatalogController.new
+    @request=ActionController::TestRequest.new
+    @response=ActionController::TestResponse.new
+  end
+  
+  # Replace this with your real tests.
+  def test_index
+    get :index
+    assert_response :success
+  end
+  
+end
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailsvendorgemsblacklightCHANGELOGtxt"></a>
<div class="modfile"><h4>Modified: trunk/rails/vendor/gems/blacklight/CHANGELOG.txt (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/vendor/gems/blacklight/CHANGELOG.txt        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/vendor/gems/blacklight/CHANGELOG.txt        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+0.1.0
+        Simplified dir layout
+        Removed un-used code/files
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailsvendorgemsblacklightManifesttxt"></a>
<div class="modfile"><h4>Modified: trunk/rails/vendor/gems/blacklight/Manifest.txt (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/vendor/gems/blacklight/Manifest.txt        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/vendor/gems/blacklight/Manifest.txt        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -4,22 +4,23 @@
</span><span class="cx"> Rakefile
</span><span class="cx"> bin/blacklight
</span><span class="cx"> lib/blacklight.rb
</span><del>-lib/blacklight/bookcover.rb
-lib/blacklight/bookcover/cache.rb
-lib/blacklight/bookcover/source.rb
-lib/blacklight/bookcover/source/amazon.rb
-lib/blacklight/bookcover/source/google.rb
-lib/blacklight/bookcover/source/syndetics.rb
-lib/blacklight/bookcover/utils.rb
-lib/blacklight/demo.rb
-lib/blacklight/demo/uva.rb
-lib/blacklight/demo/uva_001.mrc.utf8.mrc
</del><span class="cx"> lib/blacklight/mapper.rb
</span><ins>+lib/blacklight/marc.rb
</ins><span class="cx"> lib/blacklight/marc/ext.rb
</span><span class="cx"> lib/blacklight/marc/ext/README.txt
</span><span class="cx"> lib/blacklight/marc/ext/record.rb
</span><span class="cx"> lib/blacklight/marc/ext/record/field_045.rb
</span><span class="cx"> lib/blacklight/marc/ext/record/format_type.rb
</span><ins>+lib/blacklight/service.rb
+lib/blacklight/service/review.rb
+lib/blacklight/service/wikipedia.rb
+lib/blacklight/service/bookcover.rb
+lib/blacklight/service/bookcover/cache.rb
+lib/blacklight/service/bookcover/source.rb
+lib/blacklight/service/bookcover/source/amazon.rb
+lib/blacklight/service/bookcover/source/google.rb
+lib/blacklight/service/bookcover/source/syndetics.rb
+lib/blacklight/service/bookcover/utils.rb
</ins><span class="cx"> lib/blacklight/rails.rb
</span><span class="cx"> lib/blacklight/rails/app/controllers
</span><span class="cx"> lib/blacklight/rails/app/models
</span></span></pre></div>
<a id="trunkrailsvendorgemsblacklightlibblacklightrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/vendor/gems/blacklight/lib/blacklight.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/vendor/gems/blacklight/lib/blacklight.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/vendor/gems/blacklight/lib/blacklight.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -46,14 +46,16 @@
</span><span class="cx"> 
</span><span class="cx"> end
</span><span class="cx"> 
</span><ins>+$:.unshift Blacklight.lib_dir
+
</ins><span class="cx"> #
</span><span class="cx"> # These will soon change to autoload
</span><span class="cx"> #
</span><del>-%W(
-marc
-service
-mapper
-rails.rb
-rails/routes.rb
-z3950
-).each {|f|require File.join(Blacklight.lib_dir, 'blacklight', f)}
</del><span class="cx">\ No newline at end of file
</span><ins>+#%W(
+#marc.rb
+#service
+#mapper
+#rails.rb
+#rails/routes.rb
+#z3950
+#).each {|f|require File.join(Blacklight.lib_dir, 'blacklight', f)}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailsvendorgemsflareREADMEtxt"></a>
<div class="modfile"><h4>Modified: trunk/rails/vendor/gems/flare/README.txt (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/vendor/gems/flare/README.txt        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/vendor/gems/flare/README.txt        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> = Flare
</span><span class="cx"> 
</span><del>-* FIX (url)
</del><ins>+* current repository url: http://blacklight.rubyforge.org/svn/trunk/rails/vendor/gems/flare
</ins><span class="cx"> 
</span><span class="cx"> == DESCRIPTION:
</span><span class="cx"> 
</span><span class="lines">@@ -9,19 +9,24 @@
</span><span class="cx"> ==Usage
</span><span class="cx"> 
</span><span class="cx"> ===Booting
</span><del>-To configure Rails to use Flare's controllers, helpers and views you must call &lt;tt&gt;Flare.boot!&lt;/tt&gt;
-in your Rails environment.rb,
</del><ins>+To leverage Flare's raw power in Rails, you must call &lt;tt&gt;Flare.boot!&lt;/tt&gt; in your Rails environment.rb:
</ins><span class="cx"> 
</span><span class="cx"> inside of the &quot;Rails::Initializer.run do |config|&quot; block:
</span><span class="cx">   require 'flare'
</span><span class="cx">   Flare.boot!(rails_config)
</span><span class="cx"> 
</span><span class="cx"> Booting flare does the following:
</span><del>-* adds Flare's controllers and helpers to Rails' load_path
-* adds Flare's views to ActionController::Base.view_paths
-* adds a new class method named &quot;flare&quot; to ActionController::Base
-* adds a new instance method named &quot;flare&quot; to ActionController::Routing::RouteSet::Mapper
</del><ins>+  * adds a new class method named &quot;flare&quot; to ActionController::Base
+  * adds a new instance method named &quot;flare&quot; to ActionController::Routing::RouteSet::Mapper
</ins><span class="cx"> 
</span><ins>+===Routing
+In your config/routes.rb file:
+  ActionController::Routing::Routes.draw do |map|
+    map.flare :documents
+  end
+
+That will add the RESTful routes needed to access your controller.
+
</ins><span class="cx"> ===Controllers
</span><span class="cx"> After initializing, the simplest usage would be to create a new controller in your Rails app, and call the &quot;flare&quot; class method.
</span><span class="cx"> Example:
</span><span class="lines">@@ -31,16 +36,6 @@
</span><span class="cx"> 
</span><span class="cx"> You can pass in configuration options to the &lt;tt&gt;flare&lt;/tt&gt; class method also.
</span><span class="cx"> 
</span><del>-===Routing
-Then in your config/routes.rb file:
-  ActionController::Routing::Routes.draw do |map|
-    map.flare :documents
-  end
-
-That will add the RESTful routes needed to access your controller.
-
---
-
</del><span class="cx"> Be sure you have an instance of Solr running at the default location:
</span><span class="cx">   http://localhost:8983/solr
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkrailsvendorgemsflarelibflareview_helpercommonrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/vendor/gems/flare/lib/flare/view_helper/common.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/vendor/gems/flare/lib/flare/view_helper/common.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/vendor/gems/flare/lib/flare/view_helper/common.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -57,7 +57,9 @@
</span><span class="cx">   end
</span><span class="cx">   
</span><span class="cx">   #
</span><del>-  # replaces _ with spaces and removes _facet or _text, also removes a starting search_param_negate_char
</del><ins>+  # * replaces _ with spaces
+  # * removes _facet or _text
+  # * removes a starting search_param_negate_char
</ins><span class="cx">   #
</span><span class="cx">   def clean_field(field)
</span><span class="cx">     field.to_s.sub(%r(#{facet_field_suffix}$|#{text_field_suffix}$), '').sub(/^#{search_param_negate_char}/, '')
</span></span></pre></div>
<a id="trunkrailsvendorgemsflarelibflareview_helperdocumentsrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/vendor/gems/flare/lib/flare/view_helper/documents.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/vendor/gems/flare/lib/flare/view_helper/documents.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/vendor/gems/flare/lib/flare/view_helper/documents.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx">     
</span><span class="cx">     #
</span><span class="cx">     #
</span><del>-    3
</del><ins>+    #
</ins><span class="cx">     def document_list_view
</span><span class="cx">       render :inline=&gt;&lt;&lt;-EOF
</span><span class="cx">       &lt;div id=&quot;FlareDocumentList&quot;&gt;
</span></span></pre></div>
<a id="trunkrailsvendorgemsflarelibflarerb"></a>
<div class="modfile"><h4>Modified: trunk/rails/vendor/gems/flare/lib/flare.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/vendor/gems/flare/lib/flare.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/vendor/gems/flare/lib/flare.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -1,39 +1,13 @@
</span><ins>+#
+#
+#
</ins><span class="cx"> module Flare
</span><span class="cx">   
</span><del>-  VERSION='0.1.1'
</del><ins>+  VERSION='0.1.2'
</ins><span class="cx">   
</span><span class="cx">   class &lt;&lt; self
</span><span class="cx">     
</span><span class="cx">     #
</span><del>-    # The Flare installation directory
-    #
-    attr_reader :base_dir
-    def base_dir; @base_dir ||= File.expand_path(File.join(File.dirname(__FILE__), '..')); end
-    
-    #
-    # This directory holds all templates/partials
-    #
-    attr_reader :views_dir
-    def views_dir; @views_dir ||= File.join(base_dir, 'app', 'views'); end
-    
-    #
-    # The main Flare lib directory path
-    #
-    attr_reader :lib_dir
-    def lib_dir; @lib_dir ||= File.join(base_dir, 'lib'); end
-    
-    #
-    # Additional app paths - currently these are used for Rails.config.load_paths
-    #
-    attr_reader :load_paths
-    def load_paths
-      @load_paths ||= [
-        File.join(base_dir, 'app', 'controllers'),
-        File.join(base_dir, 'app', 'helpers')
-      ]
-    end
-    
-    #
</del><span class="cx">     # Global connection - if a connection instance was not
</span><span class="cx">     # set within a controller, fallback to this 
</span><span class="cx">     #
</span><span class="lines">@@ -47,55 +21,34 @@
</span><span class="cx">     #
</span><span class="cx">     def new(config=nil); Flare::Context.new(config); end
</span><span class="cx">     
</span><del>-    #
-    # For Flare to behave similar to a RailsEngine:
-    # in environment.rb, in the config intialize block:
-    #
-    #   require 'flare'
-    #   Flare.boot!(config)
-    # 
-    # This allows Flare's built-in controllers, views and helpers
-    # to be used as defaults, but can be overridden by creating a file in
-    # the main application.
-    #
-    def boot!(rails_config)
-      rails_config.load_paths += load_paths
-      (rails_config.load_once_paths += load_paths) if RAILS_ENV=='production'
-      require 'action_controller_ext.rb'
-      rails_config.after_initialize do
-        require 'will_paginate_link_renderer.rb'
-        ActionController::Base.view_paths &lt;&lt; views_dir
-      end
-    end
-    
</del><span class="cx">   end
</span><span class="cx">   
</span><span class="cx"> end
</span><span class="cx"> 
</span><del>-#
-# Add the Flare lib directory to the &quot;$:&quot; &lt;include path&gt;
-#
-$: &lt;&lt; File.join(Flare.lib_dir) unless $:.include?(Flare.lib_dir)
</del><ins>+require 'rubygems'
</ins><span class="cx"> 
</span><del>-#
-# Add solr to the include path
-# then require solr.rb
-#
-proc {|solr_path|
</del><ins>+proc {|base_dir|
+  #
+  # Add the Flare lib directory to the &quot;$:&quot; &lt;include path&gt;
+  #
+  flare_lib=File.join(base_dir, 'lib')
+  $:.unshift flare_lib unless $:.include?(flare_lib)
+  
+  # Add solr to the include path
+  $:.unshift File.join(base_dir, 'solr-ruby-0.0.5', 'lib')
</ins><span class="cx">   # Load the Flare-localized trunk version of solr-ruby
</span><del>-  $: &lt;&lt; solr_path
-  require File.join(solr_path, 'solr')
-}.call(File.join(Flare.lib_dir, 'solr-ruby-0.0.5', 'lib' ))
</del><ins>+  require 'solr'
+  #
+  # Load up the ruby-core overrides:
+  # * &lt;tt&gt;Hash#deep_merge&lt;/tt&gt;
+  # * &lt;tt&gt;Hash#deep_merge!&lt;/tt&gt;
+  # * &lt;tt&gt;Object#deep_clone&lt;/tt&gt;
+  #
+  require File.join(base_dir, 'core_ext.rb')
+  require File.join(base_dir, 'action_controller_ext.rb')
+}.call(File.dirname(__FILE__))
</ins><span class="cx"> 
</span><span class="cx"> #
</span><del>-# Load up the ruby-core overrides:
-# * &lt;tt&gt;Hash#deep_merge&lt;/tt&gt;
-# * &lt;tt&gt;Hash#deep_merge!&lt;/tt&gt;
-# * &lt;tt&gt;Object#deep_clone&lt;/tt&gt;
-#
-require File.join(Flare.lib_dir, 'core_ext.rb')
-
-#
</del><span class="cx"> # load up the main Flare classes / modules
</span><span class="cx"> # Most of these are in the Manifest.txt file
</span><span class="cx"> # For overloading other Gems, etc. load/require in the Flare.boot! &quot;after_initialize&quot; block
</span></span></pre></div>
<a id="trunkrailsvendorgemsflarelibwill_paginate_link_rendererrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/vendor/gems/flare/lib/will_paginate_link_renderer.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/vendor/gems/flare/lib/will_paginate_link_renderer.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/vendor/gems/flare/lib/will_paginate_link_renderer.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -1,4 +1,6 @@
</span><ins>+require 'rubygems'
</ins><span class="cx"> require 'will_paginate'
</span><ins>+require 'will_paginate/collection'
</ins><span class="cx"> require 'will_paginate/view_helpers'
</span><span class="cx"> 
</span><span class="cx"> #
</span></span></pre></div>
<a id="trunkrailsvendorgemsflaretestunitflare_testrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/vendor/gems/flare/test/unit/flare_test.rb (588 => 589)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/vendor/gems/flare/test/unit/flare_test.rb        2008-06-06 17:52:10 UTC (rev 588)
+++ trunk/rails/vendor/gems/flare/test/unit/flare_test.rb        2008-06-06 18:28:19 UTC (rev 589)
</span><span class="lines">@@ -32,21 +32,7 @@
</span><span class="cx">     assert File.file?(File.join(Flare.lib_dir, 'flare.rb'))
</span><span class="cx">   end
</span><span class="cx">   
</span><del>-  def test_views_dir
-    assert File.directory?(Flare.views_dir)
-  end
-  
</del><span class="cx">   #
</span><del>-  # Currently only &quot;controllers&quot; and view &quot;helpers&quot;
-  #
-  def test_load_paths
-    assert_equal 2, Flare.load_paths.size
-    Flare.load_paths.each do |d|
-      assert File.directory?(d)
-    end
-  end
-  
-  #
</del><span class="cx">   # Ensure the Flare.connection attr is read/write
</span><span class="cx">   #
</span><span class="cx">   def test_connection_attr_is_assignable
</span><span class="lines">@@ -55,20 +41,4 @@
</span><span class="cx">     assert 1, Flare.connection
</span><span class="cx">   end
</span><span class="cx">   
</span><del>-  #
-  # Make sure Rails is getting configured correctly after Flare.boot!
-  #
-  def test_boot_bang
-    rails_config = boot_rails!
-    Flare.load_paths.each do |d|
-      assert rails_config.load_paths.include?(d)
-    end
-    # The Flare views dir should not yet be added to Rails
-    assert_equal false, ActionController::Base.view_paths.include?(Flare.views_dir)
-    # execute the after initialize blocks (See: Rails &quot;initializer.rb&quot; #after_initialize)
-    exec_rails_after_initialize_blocks(rails_config)
-    # The Flare views dir should now be in Rails views paths
-    assert ActionController::Base.view_paths.include?(Flare.views_dir)
-  end
-  
</del><span class="cx"> end
</span><span class="cx">\ No newline at end of file
</span></span></pre>
</div>
</div>

</body>
</html>