changed technical inquiries email as requested (1528)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<% if RAILS_ENV == "development" %>
  <% flash[:error] ||= "You are on our development site -- you should NOT be filling in your app or reference here.  Remove the 'dev.' from your url, and email spt@campusforchrist.org with how you got here" %>

<% end %>

  <%
=begin
  flash[:error] = %|
  There will be a short, approximately 10-20 minutes, scheduled outage between 12pm-2pm PST

  -CIM team, Wed May 7
  |
=end
  %>

    <title>Project Application Tool</title>
    <%= stylesheet_link_tag 'main2' %>
    <%= render :partial => "externs/sortable_tables" %>
    <%= javascript_include_tag "prototype", "effects" %>
    <%= render :partial => "externs/load_extern" %>

    <% if RAILS_ENV == 'development' && @debug -%>

debug: <%= @debug -%>

    <% end -%>

      Loading <%=image_tag('spinner.gif')%>

        <% if @user %>

user:
            <%= @user.viewer.name %> -
            <%= link_to 'logout', :action => :logout, :controller => :security %>

        <% end %>

        <% if @eg %>

group:
            <%= @eg.to_s_with_eg_path %>
            <%= link_to 'change', scope_event_groups_url %>

        <% end %>

Project Application Tool

    <% if @user %>

          <%= new_item "Your Apps", "your_apps", :list %>
          <% if @show_your_project %>
            <%= new_item "Your Projects", "main", :your_projects %>
          <% end %>
          <% unless @user.is_student? %>
            <%= new_item "App Processing", "main", :your_applications %>
	    <% if @eg && @eg.has_your_campuses %>
              <%= new_item "Your Campuses", "main", :your_campuses %>
	    <% end %>
            <% if @user.is_projects_coordinator? %>
              <%= new_item "Tools", "tools", :index %>
              <%= new_item "Manage Forms", "forms" %>
              <%= new_item "Manage Groups", "event_groups" %>
            <% end %>
            <%= new_item "Manage Projects", "manage_projects", :list %>
            <%= new_item "Reports", "reports", :index %>
          <% end %>
          <%= new_item "Profiles", "profiles", :index%>

    <% end %>

    <% flash.each do |key, msg| -%>
      <% full_msg = h(msg) %>
      <%= content_tag :div, full_msg, :id => "flash_#{key}", :class => 'error flash' %>
    <% end -%>
    <% flash.discard -%>

    <% @notifications.each do |n| -%>
      <% full_msg = h(n.message) + "
"
         unless n.permanent || @user.nil?
           full_msg += link_to_remote('Hide',
            :url => { :controller => 'notification_acknowledgments',
                      :action => 'create', :notification_id => n.id },
            :success => "$(\"notification_#{n.id}\").fade()"
           )
         end
        %>
      <%= content_tag :div, full_msg, :id => "notification_#{n.id}", :class => 'error flash' %>
    <% end -%>

     <% if @user && !@user.is_student? && !@eg.nil? %>

        <%= form_remote_tag :url => { :controller => 'main', :action => :find_people },	:before => "Element.show('loading');", :complete  => "Element.hide('loading');" %>
          Search People:
          <%= text_field 'viewer', 'name', :size => 20%>
          <%= submit_tag "Search" %>
        </form>

    <% end %>

    <% if @title %>

<%=@title%>

    <% end %>

    <% if file_exists? controller.controller_name + "/_menu" %>
      <%= render :partial => controller.controller_name + "/menu" %>
    <% elsif @submenu && file_exists?(@submenu + "/_menu") %>
      <%= render :partial => @submenu + "/menu" %>
    <% end %>

    <% submenu_items_html = yield :submenu %>
    <% if submenu_items_html && !@eg.nil? %>

          <%= submenu_items_html %>

    <% end %>

        <% if @form && params[:controller] != 'forms' %>
          <%= render "layouts/form_#{@form}.rhtml" %>
        <% else %>
          <%= yield %>
        <% end %>

    <% if @eg || @show_contact_emails_override %>

        Non-Technical Inquiries:

				Campus for Christ - projects@campusforchrist.org

				LeaderImpact Group - danielled@leaderimpactgroup.com

				Athletes in Action - morgank@athletesinaction.com

			Technical Inquiries:helpdesk@c4c.ca

			Online help can be found here.

    <% end %>

    <%= initialize_sortable_tables %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<% if RAILS_ENV == "development" %>
  <% flash[:error] ||= "You are on our development site -- you should NOT be filling in your app or reference here.  Remove the 'dev.' from your url, and email spt@campusforchrist.org with how you got here" %>
<% end %>

    <title>Project Application Tool</title>
    <%= stylesheet_link_tag 'main2' %>
    <%= render :partial => "externs/sortable_tables" %>
    <%= javascript_include_tag "prototype", "effects" %>
    <%= render :partial => "externs/load_extern" %>

    <% if RAILS_ENV == 'development' && @debug -%>

debug: <%= @debug -%>

    <% end -%>

      Loading <%=image_tag('spinner.gif')%>

        <% if @user %>

user:
            <%= @user.viewer.name %> -
            <%= link_to 'logout', :action => :logout, :controller => :security %>

        <% end %>

        <% if @eg %>

group:
            <%= @eg.to_s_with_eg_path %>
            <%= link_to 'change', scope_event_groups_url %>

        <% end %>

Project Application Tool

    <% if @user %>

          <%= new_item "Your Apps", "your_apps", :list %>
          <% if @show_your_project %>
            <%= new_item "Your Projects", "main", :your_projects %>
          <% end %>
          <% unless @user.is_student? %>
            <%= new_item "App Processing", "main", :your_applications %>
	    <% if @eg && @eg.has_your_campuses %>
              <%= new_item "Your Campuses", "main", :your_campuses %>
	    <% end %>
            <% if @user.is_projects_coordinator? %>
              <%= new_item "Tools", "tools", :index %>
              <%= new_item "Manage Forms", "forms" %>
              <%= new_item "Manage Groups", "event_groups" %>
            <% end %>
            <%= new_item "Manage Projects", "manage_projects", :list %>
            <%= new_item "Reports", "reports", :index %>
          <% end %>
          <%= new_item "Profiles", "profiles", :index%>

    <% end %>

    <% flash.each do |key, msg| -%>
      <% full_msg = h(msg) %>
      <%= content_tag :div, full_msg, :id => "flash_#{key}", :class => 'error flash' %>
    <% end -%>
    <% flash.discard -%>

    <% @notifications.each do |n| -%>
      <% full_msg = h(n.message) + "
"
         unless n.permanent || @user.nil?
           full_msg += link_to_remote('Hide',
            :url => { :controller => 'notification_acknowledgments',
                      :action => 'create', :notification_id => n.id },
            :success => "$(\"notification_#{n.id}\").fade()"
           )
         end
        %>
      <%= content_tag :div, full_msg, :id => "notification_#{n.id}", :class => 'error flash' %>
    <% end -%>

     <% if @user && !@user.is_student? && !@eg.nil? %>

        <%= form_remote_tag :url => { :controller => 'main', :action => :find_people },	:before => "Element.show('loading');", :complete  => "Element.hide('loading');" %>
          Search People:
          <%= text_field 'viewer', 'name', :size => 20%>
          <%= submit_tag "Search" %>
        </form>

    <% end %>

    <% if @title %>

<%=@title%>

    <% end %>

    <% if file_exists? controller.controller_name + "/_menu" %>
      <%= render :partial => controller.controller_name + "/menu" %>
    <% elsif @submenu && file_exists?(@submenu + "/_menu") %>
      <%= render :partial => @submenu + "/menu" %>
    <% end %>

    <% submenu_items_html = yield :submenu %>
    <% if submenu_items_html && !@eg.nil? %>

          <%= submenu_items_html %>

    <% end %>

        <% if @form && params[:controller] != 'forms' %>
          <%= render "layouts/form_#{@form}.rhtml" %>
        <% else %>
          <%= yield %>
        <% end %>

    <% if @eg || @show_contact_emails_override %>

        Non-Technical Inquiries:

				Campus for Christ - projects@campusforchrist.org

				LeaderImpact Group - danielled@leaderimpactgroup.com

				Athletes in Action - morgank@athletesinaction.com

			Technial Inquiries: spt@campusforchrist.org

			Online help can be found here.

    <% end %>

    <%= initialize_sortable_tables %>


ActionItem265: notifying missing items in map

if at least one item should be shown in the map but it is no possible to
show it (i.e. it does not have latitude and/or longitude), then display
a infoWindow saying that.

git-svn-id: 43659daf80e124e0b603d67096418e58e4f21099@1966 3f533792-8f58-4932-b0fe-aaf55b0a4547

<%= content_tag('script', '', :src => GoogleMaps.api_url, :type => 'text/javascript') %>


Add nil rescues around helper functions not available to account controller (need a better way for this though)

git-svn-id: 70ab0960c3db1cbf656efd6df54a8f3de72dc710@179 820eb932-12ee-0310-9ca8-eeb645f39767

<!DOCTYPE html PUBLIC "-//w3c//dtd XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">

  <title>Typo admin: <%= controller.controller_name %></title>
  <%= stylesheet_link_tag "admin.css" %>

<%= link_to "Typo admin (#{config['blog_name']})", "/admin/" %>

    <%= current_user_notice rescue nil %>

<%= link_to_section "General", :controller=>"/admin/general" rescue nil %>

<%= link_to_section "Articles", :controller=>"/admin/content" rescue nil %>

<%= link_to_section "Users", :controller=>"/admin/users" rescue nil %>

    <%= render_flash rescue nil %>

  <%= @content_for_layout %>

<!DOCTYPE html PUBLIC "-//w3c//dtd XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">

  <title>Typo admin: <%= controller.controller_name %></title>
  <%= stylesheet_link_tag "admin.css" %>

<%= link_to "Typo admin (#{config['blog_name']})", "/admin/" %>

    <%= current_user_notice %>

<%= link_to_section "General", :controller=>"/admin/general"%>

<%= link_to_section "Articles", :controller=>"/admin/content"%>

<%= link_to_section "Users", :controller=>"/admin/users"%>

    <%= render_flash %>

  <%= @content_for_layout %>


Fixed typo

Fixed typo

<% @title = 'News' %>

<%= @title %>

This page lists the latest changes to and news about the Mushroom Observer website.

Friday October 5, 2007

Fixed a bug where genera were mistakenly getting deprecated when species they contain were deprecated.

Monday September 17, 2007

Did a whole bunch of cleanup using the W3C validator to ensure that
        as much of the site as possible is valid XHTML 1.0.  In the process found many little formatting problems.  In
        general the layout should be unchanged.  However, with browsers other than Firefox there may be significant
        changes, but those should be more consistent with the layout in Firefox.  Please let me know if you see any
        significant layout problems.

For anyone who cares, the Show Image and Show Original pages are not completely valid due to the use of the
        proposed RDFa standard used to describe the Creative Commons licensing terms.  This standard is expected to be
        ratified in the near future.

Sunday September 2, 2007

Contributors now have options for the license they contribute their images under.  The license that has
        been used so far (Creative Commons Attribution,
        Non-Commercial, Share Alike License v2.5, or by-nc-sa v2.5 for short) only permits non-commercial
        uses.  This license is not enough to allow their use on Wikipedia
        which requires the option for all contributed material
        to be used commercially.  Support has been added for a license Wikipedia does accept,
        the Creative Commons Attribution, Share Alike
        License v3.0 license (by-sa v3.0).  While I was working on this problem I also deprecated the use of
        by-nc-sa v2.5 in favor of the 3.0 version.

This means when you add a new image you can choose between the Wikipedia compatible license and the
        non-commercial 3.0 license.  The initial default for all users when adding new images is the Wikipedia
        compatible, by-sa v3.0 license.  You can change this default on your <%= link_to('Preferences',
        :controller => 'account', :action => 'prefs') %> page.

You can change the license for any existing image by going to that
        image and selecting 'Edit Image'.  You will see a new drop down menu listing the license options.
        If the image is currently under the by-nc-sa v2.5, then that option will still be in the list and will
        be the default.  Finally for power users, there is a new page available off the Preferences page, the
        <%= link_to('Bulk License Updater', :action => 'license_updater') %>, which groups your images based
        on license and copyright holder and allows you to update each group in one go.

Image search now includes the copyright holder field in the search.

Updated the <%= link_to('Introduction', :controller => 'observer', :action => 'intro') %> and
    <%= link_to('How to Use', :controller => 'observer', :action => 'how_to_use') %> pages to reflect many
    of the recent changes.

Saturday September 1, 2007

Fixed bugs in handling version numbers and user assignment for some name changing functions.

Monday August 20, 2007

Fixed bugs in adding author and creating new species indirectly by creating or editing observations.

Sunday August 12, 2007

Re-enabled Bulk Name Edit after substantially revising past name generation and compensating for lost history.

Friday August 3, 2007

Added citations to Names.

Search improvements:

        Box is larger.

        Search value stays in all cases.

        Switched from just matching the beginning of the name string (unless there's a %), to searching anywhere in multple fields.

        Removed Location search since that's included in the Observation search now.

Updated the past name page to explicitly show previous statuses and citations.

Thursday August 2, 2007

Added Approve or Deprecate links to Show Name pages based on whether the name is deprecated or not.

Removed 'Deprecated' checkbox from the Edit Name page.

Fixed a bug in Edit Observation where providing a totally new name lost any other changes or edits made on the page.

Fixed some of the handling of 'Unknown'.

Fixed a bug in recording if a Name used to be deprecated.

Friday July 20, 2007

Allowed system to assume that a non-deprecated name is preferred over a deprecated name if there is ambiguity.

Fixed bug in saving author changes when the name can't be changed that was introduced in the July 6 update.

Friday July 6, 2007

Reorganized the links on the observation, image and name pages to hopefully be more intuitive.

Limited the ability to change the name and author of name to avoid changes to other people's observations without
        their approval.

Fixed a few minor bugs.

Sunday July 1, 2007

Updated the checklist code to give long lists after a visit to either the Observation Index or Name Index pages.

Cleaned up the naming of Observation Index and Name Index.  All Names is still maintained, but is now the same as the Name Index.

Saturday June 30, 2007

Valid names are now in bold.  Deprecated names are not.

Thursday June 28, 2007

Moved to new hosting service.

Sunday June 24, 2007

If there are two names that have exactly the same name and author and at least one of them has no notes, then they will get automatically merged if one of them is edited.

Added a facility for testing the performance of image uploading.

Fixed an omission in the error reporting code that caused alert emails to not get sent.

Monday June 18, 2007

Names can now be marked as deprecated.  The setting can be changed using the Edit Name page.

Synonyms support added.  Synonyms are used to verify names of observations and in species lists.

Synonyms can be changed for one name by selecting 'Change Synonyms' from any Show Name page.

Larger sets of names and synonyms can be added from the Bulk Name Edit page available from any Show
        Name page, the Name Index page or the All Names page.

The Name Index page only lists names that have observations.

The All Names page lists all names in the database and can be accessed from the Name Index page.

Fixed bug with Creating Observations immediately after creating a new account.

Monday May 21, 2007

One year anniversary!

Added Site Stats, Contributors, Show User, User Observations and Comments for User pages.

Sunday May 13, 2007

Fixed a variety of minor issues.

Added 'sanitize' calls to avoid cross-site scripting vulnerabilities.

Thursday May 10, 2007

Fixed bug in creating new names when creating a species list.

Sunday April 29, 2007

Substantially improved error handling.

Fixed problem with Google Web Accelerator.

Sunday April 22, 2007

Reorganized and simplified observation editing and creation.

Completed unit testing for existing pages.

Friday February 23, 2007

Adjusted the size of some of the notes widgets to fill more of the screen.

Monday February 19, 2007

Added note snippet and comment count to Show Image page for easier review.

Adjusted options available for the number of rows in list displays.

Fixed database migration scripts.

Internal data simplification (removed observations.what field).

Tuesday February 13, 2007

Added multiple upload option for Add Images.

Changed some of the links in the left hand panel based on user feedback.

Saturday February 10, 2007

Added image and location search within the site.

Thursday February 8, 2007

Added Google image search links to Observation and Name pages.

Wednesday February 7, 2007

Added checklists.  Items in the checklist are the results of the
            latest search or viewed species list.  Viewing large lists like
            'Latest Changes' or 'Name Index' will reset the checklist to all
            names.

Moved loading species lists from files to a separate page off of
            Edit Species List to avoid an interaction between the checklist
            and file loading.

Saturday January 27, 2007

Name edits now appear in the RSS feed.

Sunday January 21, 2007

Added How To Use page.

Changed 'New' links to 'Create'.

Fixed a bug with the search box.

Fixed a couple of bugs with the next/prev links.

Thursday January 11, 2007

Fixed a bug with creating new species.

Fixed many bugs with page titles, some of which were preventing pages from loading.

Tuesday January 9, 2007

Names are now database objects rather than just strings.  They have a
    rank, a text name an author and notes.

A show_name page shows this information as well as a list of all
    observations that use that Name.  The show_pages can be accessed from
    each show_observation page as well as the name_index page that is
    available in the left-side panel.

Names can be edited on the edit_name pages that are accessible from
    the show_name pages.  Anyone is allowed to edit any name, but
    following the Wikipedia model,
    a record is kept of every version.  The previous versions are stored as
    'past names'.  A show_past_name page shows the name information for a
    previous version of a name and is accessible from each show_name page.

Names are associated with observations through the 'what' field of the
    observation.  When the 'what' field is changed, the names are searched
    for a match.  The 'what' field can either be the text_name or the
    text_name and the author for a name.  No match is found for a 'what'
    value, then the user is given the option to create the new name.  If a
    'what' value matches more than one name (due to different authors
    publishing the same name), then the user is given a choice between the
    options.  The options list how many observations use each version of
    the name.  If you add an author to a 'what' field for a name that does
    not have an author already, it will ask you if you want to create the
    new name, but it will actually update the existing name.

Names given in species lists are treated in the exact same manner,
    except that all the new names and all of the multiple matches are
    dealt with on the same page.  There is also an option on the
    new_species_list and edit_species_list pages to 'Just Create New
    Names'.  This adds the names without updating the species list or
    creating the corresponding observations.

The search box is now available on every page.

Removed the Observation Index in favor of the Name Index.

Fixed some of the list ordering to make it more intuitive.

A filter was added to the account creation process that should reduce the
    number of bot created users.

Fixed a bug with bouncing between observations and images and using the
    next/prev links.

Monday December 18, 2006

Added prev/next links that follow the RSS feed.

Improved prev/next functionality throughout the site.

RSS feed descriptions now have appropriate line breaks.

Monday December 4, 2006

Species lists can now be uploaded from files.

Separated note for species list from note that applies to member observations.

Fixed use of multiple tabs by switching from session data to hidden fields.

mushroomobserver.org/# == mushroomobserver.org/observer/show_observation/#

Monday October 26, 2006

Switched Observations->By Name to include thumbnails and follow layout.

Maintained old By Name behavior as Observations->Index.

Added simple search box to Activity Log (Latest Changes) and Observation list pages.

Monday October 23, 2006

Changed default page to the RSS feed.

Changed page layout for observation and image list pages.

Added layout controls to user preferences.  Set to 10 rows x 1 column
		and turn off 'Put text below images' to get old layout.

Changed thumbnail image size from 100px to 160px with lower quality (jpeg 50 vs. 75).

Provided Prev/Next buttons for images.

Added link to ask the webmaster a question about the site.

Split up 'Manage Images' into 'Add Image', 'Reuse Image' and 'Remove Images' and made
		them more visible.

'Reuse Image' allows you to look at the images.

Added links for viewing the log for observations and species lists.

Made database lookup for all observations much more efficient.

Rearranged left-hand panel.

Images no longer have titles.  They are derived from the observation(s) they are
		connected to.

Removed Edit and Destroy links from view pages.

Add mini-icon for webpages.

Sunday September 9, 2006

Links to email the creator of observations or images with questions or commerical inquiries.  The creator receives an email with the address of the user who wants to contact them.  It is up to the creator whether they want to respond.

User preferences added to disable the above email feature and to stop receiving emails like this letting you know about new features.

RSS feed has been overhauled to reduce the number of entries and make them more relevant.

Copyright holder now has an option to be something other than a registered user.  The user who uploads the image is the default, but it can now be changed on a per image basis.

Monday August 21, 2006

Added RSS feed for all interesting events that happen on the site.

Added 'Create Account' link on login page to make it more obvious.

Tweaked page titles to make the site easier to index.

Sunday August 13, 2006

Added this news page.

List pages now have a better interface for paging than just next/previous,
and its at the top and bottom of each page.

Saturday August 12, 2006

Added email verification system to user signup.

<% @title = 'News' %>

<%= @title %>

This page lists the latest changes to and news about the Mushroom Observer website.

Friday October 5, 2007

Fixed a bug where genera were mistakenly getting deprecated when species they contain were deprecated.

Monday September 17, 2007

Did a whole bunch of cleanup using the W3C validator to ensure that
        as much of the site as possible is valid XHTML 1.0.  In the process found many little formatting problems.  In
        general the layout should be unchanged.  However, with browser other than Firefox there may have be significant
        changes, but those should be more consistent with the layout in Firefox.  Please let me know if you see any
        significant layout problems.

For anyone who cares, the Show Image and Show Original pages are not completely valid due to the use of the
        proposed RDFa standard used to describe the Creative Commons licensing terms.  This standard is expected to be
        ratified in the near future.

Sunday September 2, 2007

Contributors now have options for the license they contribute their images under.  The license that has
        been used so far (Creative Commons Attribution,
        Non-Commercial, Share Alike License v2.5, or by-nc-sa v2.5 for short) only permits non-commercial
        uses.  This license is not enough to allow their use on Wikipedia
        which requires the option for all contributed material
        to be used commercially.  Support has been added for a license Wikipedia does accept,
        the Creative Commons Attribution, Share Alike
        License v3.0 license (by-sa v3.0).  While I was working on this problem I also deprecated the use of
        by-nc-sa v2.5 in favor of the 3.0 version.

This means when you add a new image you can choose between the Wikipedia compatible license and the
        non-commercial 3.0 license.  The initial default for all users when adding new images is the Wikipedia
        compatible, by-sa v3.0 license.  You can change this default on your <%= link_to('Preferences',
        :controller => 'account', :action => 'prefs') %> page.

You can change the license for any existing image by going to that
        image and selecting 'Edit Image'.  You will see a new drop down menu listing the license options.
        If the image is currently under the by-nc-sa v2.5, then that option will still be in the list and will
        be the default.  Finally for power users, there is a new page available off the Preferences page, the
        <%= link_to('Bulk License Updater', :action => 'license_updater') %>, which groups your images based
        on license and copyright holder and allows you to update each group in one go.

Image search now includes the copyright holder field in the search.

Updated the <%= link_to('Introduction', :controller => 'observer', :action => 'intro') %> and
    <%= link_to('How to Use', :controller => 'observer', :action => 'how_to_use') %> pages to reflect many
    of the recent changes.

Saturday September 1, 2007

Fixed bugs in handling version numbers and user assignment for some name changing functions.

Monday August 20, 2007

Fixed bugs in adding author and creating new species indirectly by creating or editing observations.

Sunday August 12, 2007

Re-enabled Bulk Name Edit after substantially revising past name generation and compensating for lost history.

Friday August 3, 2007

Added citations to Names.

Search improvements:

        Box is larger.

        Search value stays in all cases.

        Switched from just matching the beginning of the name string (unless there's a %), to searching anywhere in multple fields.

        Removed Location search since that's included in the Observation search now.

Updated the past name page to explicitly show previous statuses and citations.

Thursday August 2, 2007

Added Approve or Deprecate links to Show Name pages based on whether the name is deprecated or not.

Removed 'Deprecated' checkbox from the Edit Name page.

Fixed a bug in Edit Observation where providing a totally new name lost any other changes or edits made on the page.

Fixed some of the handling of 'Unknown'.

Fixed a bug in recording if a Name used to be deprecated.

Friday July 20, 2007

Allowed system to assume that a non-deprecated name is preferred over a deprecated name if there is ambiguity.

Fixed bug in saving author changes when the name can't be changed that was introduced in the July 6 update.

Friday July 6, 2007

Reorganized the links on the observation, image and name pages to hopefully be more intuitive.

Limited the ability to change the name and author of name to avoid changes to other people's observations without
        their approval.

Fixed a few minor bugs.

Sunday July 1, 2007

Updated the checklist code to give long lists after a visit to either the Observation Index or Name Index pages.

Cleaned up the naming of Observation Index and Name Index.  All Names is still maintained, but is now the same as the Name Index.

Saturday June 30, 2007

Valid names are now in bold.  Deprecated names are not.

Thursday June 28, 2007

Moved to new hosting service.

Sunday June 24, 2007

If there are two names that have exactly the same name and author and at least one of them has no notes, then they will get automatically merged if one of them is edited.

Added a facility for testing the performance of image uploading.

Fixed an omission in the error reporting code that caused alert emails to not get sent.

Monday June 18, 2007

Names can now be marked as deprecated.  The setting can be changed using the Edit Name page.

Synonyms support added.  Synonyms are used to verify names of observations and in species lists.

Synonyms can be changed for one name by selecting 'Change Synonyms' from any Show Name page.

Larger sets of names and synonyms can be added from the Bulk Name Edit page available from any Show
        Name page, the Name Index page or the All Names page.

The Name Index page only lists names that have observations.

The All Names page lists all names in the database and can be accessed from the Name Index page.

Fixed bug with Creating Observations immediately after creating a new account.

Monday May 21, 2007

One year anniversary!

Added Site Stats, Contributors, Show User, User Observations and Comments for User pages.

Sunday May 13, 2007

Fixed a variety of minor issues.

Added 'sanitize' calls to avoid cross-site scripting vulnerabilities.

Thursday May 10, 2007

Fixed bug in creating new names when creating a species list.

Sunday April 29, 2007

Substantially improved error handling.

Fixed problem with Google Web Accelerator.

Sunday April 22, 2007

Reorganized and simplified observation editing and creation.

Completed unit testing for existing pages.

Friday February 23, 2007

Adjusted the size of some of the notes widgets to fill more of the screen.

Monday February 19, 2007

Added note snippet and comment count to Show Image page for easier review.

Adjusted options available for the number of rows in list displays.

Fixed database migration scripts.

Internal data simplification (removed observations.what field).

Tuesday February 13, 2007

Added multiple upload option for Add Images.

Changed some of the links in the left hand panel based on user feedback.

Saturday February 10, 2007

Added image and location search within the site.

Thursday February 8, 2007

Added Google image search links to Observation and Name pages.

Wednesday February 7, 2007

Added checklists.  Items in the checklist are the results of the
            latest search or viewed species list.  Viewing large lists like
            'Latest Changes' or 'Name Index' will reset the checklist to all
            names.

Moved loading species lists from files to a separate page off of
            Edit Species List to avoid an interaction between the checklist
            and file loading.

Saturday January 27, 2007

Name edits now appear in the RSS feed.

Sunday January 21, 2007

Added How To Use page.

Changed 'New' links to 'Create'.

Fixed a bug with the search box.

Fixed a couple of bugs with the next/prev links.

Thursday January 11, 2007

Fixed a bug with creating new species.

Fixed many bugs with page titles, some of which were preventing pages from loading.

Tuesday January 9, 2007

Names are now database objects rather than just strings.  They have a
    rank, a text name an author and notes.

A show_name page shows this information as well as a list of all
    observations that use that Name.  The show_pages can be accessed from
    each show_observation page as well as the name_index page that is
    available in the left-side panel.

Names can be edited on the edit_name pages that are accessible from
    the show_name pages.  Anyone is allowed to edit any name, but
    following the Wikipedia model,
    a record is kept of every version.  The previous versions are stored as
    'past names'.  A show_past_name page shows the name information for a
    previous version of a name and is accessible from each show_name page.

Names are associated with observations through the 'what' field of the
    observation.  When the 'what' field is changed, the names are searched
    for a match.  The 'what' field can either be the text_name or the
    text_name and the author for a name.  No match is found for a 'what'
    value, then the user is given the option to create the new name.  If a
    'what' value matches more than one name (due to different authors
    publishing the same name), then the user is given a choice between the
    options.  The options list how many observations use each version of
    the name.  If you add an author to a 'what' field for a name that does
    not have an author already, it will ask you if you want to create the
    new name, but it will actually update the existing name.

Names given in species lists are treated in the exact same manner,
    except that all the new names and all of the multiple matches are
    dealt with on the same page.  There is also an option on the
    new_species_list and edit_species_list pages to 'Just Create New
    Names'.  This adds the names without updating the species list or
    creating the corresponding observations.

The search box is now available on every page.

Removed the Observation Index in favor of the Name Index.

Fixed some of the list ordering to make it more intuitive.

A filter was added to the account creation process that should reduce the
    number of bot created users.

Fixed a bug with bouncing between observations and images and using the
    next/prev links.

Monday December 18, 2006

Added prev/next links that follow the RSS feed.

Improved prev/next functionality throughout the site.

RSS feed descriptions now have appropriate line breaks.

Monday December 4, 2006

Species lists can now be uploaded from files.

Separated note for species list from note that applies to member observations.

Fixed use of multiple tabs by switching from session data to hidden fields.

mushroomobserver.org/# == mushroomobserver.org/observer/show_observation/#

Monday October 26, 2006

Switched Observations->By Name to include thumbnails and follow layout.

Maintained old By Name behavior as Observations->Index.

Added simple search box to Activity Log (Latest Changes) and Observation list pages.

Monday October 23, 2006

Changed default page to the RSS feed.

Changed page layout for observation and image list pages.

Added layout controls to user preferences.  Set to 10 rows x 1 column
		and turn off 'Put text below images' to get old layout.

Changed thumbnail image size from 100px to 160px with lower quality (jpeg 50 vs. 75).

Provided Prev/Next buttons for images.

Added link to ask the webmaster a question about the site.

Split up 'Manage Images' into 'Add Image', 'Reuse Image' and 'Remove Images' and made
		them more visible.

'Reuse Image' allows you to look at the images.

Added links for viewing the log for observations and species lists.

Made database lookup for all observations much more efficient.

Rearranged left-hand panel.

Images no longer have titles.  They are derived from the observation(s) they are
		connected to.

Removed Edit and Destroy links from view pages.

Add mini-icon for webpages.

Sunday September 9, 2006

Links to email the creator of observations or images with questions or commerical inquiries.  The creator receives an email with the address of the user who wants to contact them.  It is up to the creator whether they want to respond.

User preferences added to disable the above email feature and to stop receiving emails like this letting you know about new features.

RSS feed has been overhauled to reduce the number of entries and make them more relevant.

Copyright holder now has an option to be something other than a registered user.  The user who uploads the image is the default, but it can now be changed on a per image basis.

Monday August 21, 2006

Added RSS feed for all interesting events that happen on the site.

Added 'Create Account' link on login page to make it more obvious.

Tweaked page titles to make the site easier to index.

Sunday August 13, 2006

Added this news page.

List pages now have a better interface for paging than just next/previous,
and its at the top and bottom of each page.

Saturday August 12, 2006

Added email verification system to user signup.


still more fixes to view typos

still more fixes to view typos

Welcome to FreeCite!

FreeCite is an open-source application that classifies document citations into fielded data. You can use
    it as a web application
    or a <%= link_to "service", :controller => "welcome", :action => "api_instructions" %>. You can also
    download the source and run FreeCite on your
    own server. FreeCite is distributed under the MIT license.

FreeCite was inspired by
    ParsCit.
    Much thanks to ParsCit's maintainer, Isaac Councill.

FreeCite was developed through a partnership between the
    Brown
    University Library and Providence-based start-up
    Public Display,
    with funding from the Mellon Foundation.

FreeCite is implemented in Ruby on Rails and
    uses the CRF++ library
    implementation of conditional random fields. Our model is trained on the
    CORA dataset.

If you're interested in a tool like FreeCite, you should check out these other
    citation tools:

ParaCite

ParsCit

    <%= link_to "Let us know", :action => "feedback" %> of any other tools you'd like to see listed here.

<%= link_to "Please get in touch with us", :action => "feedback" %> if you have any feedback to share.

    <%= render :partial => "citations/parse_string" %>

<%= link_to "Learn about our API", :controller => "welcome", :action => "api_instructions" %>

Welcome to FreeCite!

FreeCite is an open-source application that classifies document citations into fielded data. You can use
    it as a web application
    or a <%= link_to "service", :controller => "welcome", :action => "api_instructions" %>. You can also
    download the source and run FreeCite on your
    own server. FreeCite is distributed under the <a href="http://www.opensource.org/licenses/mit-license.php"MIT license.

FreeCite was inspired by
    ParsCit.
    Much thanks to ParsCit's maintainer, Isaac Councill.

FreeCite was developed through a partnership between the
    Brown
    University Library and Providence-based start-up
    Public Display,
    with funding from the Mellon Foundation.

FreeCite is implemented in Ruby on Rails and
    uses the CRF++ library
    implementation of conditional random fields. Our model is trained on the
    CORA dataset.

If you're interested in a tool like FreeCite, you should check out these other
    citation tools:

ParaCite

ParsCit

    <%= link_to "Let us know", :action => "feedback" %> of any other tools you'd like to see listed here.

<%= link_to "Please get in touch with us", :action => "feedback" %> if you have any feedback to share.

    <%= render :partial => "citations/parse_string" %>

<%= link_to "Learn about our API", :controller => "welcome", :action => "api_instructions" %>


fixed few small html issues with the signup form

      <%= render :partial => 'layouts/language' %>

<%= "Create Your Account"[:signup_title] %>

    <%= 'Choose your login name and your password then click "%s"'[:signup_info, 'Sign up'[:signup_button]] %>

    <% form_for(:user, :html => {:id => 'signup_form'}) do |f| -%>

        <%= f.label :login, 'Your login name'[:signup_login_name] %>

        <%= f.text_field :login %>

        <%= f.label :password, 'Your Password'[:signup_password] %>

        <%= f.password_field :password %>

        <%= f.label :password_confirmation, "Confirm Password"[:signup_confirm_password] %>

        <%= f.password_field :password_confirmation %>

      <%= call_hook :signup_form_password %>

      <%= render :partial => 'signup_agreement_checkbox' %>

        <%= f.label :email, "Your Email"[:signup_email] %>

        <%= f.text_field :email%>

        <%- unless current_site.require_user_email -%>

        <%= "Optional: used if you forget your password"[:signup_email_info] %>
        <%- end -%>

<%= submit_tag 'Sign up'[:signup_button] %>

      <%= hidden_field_tag 'redirect', params[:redirect] if params[:redirect] %>
    <%- end -%>

<%= "Usage Agreement"[:usage_agreement_heading] %>

      <%= GreenCloth.new("Usage agreement text goes here"[:usage_agreement_text]).to_html %>

      <%= render :partial => 'layouts/language' %>

<%= "Create Your Account"[:signup_title] %>

    <%= 'Choose your login name and your password then click "%s"'[:signup_info] % 'Sign up'[:signup_button] %>

    <% form_for(:user, :html => {:id => 'signup_form'}) do |f| -%>

        <%= 'Your login name'[:signup_login_name] %>

        <%= f.text_field :login %>

        <%= 'Your Password'[:signup_password]%>

        <%= f.password_field :password %>

        <%= "Confirm Password"[:signup_confirm_password] %>

        <%= f.password_field :password_confirmation %>

      <%= call_hook :signup_form_password %>

      <%= render :partial => 'signup_agreement_checkbox' %>

        <%= "Your Email"[:signup_email] %>

        <%= f.text_field :email%>
        <%- unless current_site.require_user_email -%>

        <%= "Optional: used if you forget your password"[:signup_email_info] %>
        <%- end -%>

<%= submit_tag 'Sign up'[:signup_button] %>

      <%= hidden_field_tag 'redirect', params[:redirect] if params[:redirect] %>
    <%- end -%>

<%= "Usage Agreement"[:usage_agreement_heading] %>

      <%= GreenCloth.new("Usage agreement text goes here"[:usage_agreement_text]).to_html %>


Add more actions button for the rest of the stats

<% action_panel :more => true do |p| -%>
<% end -%>

<% more_action_panel do |p| -%>
  <% @subpages.each do |page| -%>
    <%= p.link page[0], page[3] %>
  <% end -%>
<% end -%>

<%= render :partial => 'referrer_sources' %>

<%= subpage_display :emarketing, @subpages %>

<%= render :partial => 'referrer_sources' %>


notes field has raw html, legacy, sorry

notes field has raw html, legacy, sorry

<%
   # Displays a typical Umlaut response element in typical markup.
   # Pass in a ServiceType object for the response using Rails partial
   # :object or :collection convention

   #optional argument, :locals =>
   #    :show_source => default false, if true display the source of the link
   show_source ||= false

   service_type = standard_response_item # passed in via :object or :collection
   # passed in in :object or :collection
   view_data = service_type.view_data
%>

  <% if view_data[:link_supports_ajax_call]
  # Generate a hyperlink that will call our standard service action
  # due to special class for unobtrusive JS.
  %>
      <%= link_to(view_data[:display_text],
              {:controller=>'link_router',
              :id=>service_type.id},
              {:id => "svctype_link_#{service_type.id}",
              :target => "_blank",
              :class => "ajax_window"}) %>
  <% elsif (view_data[:content] )
     #collapsible content on page
  %>
    <% expand_contract_section(view_data[:display_text], "svc_id_#{service_type.id}") do %>

        <%= view_data[:content] %>

    <% end %>

  <% else
    # Ordinary href link.
  %>
    <%= link_to view_data[:display_text], {:controller=>'link_router', :id=>service_type.id}, 'target'=>"_blank", 'id' => "svctype_link_#{service_type.id}" %>
  <% end %>

<% if show_source %>

from <%= view_data[:source] || service_type.service_response.service.display_name %>

<% end %>

<% unless view_data[:coverage].blank? %>

  <%= view_data[:coverage] %>

<% end
%>
<% unless view_data[:notes].blank? %>
  <%-
    # legacy, the 'notes' field can take raw html, we need to leave it that way for
    #now, but it's not great.
    -%>

<%= view_data[:notes].html_safe %>

<% end %>
<% unless view_data[:authentication].blank? %>

Authentication: <%= view_data[:authentication] %>

<% end %>

<% if (!view_data[:match_reliability].blank?) && view_data[:match_reliability] != ServiceResponse::MatchExact %>

    <% unless view_data[:edition_str].blank? %>
      Edition information <%= view_data[:edition_str] %>
    <% else %>
      May be alternate edition.
    <% end %>

<% end %>

  Debug info: <%= service_type.service_response.service.service_id %>

  <% unless view_data[:debug_info].blank? %>
    ; <%= view_data[:debug_info] %>
  <% end %>

<%
   # Displays a typical Umlaut response element in typical markup.
   # Pass in a ServiceType object for the response using Rails partial
   # :object or :collection convention

   #optional argument, :locals =>
   #    :show_source => default false, if true display the source of the link
   show_source ||= false

   service_type = standard_response_item # passed in via :object or :collection
   # passed in in :object or :collection
   view_data = service_type.view_data
%>

  <% if view_data[:link_supports_ajax_call]
  # Generate a hyperlink that will call our standard service action
  # due to special class for unobtrusive JS.
  %>
      <%= link_to(view_data[:display_text],
              {:controller=>'link_router',
              :id=>service_type.id},
              {:id => "svctype_link_#{service_type.id}",
              :target => "_blank",
              :class => "ajax_window"}) %>
  <% elsif (view_data[:content] )
     #collapsible content on page
  %>
    <% expand_contract_section(view_data[:display_text], "svc_id_#{service_type.id}") do %>

        <%= view_data[:content] %>

    <% end %>

  <% else
    # Ordinary href link.
  %>
    <%= link_to view_data[:display_text], {:controller=>'link_router', :id=>service_type.id}, 'target'=>"_blank", 'id' => "svctype_link_#{service_type.id}" %>
  <% end %>

<% if show_source %>

from <%= view_data[:source] || service_type.service_response.service.display_name %>

<% end %>

<% unless view_data[:coverage].blank? %>

  <%= view_data[:coverage] %>

<% end
%>
<% unless view_data[:notes].blank? %>

<%= view_data[:notes] %>

<% end %>
<% unless view_data[:authentication].blank? %>

Authentication: <%= view_data[:authentication] %>

<% end %>

<% if (!view_data[:match_reliability].blank?) && view_data[:match_reliability] != ServiceResponse::MatchExact %>

    <% unless view_data[:edition_str].blank? %>
      Edition information <%= view_data[:edition_str] %>
    <% else %>
      May be alternate edition.
    <% end %>

<% end %>

  Debug info: <%= service_type.service_response.service.service_id %>

  <% unless view_data[:debug_info].blank? %>
    ; <%= view_data[:debug_info] %>
  <% end %>


Fix del.icio.us HTML.  Closes #457

Fix del.icio.us HTML.  Closes #457

git-svn-id: 70ab0960c3db1cbf656efd6df54a8f3de72dc710@692 820eb932-12ee-0310-9ca8-eeb645f39767

<%= form_tag({},{:id => 'configure_'+@sidebar.id.to_s, :class=>'configblock'}) %>
  Feed URL
  <input class="text" type="text" name="configure[feed]" value="<%=h @sidebar.staged_config['feed'] %>"/>

  Items limit
  <input class="text" type="text" name="configure[count]" value="<%=h @sidebar.staged_config['count'] %>"/>

  Group links by day
  <input type="checkbox" id="configure_<%= @sidebar.id.to_s %>_groupdate" name="configure[groupdate]" <% if @sidebar.staged_config['groupdate'] %>checked="checked"<% end %>/>

  Show Description
  <input type="checkbox" id="configure_<%= @sidebar.id.to_s %>_description" name="configure[description]" <% if @sidebar.staged_config['description'] %>checked="checked"<% end %>/>

  Allow links in Description
  <input type="checkbox" id="configure_<%= @sidebar.id.to_s %>_desclink" name="configure[desclink]" <% if @sidebar.staged_config['desclink'] %>checked="checked"<% end %>/>
<%= end_form_tag %>

<%= observe_form "configure_"+@sidebar.id.to_s,
    :url => { :action => "save_config", :id=>@sidebar.id},
    :with => 'value'
 %>

<%= form_tag({},{:id => 'configure_'+@sidebar.id.to_s, :class=>'configblock'}) %>
  Feed URL
  <input class="text" type="text" name="configure[feed]" value="<%=h @sidebar.staged_config['feed'] %>"/>

  Items limit
  <input class="text" type="text" name="configure[count]" value="<%=h @sidebar.staged_config['count'] %>"/>

  Group links by day
  <input type="checkbox" id="configure_<%= @sidebar.id.to_s %>_groupdate" name="configure[groupdate]" <% if @sidebar.staged_config['groupdate'] %>checked="checked"<% end %>>

  Show Description
  <input type="checkbox" id="configure_<%= @sidebar.id.to_s %>_description" name="configure[description]" <% if @sidebar.staged_config['description'] %>checked="checked"<% end %>>

  Allow links in Description
  <input type="checkbox" id="configure_<%= @sidebar.id.to_s %>_desclink" name="configure[desclink]" <% if @sidebar.staged_config['desclink'] %>checked="checked"<% end %>>
<%= end_form_tag %>

<%= observe_form "configure_"+@sidebar.id.to_s,
    :url => { :action => "save_config", :id=>@sidebar.id},
    :with => 'value'
 %>


Show link to current Alaveteli version on debug page

<% @title = "Debug" %>

<%=@title%>

You are <%= h @http_auth_user %>

Version numbers

Alaveteli version: <%= link_to @current_version, @github_origin + @current_version %>

Alaveteli branch: <%= link_to @current_branch, @github_origin + @current_branch %>

Alaveteli commit: <%= link_to @current_commit, @github_origin + @current_commit %>

RUBY_VERSION <%=h RUBY_VERSION %>

Rails::VERSION::STRING <%=h Rails::VERSION::STRING%>

TMail::VERSION::STRING <%=h TMail::VERSION::STRING%>

Xapian::version_string <%=h Xapian::version_string%>

Configuration

environment: <%=h Rails::configuration.environment %>

environment_path: <%=h Rails::configuration.environment_path %>

framework_paths: <%=h Rails::configuration.framework_paths.to_yaml %>

Environment variables

<% for k,v in @request_env %>

<%=h k%>	<%=h v%>

<% end %>

Parameters

<% for k,v in params %>

<%=h k%>	<%=h v%>

<% end %>

Session

<% for k,v in session %>

<%=h k%>	<%=h v%>

<% end %>

<% @title = "Debug" %>

<%=@title%>

You are <%= h @http_auth_user %>

Version numbers

Alaveteli branch: <%= link_to @current_branch, @github_origin + @current_branch %>

Alaveteli commit: <%= link_to @current_commit, @github_origin + @current_commit %>

RUBY_VERSION <%=h RUBY_VERSION %>

Rails::VERSION::STRING <%=h Rails::VERSION::STRING%>

TMail::VERSION::STRING <%=h TMail::VERSION::STRING%>

Xapian::version_string <%=h Xapian::version_string%>

Configuration

environment: <%=h Rails::configuration.environment %>

environment_path: <%=h Rails::configuration.environment_path %>

framework_paths: <%=h Rails::configuration.framework_paths.to_yaml %>

Environment variables

<% for k,v in @request_env %>

<%=h k%>	<%=h v%>

<% end %>

Parameters

<% for k,v in params %>

<%=h k%>	<%=h v%>

<% end %>

Session

<% for k,v in session %>

<%=h k%>	<%=h v%>

<% end %>


Remove all navigation items for now. They will be added back in once PP frontend includes js for the mobile menu and dropdown submenus

<!DOCTYPE html>

  <title>ProtectedPlanet API</title>

    <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="/protectedplanet-frontend/dist/style/main.css" rel="stylesheet">
  <link href="/custom.css" rel="stylesheet">

          protected planet®

  <%= yield %>

       ProtectedPlanet 2014-<%= Date.today.year %>. All rights reserved

          Send Feedback

  <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet">

  <% if settings.environment == :production %>

  <% end %>

<!DOCTYPE html>

  <title>ProtectedPlanet API</title>

    <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="/protectedplanet-frontend/dist/style/main.css" rel="stylesheet">
  <link href="/custom.css" rel="stylesheet">

          protected planet®

        About

        Resources

        Terms & Conditions

             Search

  <%= yield %>

       ProtectedPlanet 2014-<%= Date.today.year %>. All rights reserved

          Send Feedback

  <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet">

  <% if settings.environment == :production %>

  <% end %>


removed an old comment from when we had the ajax stuff

<% # You need to pass a local variable called 'manage' that is true or false %>
<% # i.e. like <%= render_partial 'task_list', nil, 'task' => task, 'manage' => true %> %>

<% # if true, the partial will also display edit and destroy buttons %>

    <%= task.title %>

      <% for user in task.users %>
      <%= user.name %>

      <% end %>

      <%= task.repeat == 0 ? "Daily" : '' %>
      <%= task.repeat == 1 ? "Every Sunday" : '' %>
      <%= task.repeat == 2 ? "Every Monday" : '' %>
      <%= task.repeat == 3 ? "Every Tuesday" : '' %>
      <%= task.repeat == 4 ? "Every Wednesday" : '' %>
      <%= task.repeat == 5 ? "Every Thursday" : '' %>
      <%= task.repeat == 6 ? "Every Friday" : '' %>
      <%= task.repeat == 7 ? "Every Saturday" : '' %>

    <% if task.done_by_schedule %>
       <%= nice_date task.last_done_date %>
    <% else %>
       <% if manage == true %>
        [<%= link_to 'Just Done', :controller => 'tasks', :action => 'done', :id => task %>]
       <% else %>
        Not done on schedule
       <% end %>
    <% end %>

    <%= link_to 'Show', :action => 'show', :id => task %>
    <% if manage == true %>
    <%= link_to 'Edit', :action => 'edit', :id => task %>
    <%= link_to 'Destroy', { :action => 'destroy', :id => task }, :confirm => 'Are you sure?', :post => true %>
    <% end %>

<% # You need to pass a local variable called 'manage' that is true or false %>
<% # You need to pass a local variable called 'div_id' that is unique for that task. Just use "task#{task.id}" %>
<% # i.e. like <%= render_partial 'task_list', nil, 'task' => task, 'manage' => true %> %>

<% # if true, the partial will also display edit and destroy buttons %>

    <%= task.title %>

      <% for user in task.users %>
      <%= user.name %>

      <% end %>

      <%= task.repeat == 0 ? "Daily" : '' %>
      <%= task.repeat == 1 ? "Every Sunday" : '' %>
      <%= task.repeat == 2 ? "Every Monday" : '' %>
      <%= task.repeat == 3 ? "Every Tuesday" : '' %>
      <%= task.repeat == 4 ? "Every Wednesday" : '' %>
      <%= task.repeat == 5 ? "Every Thursday" : '' %>
      <%= task.repeat == 6 ? "Every Friday" : '' %>
      <%= task.repeat == 7 ? "Every Saturday" : '' %>

    <% if task.done_by_schedule %>
       <%= nice_date task.last_done_date %>
    <% else %>
       <% if manage == true %>
        [<%= link_to 'Just Done', :controller => 'tasks', :action => 'done', :id => task %>]
       <% else %>
        Not done on schedule
       <% end %>
    <% end %>

    <%= link_to 'Show', :action => 'show', :id => task %>
    <% if manage == true %>
    <%= link_to 'Edit', :action => 'edit', :id => task %>
    <%= link_to 'Destroy', { :action => 'destroy', :id => task }, :confirm => 'Are you sure?', :post => true %>
    <% end %>


Fixed so that any links within this partial will go to the cages controller.

    Name
    Room
    Bats
    Food
    Owner
    Fed by
    <% if @list_all %>
      Destroyed
    <% end %>

<% for cage in cage_list %>

      <%= link_to cage.name, :controller => 'cages', :action => 'show', :id => cage %>

    <%= cage.room %>
	<%=h cage.bats.count %>
    <%=h cage.food %>g
    <%=h cage.user ? cage.user.name : "NP" %>
    <%=h cage.fed_by %>
  <% if @list_all %>
  <%=h nice_date(cage.date_destroyed) %>
<% end %>
    <%= link_to 'Edit', :controller => 'cages', :action => 'edit', :id => cage %>

	<% if cage.date_destroyed == nil %>
	<%= link_to 'Deactivate', { :controller => 'cages', :action => 'deactivate', :id => cage }, :confirm => 'Are you sure?', :post => true %>
    <% else %>
	<%=  link_to 'Reactivate', { :controller => 'cages', :action => 'reactivate', :id => cage }, :confirm => 'Are you sure?', :post => true %>
    <% end %>

<% end %>

    Name
    Room
    Bats
    Food
    Owner
    Fed by
    <% if @list_all %>
      Destroyed
    <% end %>

<% for cage in cage_list %>

      <%= link_to cage.name, :controller => 'cages', :action => 'show', :id => cage %>

    <%= cage.room %>
	<%=h cage.bats.count %>
    <%=h cage.food %>g
    <%=h cage.user ? cage.user.name : "NP" %>
    <%=h cage.fed_by %>
  <% if @list_all %>
  <%=h nice_date(cage.date_destroyed) %>
<% end %>
    <%= link_to 'Edit', :action => 'edit', :id => cage %>

	<% if cage.date_destroyed == nil %>
	<%= link_to 'Deactivate', { :action => 'deactivate', :id => cage }, :confirm => 'Are you sure?', :post => true %>
    <% else %>
	<%=  link_to 'Reactivate', { :action => 'reactivate', :id => cage }, :confirm => 'Are you sure?', :post => true %>
    <% end %>

<% end %>


display overdue dates in red in funnel view

  <%= funnel_defect.id %>
  <%= link_to_item funnel_defect %>
  <%= h funnel_defect.detail.external_reference %>
  <%= funnel_defect.status %>
  <%= link_to_item funnel_defect.person %>
  <td <%= overdue_class(funnel_defect) %>> <%= funnel_defect.due_on.strftime(date_format) unless funnel_defect.due_on.nil? %>
  <%= funnel_defect.priority_code %>
  <%= link_to_item funnel_defect.detail.phase_detected_milestone %>
  <%= link_to_item(funnel_defect.detail.last_component) unless funnel_defect.detail.last_component.nil?  %>
  <%= tx_no_p(truncate(funnel_defect.comments[-1].body, 60)) unless funnel_defect.comments.empty? %>

  <%= funnel_defect.id %>
  <%= link_to_item funnel_defect %>
  <%= h funnel_defect.detail.external_reference %>
  <%= funnel_defect.status %>
  <%= link_to_item funnel_defect.person %>
  <%= funnel_defect.due_on.strftime(date_format) %>
  <%= funnel_defect.priority_code %>
  <%= link_to_item funnel_defect.detail.phase_detected_milestone %>
  <%= link_to_item(funnel_defect.detail.last_component) unless funnel_defect.detail.last_component.nil?  %>
  <%= tx_no_p(truncate(funnel_defect.comments[-1].body, 60)) unless funnel_defect.comments.empty? %>


rolling back my change to allow the removal of the last association in a subform. i'm stumped. going to open an issue ticket.

<%
parent_record = @record
associated = column.singular_association? ? [parent_record.send(column.name)].compact : parent_record.send(column.name)
associated = associated.sort_by {|r| r.new_record? ? 99999999999 : r.id} unless column.association.options.has_key?(:order)

show_blank_record = (column.plural_association? or (column.singular_association? and associated.empty?))
show_blank_record = false if column.through_association?
show_blank_record = false unless column.association.klass.authorized_for?(:action => :create)

-%>

<%= column.label -%> (<%= link_to_visibility_toggle(:default_visible => !column.collapsed) -%>)

<div <%= 'style="display: none;"' if column.collapsed -%>>

  <% @record = column.association.klass.new -%>
  <%= render :partial => 'form_association_header', :locals => {:parent_record => parent_record} %>

  <tbody id="<%= sub_form_list_id(:association => column.name) %>">
    <% associated.each_index do |index| %>
    <% @record = associated[index] -%>
    <% if @record.errors.count -%>

      <td colspan="<%= active_scaffold_config_for(@record.class).subform.columns.length + 1 %>">
        <%= error_messages_for :record %>

    <% end %>
    <tr class="association-record <%= 'association-record-new' if @record.new_record? -%>">
      <% scope = column.plural_association? ? "[#{column.name}][#{@record.id || generate_temporary_id}]" : "[#{column.name}]" -%>
      <%= render :partial => 'form_association_record', :locals => {:scope => scope, :parent_record => parent_record} %>

    <% end -%>

    <% if show_blank_record -%>
    <% @record = column.association.klass.new -%>

      <% scope = column.plural_association? ? "[#{column.name}][#{generate_temporary_id}]" : "[#{column.name}]" -%>
      <%= render :partial => 'form_association_record', :locals => {:scope => scope, :parent_record => parent_record} %>

    <% end -%>

<%= render :partial => 'form_association_footer', :locals => {:parent_record => parent_record, :column => column, :associated => associated} -%>

<% @record = parent_record -%>

<%
parent_record = @record
associated = column.singular_association? ? [parent_record.send(column.name)].compact : parent_record.send(column.name)
associated = associated.sort_by {|r| r.new_record? ? 99999999999 : r.id} unless column.association.options.has_key?(:order)

show_blank_record = (column.plural_association? or (column.singular_association? and associated.empty?))
show_blank_record = false if column.through_association?
show_blank_record = false unless column.association.klass.authorized_for?(:action => :create)

-%>

<%= column.label -%> (<%= link_to_visibility_toggle(:default_visible => !column.collapsed) -%>)

<div <%= 'style="display: none;"' if column.collapsed -%>>
<%= hidden_field_tag "record[#{column.name}]" %>

  <% @record = column.association.klass.new -%>
  <%= render :partial => 'form_association_header', :locals => {:parent_record => parent_record} %>

  <tbody id="<%= sub_form_list_id(:association => column.name) %>">
    <% associated.each_index do |index| %>
    <% @record = associated[index] -%>
    <% if @record.errors.count -%>

      <td colspan="<%= active_scaffold_config_for(@record.class).subform.columns.length + 1 %>">
        <%= error_messages_for :record %>

    <% end %>
    <tr class="association-record <%= 'association-record-new' if @record.new_record? -%>">
      <% scope = column.plural_association? ? "[#{column.name}][#{@record.id || generate_temporary_id}]" : "[#{column.name}]" -%>
      <%= render :partial => 'form_association_record', :locals => {:scope => scope, :parent_record => parent_record} %>

    <% end -%>

    <% if show_blank_record -%>
    <% @record = column.association.klass.new -%>

      <% scope = column.plural_association? ? "[#{column.name}][#{generate_temporary_id}]" : "[#{column.name}]" -%>
      <%= render :partial => 'form_association_record', :locals => {:scope => scope, :parent_record => parent_record} %>

    <% end -%>

<%= render :partial => 'form_association_footer', :locals => {:parent_record => parent_record, :column => column, :associated => associated} -%>

<% @record = parent_record -%>


Fixed delete links on /pages/index

Fixed delete links on /pages/index

<% @depth ||= 0 %>

  <td style="padding-left: <%= @depth %>em"><%= CortexReaver::MainController.a(@page.title, @page.url) %>
  <% if user.can_edit? @page %>
    <a href="/pages/edit/<%= @page.id %>">Edit
  <% end %>
  <% if user.can_delete? @page %>
    <%= a 'Delete', CortexReaver::PageController.r(:delete, @page.id), :onclick => "return confirm('Are you sure you want to delete this page?');" %>
  <% end %>

<% @page.pages.each do |page| %>
  <%= CortexReaver::PageController.render_view 'row', :page => page, :depth => @depth + 1 %>
<% end %>

<% @depth ||= 0 %>

  <td style="padding-left: <%= @depth %>em"><%= CortexReaver::MainController.a(@page.title, @page.url) %>
  <% if user.can_edit? @page %>
    <a href="/pages/edit/<%= @page.id %>">Edit
  <% end %>
  <% if user.can_delete? @page %>
    <%= a 'Delete', CortexReaver::PageController.r(:delete, :id => @page.id), :onclick => "return confirm('Are you sure you want to delete this page?');" %>
  <% end %>

<% @page.pages.each do |page| %>
  <%= CortexReaver::PageController.render_view 'row', :page => page, :depth => @depth + 1 %>
<% end %>


Request prefilled e-mail text change

Request prefilled e-mail text change

Added warning about personal information handeling in answers and
attachements.

Žádost o zpřístupnění informace ve smyslu zákona č. 106/1999 Sb., o svobodném přístupu k
informacím.

Povinný subjekt:
<%= @outgoing_message.info_request.public_body.name %>

Žadatel:
<%-# !!!IF YOU CHANGE THE FORMAT OF THE BLOCK BELOW, ADD A NEW CENSOR RULE!!! -%>
===================================================================
# Jméno: <%= @outgoing_message.info_request.user.name %>
# Datum narození:  <%= @outgoing_message.info_request.user.dob %>
<%= @outgoing_message.info_request.user.address.gsub(/^/, "# Adresa: ") %>
===================================================================

Žádám o následující informaci:

<%= @outgoing_message.body.strip %>

Informaci poskytněte elektronicky na email: <%= @outgoing_message.info_request.incoming_email %>

Vámi poskytnutá informace bude zveřejněna na stránkách www.informaceprovsechny.cz. Vzhledem k tomu, že účelem těchto stránek je umožnit komukoliv svobodný přístup k informacím, je nutné, abyste ve své odpovědi nikde neuváděli mé osobní údaje (například adresu nebo datum narození). Pokud takové údaje do své odpovědi zahrnete, porušujete zákon 101/2000 Sb., o ochraně osobních údajů.

Řádným a včasným zpřístupněním informace na základě této žádosti nebo jiným posouzením
žádosti podle zákona č. 106/1999 Sb., o svobodném přístupu k informacím, beru na vědomí, že jste splnili svou povinnosti podle výše uvedeného zákona.
Datum podání:

<%= simple_date(Time.now) %>
-------------------------------------------------------------------

<%= render :partial => 'followup_footer' %>

-------------------------------------------------------------------

Žádost o zpřístupnění informace ve smyslu zákona č. 106/1999 Sb., o svobodném přístupu k
informacím.

Povinný subjekt:
<%= @outgoing_message.info_request.public_body.name %>

Žadatel:
<%-# !!!IF YOU CHANGE THE FORMAT OF THE BLOCK BELOW, ADD A NEW CENSOR RULE!!! -%>
===================================================================
# Jméno: <%= @outgoing_message.info_request.user.name %>
# Datum narození:  <%= @outgoing_message.info_request.user.dob %>
<%= @outgoing_message.info_request.user.address.gsub(/^/, "# Adresa: ") %>
===================================================================

Žádám o následující informaci:

<%= @outgoing_message.body.strip %>

Informaci poskytněte elektronicky na email: <%= @outgoing_message.info_request.incoming_email %>

Řádným a včasným zpřístupněním informace na základě této žádosti nebo jiným posouzením
žádosti podle zákona č. 106/1999 Sb., o svobodném přístupu k informacím, beru na vědomí, že
jste splnili svou povinnosti podle výše uvedeného zákona.
Datum podání:

<%= simple_date(Time.now) %>
-------------------------------------------------------------------

<%= render :partial => 'followup_footer' %>

-------------------------------------------------------------------


Fix list calculations, _erbout has been removed

<% display_class = ( @records.kind_of?(Array) ? @records.first : @records ) -%>
<tr id="<%= active_scaffold_calculations_id %>" class="active-scaffold-calculations">
  <% active_scaffold_config.list.columns.each do |column| -%>

      <% if column.calculation? -%>
        <%
        calculation = column_calculation(column)

        override_formatter = "render_#{column.name}_#{column.calculate}"
        calculation = self.method(override_formatter).call(calculation) if respond_to? override_formatter

        -%>
        <%= calculation.to_s %>
      <% else -%>

      <% end -%>

  <% end -%>
  <% unless active_scaffold_config.action_links.empty? -%>

  <% end -%>

<% display_class = ( @records.kind_of?(Array) ? @records.first : @records ) -%>
<tr id="<%= active_scaffold_calculations_id %>" class="active-scaffold-calculations">
  <% active_scaffold_config.list.columns.each do |column| -%>

      <% if column.calculation? -%>
        <%
        calculation = column_calculation(column)

        override_formatter = "render_#{column.name}_#{column.calculate}"
        calculation = self.method(override_formatter).call(calculation) if respond_to? override_formatter

        _erbout.concat calculation.to_s
        -%>
      <% else -%>

      <% end -%>

  <% end -%>
  <% unless active_scaffold_config.action_links.empty? -%>

  <% end -%>


project doesnt respond_to?:can_publish?

project doesnt respond_to?:can_publish?

<%
   object ||= nil
   set_parameters_for_sharing_form object
   disable_advanced_view ||= nil
   show_advanced_permissions = !@resource.respond_to?(:has_advanced_permissions?) || @resource.has_advanced_permissions?
   default_projects_access_type = @resource.is_asset? ? Policy::ACCESSIBLE : Policy::EDITING
   default_consortium_access_type = Policy::VISIBLE
   #@resource.projects = current_user.person.projects if !Seek::Config.is_virtualliver && @resource.new_record? && @resource.errors.empty? && (current_user.person.projects.count == 1)
   can_publish = @resource.respond_to?(:can_publish) ? @resource.can_publish? : true
%>
<%# initialization: required to keep javascript independent of the access type codes, to allow the use the constants instead -%>
<%= render :partial=>"assets/sharing_constants" %>

<%# this hidden input will submit all permission data with the form -%>
<%= hidden_field_tag "sharing[permissions][contributor_types]", "" -%>
<%= hidden_field_tag "sharing[permissions][values]", "" -%>

    <%= help_icon("Here you can specify who can see#{', download' if @resource.is_downloadable?} and edit this #{@resource_type}.") -%>
    Sharing

        Here you can specify who can view the summary of<% if @resource.is_downloadable? %>, get access to the content of,<% end %> and edit the <%= @resource_type -%>.
        <%= link_to_function "More info " + expand_image, visual_effect(:toggle_blind, "more_sharing_info", :duration => 0.3) -%>

          You may:

Keep the <%= @resource_type -%> private, and only visible to yourself.

Share within the selected projects and with all other users that are a member of a <%= Seek::Config.project_name %> project.

Share with the all visitors (including anonymous visitors with no login)

You can share with the all visitors right away if you are the gatekeeper or if the projects associated with this <%= @resource_type -%> have no gatekeeper

Or you can request the gatekeepers for their approval to share with all visitors

          <% if !disable_advanced_view%>

Define more fine-grained sharing in the Advanced sharing: you can share within your Project/Institution only,
 with specific individuals, or set up custom favourite groups for people you regularly need to share with.

          <% end %>

<label for="sharing_scope_<%= Policy::PRIVATE -%>">
            <input type="hidden" id='access_type_select_<%= Policy::PRIVATE -%>' name="sharing[access_type_<%= Policy::PRIVATE -%>]" value="<%= Policy::NO_ACCESS -%>">
            <input <%= 'checked="checked"' if @sharing_mode == Policy::PRIVATE %> id="sharing_scope_<%= Policy::PRIVATE -%>" name="sharing[sharing_scope]"
                                                                                value="<%= Policy::PRIVATE -%>" type="radio" />
            - Keep this <%= @resource_type -%> private (only visible to you)

          <%= additional_advanced_permissions_included @resource, Policy::PRIVATE -%>

Or share it with..

            <input type="radio" <%= 'checked="checked"' if @sharing_mode == Policy::ALL_SYSMO_USERS -%> id="sharing_scope_<%= Policy::ALL_SYSMO_USERS -%>" name="sharing[sharing_scope]" value="<%= Policy::ALL_SYSMO_USERS -%>" />
            - Members of projects associated with this <%= @resource_type -%>:

             <select name="sharing[your_proj_access_type]" id="sharing_your_proj_access_type">
                 <%= policy_selection_options([Policy::VISIBLE,Policy::ACCESSIBLE,Policy::EDITING,Policy::MANAGING], @resource, your_project_access_type(@policy, @resource) || default_projects_access_type) -%>
             </select>

            ... and all other project members:
             <%= render :partial => "assets/sharing_form_access_type_dropdown", :locals => { :access_type_selector_for_scope => Policy::ALL_SYSMO_USERS,
               :sharing_scope => Policy::ALL_SYSMO_USERS, :access_type => (@resource.respond_to?(:policy) && @resource.policy.try(:sharing_scope)==Policy::ALL_SYSMO_USERS ? @access_mode : default_consortium_access_type), :access_type_options=>[Policy::NO_ACCESS,Policy::VISIBLE,Policy::ACCESSIBLE,Policy::EDITING] } -%>
             <%= additional_advanced_permissions_included @resource, Policy::ALL_SYSMO_USERS -%>

          <label for="sharing_scope_<%= Policy::EVERYONE -%>">
            <input type="radio" <%= 'checked="checked"' if @sharing_mode == Policy::EVERYONE -%> id="sharing_scope_<%= Policy::EVERYONE -%>" name="sharing[sharing_scope]"
                   value="<%= Policy::EVERYONE -%>" <%= 'disabled="true"' if !can_publish -%>/>
            - All visitors (including anonymous visitors with no login):

              <%= render :partial => "assets/sharing_form_access_type_dropdown", :locals => { :access_type_selector_for_scope => Policy::EVERYONE,
            :sharing_scope => @sharing_mode, :access_type => @access_mode } -%>
           <%= additional_advanced_permissions_included @resource, Policy::EVERYONE -%>

              <%= check_box_tag 'sharing[request_publish_approval]', 1, false, :disabled => can_publish%>
              - Request approval from the gatekeepers to share with all visitors

    <% if @resource.new_record? && @resource.errors.empty? -%>

    <% end -%>

    <% if !disable_advanced_view %>
      <%= link_to_function "Advanced permissions " + expand_image, :class => 'advanced_sharing_link', :style => "display:" + (show_advanced_permissions ? 'none;' : 'block;'), :id =>'advanced_sharing_expand_image' do |page|
          page.visual_effect :toggle_blind, "advanced sharing", :duration => 0.5
          page["advanced_sharing_expand_image"].toggle
          page["advanced_sharing_collapse_image"].toggle
      end
      -%>
      <%= link_to_function "Advanced permissions " + collapse_image, :class => 'advanced_sharing_link', :style => "display:" + (show_advanced_permissions ? 'block;' : 'none;'), :id =>'advanced_sharing_collapse_image' do |page|
          page.visual_effect :toggle_blind, "advanced sharing", :duration => 0.5
          page["advanced_sharing_expand_image"].toggle
          page["advanced_sharing_collapse_image"].toggle
      end
      -%>

      <div id="advanced sharing" class='sharing_box_form' style="display:<%= show_advanced_permissions ? 'block;' : 'none;' -%>">

Additional fine-grained sharing permissions

              So far you have selected to share this <%= @resource_type -%> with:

              Loading...

              Build up the list of people and groups to share with.
              Select from the options below and click "Add" to apply
              your choices and add collaborators to your current selection:

                <%= image_tag icon_filename_for_key("spinner"), :id => "f_group_deleting_spinner", :alt=>"loading...", :title=>"loading...", :style => "display: none; vertical-align: middle; float: right;" -%>
                <%= help_icon("Here you can choose your favourite groups to share this #{@resource_type} with.") -%>
                Favourite Groups

                  <% favourite_groups = FavouriteGroup.get_all_without_blacklists_and_whitelists(current_user.id) -%>
                  <% f_group_select_options = (favourite_groups.blank? ? "<option value=\"\">You don't have any favourite groups</option>" : options_for_select(favourite_groups)) -%>

                  <%= select_tag "favourite_group_select", f_group_select_options, :style => "width: 82%; vertical-align: middle; margin-right: 0.4em;", :disabled => (favourite_groups.blank?) -%>

                  <%= link_to "Add", "", :id => "add_f_group_link", :style => "font-weight: bold; vertical-align: middle;", :disabled => (favourite_groups.blank?),
                              :onclick => "javascript: if($('favourite_group_select').disabled) return(false); addContributor('FavouriteGroup', $('favourite_group_select').options[$('favourite_group_select').selectedIndex].text, parseInt($('favourite_group_select').options[$('favourite_group_select').selectedIndex].value), #{Policy::DETERMINED_BY_GROUP}); return(false);" -%>

                  <li id="edit_f_group_li" style="display: <%= favourite_groups.blank? ? "none" : "block" -%>; list-style-type: disc; padding: 0;"><%= favourite_group_popup_link_action_edit(@resource.class.name) -%>

                  <li id="delete_f_group_li" style="display: <%= favourite_groups.blank? ? "none" : "block" -%>; list-style-type: disc; padding: 0;">
                    <%= link_to "Delete selected favourite group", delete_favourite_group_path(0), :onclick => "deleteSelectedFavouriteGroup(); return(false);" -%>

<%= favourite_group_popup_link_action_new(@resource.class.name) -%>

                <%= help_icon("Here you can choose projects, institutions and workgroups to share this #{@resource_type} with.") -%>
                Projects and Institutions

                  <% right_arrow_image = icon_filename_for_key("arrow_right") -%>

                  Step 1
                  <%= image_tag right_arrow_image, :style => "vertical-align: middle; padding: 0 0.8em;" -%>

                  Step 2
                  <%= image_tag right_arrow_image, :style => "vertical-align: middle; padding: 0 0.8em;" -%>

                  Step 3

                    <input type="hidden" id="proj_select_step_index" value="1">

                      <%= image_tag icon_filename_for_key("spinner"), :id => "institutions_loading_spinner", :alt=>"loading...", :title=>"loading...", :style => "display: none; vertical-align: middle; float: right;" -%>
                      Step 1: Select a project
                      <%= select("proj_project", "select",
                                 Project.find(:all).collect { |p| [p.name, p.id] },
                                 {:include_blank => 'All Projects @ Institution (from Step 2)'}, {:style => "width: 100%; vertical-align: middle; margin: 0.3em 0;"}) -%>

                      Step 2: Select scope of the project
                      <%= select_tag("proj_institution_select", nil, {:style => "width: 100%; vertical-align: middle; margin: 0.3em 0;"}) -%>

                      Step 3: Choose access rights, review and
                      submit

                      <select name="proj_access_type_select" id="proj_access_type_select" onchange="javascript: replaceReviewWorkGroupURL();" style="width: 100%; vertical-align: middle; margin: 0.3em 0;">
                        <%= policy_selection_options [Policy::NO_ACCESS, Policy::VISIBLE, Policy::ACCESSIBLE, Policy::EDITING, Policy::MANAGING], @resource -%>
                      </select>

                        <%= link_to "< Previous step", "", :onclick => "javascript: projectInstitutionStepAction(-1); return(false);", :style => "font-weight: bold;" -%>

                        <%= link_to "Next step >", "", :onclick => "javascript: projectInstitutionStepAction(1); return(false);", :style => "font-weight: bold;" -%>

                          <%= link_to "Add immediately", "", :onclick => "javascript: addProjectInstitution(); return(false);", :style => "font-weight: bold; padding: 0;" -%>

<%= workgroup_member_review_popup_link(@resource.class.name) -%>

                <%= help_icon("Here you can specify individual people to share this #{@resource_type} with.") -%>
                Individual People

                    Please type names of people to share this <%= @resource_type -%> with into the box below -
                    suggestions will be displayed as you type.
                    Select access rights from drop-down menu; these will be applied to all chosen people.
                    Clicking "Add" will add selected people to the list.

                          ^_^<input type="text" id="ip_hidden_input" tabindex="-1">

                            <input type="text" size="1" tabindex="" id="ip_autocomplete_input"/>

Type the name of a friend, friend list, or email address

                        <select name="individual_people_access_type_select" id="individual_people_access_type_select" style="width: 344px; vertical-align: middle; margin-top: 0.3em;">
                          <%= policy_selection_options nil, @resource -%>
                        </select>

                        <%= link_to "Add", "", :onclick => "javascript: addIndividualPeople(); return(false);" -%>

  <% end %>

<%
   object ||= nil
   set_parameters_for_sharing_form object
   disable_advanced_view ||= nil
   show_advanced_permissions = !@resource.respond_to?(:has_advanced_permissions?) || @resource.has_advanced_permissions?
   default_projects_access_type = @resource.is_asset? ? Policy::ACCESSIBLE : Policy::EDITING
   default_consortium_access_type = Policy::VISIBLE
   #@resource.projects = current_user.person.projects if !Seek::Config.is_virtualliver && @resource.new_record? && @resource.errors.empty? && (current_user.person.projects.count == 1)
   can_publish = @resource.can_publish?
%>
<%# initialization: required to keep javascript independent of the access type codes, to allow the use the constants instead -%>
<%= render :partial=>"assets/sharing_constants" %>

<%# this hidden input will submit all permission data with the form -%>
<%= hidden_field_tag "sharing[permissions][contributor_types]", "" -%>
<%= hidden_field_tag "sharing[permissions][values]", "" -%>

    <%= help_icon("Here you can specify who can see#{', download' if @resource.is_downloadable?} and edit this #{@resource_type}.") -%>
    Sharing

        Here you can specify who can view the summary of<% if @resource.is_downloadable? %>, get access to the content of,<% end %> and edit the <%= @resource_type -%>.
        <%= link_to_function "More info " + expand_image, visual_effect(:toggle_blind, "more_sharing_info", :duration => 0.3) -%>

          You may:

Keep the <%= @resource_type -%> private, and only visible to yourself.

Share within the selected projects and with all other users that are a member of a <%= Seek::Config.project_name %> project.

Share with the all visitors (including anonymous visitors with no login)

You can share with the all visitors right away if you are the gatekeeper or if the projects associated with this <%= @resource_type -%> have no gatekeeper

Or you can request the gatekeepers for their approval to share with all visitors

          <% if !disable_advanced_view%>

Define more fine-grained sharing in the Advanced sharing: you can share within your Project/Institution only,
 with specific individuals, or set up custom favourite groups for people you regularly need to share with.

          <% end %>

<label for="sharing_scope_<%= Policy::PRIVATE -%>">
            <input type="hidden" id='access_type_select_<%= Policy::PRIVATE -%>' name="sharing[access_type_<%= Policy::PRIVATE -%>]" value="<%= Policy::NO_ACCESS -%>">
            <input <%= 'checked="checked"' if @sharing_mode == Policy::PRIVATE %> id="sharing_scope_<%= Policy::PRIVATE -%>" name="sharing[sharing_scope]"
                                                                                value="<%= Policy::PRIVATE -%>" type="radio" />
            - Keep this <%= @resource_type -%> private (only visible to you)

          <%= additional_advanced_permissions_included @resource, Policy::PRIVATE -%>

Or share it with..

            <input type="radio" <%= 'checked="checked"' if @sharing_mode == Policy::ALL_SYSMO_USERS -%> id="sharing_scope_<%= Policy::ALL_SYSMO_USERS -%>" name="sharing[sharing_scope]" value="<%= Policy::ALL_SYSMO_USERS -%>" />
            - Members of projects associated with this <%= @resource_type -%>:

             <select name="sharing[your_proj_access_type]" id="sharing_your_proj_access_type">
                 <%= policy_selection_options([Policy::VISIBLE,Policy::ACCESSIBLE,Policy::EDITING,Policy::MANAGING], @resource, your_project_access_type(@policy, @resource) || default_projects_access_type) -%>
             </select>

            ... and all other project members:
             <%= render :partial => "assets/sharing_form_access_type_dropdown", :locals => { :access_type_selector_for_scope => Policy::ALL_SYSMO_USERS,
               :sharing_scope => Policy::ALL_SYSMO_USERS, :access_type => (@resource.respond_to?(:policy) && @resource.policy.try(:sharing_scope)==Policy::ALL_SYSMO_USERS ? @access_mode : default_consortium_access_type), :access_type_options=>[Policy::NO_ACCESS,Policy::VISIBLE,Policy::ACCESSIBLE,Policy::EDITING] } -%>
             <%= additional_advanced_permissions_included @resource, Policy::ALL_SYSMO_USERS -%>

          <label for="sharing_scope_<%= Policy::EVERYONE -%>">
            <input type="radio" <%= 'checked="checked"' if @sharing_mode == Policy::EVERYONE -%> id="sharing_scope_<%= Policy::EVERYONE -%>" name="sharing[sharing_scope]"
                   value="<%= Policy::EVERYONE -%>" <%= 'disabled="true"' if !can_publish -%>/>
            - All visitors (including anonymous visitors with no login):

              <%= render :partial => "assets/sharing_form_access_type_dropdown", :locals => { :access_type_selector_for_scope => Policy::EVERYONE,
            :sharing_scope => @sharing_mode, :access_type => @access_mode } -%>
           <%= additional_advanced_permissions_included @resource, Policy::EVERYONE -%>

              <%= check_box_tag 'sharing[request_publish_approval]', 1, false, :disabled => can_publish%>
              - Request approval from the gatekeepers to share with all visitors

    <% if @resource.new_record? && @resource.errors.empty? -%>

    <% end -%>

    <% if !disable_advanced_view %>
      <%= link_to_function "Advanced permissions " + expand_image, :class => 'advanced_sharing_link', :style => "display:" + (show_advanced_permissions ? 'none;' : 'block;'), :id =>'advanced_sharing_expand_image' do |page|
          page.visual_effect :toggle_blind, "advanced sharing", :duration => 0.5
          page["advanced_sharing_expand_image"].toggle
          page["advanced_sharing_collapse_image"].toggle
      end
      -%>
      <%= link_to_function "Advanced permissions " + collapse_image, :class => 'advanced_sharing_link', :style => "display:" + (show_advanced_permissions ? 'block;' : 'none;'), :id =>'advanced_sharing_collapse_image' do |page|
          page.visual_effect :toggle_blind, "advanced sharing", :duration => 0.5
          page["advanced_sharing_expand_image"].toggle
          page["advanced_sharing_collapse_image"].toggle
      end
      -%>

      <div id="advanced sharing" class='sharing_box_form' style="display:<%= show_advanced_permissions ? 'block;' : 'none;' -%>">

Additional fine-grained sharing permissions

              So far you have selected to share this <%= @resource_type -%> with:

              Loading...

              Build up the list of people and groups to share with.
              Select from the options below and click "Add" to apply
              your choices and add collaborators to your current selection:

                <%= image_tag icon_filename_for_key("spinner"), :id => "f_group_deleting_spinner", :alt=>"loading...", :title=>"loading...", :style => "display: none; vertical-align: middle; float: right;" -%>
                <%= help_icon("Here you can choose your favourite groups to share this #{@resource_type} with.") -%>
                Favourite Groups

                  <% favourite_groups = FavouriteGroup.get_all_without_blacklists_and_whitelists(current_user.id) -%>
                  <% f_group_select_options = (favourite_groups.blank? ? "<option value=\"\">You don't have any favourite groups</option>" : options_for_select(favourite_groups)) -%>

                  <%= select_tag "favourite_group_select", f_group_select_options, :style => "width: 82%; vertical-align: middle; margin-right: 0.4em;", :disabled => (favourite_groups.blank?) -%>

                  <%= link_to "Add", "", :id => "add_f_group_link", :style => "font-weight: bold; vertical-align: middle;", :disabled => (favourite_groups.blank?),
                              :onclick => "javascript: if($('favourite_group_select').disabled) return(false); addContributor('FavouriteGroup', $('favourite_group_select').options[$('favourite_group_select').selectedIndex].text, parseInt($('favourite_group_select').options[$('favourite_group_select').selectedIndex].value), #{Policy::DETERMINED_BY_GROUP}); return(false);" -%>

                  <li id="edit_f_group_li" style="display: <%= favourite_groups.blank? ? "none" : "block" -%>; list-style-type: disc; padding: 0;"><%= favourite_group_popup_link_action_edit(@resource.class.name) -%>

                  <li id="delete_f_group_li" style="display: <%= favourite_groups.blank? ? "none" : "block" -%>; list-style-type: disc; padding: 0;">
                    <%= link_to "Delete selected favourite group", delete_favourite_group_path(0), :onclick => "deleteSelectedFavouriteGroup(); return(false);" -%>

<%= favourite_group_popup_link_action_new(@resource.class.name) -%>

                <%= help_icon("Here you can choose projects, institutions and workgroups to share this #{@resource_type} with.") -%>
                Projects and Institutions

                  <% right_arrow_image = icon_filename_for_key("arrow_right") -%>

                  Step 1
                  <%= image_tag right_arrow_image, :style => "vertical-align: middle; padding: 0 0.8em;" -%>

                  Step 2
                  <%= image_tag right_arrow_image, :style => "vertical-align: middle; padding: 0 0.8em;" -%>

                  Step 3

                    <input type="hidden" id="proj_select_step_index" value="1">

                      <%= image_tag icon_filename_for_key("spinner"), :id => "institutions_loading_spinner", :alt=>"loading...", :title=>"loading...", :style => "display: none; vertical-align: middle; float: right;" -%>
                      Step 1: Select a project
                      <%= select("proj_project", "select",
                                 Project.find(:all).collect { |p| [p.name, p.id] },
                                 {:include_blank => 'All Projects @ Institution (from Step 2)'}, {:style => "width: 100%; vertical-align: middle; margin: 0.3em 0;"}) -%>

                      Step 2: Select scope of the project
                      <%= select_tag("proj_institution_select", nil, {:style => "width: 100%; vertical-align: middle; margin: 0.3em 0;"}) -%>

                      Step 3: Choose access rights, review and
                      submit

                      <select name="proj_access_type_select" id="proj_access_type_select" onchange="javascript: replaceReviewWorkGroupURL();" style="width: 100%; vertical-align: middle; margin: 0.3em 0;">
                        <%= policy_selection_options [Policy::NO_ACCESS, Policy::VISIBLE, Policy::ACCESSIBLE, Policy::EDITING, Policy::MANAGING], @resource -%>
                      </select>

                        <%= link_to "< Previous step", "", :onclick => "javascript: projectInstitutionStepAction(-1); return(false);", :style => "font-weight: bold;" -%>

                        <%= link_to "Next step >", "", :onclick => "javascript: projectInstitutionStepAction(1); return(false);", :style => "font-weight: bold;" -%>

                          <%= link_to "Add immediately", "", :onclick => "javascript: addProjectInstitution(); return(false);", :style => "font-weight: bold; padding: 0;" -%>

<%= workgroup_member_review_popup_link(@resource.class.name) -%>

                <%= help_icon("Here you can specify individual people to share this #{@resource_type} with.") -%>
                Individual People

                    Please type names of people to share this <%= @resource_type -%> with into the box below -
                    suggestions will be displayed as you type.
                    Select access rights from drop-down menu; these will be applied to all chosen people.
                    Clicking "Add" will add selected people to the list.

                          ^_^<input type="text" id="ip_hidden_input" tabindex="-1">

                            <input type="text" size="1" tabindex="" id="ip_autocomplete_input"/>

Type the name of a friend, friend list, or email address

                        <select name="individual_people_access_type_select" id="individual_people_access_type_select" style="width: 344px; vertical-align: middle; margin-top: 0.3em;">
                          <%= policy_selection_options nil, @resource -%>
                        </select>

                        <%= link_to "Add", "", :onclick => "javascript: addIndividualPeople(); return(false);" -%>

  <% end %>


When you click move bat it takes you to choose the cage where the bat is coming from.  Not ideal.  Would be nice if it automatically selected the bat for you and you only needed to select the destination cage.  Would be even nicer if you could do it from the weigh bat page.

Band
Weight
Already Fed
Weight Note

<%= link_to weigh_one_bat.band, :controller => 'bats', :action => 'show', :id => weigh_one_bat %>
<%= text_field 'weight', weigh_one_bat.id, :size => 4, :autocomplete => 'off' %> g

After Eating?
<% if weigh_one_bat.cage.fed_today? == true %>
<%= check_box 'checkbox', 'after_eating', :checked=> 'checked' %>
<%else%>
<%= check_box 'checkbox', 'after_eating' %>
<% end %>

<%= text_field 'note', weigh_one_bat.id %>

<%# See http://www.rubyonrails.org/api/classes/ActionView/Helpers/FormOptionsHelper.html#M000404 %>
<%= link_to 'Move Bat', :action=>'choose_cage' %>

<%= submit_tag 'Submit Weight' %>

Band
Weight
Already Fed
Weight Note

<%= link_to weigh_one_bat.band, :controller => 'bats', :action => 'show', :id => weigh_one_bat %>
<%= text_field 'weight', weigh_one_bat.id, :size => 4, :autocomplete => 'off' %> g

After Eating?
<% if weigh_one_bat.cage.fed_today? == true %>
<%= check_box 'checkbox', 'after_eating', :checked=> 'checked' %>
<%else%>
<%= check_box 'checkbox', 'after_eating' %>
<% end %>

<%= text_field 'note', weigh_one_bat.id %>

<%# See http://www.rubyonrails.org/api/classes/ActionView/Helpers/FormOptionsHelper.html#M000404 %>
<%= link_to 'Move Bat', :action=>'move' %>

<%= submit_tag 'Submit Weight' %>