<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -35,16 +35,15 @@ class AccountController &lt; ApplicationController
 
   def authenticate
 
-    # reset the agent session in case there are any content partners logged in to avoid any funny things
+    # reset the session in case there are any content partners logged in to avoid any funny things
     session[:agent_id] = nil
 
     user_params=params[:user]
-    remember_me=EOLConvert.to_boolean(params[:remember_me])
-        
+
     if using_open_id?
-      open_id_authentication(params[:openid_url],remember_me)
+      open_id_authentication(params[:openid_url])
     else
-      password_authentication(user_params[:username],user_params[:password],remember_me)
+      password_authentication(user_params[:username],user_params[:password])
     end
 
   end
@@ -105,7 +104,7 @@ class AccountController &lt; ApplicationController
 
   def logout
     params[:return_to] = nil unless params[:return_to] =~ /\A[%2F\/]/ # Whitelisting redirection to our own site, relative paths.
-    cookies.delete :user_auth_token       
+        
     reset_session 
     store_location(params[:return_to])
     flash[:notice] = &quot;You have been logged out.&quot;[:you_have_been_logged_out]
@@ -227,17 +226,17 @@ class AccountController &lt; ApplicationController
   end
   
   protected
-  def password_authentication(username, password, remember_me)
+  def password_authentication(username, password)
     user = User.authenticate(username,password)
     if user[0]
-      successful_login(user[1],remember_me)
+      successful_login(user[1])
     else
       failed_login(user[1])
     end
   end
 
-  def open_id_authentication(identity_url,remember_me)
-    open_id_return_to = &quot;#{realm}/account/authenticate?remember_me=#{remember_me}&quot;
+  def open_id_authentication(identity_url)
+    open_id_return_to = &quot;#{realm}/account/authenticate&quot;
     authenticate_with_open_id(identity_url,
                               :return_to =&gt; open_id_return_to,
                               :optional =&gt; [ :fullname, :nickname, :email ]) do |result, identity_url, registration|
@@ -256,25 +255,17 @@ class AccountController &lt; ApplicationController
           user.save!
           new_username      = &quot;openid_user_#{user.id.to_s}&quot;
           user.update_attributes(:username=&gt;new_username,:given_name=&gt;registration['nickname'] || new_username)
-          new_openid_user=true
         end
-        successful_login(user, remember_me, new_openid_user)
+        successful_login(user, new_openid_user)
       else
         failed_login result.message
       end
     end
   end
 
-  def successful_login(user, remember_me, new_openid_user = false)
+  def successful_login(user, new_openid_user = false)
     set_current_user(user)
-    notice_message=&quot;Logged in successfully.&quot;[:logged_in]   
-    if remember_me &amp;&amp; !user.is_admin?
-      user.remember_me
-      cookies[:user_auth_token] = { :value =&gt; user.remember_token , :expires =&gt; user.remember_token_expires_at }
-    elsif remember_me &amp;&amp; user.is_admin?
-      notice_message+=&quot; NOTE: for security reasons, administrators cannot use the remember me feature.&quot;[:admin_remind_me_message]
-    end    
-    flash[:notice] = notice_message
+    flash[:notice] = &quot;Logged in successfully&quot;[:logged_in]   
     # could catch the fact that they are a new openid user here and redirect somewhere else if you wanted
     if user.is_admin? &amp;&amp; ( session[:return_to].nil? || session[:return_to].empty?) # if we're an admin we STILL would love a return, thank you very much!
       redirect_to :controller =&gt; 'admin', :action =&gt; 'index', :protocol =&gt; &quot;http://&quot;</diff>
      <filename>app/controllers/account_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,10 +3,16 @@ class AdminController &lt; ApplicationController
  layout 'main'
  
  before_filter :check_authentication
+ before_filter :set_no_cache
+ 
  access_control :DEFAULT =&gt; 'administrator'
     
  def index
 
  end
-      
+
+ def set_no_cache
+  @no_cache=true
+ end      
+
 end</diff>
      <filename>app/controllers/admin_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -31,11 +31,10 @@ class ApplicationController &lt; ActionController::Base
 
   prepend_before_filter :set_session
   before_filter :clear_any_logged_in_session unless $ALLOW_USER_LOGINS
-  before_filter :set_user_settings
 
   helper :all
 
-  helper_method :logged_in?, :current_url, :current_user, :return_to_url, :current_agent, :agent_logged_in?, :allow_page_to_be_cached?
+  helper_method :logged_in?, :current_user, :return_to_url, :current_agent, :agent_logged_in?, :allow_page_to_be_cached?
   around_filter :set_current_language
 
   def view_helper_methods
@@ -90,42 +89,37 @@ class ApplicationController &lt; ActionController::Base
     session[:return_to] || root_url
   end
   
-  # Set the page expertise and vetted defaults, get from querystring, update the session with this value if found
-  def set_user_settings
-    expertise = params[:expertise] if ['novice','middle','expert'].include?(params[:expertise])
-    alter_current_user do |user|
-      user.expertise=expertise unless expertise.nil?
-    end
-    vetted = params[:vetted]
-    alter_current_user do |user|
-      user.vetted=EOLConvert.to_boolean(vetted) unless vetted.blank?
-    end
+  def valid_return_to_url
+    return_to_url != nil &amp;&amp; return_to_url != login_url &amp;&amp; return_to_url != register_url &amp;&amp; return_to_url != logout_url &amp;&amp; !url_for(:controller=&gt;'content_partner',:action=&gt;'login',:only_path=&gt;true).include?(return_to_url)
   end
 
+
   def referred_url
     request.referer
   end
 
-  def current_url(remove_querystring=true)
-    if remove_querystring
-      current_url=URI.parse(request.url).path
-    else
-      request.url
-    end
-  end
-
   # Redirect to the URL stored by the most recent store_location call or to the passed default.
   def redirect_back_or_default(default=root_url)
-
     # be sure we aren't returning the login, register or logout page
-    if return_to_url != nil &amp;&amp; return_to_url != login_url &amp;&amp; return_to_url != register_url &amp;&amp; return_to_url != logout_url &amp;&amp; !url_for(:controller=&gt;'content_partner',:action=&gt;'login',:only_path=&gt;true).include?(return_to_url)
-      redirect_to(CGI.unescape(return_to_url),:protocol =&gt; &quot;http://&quot;)
+    if valid_return_to_url
+      redirect_to(CGI.unescape(return_to_url), :protocol =&gt; &quot;http://&quot;)
     else
-      redirect_to(default,:protocol =&gt; &quot;http://&quot;)
+      redirect_to(default, :protocol =&gt; &quot;http://&quot;)
     end
     store_location(nil)
     return false
-
+  end
+  
+  # send user to the SSL version of the page (used in the account controller, can be used elsewhere)
+  def redirect_to_ssl
+    url_to_return = params[:return_to] ? CGI.unescape(params[:return_to]).strip : nil
+    unless request.ssl? || local_request?
+      if url_to_return &amp;&amp; url_to_return[0...1] == '/'  #return to local url
+        redirect_to :protocol =&gt; &quot;https://&quot;, :return_to =&gt; url_to_return 
+      else
+        redirect_to :protocol =&gt; &quot;https://&quot;  
+      end
+    end
   end
 
   def collected_errors(model_object)
@@ -282,17 +276,6 @@ class ApplicationController &lt; ActionController::Base
     !((request.remote_ip =~ /127.0.0.1/).nil? &amp;&amp; (request.remote_ip =~ /128.128./).nil? &amp;&amp; (request.remote_ip =~ /10.19./).nil?)
   end
 
-  # send user to the SSL version of the page (used in the account controller, can be used elsewhere)
-  def redirect_to_ssl
-    params[:return_to] = nil unless params[:return_to] =~ /\A[%2F\/]/ # Whitelisting redirection to our own site, relative paths.
-    
-    if params[:return_to]
-      redirect_to :protocol =&gt; &quot;https://&quot;, :return_to =&gt; params[:return_to] unless (request.ssl? or local_request?)
-    else
-      redirect_to :protocol =&gt; &quot;https://&quot; unless (request.ssl? or local_request?)
-    end
-  end
-
 
   # send user back to the non-SSL version of the page
   def redirect_back_to_http
@@ -317,10 +300,7 @@ class ApplicationController &lt; ActionController::Base
       return temporary_logged_in_user ? temporary_logged_in_user :
                                         set_temporary_logged_in_user(cached_user)
     else
-      session[:user] ||= create_new_user # if there wasn't one
-      session[:user] = create_new_user unless session[:user].respond_to?(:stale?)
-      session[:user] = create_new_user if session[:user].stale?
-      return session[:user]
+      session[:user] ||= create_new_user
     end
   end
 
@@ -356,22 +336,7 @@ class ApplicationController &lt; ActionController::Base
 
   # check to see if we have a logged in user
   def logged_in?
-    return(logged_in_from_session? || logged_in_from_cookie?)
-  end
-  
-  def logged_in_from_session?
-    not session[:user_id].nil?
-  end
-  
-  def logged_in_from_cookie?
-    user = cookies[:user_auth_token] &amp;&amp; User.find_by_remember_token(cookies[:user_auth_token])
-    if user &amp;&amp; user.remember_token?
-      cookies[:user_auth_token] = { :value =&gt; user.remember_token, :expires =&gt; user.remember_token_expires_at }
-      set_logged_in_user(user)
-      return true
-    else
-      return false
-    end    
+    return(not session[:user_id].nil?)
   end
 
  def check_authentication
@@ -394,7 +359,7 @@ class ApplicationController &lt; ActionController::Base
   alias is_curator is_curator?
 
  def permission_denied
-   flash[:warning] = &quot;You are not authorized to perform this action.&quot;[]
+   flash[:notice] = &quot;You don't have privileges to access this action&quot;
    return redirect_to(root_url)
  end
 
@@ -420,7 +385,7 @@ class ApplicationController &lt; ActionController::Base
 
   # A user is not authorized for the particular controller based on the rights for the roles they are in
   def access_denied
-    flash.now[:warning]=&quot;You are not authorized to perform this action.&quot;[]
+    flash.now[:warning]='You are not authorized to perform this action.'
     request.env[&quot;HTTP_REFERER&quot;] ? (redirect_to :back) : (redirect_to root_url)
   end
 
@@ -505,8 +470,7 @@ private
   # NOTE: if you want to change a user's settings, you need to use alter_current_user
   def set_logged_in_user(user)
     set_temporary_logged_in_user(user)
-    #TODO: Remove old session flushing code
-    session[:user]    = nil # This was the &quot;new user&quot;, before we updated the code -- this is here to ensure we flush all old sessions and can probably safely be removed now.
+    session[:user]    = nil # This was the &quot;new user&quot;, before.
     session[:user_id] = user.id
     set_unlogged_in_user(nil)
     Rails.cache.delete(&quot;users/#{session[:user_id]}&quot;)
@@ -527,17 +491,14 @@ private
           %w{novice middle expert}.each do |expertise|
             %w{true false}.each do |vetted|
               %w{text flash}.each do |default_taxonomic_browser|
-                [nil.to_s, Hierarchy.browsable_by_label.map {|h| h.id.to_s }].flatten.each do |default_hierarchy_id|
-                  %w{true false}.each do |can_curate|
-                    part_name = 'page_' + taxon_concept_id.to_s +
-                                    '_' + language.iso_639_1 +
-                                    '_' + expertise +
-                                    '_' + vetted +
-                                    '_' + default_taxonomic_browser +
-                                    '_' + default_hierarchy_id +
-                                    '_' + can_curate
-                    expire_fragment(:controller =&gt; '/taxa', :part =&gt; part_name)
-                  end
+                %w{true false}.each do |can_curate|
+                  part_name = 'page_' + taxon_concept_id.to_s +
+                                  '_' + language.iso_639_1 +
+                                  '_' + expertise +
+                                  '_' + vetted +
+                                  '_' + default_taxonomic_browser +
+                                  '_' + can_curate
+                  expire_fragment(:controller =&gt; '/taxa', :part =&gt; part_name)
                 end
               end
             end
@@ -557,11 +518,6 @@ private
           else
             expire_fragment(:controller =&gt; '/content', :part =&gt; &quot;#{page}_#{language.iso_639_1}&quot;)
           end
-          if page.class == ContentPage &amp;&amp; page.page_url == 'home'
-            Hierarchy.all.each do |h|
-              expire_fragment(:controller =&gt; '/content', :part=&gt;&quot;home_#{language.iso_639_1}_#{h.id.to_s}&quot;) # this is because the home page fragment is dependent on the user's selected hierarchy entry ID, unlike the other content pages
-            end
-          end
         end
       end
     end</diff>
      <filename>app/controllers/application.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,11 +14,11 @@ class ContentController &lt; ApplicationController
 
     @home_page=true
 
-    unless @cached_fragment = read_fragment(:controller=&gt;'content',:part=&gt;'home_' + current_user.content_page_cache_str)
+    unless @cached_fragment = read_fragment(:controller=&gt;'content',:part=&gt;'home_' + current_user.language_abbr)
       @content=ContentPage.get_by_page_name_and_language_abbr('Home',current_user.language_abbr)
       raise &quot;static page content not found&quot; if @content.nil?
       @explore_taxa  = RandomHierarchyImage.random_set(6, @session_hierarchy)
-      @featured_taxa = TaxonConcept.exemplars # comment this out to make featured taxa go away on home page!     
+      @featured_taxa = TaxonConcept.exemplars
       # get top news items less then a predetermined number of weeks old
       @news_items = NewsItem.find_all_by_active(true,:limit=&gt;$NEWS_ITEMS_HOMEPAGE_MAX_DISPLAY,:order=&gt;'display_date desc',:conditions=&gt;'display_date &gt;= &quot;' + $NEWS_ITEMS_TIMEOUT_HOMEPAGE_WEEKS.weeks.ago.to_s(:db) + '&quot;')
     end</diff>
      <filename>app/controllers/content_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,7 @@ class TaxaController &lt; ApplicationController
 
   layout 'main'
   prepend_before_filter :redirect_back_to_http if $USE_SSL_FOR_LOGIN   # if we happen to be on an SSL page, go back to http
+  before_filter :set_user_settings, :only=&gt;[:show,:search,:settings]
   before_filter :set_session_hierarchy_variable, :only =&gt; [:show, :classification_attribution]
 
   if $SHOW_SURVEYS
@@ -353,12 +354,26 @@ class TaxaController &lt; ApplicationController
 ###############################################
 private
 
+  # reset the content level if it is in the querystring NOTE the expertise level is set by pre filter
   # TODO: Get rid of the content level, it is depracated and no longer needed
   # set_user_settings()
   def update_user_content_level
     current_user.content_level = params[:content_level] if ['1','2','3','4'].include?(params[:content_level])
   end
 
+  # Set the page expertise and vetted defaults, get from querystring, update the session with this value if found
+  def set_user_settings
+    expertise = params[:expertise] if ['novice','middle','expert'].include?(params[:expertise])
+    alter_current_user do |user|
+      user.expertise=expertise unless expertise.nil?
+    end
+
+    vetted = params[:vetted]
+    alter_current_user do |user|
+      user.vetted=EOLConvert.to_boolean(vetted) unless vetted.blank?
+    end
+  end
+
   def get_new_text_tocitem_id(category_id)
     if category_id &amp;&amp; TocItem.find(category_id).allow_user_text?
       category_id
@@ -452,7 +467,7 @@ private
   
   def taxa_page_html_fragment_name
     current_user = @taxon_concept.current_user
-    return &quot;page_#{params[:id]}_#{current_user.taxa_page_cache_str}_#{@taxon_concept.show_curator_controls?}&quot;
+    'page_' + params[:id].to_s + '_' + current_user.language_abbr + '_' + current_user.expertise.to_s + '_' + current_user.vetted.to_s + '_' + current_user.default_taxonomic_browser.to_s + '_' + @taxon_concept.show_curator_controls?.to_s
   end
   helper_method(:taxa_page_html_fragment_name)
 </diff>
      <filename>app/controllers/taxa_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -718,18 +718,19 @@ class DataObject &lt; SpeciesSchemaModel
   def self.cached_images_for_taxon(taxon, options = {})
     options[:user] = User.create_new if options[:user].nil?
     add_cp = join_agents = join_hierarchy = ''
-
+    
     if options[:from].nil?
       options[:from] ||= 'top_images'
     else
       nested = true
     end
-
+    
     if !options[:filter_by_hierarchy].nil? &amp;&amp; !options[:hierarchy].nil?
       join_hierarchy = &quot;JOIN hierarchy_entries he_filter ON (ti.hierarchy_entry_id=he_filter.id AND he_filter.hierarchy_id=#{options[:hierarchy].id})&quot;
       options[:from] = 'top_species_images' if options[:from].nil?
     end
-
+      
+      
     # Unpublished images require a few extra bits to the query:
     if nested and not options[:agent].nil?
       add_cp      = ', ar.agent_id agent_id'</diff>
      <filename>app/models/data_object.rb</filename>
    </modified>
    <modified>
      <diff>@@ -326,28 +326,23 @@ class Search
       data_objects = []
     end        
     results = []
-    taxon_concept_ids = []
+    taxon_concept_ids  = []
     user        = options[:user_id] ? User.find(options[:user_id]) : nil
     vetted_only = user &amp;&amp; user.vetted
-
     data_objects.each do |data_object|
       if !vetted_only || data_object.vetted_id == Vetted.trusted.id
         data_object.taxon_concepts.each do |taxon_concept|
           unless taxon_concept_ids.include?(taxon_concept.id)
-            taxon_concept_ids &lt;&lt; taxon_concept.id
+            taxon_concept_ids  &lt;&lt; taxon_concept.id
             results &lt;&lt; [taxon_concept, data_object] if (!vetted_only || taxon_concept.vetted_id == Vetted.trusted.id) &amp;&amp; taxon_concept.published == 1 &amp;&amp; taxon_concept.supercedure_id == 0           
           end
         end
       end
     end
-    
-    # sorting by scientific_name without &lt;i&gt;
-    results_sort = results.sort_by {|a| a[0].scientific_name.gsub(/&lt;\/?[^&gt;]*&gt;/,  &quot;&quot;)}
 
-    # that commented out, because not allows more than 10 tags to show up
-    # results  = page_range(results)
+    results  = page_range(results)
     @maximum = results.length
-    @search_results = {:common =&gt; [], :scientific =&gt; [], :errors =&gt; [], :tags =&gt; results_sort}    
+    @search_results = {:common =&gt; [], :scientific =&gt; [], :errors =&gt; [], :tags =&gt; results}    
   end
 
   def text_search(current_user, current_agent)</diff>
      <filename>app/models/search.rb</filename>
    </modified>
    <modified>
      <diff>@@ -30,16 +30,13 @@ class TaxonConcept &lt; SpeciesSchemaModel
 
   has_one :taxon_concept_content
 
-  #searchable :auto_index =&gt; false, :auto_remove =&gt; false do
-  #end
-
   attr_accessor :includes_unvetted # true or false indicating if this taxon concept has any unvetted/unknown data objects
 
   attr_reader :has_media, :length_of_images
 
   def show_curator_controls?(user = nil)
     return @show_curator_controls if !@show_curator_controls.nil?
-    user = @current_user if user.nil? # This needs to check the actual instance variable, please keep it here.
+    user = @current_user if user.nil?
     if user.nil?
       raise &quot;a user must be specified&quot;
     end
@@ -168,18 +165,16 @@ class TaxonConcept &lt; SpeciesSchemaModel
   def table_of_contents(options = {})
     if @table_of_contents.nil?
       tb = TocBuilder.new
-      @table_of_contents = tb.toc_for(self, :agent =&gt; @current_agent, :user =&gt; self.current_user, :agent_logged_in =&gt; options[:agent_logged_in])
+      @table_of_contents = tb.toc_for(self, :agent =&gt; @current_agent, :user =&gt; current_user, :agent_logged_in =&gt; options[:agent_logged_in])
     end
     @table_of_contents
   end
   alias :toc :table_of_contents
 
-  # If you just call &quot;comments&quot;, you are actually getting comments that should really be invisible.  This method gets
-  # around this, and didn't see appropriate to do with a named_scope.
-  # Note that the argument is simply to match the interface of the same method on other classes that can be parents
-  # of comments.
-  def visible_comments(ignore_user = nil)
-    return comments if self.current_user.is_moderator?
+  # If you just call &quot;comments&quot;, you are actually getting comments that should really be invisible.  This method gets around this,
+  # and didn't see appropriate to do with a named_scpope:
+  def visible_comments(user = @current_user)
+    return comments if user and user.is_moderator?
     comments.find_all {|comment| comment.visible? }
   end
 
@@ -238,12 +233,8 @@ class TaxonConcept &lt; SpeciesSchemaModel
 
   # Set the current user, so that methods will have defaults (language, etc) appropriate to that user.
   def current_user=(who)
-    expire_cached_images
-    @current_user = who
-  end
-
-  def expire_cached_images
     @images = nil
+    @current_user = who
   end
 
   def canonical_form_object
@@ -301,7 +292,7 @@ class TaxonConcept &lt; SpeciesSchemaModel
   end
 
   def videos
-    videos = DataObject.for_taxon(self, :video, :agent =&gt; @current_agent, :user =&gt; self.current_user)
+    videos = DataObject.for_taxon(self, :video, :agent =&gt; @current_agent, :user =&gt; current_user)
     @length_of_videos = videos.length # cached, so we don't have to query this again.
     return videos
   end 
@@ -414,7 +405,7 @@ class TaxonConcept &lt; SpeciesSchemaModel
   end
 
   def quick_common_name(language = nil, hierarchy = nil)
-    language ||= self.current_user.language
+    language ||= current_user.language
     hierarchy ||= Hierarchy.default
     common_name_results = SpeciesSchemaModel.connection.execute(&quot;SELECT n.string name, he.hierarchy_id source_hierarchy_id FROM taxon_concept_names tcn JOIN names n ON (tcn.name_id = n.id) LEFT JOIN hierarchy_entries he ON (tcn.source_hierarchy_entry_id = he.id) WHERE tcn.taxon_concept_id=#{id} AND language_id=#{language.id} AND preferred=1&quot;).all_hashes
     
@@ -658,7 +649,7 @@ EOIUCNSQL
     # handled by TaxonConcept#get_default_content
 
     ccb = CategoryContentBuilder.new
-    options[:vetted] = self.current_user.vetted
+    options[:vetted] = current_user.vetted
     options[:taxon_concept_id] = id
     content = ccb.content_for(toc_item, options)
     content = get_default_content(toc_item) if content.nil?
@@ -667,40 +658,17 @@ EOIUCNSQL
 
   # This used to be singleton, but now we're changing the views (based on permissions) a lot, so I removed it.
   def images(options = {})
-
-    # TODO - dump this.  Forces a check to see if the current user is valid:
-    unless self.current_user.attributes.keys.include?('filter_content_by_hierarchy')
-      self.current_user = User.create_new
-    end
-
+    
     # set hierarchy to filter images by
-    if self.current_user.filter_content_by_hierarchy &amp;&amp; self.current_user.default_hierarchy_valid?
-      filter_hierarchy = Hierarchy.find(self.current_user.default_hierarchy_id)
+    if current_user.filter_content_by_hierarchy &amp;&amp; current_user.default_hierarchy_valid?
+      filter_hierarchy = Hierarchy.find(current_user.default_hierarchy_id)
     else
       filter_hierarchy = nil
     end
     perform_filter =  !filter_hierarchy.nil?
     
-    @images ||= DataObject.for_taxon(self, :image, :user =&gt; self.current_user, :agent =&gt; @current_agent, :filter_by_hierarchy =&gt; perform_filter, :hierarchy =&gt; filter_hierarchy)
+    @images ||= DataObject.for_taxon(self, :image, :user =&gt; current_user, :agent =&gt; @current_agent, :filter_by_hierarchy =&gt; perform_filter, :hierarchy =&gt; filter_hierarchy)
     @length_of_images = @images.length # Caching this because the call to #images is expensive and we don't want to do it twice.
-
-    @images = @images.sort do |a,b|
-      if a.vetted_id == b.vetted_id
-        # TODO - this should probably also sort on visibility.
-        if a.data_rating == b.data_rating
-          b.id &lt;=&gt; a.id # Note this is reversed; ends up being roughly by date.
-        else
-          b.data_rating &lt;=&gt; a.data_rating # Note this is reversed; higher ratings are better.
-        end
-      else
-        # Account for the rare (read: nigh impossible) cases that Vetted is something else or missing:
-        return 0 if a.vetted.nil? and b.vetted.nil?
-        return 1 if a.vetted.nil?
-        return -1 if b.vetted.nil?
-        a.vetted.sort_weight &lt;=&gt; b.vetted.sort_weight
-      end
-    end
-
     return @images
   end
 
@@ -753,12 +721,14 @@ EOIUCNSQL
                                   then o.id 
                                   else o.to_i end }
     return [] if ids.nil? or ids.empty? # Fix for EOLINFRASTRUCTURE-808
-    sql = &quot;select taxon_concepts.* from taxon_concepts
-    join taxon_concept_names on taxon_concept_names.taxon_concept_id = taxon_concepts.id
-    join taxa                on taxa.name_id                         = taxon_concept_names.name_id 
-    join data_objects_taxa   on data_objects_taxa.taxon_id           = taxa.id
-    join data_objects        on data_objects.id                      = data_objects_taxa.data_object_id
-    where data_objects.id IN (#{ ids.join(', ') })&quot;
+    sql = &quot;SELECT taxon_concepts.* FROM taxon_concepts
+    JOIN taxon_concept_names ON taxon_concept_names.taxon_concept_id = taxon_concepts.id
+    JOIN taxa                ON taxa.name_id                         = taxon_concept_names.name_id 
+    JOIN data_objects_taxa   ON data_objects_taxa.taxon_id           = taxa.id
+    JOIN data_objects        ON data_objects.id                      = data_objects_taxa.data_object_id
+    WHERE data_objects.id IN (#{ ids.join(', ') }) 
+      AND taxon_concepts.supercedure_id = 0
+      AND taxon_concepts.published      = 1&quot;
     TaxonConcept.find_by_sql(sql).uniq
   end
 
@@ -866,7 +836,7 @@ private
     result = {
       :content_type  =&gt; 'text',
       :category_name =&gt; TocItem.find(category_id).label,
-      :data_objects  =&gt; DataObject.for_taxon(self, :text, :toc_id =&gt; category_id, :agent =&gt; @current_agent, :user =&gt; self.current_user)
+      :data_objects  =&gt; DataObject.for_taxon(self, :text, :toc_id =&gt; category_id, :agent =&gt; @current_agent, :user =&gt; current_user)
     }
     # TODO = this should not be hard-coded! IDEA = use partials.  Then we have variables and they can be dynamically changed.
     # NOTE: I tried to dynamically alter data_objects directly, below, but they didn't</diff>
      <filename>app/models/taxon_concept.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@ class TaxonConceptName &lt; SpeciesSchemaModel
   # Returns the number of rows affected.  (Should always be either 1 or 0 because of PKs.)
   def set_preferred(val)
     raise &quot;Cannot set the Preferred value to anything other than 1 or 0)&quot; unless val == 0 or val == 1 # detaint
-    connection.execute(%Q{
+    connection.update_sql(%Q{
       UPDATE taxon_concept_names
       SET preferred = #{val}
       WHERE name_id = #{name_id.to_i} AND taxon_concept_id = #{taxon_concept_id.to_i}</diff>
      <filename>app/models/taxon_concept_name.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
-# This class shouldn't be used.  :)  It's really just here so that fixtures load into the right database.  Meaning,
-# this *class* doesn't perform any special function.  The top_images table, however, is used for denormalized
-# searches on (normal, vetted, visible, published) images. That table is referenced by
-# DataObject#cached_images_for_taxon().  That table is *built* using PHP, so you will not see any other ref to it.
+# This class shouldn't be used.  :)  It's really just here so that fixtures load into the right database.  Meaning, this *class*
+# doesn't perform any special function.  The top_images table, however, is used for denormalized searches on (normal, vetted, visible,
+# published) images. That table is referenced by DataObject#cached_images_for_taxon().  That table is *built* using PHP, so you will
+# not see any other ref to it.
 class TopImage &lt; SpeciesSchemaModel
   set_primary_keys :hierarchy_entry_id, :data_object_id
   belongs_to :hierarchy_entry</diff>
      <filename>app/models/top_image.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
-# This class shouldn't be used.  :)  It's really just here so that fixtures load into the right database.  Meaning,
-# this *class* doesn't perform any special function.  The top_iages table, however, is used for denormalized searches
-# on (normal, vetted, visible, published) images. That table is referenced by DataObject#cached_images_for_taxon().
-# That table is *built* using PHP, so you will not see any other ref to it.
+# This class shouldn't be used.  :)  It's really just here so that fixtures load into the right database.  Meaning, this *class*
+# doesn't perform any special function.  The top_iages table, however, is used for denormalized searches on (normal, vetted, visible,
+# published) images. That table is referenced by DataObject#cached_images_for_taxon().  That table is *built* using PHP, so you will
+# not see any other ref to it.
 class TopUnpublishedImage &lt; SpeciesSchemaModel
   set_primary_keys :hierarchy_entry_id, :data_object_id
   belongs_to :hierarchy_entry</diff>
      <filename>app/models/top_unpublished_image.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,5 @@
 require &quot;digest&quot;
 
-# NOTE - there is a method called #stale? (toward the bottom) which needs to be kept up-to-date with any changes made
-# to the user model.  We *could* achieve a similar result with method_missing, but I worry that it would cause other
-# problems.
 class User &lt; ActiveRecord::Base
 
   belongs_to :language
@@ -74,8 +71,15 @@ class User &lt; ActiveRecord::Base
   end 
 
   def total_objects_curated
-    CuratorDataObjectLog.count :conditions =&gt; ['user_id = ?', id] 
+    # CuratorDataObjectLog.count :conditions =&gt; ['user_id = ?', id] 
+    # CuratorDataObjectLog.count :conditions =&gt; ['user_id = 35200'] 
+    #     =&gt; 316
+    # CuratorDataObjectLog.find_all_by_user_id(35200).map(&amp;:data_object_id).uniq.size
+    #     =&gt; 302
+
+    CuratorDataObjectLog.find_all_by_user_id(id).map(&amp;:data_object_id).uniq.size
   end 
+  
   def total_comments_curated
     CuratorCommentLog.count :conditions =&gt; ['user_id = ?', id] 
   end 
@@ -338,11 +342,6 @@ class User &lt; ActiveRecord::Base
     return (has_curator_role? &amp;&amp; !self.curator_hierarchy_entry.blank?)
   end
   
-  def selected_default_hierarchy
-    hierarchy=Hierarchy.find_by_id(self.default_hierarchy_id)
-    hierarchy.blank? ? '' : hierarchy.label
-  end
-  
   def last_curator_activity
     lcd = LastCuratedDate.find_by_user_id(self.id, :order =&gt; 'last_curated DESC', :limit =&gt; 1)
     return nil if lcd.nil?
@@ -402,46 +401,7 @@ class User &lt; ActiveRecord::Base
   def default_hierarchy_valid?
     return(self[:default_hierarchy_id] and Hierarchy.exists?(self[:default_hierarchy_id]))
   end
-
-  # These create and unset the fields required for remembering users between browser closes
-  def remember_me
-    remember_me_for 2.weeks
-  end
-
-  def remember_me_for(time)
-    remember_me_until time.from_now.utc
-  end
-
-  def remember_me_until(time)
-    self.remember_token_expires_at = time
-    self.remember_token            = User.hash_password(&quot;#{email}--#{remember_token_expires_at}&quot;)
-    save(false)
-  end
-
-  def forget_me
-    self.remember_token_expires_at = nil
-    self.remember_token            = nil
-    save(false)
-  end
-
-  def content_page_cache_str
-    return_string=&quot;#{language_abbr}&quot;
-    return_string+=&quot;_#{default_hierarchy_id.to_s}&quot; unless default_hierarchy_id.to_s.blank?
-    return_string
-  end
-
-  def taxa_page_cache_str
-    return &quot;#{language_abbr}_#{expertise}_#{vetted}_#{default_taxonomic_browser}_#{default_hierarchy_id}&quot;
-  end
-
-  # This is a method that checks if the user model pulled from a session is actually up-to-date:
-  #
-  # YOU SHOULD ADD NEW USER ATTRIBUTES TO THIS METHOD WHEN YOU TWEAK THE USER TABLE.
-  def stale?
-    # if you add to this, use 'and'; KEEP ALL OLD METHOD CHECKS.
-    return true unless self.attributes.keys.include?('filter_content_by_hierarchy')
-  end
-
+  
 # -=-=-=-=-=-=- PROTECTED -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 protected   
   def password_required?
@@ -449,3 +409,33 @@ protected
   end
 
 end
+# == Schema Info
+# Schema version: 20081020144900
+#
+# Table name: users
+#
+#  id                         :integer(4)      not null, primary key
+#  curator_hierarchy_entry_id :integer(4)
+#  curator_verdict_by_id      :integer(4)
+#  language_id                :integer(4)
+#  active                     :boolean(1)
+#  content_level              :integer(4)
+#  credentials                :text            not null
+#  curator_approved           :boolean(1)      not null
+#  default_taxonomic_browser  :string(24)
+#  email                      :string(255)
+#  expertise                  :string(24)
+#  family_name                :string(255)
+#  flash_enabled              :boolean(1)
+#  given_name                 :string(255)
+#  hashed_password            :string(32)
+#  identity_url               :string(255)
+#  mailing_list               :boolean(1)
+#  notes                      :text
+#  remote_ip                  :string(24)
+#  username                   :string(32)
+#  vetted                     :boolean(1)
+#  created_at                 :datetime
+#  curator_verdict_at         :datetime
+#  updated_at                 :datetime
+</diff>
      <filename>app/models/user.rb</filename>
    </modified>
    <modified>
      <diff>@@ -35,11 +35,6 @@ class Vetted &lt; SpeciesSchemaModel
   def self.untrusted_ids
     [self.untrusted.id,self.unknown.id].join(',') 
   end
-
-  def sort_weight
-    @@vetted_weight ||= {Vetted.trusted.id =&gt; 1, Vetted.unknown.id =&gt; 2, Vetted.untrusted.id =&gt; 3}
-    return @@vetted_weight.has_key?(id) ? @@vetted_weight[id] : 4
-  end
  
 end
 </diff>
      <filename>app/models/vetted.rb</filename>
    </modified>
    <modified>
      <diff>@@ -13,4 +13,8 @@
         &lt;div id=&quot;full-page-content&quot;&gt;
             A confirmation email was sent to the email address you registered with.  Please check your email and follow the confirmation link to activate your account.
   	  	&lt;/div&gt;
+
+
+        &lt;/div&gt;
+					
     &lt;/div&gt;</diff>
      <filename>app/views/account/confirmation_sent.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -45,7 +45,7 @@
               &lt;tr&gt;&lt;td class=&quot;odd&quot;&gt;&lt;a href=&quot;http://www.livejournal.com&quot;&gt;&lt;img class=&quot;favicon&quot; src=&quot;http://www.livejournal.com/favicon.ico&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; LiveJournal &lt;/td&gt;&lt;td class=&quot;odd&quot;&gt; &lt;strong&gt;username&lt;/strong&gt;.livejournal.com&lt;/td&gt;&lt;/tr&gt;
               &lt;tr&gt;&lt;td class=&quot;even&quot;&gt;&lt;a class=&quot;favicon&quot; href=&quot;http://www.smugmug.com&quot;&gt;&lt;img class=&quot;favicon&quot; src=&quot;http://openid.net/wp-content/uploads/smugmug.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; SmugMug &lt;/td&gt;&lt;td class=&quot;even&quot;&gt; &lt;strong&gt;username&lt;/strong&gt;.smugmug.com&lt;/td&gt;&lt;/tr&gt;
               &lt;tr&gt;&lt;td class=&quot;odd&quot;&gt;&lt;a href=&quot;http://www.technorati.com&quot;&gt;&lt;img class=&quot;favicon&quot; src=&quot;http://www.technorati.com/favicon.ico&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; Technorati &lt;/td&gt;&lt;td class=&quot;odd&quot;&gt; technorati.com/people/technorati/&lt;strong&gt;username&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
-              &lt;tr&gt;&lt;td class=&quot;even&quot;&gt;&lt;a href=&quot;http://www.vox.com&quot;&gt;&lt;img src=&quot;http://openid.net/wp-content/uploads/vox.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; Vox &lt;/td&gt;&lt;td class=&quot;even&quot;&gt; &lt;strong&gt;member&lt;/strong&gt;.vox.com&lt;/td&gt;&lt;/tr&gt;
+              &lt;tr&gt;&lt;td class=&quot;even&quot;&gt;&lt;img src=&quot;http://openid.net/wp-content/uploads/vox.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; Vox &lt;/td&gt;&lt;td class=&quot;even&quot;&gt; &lt;strong&gt;member&lt;/strong&gt;.vox.com&lt;/td&gt;&lt;/tr&gt;
               &lt;tr&gt;&lt;td class=&quot;odd&quot;&gt;&lt;a href=&quot;http://www.wordpress.com&quot;&gt;&lt;img class=&quot;favicon&quot; src=&quot;http://openid.net/wp-content/uploads/wordpress.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; WordPress.com &lt;/td&gt;&lt;td class=&quot;odd&quot;&gt; &lt;strong&gt;username&lt;/strong&gt;.wordpress.com&lt;/td&gt;&lt;/tr&gt;
         	  &lt;/table&gt;
         	  &lt;br /&gt;
@@ -58,9 +58,6 @@
   					&lt;%= link_to 'What is OpenID?', 'http://openid.net/',:target=&gt;'_blank' %&gt; | &lt;a href=&quot;#&quot; onclick=&quot;Element.toggle('open_id_instructions');return false;&quot;&gt;How do I log in with OpenID?&lt;/a&gt; 
           &lt;/div&gt;
           &lt;br /&gt;
-          &lt;label for=&quot;remember_me&quot;&gt;&lt;%= &quot;Remember Me&quot;[]%&gt;&lt;/label&gt;
-          &lt;%= check_box_tag 'remember_me'%&gt; &lt;%=&quot;check to stay logged in automatically for up to two weeks (do NOT use on public computers)&quot;[:remember_me_message]%&gt;
-            	&lt;br /&gt;&lt;br /&gt;
             	&lt;table border=&quot;0&quot; width=&quot;500&quot; cellpadding=&quot;20&quot;&gt;
             		&lt;tr&gt;
             			&lt;td valign=&quot;top&quot;&gt;&lt;%= submit_tag 'Login Now'[:login_now] + ' &amp;#187;' %&gt;&lt;/td&gt;</diff>
      <filename>app/views/account/login.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -69,7 +69,7 @@
                 &lt;%= f.check_box :mailing_list %&gt; &lt;%= &quot;Yes&quot;[:yes_answer] %&gt;
               
                 &lt;br /&gt;&lt;br /&gt;
-              &lt;/td&gt;&lt;td valign='top'&gt;
+              &lt;/td&gt;&lt;td&gt;
                 &lt;%= render(:partial=&gt;'taxa/set_content_settings',:locals=&gt;{:f=&gt;f}) %&gt;
               &lt;/td&gt;
             &lt;/tr&gt;</diff>
      <filename>app/views/account/profile.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -43,15 +43,14 @@
   %br/
   = link_to_remote(content_partner_check_box_image(@agent.auto_publish?, :id =&gt; 'auto_publish_img'),  :url =&gt; { :action =&gt; 'auto_publish', :id =&gt; @agent }, :confirm =&gt; &quot;Are you sure you want to #{@agent.auto_publish? ? 'disable' : 'enable'} auto-publish for this partner?  If enabled, all data objects are immediately published when imported (i.e. no preview and further approval is required).&quot;)
   = &quot;#{@agent.auto_publish? ? 'Disable' : 'Enable'} auto-publish for &quot; + @agent.project_name + &quot;.&quot; 
+  %br/
+  Content partner status: 
+  = collection_select(:agent,:agent_status_id,@agent_status,:id,:label,{},{:onChange=&gt;'JavaScript:update_partner_status(' + @agent.id.to_s + ',this);'})
 
 - else
   = @agent.project_name
   is not ready for their agreement.
 %br/
-Content partner status: 
-= collection_select(:agent,:agent_status_id,@agent_status,:id,:label,{},{:onChange=&gt;'JavaScript:update_partner_status(' + @agent.id.to_s + ',this);'})
-%br/
-
 - if !@agent.content_partner.last_action.blank?
   This partner's last action was 
   = format_date_time(@agent.content_partner.last_action)</diff>
      <filename>app/views/administrator/content_partner_report/show.html.haml</filename>
    </modified>
    <modified>
      <diff>@@ -102,7 +102,7 @@
 &lt;%- if @cached_fragment %&gt;
     &lt;%= @cached_fragment %&gt;
 &lt;%- else %&gt;
-  &lt;%- cache({:controller=&gt;&quot;content&quot;, :part =&gt; 'home_' + current_user.content_page_cache_str}) do %&gt;  
+  &lt;%- cache({:controller=&gt;&quot;content&quot;, :part =&gt; 'home_' + current_user.language_abbr}) do %&gt;  
 
     &lt;div id=&quot;page-separator-general&quot;&gt;&lt;/div&gt;
 
@@ -132,7 +132,7 @@
       &lt;div id=&quot;sidebar-b&quot;&gt;
 
         &lt;%- unless @news_items.empty? %&gt;
-          &lt;h1&gt;&lt;%=&quot;What's New?&quot;[]%&gt;&lt;/h1&gt;
+          &lt;h1&gt;What's New?&lt;/h1&gt;
           &lt;ul class=&quot;helplist&quot;&gt;
             &lt;%- @news_items.each do |news_item|
               if news_item.visible? %&gt;
@@ -154,32 +154,44 @@
             &lt;li&gt;To subscribe via RSS, click &lt;%=link_to image_tag('rss.png'), {:action=&gt;'news',:format=&gt;'rss'}%&gt;, or add this URL to your RSS reader: http://&lt;%=request.host + url_for(:action=&gt;'news',:format=&gt;'rss')%&gt;&lt;/li&gt;
           &lt;/ul&gt;&lt;%# .helplist %&gt;
         &lt;%- end %&gt;&lt;%# unless news_items empty %&gt;
-              
+        
+        &lt;%= @content.main_content %&gt;
+      
       &lt;/div&gt;&lt;%# sidebar-b %&gt;
 
-      &lt;div id=&quot;home-center-content&quot;&gt;
+      &lt;div id=&quot;home-content-species&quot;&gt;
         &lt;%- unless @featured_taxa.nil? %&gt;
-
-              &lt;%- featured_taxon = @featured_taxa.sort_by{rand}[0] %&gt;
-
-              &lt;h1&gt;&lt;%=&quot;Featured&quot;[]%&gt;&lt;/h1&gt;
-
-              &lt;table id=&quot;featured-species-table&quot; cellspacing=&quot;0&quot; summary=&quot;featured table&quot;&gt;       
-                &lt;tr&gt;	
-                  &lt;td class=&quot;image&quot;&gt;
-                    &lt;%= medium_thumb_partial(featured_taxon) %&gt;
-                  &lt;/td&gt;
-                &lt;/tr&gt;
-                &lt;tr&gt;
-                  &lt;td&gt;&lt;%= linked_name(featured_taxon) %&gt;&lt;/td&gt;
-                &lt;/tr&gt;
-              &lt;/table&gt;&lt;%# featured-species-table %&gt;
-
-            &lt;%- end %&gt;&lt;%# unless featured_taxa nil %&gt;
-
-        &lt;%= @content.main_content %&gt;
-
-      &lt;/div&gt;&lt;%# home-center-content %&gt;
+            
+          &lt;%- featured_taxon = @featured_taxa.sort_by{rand}[0] %&gt;
+
+          &lt;h1&gt;&lt;%=&quot;Featured&quot;[]%&gt;&lt;/h1&gt;
+
+          &lt;table id=&quot;featured-species-table&quot; cellspacing=&quot;0&quot; summary=&quot;featured table&quot;&gt;       
+            &lt;tr&gt;	
+              &lt;td class=&quot;image&quot;&gt;
+                &lt;%= medium_thumb_partial(featured_taxon) %&gt;
+              &lt;/td&gt;
+            &lt;/tr&gt;
+            &lt;tr&gt;
+              &lt;td&gt;&lt;%= linked_name(featured_taxon) %&gt;&lt;/td&gt;
+            &lt;/tr&gt;
+          &lt;/table&gt;&lt;%# featured-species-table %&gt;
+
+        &lt;%- end %&gt;&lt;%# unless featured_taxa nil %&gt;
+      
+        &lt;br /&gt;&lt;%# TODO - this is useless.  What we really want is a div of a given height... %&gt;
+        &lt;br /&gt;
+        &lt;br /&gt;
+        &lt;br /&gt;
+        &lt;br /&gt;
+        &lt;br /&gt;
+        &lt;br /&gt;
+        &lt;br /&gt;
+        &lt;br /&gt;
+        &lt;br /&gt;
+        &lt;br /&gt;
+        &lt;br /&gt;
+      &lt;/div&gt;&lt;%# home-content-species %&gt;
 
     &lt;/div&gt;&lt;%# home-content-wrap %&gt;
 </diff>
      <filename>app/views/content/index.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -27,9 +27,6 @@
                     &lt;label for=&quot;password&quot;&gt;&lt;%= &quot;Password&quot;[] %&gt;&lt;/label&gt;
                     &lt;%= form.password_field 'password', :size=&gt;16,:maxlength=&gt;30 %&gt;
 
-                    &lt;label for=&quot;remember_me&quot;&gt;&lt;%= &quot;Remember Me&quot;[]%&gt;&lt;/label&gt;
-                    &lt;%= check_box_tag 'remember_me'%&gt; &lt;%=&quot;check to stay logged in automatically for up to two weeks (do NOT use on public computers)&quot;[:remember_me_message]%&gt;
-
                     &lt;br /&gt;&lt;br /&gt;
                     &lt;table border=&quot;0&quot; width=&quot;500&quot; cellpadding=&quot;20&quot;&gt;
                         &lt;tr&gt;</diff>
      <filename>app/views/content_partner/login.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -39,7 +39,7 @@
   &lt;% if data_object.text? || data_object.image? %&gt;
     &lt;div class=&quot;credit permalink&quot;&gt;
      &lt;div class=&quot;credit-caption&quot;&gt;&lt;%=&quot;Permalink&quot;[]%&gt;&lt;/div&gt;
-     &lt;div class=&quot;credit-value&quot;&gt;&lt;%=&quot;Copy and paste in email or document&quot;[]%&gt;:&lt;br /&gt;&lt;form&gt;&lt;input onclick=&quot;this.select();&quot; size=&quot;&lt;%= data_object.text? ? '45' : '35'%&gt;&quot; type=&quot;text&quot; value=&quot;&lt;%=&quot;http://#{request.domain}/pages/#{data_object.taxon_concepts[0].id}?#{data_object.data_type.label.downcase}_id=#{data_object.id}&quot;%&gt;&quot;/&gt;&lt;/form&gt;&lt;/div&gt;
+     &lt;div class=&quot;credit-value&quot;&gt;&lt;form&gt;&lt;input onclick=&quot;this.select();&quot; size=&quot;35&quot; type=&quot;text&quot; value=&quot;&lt;%=&quot;http://#{request.domain}/pages/#{data_object.taxon_concepts[0].id}?#{data_object.data_type.label.downcase}_id=#{data_object.id}&quot;%&gt;&quot;/&gt;&lt;/form&gt;&lt;/div&gt;
     &lt;div class=&quot;footer&quot;&gt;&lt;/div&gt;
   &lt;/div&gt;
   &lt;% end %&gt;</diff>
      <filename>app/views/data_objects/_attribution.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -26,6 +26,10 @@
         &lt;meta name=&quot;description&quot; content=&quot;Encyclopedia of Life&quot; /&gt;
         &lt;meta name=&quot;keywords&quot; content=&quot;Encyclopedia of Life,Biodiversity,Biology,Bioinformatics&quot; /&gt;
     &lt;%- end -%&gt;
+    &lt;%- if @no_cache -%&gt;
+       &lt;meta HTTP-EQUIV=&quot;CACHE-CONTROL&quot; CONTENT=&quot;NO-CACHE&quot; /&gt;
+       &lt;meta HTTP-EQUIV=&quot;PRAGMA&quot; CONTENT=&quot;NO-CACHE&quot; /&gt;
+    &lt;%- end -%&gt;
 
     &lt;link rel=&quot;shortcut icon&quot; href=&quot;/favicon.ico&quot; type=&quot;image/x-icon&quot; /&gt;
     &lt;link rel=&quot;search&quot; type=&quot;application/opensearchdescription+xml&quot; title=&quot;Encyclopedia of Life&quot; href=&quot;/opensearch.xml&quot;/&gt;
@@ -245,20 +249,11 @@
 
             &lt;/div&gt;
             &lt;!-- /search --&gt;
-            &lt;div class=&quot;page-mode&quot;&gt;
-                  &lt;% 
-                  case current_user.vetted
-                    when true:  current_mode=&quot;authoritative information&quot;[];change_mode=&quot;all information&quot;[];set_vetted=&quot;false&quot;
-                    when false: current_mode=&quot;all information&quot;[];change_mode=&quot;authoritative information&quot;[];set_vetted=&quot;true&quot;
-                  end
-                  %&gt;
-                  Showing: &lt;a title=&quot;click to show &lt;%=change_mode%&gt;&quot; href=&quot;&lt;%=current_url%&gt;?vetted=&lt;%=set_vetted%&gt;&quot;&gt;&lt;%=current_mode%&gt;&lt;/a&gt;&lt;br /&gt;
-                  &lt;%- if (current_user.default_hierarchy_id.to_s != Hierarchy.default.id.to_s &amp;&amp; !current_user.default_hierarchy_id.blank?) -%&gt;
-                   &lt;a title=&quot;using &lt;%=current_user.selected_default_hierarchy%&gt;, click to change&quot; href=&quot;&lt;%=url_for(settings_url)%&gt;&quot;&gt;&lt;%=&quot;Alternate classification&quot;[]%&gt;&lt;/a&gt; &lt;br /&gt;                 
-                  &lt;%- end -%&gt;    
-                  &lt;%- if current_user.filter_content_by_hierarchy -%&gt;
-                    &lt;a title=&quot;click to change settings&quot; href=&quot;&lt;%=url_for(settings_url)%&gt;&quot;&gt;&lt;%=&quot;Filtered information&quot;[]%&gt;&lt;/a&gt;&lt;br /&gt;
-                  &lt;%- end -%&gt;
+
+                  &lt;div class=&quot;page-mode&quot;&gt;&lt;%=&quot;Showing&quot;[]%&gt; &lt;%= case current_user.vetted
+                      when true: &quot;authoritative information&quot;[]
+                      when false: &quot;all information&quot;[]
+                  end %&gt;
                 &lt;/div&gt;
 
 </diff>
      <filename>app/views/layouts/main.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -16,13 +16,13 @@
           
 &lt;% if showing_unknown_image %&gt;
   &lt;div id=&quot;unknown-thumbnail-warning-box&quot;&gt;
-    &lt;span&gt;&lt;%=&quot;Items in yellow are not reviewed.&quot;[]%&gt;&lt;/span&gt;
+    &lt;span&gt;&lt;%=&quot;Images in yellow are not reviewed.&quot;[]%&gt;&lt;/span&gt;
   &lt;/div&gt;
 &lt;% end %&gt;
 
 &lt;% if showing_untrusted_image %&gt;
   &lt;div id=&quot;untrusted-thumbnail-warning-box&quot;&gt;
-    &lt;span&gt;&lt;%=&quot;Items in red are not trusted.&quot;[]%&gt;&lt;/span&gt;
+    &lt;span&gt;&lt;%=&quot;Images in red are not trusted.&quot;[]%&gt;&lt;/span&gt;
   &lt;/div&gt;
 &lt;%  end %&gt;
 </diff>
      <filename>app/views/taxa/_image_collection.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -97,6 +97,6 @@
                  &lt;%- end %&gt;
 
                  &lt;%- if @search.searching %&gt;
-                   &lt;%= paginate_results(@search) if @search.total_pages &gt; 1 %&gt;
+                   &lt;%= paginate_results(@search) %&gt;
                  &lt;%- end %&gt;
       </diff>
      <filename>app/views/taxa/_names_search_results.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,30 +1,28 @@
       &lt;h3 class=&quot;preference-header&quot;&gt;&lt;%= &quot;Content Settings&quot;[] %&gt;&lt;/h3&gt;
 
-      &lt;a href=&quot;#&quot; onclick=&quot;new Effect.Appear('filtering_help');return false;&quot;&gt;&lt;%=&quot;Learn more about browse classification and filtering&quot;[]%&gt;&lt;/a&gt;
+      &lt;a href=&quot;#&quot; onclick=&quot;new Effect.Appear('filtering_help');return false;&quot;&gt;&lt;%=&quot;Learn more about browse hierarchies and filtering&quot;[]%&gt;&lt;/a&gt;
       &lt;div style=&quot;display:none;&quot; id=&quot;filtering_help&quot;&gt;
-        &lt;p&gt;EOL has the ability to filter its content by a classification (or hierarchy).  This allows you to change the
-          list of taxa shown in the classification browser on the right side of a species page and, optionally,
-          create a filter for EOL based on this classification.
-          &lt;br /&gt;&lt;br /&gt;
-          For instance, if you choose a classification containing only marine taxa and select the filtering option, then
-          your view of EOL will only show those taxa and images recognized by the marine classification - an
-          Encyclopedia of Marine Life!  You can still search for any taxa using the search page. 
-      &lt;!-- &lt;br /&gt;&lt;br /&gt;
-      You can also choose two classifications if you wish, which will be seamlessly merged together as you browse this website - this feature may be useful for biologists and taxonomists. --&gt;&lt;/p&gt;
+      &lt;p&gt;EOL has the ability to filter its content by a hierarchy (or classification).  This allows you to change the list of taxa shown in the classification
+        browser on the right side of a species page and, optionally, create a filter for EOL based on this hierarchy.
+      &lt;br /&gt;&lt;br /&gt;
+        For instance, if you choose a hierarchy containing only marine taxa and select the filtering option, then your view of EOL will only show those taxa and images recognized by the marine hierarchy - an Encyclopedia of Marine Life!  You can still
+        search for any taxa using the search page. 
+      &lt;br /&gt;&lt;br /&gt;
+      You can also choose two hierarchies if you wish, which will be seamlessly merged together as you browse this website - this feature may be useful for biologists and taxonomists.&lt;/p&gt;
       &lt;/div&gt;
       
       &lt;br/&gt;
-			&lt;label for=&quot;user_default_hierarchy_id&quot; title=&quot;&lt;%= &quot;Which default browse classification would you prefer?&quot;[:classification_preference] %&gt;&quot;&gt;&lt;%= &quot;Which default browse classification would you prefer?&quot;[:classification_preference] %&gt;&lt;/label&gt;		            
+			&lt;label for=&quot;user_default_hierarchy_id&quot; title=&quot;&lt;%= &quot;Which default browse hierarchy would you prefer?&quot;[:hierarchy_preference] %&gt;&quot;&gt;&lt;%= &quot;Which default browse hierarchy would you prefer?&quot;[:hierarchy_preference] %&gt;&lt;/label&gt;		            
 			&lt;%= f.select :default_hierarchy_id, [['-- always use default --', nil]] + Hierarchy.find_all_by_browsable(1).sort_by{|h| h.label}.collect {|h| [h.label, h.id]} %&gt;&lt;br/&gt;						
 			&lt;br /&gt;
 			
-      &lt;!-- &lt;label for=&quot;user_secondary_hierarchy_id&quot; title=&quot;&lt;%= &quot;Which secondary browse classification would you prefer?&quot;[:secondary_hierarchy_preference] %&gt;&quot;&gt;&lt;%= &quot;Which secondary browse classification would you prefer?&quot;[:classification_preference] %&gt;&lt;/label&gt;               
+      &lt;!-- &lt;label for=&quot;user_secondary_hierarchy_id&quot; title=&quot;&lt;%= &quot;Which secondary browse hierarchy would you prefer?&quot;[:secondary_hierarchy_preference] %&gt;&quot;&gt;&lt;%= &quot;Which secondary browse hierarchy would you prefer?&quot;[:hierarchy_preference] %&gt;&lt;/label&gt;               
       &lt;%= f.select :secondary_hierarchy_id, [['-- none --', nil]] + Hierarchy.browsable_by_label.collect {|h| [h.label, h.id]} %&gt;&lt;br/&gt;            
       &lt;br /&gt; --&gt;
 
       &lt;table&gt;
         &lt;tr&gt;
-          &lt;td style=&quot;padding-right:1em;&quot;&gt;&lt;%= f.check_box :filter_content_by_hierarchy %&gt;&lt;/td&gt;&lt;td&gt;&lt;%= f.label :filter_content_by_hierarchy, 'Filter EOL based on your primary browse classification?'[:filter_content_by_classification_preference] %&gt;&lt;/td&gt;
+          &lt;td style=&quot;padding-right:1em;&quot;&gt;&lt;%= f.check_box :filter_content_by_hierarchy %&gt;&lt;/td&gt;&lt;td&gt;&lt;%= f.label :filter_content_by_hierarchy, 'Filter EOL based on your primary browse hierarchy?'[:filter_content_by_hierarchy_preference] %&gt;&lt;/td&gt;
         &lt;/tr&gt;
       &lt;/table&gt;
 
@@ -32,14 +30,13 @@
       &lt;label for=&quot;user_language_abbr&quot; title=&quot;&lt;%= &quot;Which language do you prefer?&quot;[:language_preference] %&gt;&quot;&gt;&lt;%= &quot;Which language do you prefer?&quot;[:language_preference] %&gt;&lt;/label&gt;		            
 			&lt;%= f.select :language_abbr, Language.find_active.collect {|l| [l.name, l.iso_639_1]} %&gt;&lt;br/&gt;						
 			
-      &lt;!-- &lt;br/&gt;
+      &lt;br/&gt;
       &lt;label title=&quot;&lt;%= &quot;Do you want to include?&quot;[:detail_level] %&gt;&quot;&gt;&lt;%= &quot;Do you want to include?&quot;[:detail_level] %&gt;&lt;/label&gt;		            
 			&lt;%= f.radio_button :expertise, &quot;novice&quot;%&gt; &lt;%=&quot;Information intended for beginners&quot;[]%&gt; &lt;br /&gt;
 			&lt;%= f.radio_button :expertise, &quot;middle&quot;%&gt; &lt;%=&quot;Information for any audience&quot;[]%&gt; &lt;br /&gt;
 			&lt;%= f.radio_button :expertise, &quot;expert&quot;%&gt; &lt;%=&quot;Information intended for experts&quot;[]%&gt; &lt;br /&gt;					
-      --&gt;
-			
 			&lt;br /&gt;
+			
 			&lt;% if $ALLOW_USER_TO_CHANGE_CONTENT_LEVEL%&gt;
 				&lt;label for=&quot;user_content_level&quot; title=&quot;&lt;%= &quot;Do you want to see?&quot;[:content_level] %&gt;&quot;&gt;&lt;%= &quot;Do you want to see?&quot;[:content_level] %&gt;&lt;/label&gt;		            
 				&lt;% ContentLevel.find.each do |content_level| %&gt;
@@ -49,5 +46,5 @@
 			&lt;% end %&gt;
 			
 		    &lt;label title=&quot;&lt;%= &quot;Do you want to see?&quot;[:content_level] %&gt;&quot;&gt;&lt;%= &quot;Do you want to see?&quot;[:content_level] %&gt;&lt;/label&gt;		            
-			&lt;%= f.radio_button :vetted, &quot;true&quot;%&gt; &lt;%=&quot;Only authoritative information&quot;[:view_only_vetted_content]%&gt; &lt;br /&gt;
+			&lt;%= f.radio_button :vetted, &quot;true&quot;%&gt; &lt;%=&quot;Only information that comes from authoritative sources&quot;[:view_only_vetted_content]%&gt; &lt;br /&gt;
 			&lt;%= f.radio_button :vetted, &quot;false&quot;%&gt; &lt;%=&quot;All information&quot;[]%&gt; 		</diff>
      <filename>app/views/taxa/_set_content_settings.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -39,7 +39,7 @@
                 &lt;% end %&gt;
             &lt;/span&gt;
             &lt;span class=&quot;page-status&quot;&gt;
-              Showing: &lt;%= current_user.expertise.to_s == 'expert' ? link_to('scientific names', taxon_url(:id=&gt;@taxon_concept.id) + '?expertise=middle',{:title=&gt;'click to show common names'}) : link_to('common names', taxon_url(:id=&gt;@taxon_concept.id) + '?expertise=expert',{:title=&gt;'click to show scientific names'}) %&gt;
+              &lt;%= current_user.expertise.to_s == 'expert' ? link_to('Switch to common names', taxon_url(:id=&gt;@taxon_concept.id) + '?expertise=middle') : link_to('Switch to scientific names', taxon_url(:id=&gt;@taxon_concept.id) + '?expertise=expert') %&gt;
             &lt;/span&gt;
             &lt;hr /&gt;             
         &lt;/div&gt;
@@ -59,8 +59,7 @@
             &lt;input id=&quot;current_taxon_concept_id&quot; type=&quot;hidden&quot; name=&quot;current_taxon_concept_id&quot; value=&quot;&lt;%= @taxon_concept.id %&gt;&quot; /&gt;
             &lt;input id=&quot;current_content&quot; type=&quot;hidden&quot; name=&quot;current_content&quot; value=&quot;&lt;%= @category_id %&gt;&quot; /&gt;
             &lt;input id=&quot;canonical_form&quot; type=&quot;hidden&quot; name=&quot;canonical_form&quot; value=&quot;&lt;%= strip_tags(@taxon_concept.canonical_form) %&gt;&quot; /&gt;
-            &amp;nbsp;&amp;nbsp;&lt;a class=&quot;smalltext&quot; href=&quot;#&quot; onclick=&quot;JavaScript:eol_show_pop_up('slider-help','slider-help');return false;&quot;&gt;&lt;%=&quot;What happened to the slider?&quot;[]%&gt;&lt;/a&gt;
-            &lt;div style=&quot;display:none;&quot; id=&quot;slider-help&quot; class=&quot;popup&quot;&gt;&lt;/div&gt;
+
             &lt;h4 id=&quot;toc-header&quot; class=&quot;margin-header left-margin-header&quot;&gt;&lt;%= &quot;Table of Contents&quot;[] %&gt;&lt;/h4&gt;
             &lt;ul id=&quot;toc&quot;&gt;
                 &lt;% 
@@ -77,7 +76,7 @@
                   &lt;/li&gt;
 
                   &lt;li class=&quot;multi_new_text_error&quot; style=&quot;display:none;&quot;&gt;
-                    &lt;%=&quot;Only one text object can be edited at a time.&quot;[]%&gt;
+                    Only one text object can be edited at a time.
                   &lt;/li&gt;
             &lt;/ul&gt;
             &lt;hr /&gt;</diff>
      <filename>app/views/taxa/_show.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -32,12 +32,12 @@
     &lt;br/&gt;    
     &lt;% if showing_unknown_video %&gt;
       &lt;div id=&quot;unknown-video-warning-box&quot;&gt;
-        &lt;span&gt;&lt;%=&quot;Items in yellow are not trusted.&quot;[]%&gt;&lt;/span&gt;
+        Images in yellow are not reviewed.
       &lt;/div&gt;
     &lt;% end %&gt;
     &lt;% if showing_untrusted_video %&gt;
       &lt;div id=&quot;untrusted-video-warning-box&quot;&gt;
-       &lt;span&gt;&lt;%=&quot;Items in red are not trusted.&quot;[]%&gt;&lt;/span&gt;
+        Videos in red are not trusted.
       &lt;/div&gt;
     &lt;% end %&gt;
 </diff>
      <filename>app/views/taxa/mediacenter/_tab_videos.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -140,7 +140,7 @@
                                   &lt;td class=&quot;&lt;%= column_class %&gt;&quot;&gt;&lt;% unless result[0].images.empty? %&gt;&lt;a href=&quot;&lt;%=url_for(:action=&gt;'search_clicked',:id=&gt;taxon_concept_id.to_s,:search_id=&gt; @search.logged_search_id)%&gt;&quot;&gt;&lt;img alt=&quot;&lt;%=strip_tags(namestring)%&gt;&quot; title=&quot;&lt;%=strip_tags(namestring)%&gt;&quot; src=&quot;&lt;%= result[1].smart_medium_thumb %&gt;&quot;/&gt;&lt;/a&gt;&lt;%end%&gt;&lt;/td&gt;&lt;/tr&gt;
                               &lt;% end %&gt;
                        &lt;/table&gt;
-                       &lt;%#= paginate_results(@search) if @search.total_pages &gt; 1 %&gt;
+                       &lt;%= paginate_results(@search) if @search.total_pages &gt; 1 %&gt;
                      &lt;/div&gt;
                    &lt;% elsif @search.search_type == 'tag' &amp;&amp; @search.tag_results.length == 0 %&gt;
                      &lt;h3&gt;No tagged results were found&lt;/h3&gt;&lt;br /&gt;</diff>
      <filename>app/views/taxa/search.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -52,8 +52,6 @@ Rails::Initializer.run do |config|
   config.gem &quot;ruby-yadis&quot;, :version =&gt; &quot;0.3.4&quot;, :lib =&gt; &quot;yadis&quot;
   config.gem 'ezcrypto'
   config.gem 'ratom', :lib =&gt; 'atom'
-  #config.gem 'outoftime-sunspot', :lib =&gt; 'sunspot'
-  #config.gem 'outoftime-sunspot_rails', :lib =&gt; 'sunspot/rails'
 
   # 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,
@@ -150,7 +148,7 @@ Rails::Initializer.run do |config|
 
    # CACHE CONFIGURATION
    $CACHE_CLEARED_LAST = Time.now()  # This variable will record the last time the home page cache was cleared
-   $CACHE_CLEAR_IN_HOURS = 1 # automatically expire home page cached fragment at this time interval (in hours)
+   $CACHE_CLEAR_IN_HOURS = 1 # automatically expire home page cached fragment at this time interval
  
   # CONTENT PARTNER REGISTRY CONFIGURATION
   $LOGO_UPLOAD_PATH = &quot;/uploads/images/collection_icons/&quot;  # directory to place uploaded content partner logos from CP registry, content server needs SFTP access to this folder (logos are not served out of this area)</diff>
      <filename>config/environment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -102,13 +102,11 @@ class EOL
     def build_top_image
       if @dato.published
         @taxon.hierarchy_entry.ancestors.each do |he|
-          TopSpeciesImage.gen :data_object =&gt; @dato, :hierarchy_entry =&gt; he
-          TopImage.gen        :data_object =&gt; @dato, :hierarchy_entry =&gt; he
+          TopImage.gen :data_object =&gt; @dato, :hierarchy_entry =&gt; he
         end
       else
         @taxon.hierarchy_entry.ancestors.each do |he|
-          TopUnpublishedSpeciesImage.gen :data_object =&gt; @dato, :hierarchy_entry =&gt; he
-          TopUnpublishedImage.gen        :data_object =&gt; @dato, :hierarchy_entry =&gt; he
+          TopUnpublishedImage.gen :data_object =&gt; @dato, :hierarchy_entry =&gt; he
         end
       end
     end      </diff>
      <filename>lib/eol/data_object_builder.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,13 +4,12 @@ class EOL
 
     attr_reader :tc
 
-    include EOL::Spec::Helpers # gbif_hierarchy iucn_hierarchy default_harvest_event gbif_harvest_event
-                               # iucn_harvest_event (and others, but I think those we want)
+    include EOL::Spec::Helpers
 
     # == Options:
     #
-    # These all have intelligent(ish) default values, so just specify those values that you feel are really salient.
-    # Note that a TC will NOT have a map or an IUCN status unless you specify options that create them.
+    # These all have intelligent(ish) default values, so just specify those values that you feel are really salient. Note that a TC will
+    # NOT have a map or an IUCN status unless you specify options that create them.
     #
     #   +attribution+::
     #     String to be used in scientific name as attribution
@@ -31,11 +30,6 @@ class EOL
     #     +:description+ and +:object_cache_url+.
     #   +gbif_map_id+::
     #     The ID to use for the Map Data Object.
-    #   +hierarchy+::
-    #     Put all generated hierarchy_entries in this hierarhcy.
-    #   +hierarchies+::
-    #     If you want multiple hierarchy entries, supply a list of hierarchies and they will all be created. The last
-    #     one will be considered the &quot;main&quot; entry, under which all data objects are attached.
     #   +id+::
     #     Forces the ID of the TaxonConcept to be what you specify, useful for exemplars.
     #   +images+::
@@ -64,8 +58,8 @@ class EOL
     #   +youtube+::
     #     Array of YouTube videos, each member is a hash for the video options.  The keys you will want are
     #     +:description+ and +:object_cache_url+.
-    # TODO - Create a harvest event and a resource (status should be published) (and the resource needs a hierarchy,
-    # which we use for the HEs)
+    # TODO - Create a harvest event and a resource (status should be published) (and the resource needs a hierarchy, which we use for
+    # the HEs)
     # TODO - Normalize names ... when harvesting is done, this is done on-the-fly, so we should do it here.
     # NOTE: when we denormalize the taxon_concept_names table, we should be looking at Synonyms as well as Names.
     def initialize(options)
@@ -140,17 +134,7 @@ class EOL
     end
 
     def gen_he
-      parent_he = HierarchyEntry.find(@parent_hierarchy_entry_id) rescue nil # Ick, but...
-      @entries = []
-      @hierarchies.each do |hierarchy|
-        this_is_the_primary = parent_he ? (parent_he.hierarchy_id == hierarchy.id) : false
-        options = {:hierarchy =&gt; hierarchy}
-        options.merge(:parent_hierarchy_entry_id =&gt; @parent_hierarchy_entry_id) if this_is_the_primary
-        entry = build_entry_in_hierarchy(options)
-        @entries &lt;&lt; entry
-        @he = entry if this_is_the_primary
-      end
-      @he = @entries.last unless @he
+      @he    = build_entry_in_hierarchy(:parent_id =&gt; @parent_hierarchy_entry_id)
     end
 
     # TODO - add some alternate names, including at least one in another language.
@@ -204,11 +188,9 @@ class EOL
 
     def gen_taxon
       puts &quot;** Enter: gen_taxon&quot; if @debugging
-      @entries.each do |entry|
-        @taxon = Taxon.gen(:name =&gt; @sname, :hierarchy_entry =&gt; entry, :scientific_name =&gt; @complete) # Okay that we don't set kingdom, phylum, etc
-        HarvestEventsTaxon.gen(:taxon =&gt; @taxon, :harvest_event =&gt; @event)
-        # TODO - Create some references here ... just a string and an associated identifier (like a URL)
-      end
+      @taxon = Taxon.gen(:name =&gt; @sname, :hierarchy_entry =&gt; @he, :scientific_name =&gt; @complete) # Okay that we don't set kingdom, phylum, etc
+      HarvestEventsTaxon.gen(:taxon =&gt; @taxon, :harvest_event =&gt; @event)
+      # TODO - Create some references here ... just a string and an associated identifier (like a URL)
     end
 
     def add_images
@@ -250,6 +232,7 @@ class EOL
     def add_map
       puts &quot;** Enter: add_map&quot; if @debugging
       if @gbif_map_id 
+        #gbif_he = build_hierarchy_entry(@depth, @tc, @sname, :hierarchy =&gt; gbif_hierarchy, :map =&gt; true,
         puts &quot;++ Add map!&quot; if @debugging
         puts &quot;GBIF hierarchy:&quot; if @debugging
         pp gbif_hierarchy if @debugging
@@ -343,7 +326,6 @@ class EOL
 
     def set_default_options(options)
       puts &quot;** Enter: set_default_options&quot; if @debugging
-      set_hierarchy_options(options)
       @attri        = options[:attribution]     || Factory.next(:attribution)
       @bhl          = options[:bhl]             || [{:publication =&gt; 'Great Big Journal of Fun', :page =&gt; 42},
                                                     {:publication =&gt; 'Great Big Journal of Fun', :page =&gt; 44},
@@ -356,6 +338,7 @@ class EOL
       @event        = options[:event]           || default_harvest_event # Note this method is in eol_spec_helper
       @flash        = options[:flash]
       @gbif_map_id  = options[:gbif_map_id]
+      @hierarchy    = options[:hierarchy]
       @id           = options[:id]
       @images       = options[:images]          || [{}, {}]
       @images       = testing_images if @images == :testing
@@ -369,17 +352,6 @@ class EOL
       @youtube      = options[:youtube]
     end
 
-    # &quot;Intelligently&quot; figures out which hierarchy or hierarchies the caller wants to create entries (and taxa, and
-    # harvest events) in.
-    def set_hierarchy_options(options)
-      puts &quot;** Enter: set_hierarchy_options&quot; if @debugging
-      @hierarchy    = options[:hierarchy]
-      @hierarchies  = options[:hierarchies]
-      @hierarchy    = options[:hierarchies].last if @hierarchies and not @hierarchy
-      @hierarchy    = Hierarchy.default unless @hierarchy
-      @hierarchies  = [@hierarchy] unless @hierarchies
-    end
-
     def default_toc_option
       toc = [{:toc_item =&gt; TocItem.overview, :description =&gt; &quot;This is an overview of the &lt;b&gt;#{@canon}&lt;/b&gt; hierarchy entry.&quot;},
                        {:toc_item =&gt; TocItem.find_by_label('Description'), :description =&gt; &quot;This is an description of the &lt;b&gt;#{@canon}&lt;/b&gt; hierarchy entry.&quot;}]</diff>
      <filename>lib/eol/taxon_concept_builder.rb</filename>
    </modified>
    <modified>
      <diff>@@ -378,14 +378,12 @@ ul#global-navigation {
 	   float:right;
 	   text-transform: uppercase;
      font-weight: 700;  
-		 text-align: right;
-		 height: 200px;
      font-size: 10px;
 		 color: #666666;
 		 margin-right: 10px;
-		 margin-top: 5px;
+		 margin-top: 10px;
 	}
-	
+
 	.popup {
      z-index: 105;
      font-size: 12px;
@@ -480,7 +478,7 @@ ul#global-navigation {
           text-decoration: none;
         }
 
-      #post-info .page-status {
+      #post-info .page-status a{
         float: right;
         padding-right: 20px;
         width: 471px;
@@ -489,6 +487,7 @@ ul#global-navigation {
         text-decoration: none;
       }
 
+
     #page-cite {
       font-size: 12px;
       color: #333;
@@ -2111,10 +2110,8 @@ input.warn, textarea.warn {
 }
 
 
-#home-center-content {
+#home-content-species {
     padding: 10px;
-		height: 100%;
-		min-height: 100px;
 }
 
 </diff>
      <filename>public/stylesheets/main.css</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,13 @@
 # ---
 # dependencies: [ :foundation ]
 # arbitrary_variable: arbitrary value
+
+require 'spec/eol_spec_helpers'
 require 'spec/scenario_helpers'
+# This gives us the ability to recalculate some DB values:
+include EOL::Data
+# This gives us the ability to build taxon concepts:
+include EOL::Spec::Helpers
 
 # A singleton that creates some users:
 def bootstrap_users
@@ -151,17 +157,14 @@ tc30 = build_taxon_concept(:id =&gt; 30,
                     :event    =&gt; event)
                     
 tc30.add_common_name(Factory.next(:common_name))
+curator = build_curator(tc30, :username =&gt; 'test_curator', :password =&gt; 'password', :given_name =&gt; 'test', :family_name =&gt; 'curator') 
 
 #31 has unvetted and vetted videos, please don't change this one, needed for selenum test:         
 tc31 = build_taxon_concept(:parent_hierarchy_entry_id =&gt; fifth_entry_id, :common_names =&gt; [Factory.next(:common_name)], :id =&gt; 31, 
                     :depth =&gt; depth_now, :flash =&gt; [{}, {:vetted =&gt; Vetted.unknown}], :youtube =&gt; [{:vetted =&gt; Vetted.unknown}, {:vetted =&gt; Vetted.untrusted}], :comments =&gt; [],
                     :bhl =&gt; [], :event =&gt; event)
                     
-#(:username =&gt; 'curator_for_tc', :password =&gt; 'password')
-curator_for_tc31 = create_curator(tc31) 
-# curator = build_curator(HierarchyEntry.gen, :username =&gt; 'test_curator', :password =&gt; 'test_password')
-# curator_for_tc = build_curator(HierarchyEntry.find(fifth_entry_id, :username =&gt; 'curator_for_tc', :password =&gt; 'password')
-# RAILS_DEFAULT_LOGGER.debug &quot;URA, curator_for_tc = &quot;+curator_for_tc.inspect.to_s                                                          
+curator_for_tc31 = build_curator(tc31, :username =&gt; 'curator_for_tc', :password =&gt; 'password') 
 
 text_dato = tc31.overview.first # TODO - this doesn't seem to ACTAULLY be the overview.  Fix it?
 image_dato = tc31.images.first
@@ -224,10 +227,6 @@ admin.save
 test_user2 = User.gen(:username =&gt; 'test_user2', :password =&gt; 'password', :given_name =&gt; 'test', :family_name =&gt; 'user2')
 test_user2.save
 
-#curator for selenium tests (NB: page #30)
-curator = User.gen(:username =&gt; 'test_curator', :password =&gt; 'password', 'given_name' =&gt; 'test', :family_name =&gt; 'curator', :curator_hierarchy_entry_id =&gt; 20, :curator_approved =&gt; true)
-curator.save
-
 #moderator for selenium test
 moderator = User.gen :username =&gt; 'moderator', :password =&gt; 'moderator', :given_name =&gt; 'Moderator', :family_name =&gt; 'User'
 moderator.roles = Role.find(:all, :conditions =&gt; 'title LIKE &quot;Moderator&quot;')
@@ -242,13 +241,9 @@ exemplar = build_taxon_concept(:id =&gt; 910093, # That ID is one of the (hard-code
 
 ContentPage.gen(:page_name =&gt; &quot;curator_central&quot;, :title =&gt; &quot;Curator central&quot;, :left_content =&gt; &quot;&quot;)
 
-
-
 col_collection = Collection.gen(:agent =&gt; Agent.catalogue_of_life, :title =&gt; &quot;Catalogue of Life Collection&quot;, :uri =&gt; &quot;http://www.catalogueoflife.org/browse_taxa.php?selected_taxon=FOREIGNKEY&quot;, :logo_cache_url =&gt; 4130)
 col_mapping    = Mapping.gen(:collection =&gt; col_collection, :name =&gt; kingdom.entry.name_object)
 
-
-
 # TODO - we need to build TopImages such that ancestors contain the images of their descendants
 
 # creating collection / mapping data
@@ -355,8 +350,7 @@ bacteria.add_common_name(&quot;le grimme&quot;, :language =&gt; french, :preferred =&gt; false)
 bacteria.add_common_name(&quot;ler petit bugge&quot;, :language =&gt; french, :preferred =&gt; false)
 
 # Another Selenium curator
-curator2 = User.gen(:username =&gt; 'curator_two', :password =&gt; 'iliketocurate')
-curator2.approve_to_curate! bacteria.entry
+curator2 = build_curator(bacteria, :username =&gt; 'curator_two', :password =&gt; 'iliketocurate') 
 
 4.times do
   parent_id = ncbi_hierarchy.hierarchy_entries.last.id
@@ -373,12 +367,6 @@ curator2.approve_to_curate! bacteria.entry
                       :depth =&gt; depth)
 end
 
-
-
-
-
-
-
 TaxonConcept.all.each do |tc|
   if tc.hierarchy_entries.empty?
     TaxonConcept.delete(tc.id)
@@ -393,6 +381,7 @@ RandomHierarchyImage.all.each do |rhi|
   d.destroy
   rhi.destroy
 end
+
 HierarchyEntry.all.each do |he|
   RandomHierarchyImage.gen(:hierarchy =&gt; he.hierarchy, :taxon_concept =&gt; he.taxon_concept, :hierarchy_entry =&gt; he, :data_object =&gt; he.taxon_concept.images[0]) if !he.taxon_concept.images[0].nil?
 end</diff>
      <filename>scenarios/bootstrap.rb</filename>
    </modified>
    <modified>
      <diff>@@ -32,7 +32,7 @@ describe 'Login' do
 
   it 'should tell us if we logged in incorrectly' do
     # first, we fail a login attempt
-    login_as( :username =&gt; 'snoopy', :password =&gt; 'secret',:remember_me=&gt;'1' ).should be_redirect
+    login_as( :username =&gt; 'snoopy', :password =&gt; 'secret' ).should be_redirect
 
     # ^ it'll redirect us back to login ... when we get there, we should have a flash message
     request('/login').body.should include('Invalid login')
@@ -42,11 +42,6 @@ describe 'Login' do
     user = create_user 'charliebrown', 'testing'
     login_as(user).should redirect_to('/')
   end
-  
-  it 'should set a remember token for us if we asked to be remembered' do
-    user = create_user 'charliebrown', 'testing'
-    login_as(:username =&gt; 'charliebrown', :password =&gt; 'testing',:remember_me=&gt;'1' ).should(User.find_by_username('charliebrown').remember_token.empty? == false &amp;&amp; redirect_to('/'))
-  end
 
   it 'should say hello to the user after logging in' do
     user = create_user 'charliebrown', 'testing'</diff>
      <filename>spec/blackbox/login_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -33,22 +33,6 @@ def assert_results(options)
   end
 end
 
-def assert_tag_results(options)
-  res = request(&quot;/search?search_type=tag&amp;q=value#{options[:page] ? &quot;&amp;page=#{options[:page]}&quot; : ''}&quot;).body
-  res.should have_tag('div[class=serp_pagination]')
-  res.should have_tag('table[class=results_table]') do |table|
-    header_index = 1
-    result_index = header_index + 1
-    table.should have_tag(&quot;tr:nth-child(#{header_index})&quot;)
-    options[:num_results_on_this_page].times do
-      table.should have_tag(&quot;tr:nth-child(#{result_index})&quot;)
-      result_index += 1
-    end
-    table.should_not have_tag(&quot;tr:nth-child(#{result_index})&quot;)
-  end
-end
-
-
 describe 'Search' do
 
   def create_taxon(namestring)
@@ -122,42 +106,5 @@ describe 'Search' do
     res = request('/search?q=value-old&amp;search_type=tag')
     res.body.should include(taxon_concept.name)
   end
-
-#   remove after pagination implementing
-  it 'should show &gt; 10 tags' do
-    user   = User.gen :username =&gt; 'username', :password =&gt; 'password'
-    all_tc = []
-    amount_of_taxa  = 15
-    
-    amount_of_taxa.times do
-      taxon_concept = build_taxon_concept(:images =&gt; [{}])
-      image_dato    = taxon_concept.images.last
-      image_dato.tag(&quot;key&quot;, &quot;value&quot;, user)
-      all_tc &lt;&lt; taxon_concept.name
-    end
-        
-    res = request('/search?search_type=tag&amp;q=value')
-    for tc_name in all_tc
-      res.body.should include(tc_name)
-    end
-  end
-  
-# # open after pagination implementing  
-#   it 'should show pagination if there are &gt; 10 tags' do
-#     user   = User.gen :username =&gt; 'username', :password =&gt; 'password'
-#     all_tc = []
-#     results_per_page = 10
-#     extra_results    = 3
-#     amount_of_taxa   = results_per_page + extra_results
-#     
-#     amount_of_taxa.times do
-#       taxon_concept = build_taxon_concept(:images =&gt; [{}])
-#       image_dato    = taxon_concept.images.last
-#       image_dato.tag(&quot;key&quot;, &quot;value&quot;, user)
-#     end
-#         
-#     assert_tag_results(:num_results_on_this_page =&gt; results_per_page)
-#     assert_tag_results(:num_results_on_this_page =&gt; extra_results, :page =&gt; 2)    
-#   end
   
 end</diff>
      <filename>spec/blackbox/search_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,15 +1,6 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 require 'nokogiri'
 
-def create_hierarchy_and_event(name)
-  agent     = Agent.gen
-  resource  = Resource.gen
-              AgentsResource.gen(:agent =&gt; agent, :resource =&gt; resource)
-  event     = HarvestEvent.gen(:resource =&gt; resource)
-  hierarchy = Hierarchy.gen(:label =&gt; name, :agent =&gt; agent)
-  return [hierarchy, event]
-end
-
 def find_unique_tc(options)
   options[:in].hierarchy_entries.each do |entry|
     return entry.taxon_concept unless entry.taxon_concept.in_hierarchy(options[:not_in])
@@ -321,32 +312,5 @@ describe 'Taxa page (HTML)' do
     new_result.body.should_not include(info_item_title.label)        
   end
 
-  it 'should filter content by hierarchy if preferences dictate' do
-    # 1a) given hierarchies _a and _b,
-    hierarchy_a, event_a = create_hierarchy_and_event('hierarchy a')
-    hierarchy_b, event_b = create_hierarchy_and_event('hierarchy b')
-    # 1b) genus_a exists in both (no images)
-    genus_a = build_taxon_concept(:hierarchies =&gt; [hierarchy_a, hierarchy_b], :rank =&gt; 'genus', :images =&gt; [])
-    # 2) species_a is a child of genus_a in hierarchy_a, but not hierarchy_b, and has an image.
-    species_a_description = 'species a description'
-    species_a = build_taxon_concept(:parent_hierarchy_entry_id =&gt; genus_a.entry(hierarchy_a).id,
-                                    :images =&gt; [{:description =&gt; species_a_description}])
-    image = species_a.images.first
-    # 3) the user selects hierarchy_b.
-    user = User.gen(:filter_content_by_hierarchy =&gt; true, :default_hierarchy_id =&gt; hierarchy_b.id, :password =&gt; 'foob')
-    # 4) when browsing to genus_a, the user should NOT see images in species_a.
-    login_as user
-    result = RackBox.request(&quot;/pages/#{genus_a.id}&quot;).body
-    result.should_not have_tag(&quot;a.thumbnail_#{image.id}&quot;)
-    # 4) the user switches to hierarchy_a.
-    user.default_hierarchy_id = hierarchy_a.id
-    user.save!
-    # 6) when browsing to genus_a, the user should now actually see the images from species_a.
-    new_result = RackBox.request(&quot;/pages/#{genus_a.id}&quot;).body
-    #TODO - I can't get this to work!  Not sure what's missing.  I think I  built the right entry in
-    #top_species_images, but perhaps I'm missing something.  Sigh.
-    #new_result.should have_tag(&quot;a.thumbnail_#{image.id}&quot;)
-  end
-
 end
 </diff>
      <filename>spec/blackbox/taxa_page_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
-def create_user username, password, args = {}
-  User.gen({:username =&gt; username, :password =&gt; password}.merge(args))
+def create_user username, password
+  User.gen :username =&gt; username, :password =&gt; password
 end
 
 # NOTE !!!!!!!
@@ -10,32 +10,26 @@ end
 
 describe 'User Profile' do
 
-  Scenario.load :foundation
+  #Scenario.load :foundation
 
   before(:all) do
-    @username  = 'bobbafett'
-    @password  = 'ihatesolo'
-    @filter    = false
-    @switch_to = true
-    @tag       = 'input#user_filter_content_by_hierarchy'
-    @user      = create_user(@username, @password, :filter_content_by_hierarchy =&gt; @filter)
-    @settings_body = request('/settings').body
-    login_as(@user).should redirect_to('/')
-    @profile_body = request('/settings').body
+    #@username = 'bobbafett'
+    #@password = 'ihatesolo'
+    #@user     = create_user(@username, @password)
+    #@settings_body = request('/settings').body
+    #login_as @user
+    #pp request('/account/authenticate',
+            #:params =&gt; {'user[username]' =&gt; @username,
+                        #'user[password]' =&gt; @password })
+    #@profile_body = request('/profile').body # first try is a redirect (why?)
+    #@profile_body = request('/profile').body
   end
 
-  it 'should allow change of filter content hierarchy' do
-    @settings_body.should include('browse classification')
-    @settings_body.should have_tag(@tag)
-    @profile_body.should include('browse classification')
-    @profile_body.should have_tag(@tag)
-  end
-
-  it 'should keep a change of value for filter content hierarchy' do
-    request('/settings',
-            :params =&gt; { 
-              'user[filter_content_by_hierarchy]' =&gt; @switch_to })
-    request('/settings').body.should have_tag(&quot;#{@tag}[checked=?]&quot;, 'checked')
-  end
+  #it 'should allow change of filter content hierarchy' do
+    #@settings_body.should include('Filter images')
+    #@settings_body.should have_tag('input#user_filter_content_by_hierarchy')
+    #@profile_body.should include('Filter images')
+    #@profile_body.should have_tag('input#user_filter_content_by_hierarchy')
+  #end
 
 end</diff>
      <filename>spec/blackbox/user_profile_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -27,8 +27,7 @@ module EOL::Spec
     def login_content_partner(options = {})
       f = request('/content_partner/login', :params =&gt; { 
           'agent[username]' =&gt; options[:username], 
-          'agent[password]' =&gt; options[:password],
-          'remember_me' =&gt; options[:remember_me] || '' })
+          'agent[password]' =&gt; options[:password] })
     end
 
     def login_as(options = {})
@@ -37,8 +36,7 @@ module EOL::Spec
       end
       request('/account/authenticate', :params =&gt; { 
           'user[username]' =&gt; options[:username], 
-          'user[password]' =&gt; options[:password],
-          'remember_me' =&gt; options[:remember_me] || '' })
+          'user[password]' =&gt; options[:password] })
     end
 
     # returns a connection for each of our databases, eg: 1 for Data, 1 for Logging ...</diff>
      <filename>spec/eol_spec_helpers.rb</filename>
    </modified>
    <modified>
      <diff>@@ -873,24 +873,12 @@ Factory.define :top_image do |ti|
   ti.view_order  1                 # Perhaps this should be in a sequence, but I don't want to figure out how to persist the same HE
 end
 
-Factory.define :top_species_image do |ti|
-  ti.association :hierarchy_entry
-  ti.association :data_object
-  ti.view_order  1                 # Again, this should be sequential, but...
-end
-
 Factory.define :top_unpublished_image do |tui|
   tui.association :hierarchy_entry
   tui.association :data_object
   tui.view_order  1 # Again, this should be sequential, but...
 end
 
-Factory.define :top_unpublished_species_image do |tui|
-  tui.association :hierarchy_entry
-  tui.association :data_object
-  tui.view_order  1 # Again, this should be sequential, but...
-end
-
 Factory.define :untrust_reason do |ur|
   ur.updated_at Time.now
   ur.created_at Time.now
@@ -923,7 +911,6 @@ Factory.define :user do |u|
   u.curator_verdict_by_id     0
   u.curator_verdict_at        nil
   u.curator_scope             ''
-  u.filter_content_by_hierarchy false
 end
 
 Factory.define :users_data_object do |u|</diff>
      <filename>spec/factories.rb</filename>
    </modified>
    <modified>
      <diff>@@ -34,18 +34,13 @@ describe TaxonConcept do
     @image_2         = Factory.next(:image)
     @image_3         = Factory.next(:image)
     @image_unknown_trust = Factory.next(:image)
-    @image_untrusted = Factory.next(:image)
     @video_1_text    = 'First Test Video'
     @video_2_text    = 'Second Test Video'
     @video_3_text    = 'YouTube Test Video'
     @comment_1       = 'This is totally awesome'
     @comment_bad     = 'This is totally inappropriate'
     @comment_2       = 'And I can comment multiple times'
-    @kingdom = build_taxon_concept(:rank =&gt; 'kingdom', :depth =&gt; 0)
-    @phylum  = build_taxon_concept(:rank =&gt; 'phylum',  :depth =&gt; 1, :parent_hierarchy_entry_id =&gt; @kingdom.entry.id)
-    @order   = build_taxon_concept(:rank =&gt; 'order',   :depth =&gt; 2, :parent_hierarchy_entry_id =&gt; @phylum.entry.id)
     tc = build_taxon_concept(
-      :parent_hierarchy_entry_id =&gt; @order.entry.id,
       :rank            =&gt; 'species',
       :canonical_form  =&gt; @canonical_form,
       :attribution     =&gt; @attribution,
@@ -55,10 +50,9 @@ describe TaxonConcept do
       :flash           =&gt; [{:description =&gt; @video_1_text}, {:description =&gt; @video_2_text}],
       :youtube         =&gt; [{:description =&gt; @video_3_text}],
       :comments        =&gt; [{:body =&gt; @comment_1}, {:body =&gt; @comment_bad}, {:body =&gt; @comment_2}],
-      :images          =&gt; [{:object_cache_url =&gt; @image_1, :data_rating =&gt; 2},
-                           {:object_cache_url =&gt; @image_2, :data_rating =&gt; 3},
-                           {:object_cache_url =&gt; @image_untrusted, :vetted =&gt; Vetted.untrusted},
-                           {:object_cache_url =&gt; @image_3, :data_rating =&gt; 4},
+      :images          =&gt; [{:object_cache_url =&gt; @image_1},
+                           {:object_cache_url =&gt; @image_2},
+                           {:object_cache_url =&gt; @image_3},
                            {:object_cache_url =&gt; @image_unknown_trust, :vetted =&gt; Vetted.unknown}],
       :toc             =&gt; [{:toc_item =&gt; @overview, :description =&gt; @overview_text}, 
                            {:toc_item =&gt; @toc_item_2}, {:toc_item =&gt; @toc_item_3}]
@@ -73,16 +67,7 @@ describe TaxonConcept do
     LastCuratedDate.gen(:user =&gt; @curator, :taxon_concept =&gt; @taxon_concept)
     # And we want one comment that the world cannot see:
     Comment.find_by_body(@comment_bad).hide! User.last
-    @user = User.gen
     recreate_normalized_names_and_links
-    @subspecies1  = build_taxon_concept(:rank =&gt; 'subspecies', :depth =&gt; 4,
-                                        :parent_hierarchy_entry_id =&gt; @taxon_concept.entry.id)
-    @subspecies2  = build_taxon_concept(:rank =&gt; 'subspecies', :depth =&gt; 4,
-                                        :parent_hierarchy_entry_id =&gt; @taxon_concept.entry.id)
-    @subspecies3  = build_taxon_concept(:rank =&gt; 'subspecies', :depth =&gt; 4,
-                                        :parent_hierarchy_entry_id =&gt; @taxon_concept.entry.id)
-    @infraspecies = build_taxon_concept(:rank =&gt; 'infraspecies', :depth =&gt; 4,
-                                        :parent_hierarchy_entry_id =&gt; @subspecies1.entry.id)
   end
   after :all do
     truncate_all_tables
@@ -197,10 +182,25 @@ describe TaxonConcept do
   end
 
   it 'should be able to list its ancestors (by convention, ending with itself)' do
+    @kingdom = build_taxon_concept(:rank =&gt; 'kingdom', :depth =&gt; 0)
+    @phylum  = build_taxon_concept(:rank =&gt; 'phylum',  :depth =&gt; 1, :parent_hierarchy_entry_id =&gt; @kingdom.entry.id)
+    @order   = build_taxon_concept(:rank =&gt; 'order',   :depth =&gt; 2, :parent_hierarchy_entry_id =&gt; @phylum.entry.id)
+    # Now we attach our TC to those:
+    he = @taxon_concept.entry
+    he.parent_id = @order.entry.id
+    he.save
     @taxon_concept.ancestors.map(&amp;:id).should == [@kingdom.id, @phylum.id, @order.id, @taxon_concept.id]
   end
 
   it 'should be able to list its children (NOT descendants, JUST children--animalia would be a disaster!)' do
+    @subspecies1  = build_taxon_concept(:rank =&gt; 'subspecies', :depth =&gt; 4,
+                                        :parent_hierarchy_entry_id =&gt; @taxon_concept.entry.id)
+    @subspecies2  = build_taxon_concept(:rank =&gt; 'subspecies', :depth =&gt; 4,
+                                        :parent_hierarchy_entry_id =&gt; @taxon_concept.entry.id)
+    @subspecies3  = build_taxon_concept(:rank =&gt; 'subspecies', :depth =&gt; 4,
+                                        :parent_hierarchy_entry_id =&gt; @taxon_concept.entry.id)
+    @infraspecies = build_taxon_concept(:rank =&gt; 'infraspecies', :depth =&gt; 4,
+                                        :parent_hierarchy_entry_id =&gt; @subspecies1.entry.id)
     @taxon_concept.children.map(&amp;:id).should only_include @subspecies1.id, @subspecies2.id, @subspecies3.id
   end
 
@@ -248,16 +248,14 @@ describe TaxonConcept do
   #end
 
   it 'should show its untrusted images images, by default' do
-    old_user = @taxon_concept.current_user
-    @taxon_concept.current_user = User.create_new
+    @taxon_concept.current_user = User.create_new # It's okay if this one &quot;sticks&quot;, so no cleanup code
     @taxon_concept.images.map(&amp;:object_cache_url).should include(@image_unknown_trust)
-    @taxon_concept.current_user = old_user  # Cleaning up so as not to affect other tests
   end
 
   it 'should show only trusted images if the user prefers' do
     old_user = @taxon_concept.current_user
     @taxon_concept.current_user = User.gen(:vetted =&gt; true)
-    @taxon_concept.images.map(&amp;:object_cache_url).should only_include(@image_1, @image_2, @image_3)
+    @taxon_concept.images.map(&amp;:object_cache_url).should == [@image_1, @image_2, @image_3]
     @taxon_concept.current_user = old_user  # Cleaning up so as not to affect other tests
   end
 
@@ -286,7 +284,7 @@ describe TaxonConcept do
     # ... And remove it from top images:
     TopImage.delete_all(:hierarchy_entry_id =&gt; @taxon_concept.entry.id,
                         :data_object_id =&gt; @taxon_concept.images.last.id)
-    @taxon_concept.expire_cached_images
+    @taxon_concept.current_user = @taxon_concept.current_user #hack to expire cached images
     @taxon_concept.images.length.should == how_many - 1 # Ensuring that we removed it...
 
     dato.visibility = Visibility.preview
@@ -316,21 +314,6 @@ describe TaxonConcept do
     TaxonConcept.common_names_for?(tc.id).should == false
   end
 
-  it 'should return images sorted by trusted, unknown, untrusted' do
-    old_user = @taxon_concept.current_user
-    @taxon_concept.current_user = @user
-    @taxon_concept.images.map {|i| i.vetted.label }.should ==
-      [Vetted.trusted.label, Vetted.trusted.label, Vetted.trusted.label, Vetted.unknown.label, Vetted.untrusted.label]
-    @taxon_concept.current_user = old_user  # Cleaning up so as not to affect other tests
-  end
-
-  it 'should sort the vetted images by data rating' do
-    old_user = @taxon_concept.current_user
-    @taxon_concept.current_user = @user
-    @taxon_concept.images[0..2].map(&amp;:object_cache_url).should == [@image_3, @image_2, @image_1]
-    @taxon_concept.current_user = old_user  # Cleaning up so as not to affect other tests
-  end
-
   #
   # I'm all for pending tests, but in this case, they run SLOWLY, so it's best to comment them out:
   #</diff>
      <filename>spec/models/taxon_concept_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@ require 'spec/rails'
 load 'composite_primary_keys/fixtures.rb' 
 
 require File.expand_path(File.dirname(__FILE__) + &quot;/factories&quot;)
-require File.expand_path(File.dirname(__FILE__) + &quot;/scenario_helpers&quot;)
+require File.expand_path(File.dirname(__FILE__) + &quot;/eol_spec_helpers&quot;)
 require File.expand_path(File.dirname(__FILE__) + &quot;/custom_matchers&quot;)
 
 require 'scenarios'</diff>
      <filename>spec/spec_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>app/models/top_species_image.rb</filename>
    </removed>
    <removed>
      <filename>app/models/top_unpublished_species_image.rb</filename>
    </removed>
    <removed>
      <filename>app/views/popups/slider-help.html.erb</filename>
    </removed>
    <removed>
      <filename>db/migrate/20091015210148_add_remember_token_for_users.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>f556441a9733aa0c72b9cd2a70c7ab3f0c16e314</id>
    </parent>
  </parents>
  <author>
    <name>dima</name>
    <email>dima@78829999-583a-0410-bd01-8a9b849fd409</email>
  </author>
  <url>http://github.com/eol/eol/commit/98ce0aa3b6accdd8d47f7077b4289100c46006ed</url>
  <id>98ce0aa3b6accdd8d47f7077b4289100c46006ed</id>
  <committed-date>2009-11-03T10:24:27-08:00</committed-date>
  <authored-date>2009-11-03T10:24:27-08:00</authored-date>
  <message>merged trunk back: svn merge -r1310:1305

git-svn-id: file:///data/subversion/eol/trunk@1317 78829999-583a-0410-bd01-8a9b849fd409</message>
  <tree>c297e595d4d86f2ee8dbd64dd7315785015ca7d6</tree>
  <committer>
    <name>dima</name>
    <email>dima@78829999-583a-0410-bd01-8a9b849fd409</email>
  </committer>
</commit>
