Escape content and mark known link as HTML safe to prevent it being escaped.

<% @title = _("FOI request – {{title}}", :title => h(@info_request.title)) %>

<%=@title%>

<% form_tag admin_request_move_request_path, { :class => "form form-horizontal" } do %>
  <%= hidden_field_tag 'info_request_id', @info_request.id %>

          <a href="#metadata_<%=@info_request.id%>" data-toggle="collapse" data-parent="#info_request"><%= chevron_down %>Request metadata

      <div id="metadata_<%=@info_request.id%>" class="accordion-body collapse in">

                 <%= link_to 'Edit metadata', admin_request_edit_path(@info_request), :class => "btn" %>

              Public page:
              <%= link_to request_url(@info_request), request_path(@info_request) %>

            <% @info_request.for_admin_column do |name, value, type, column_name|%>

                  <%= name %>:

                  <% if type == 'datetime' %>
                    <%= I18n.l(value, :format => "%e %B %Y %H:%M:%S") %>
                    (<%= _('{{length_of_time}} ago', :length_of_time => time_ago_in_words(value)) %>)
                  <% else %>
                    <%= h value %>
                  <% end %>
                  <% if column_name == 'described_state' %>

Initial request last sent at: <%= @info_request.calculate_status %>

Initial request last sent at: <%=@info_request.date_initial_request_last_sent_at.to_date %>

Date response required by: <%= @info_request.date_response_required_by %>

Very overdue after: <%= @info_request.date_very_overdue_after %>

                  <% end %>

        <% end %>

                Created by

                <% if @info_request.is_external? %>
                  <%= link_to(eye, @info_request.external_url, :title => "view URL of original request on external website") %>
                  <%= @info_request.public_body.name %> on behalf of <%= (@info_request.user_name || _('an anonymous user'))%> (using API)
                <% else %>
                  <%= user_both_links(@info_request.user) %>
                  <%= link_to _("move..."), "#", :class => "btn btn-mini btn-warning toggle-hidden" %>

                    url_name of new user:
                    <%= text_field_tag 'user_url_name', "", { :size => 20 } %>
                    <%= submit_tag "Move request to user", :class => "btn btn-info" %>

                <% end %>

                Public authority:

                <%= public_body_both_links(@info_request.public_body) %>
                <%= link_to "move...", "#", :class => "btn btn-mini btn-warning toggle-hidden" %>

                  url_name of new authority:
                  <%= text_field_tag 'public_body_url_name', "", { :size => 20 } %>
                  <%= submit_tag "Move request to authority", :class => "btn btn-info" %>

                <%=_("Incoming email address")%>

                <%= link_to h(@info_request.incoming_email), "mailto:#{@info_request.incoming_email}" %>

                <%=_("Tags")%>

                <%= render :partial => 'tags', :locals => { :info_request => @info_request} %>

                 <%= link_to 'Edit metadata', admin_request_edit_path(@info_request), :class => "btn" %>

<% end %>
<fieldset class="form-horizontal">
  <legend>Actions</legend>

      FOI officer upload URL

      <%= link_to 'Generate URL', admin_request_generate_upload_url_path(@info_request), :class => "btn" %>

(see also option to general URLs for individual incoming messages below)

  <% form_tag admin_request_hide_path(@info_request), :class => "form form-inline", :id => "hide_request_form", 'data-info-request-id' => @info_request.id.to_s do %>

      <% if  @info_request.is_external? %>
        Hide the request:
      <% else %>
        Hide the request and notify the user:
      <% end %>

        <% if ['hidden', 'requester_only'].include? @info_request.prominence %>

This request has already been hidden

        <% else %>

            <%= radio_button_tag "reason", "not_foi" %> <%= _("Not a valid FOI request") %>

            <%= radio_button_tag "reason", "vexatious" %> <%= _("A vexatious request") %>

        <% end %>

    <% if !['hidden', 'requester_only'].include? @info_request.prominence %>
      <% if ! @info_request.is_external? %>

          Subject of email:

            <%= text_field_tag "subject", "Your request on WhatDoTheyKnow.com hidden", {:id => "request_hidden_user_subject_field", :cols => 100} %>

          Reason for hiding the request (will be emailed to user):

            <%= text_area_tag "explanation", h(@request_hidden_user_explanation), {:id => "request_hidden_user_explanation_field"} %>

      <% end %>

        <%= submit_tag _("Hide request"), :class => "btn" %>

    <% end %>
  <% end %>
</fieldset>

Events

  <% for info_request_event in @info_request.info_request_events.find(:all, :order => "created_at, id") %>

        <a href="#event_<%=info_request_event.id%>" data-toggle="collapse" data-parent="#events"><%= chevron_right %>
          <%= _("Event {{id}}", :id => info_request_event.id) %>:

            <%=h info_request_event.event_type.humanize %><% if !info_request_event.calculated_state.nil? %>; state: <%= info_request_event.calculated_state %><% end %>

            <%= info_request_event.created_at%>

      <div id="event_<%=info_request_event.id%>" class="accordion-body collapse">

                <% if info_request_event.described_state != 'waiting_clarification' and info_request_event.event_type == 'response' %>
                  <% form_tag admin_request_clarification_path, :class => "form form-inline admin-table-form admin-inline-form" do %>
                    <%= hidden_field_tag 'info_request_event_id', info_request_event.id, :id => nil %>
                    <%= submit_tag "Was clarification request", :class => "btn btn-mini btn-primary" %>
                  <% end %>
                <% end %>

            <% info_request_event.for_admin_column do |name, value, type, column_name| %>

                  <%=h name%>

                  <% if column_name == 'params_yaml' %>
                    <%= info_request_event.params_yaml_as_html %>
                  <% elsif value.nil? %>
                    nil
                  <% elsif %w(text string).include?(type) %>
                    <%=h value.humanize %>
                  <% elsif type == 'datetime' %>
                    <%= admin_date value %>
                  <% else %>
                    <%=h value %>
                  <% end %>

            <% end %>

  <% end %>

Outgoing messages

  <% for outgoing_message in @info_request.outgoing_messages.find(:all, :order => 'created_at') %>

        <a href="#outgoing_<%=outgoing_message.id%>" data-toggle="collapse" data-parent="#outgoing_messages"><%= chevron_right %>
        <% link_to admin_request_edit_outgoing_path(outgoing_message) do %>
          #<%= outgoing_message.id %> -- <%= outgoing_message.status.humanize %> <%= outgoing_message.message_type.humanize %>
        <% end %>

          <%= truncate(outgoing_message.body, :length => 400) %>

      <div id="outgoing_<%=outgoing_message.id%>" class="accordion-body collapse">

                <% form_tag admin_request_resend_path, :class => "admin-table-form" do %>
                  <%= hidden_field_tag 'outgoing_message_id', outgoing_message.id %>
                  <%= submit_tag "Resend", :class => "btn" %>
                <% end %>

            <% outgoing_message.for_admin_column do |name, value, type, column_name| %>

                  <%=name%>

                  <% if column_name == 'body' %>
                    <%= simple_format(truncate(h(outgoing_message.body), :length => 400, :omission => link_to("...", "#", :class => "toggle-hidden" )).html_safe) %>

<%= simple_format( outgoing_message.body ) %>

                  <% else %>
                    <%= admin_value(value) %>
                  <% end %>

            <% end %>

  <% end %>

Incoming messages

  <% for incoming_message in @info_request.incoming_messages.find(:all, :order => 'created_at') %>

        <a href="#incoming_<%=incoming_message.id%>" data-toggle="collapse" data-parent="#incoming_messages"><%= chevron_right %>
        <%=incoming_message.id%> -- <%= h(incoming_message.mail_from) %> <%=_("at")%> <%=admin_value(incoming_message.sent_at)%>

          <% if !incoming_message.cached_main_body_text_folded.nil? %>
            <%= truncate(incoming_message.cached_main_body_text_folded.gsub('FOLDED_QUOTED_SECTION', ''), :length => 400) %>
          <% end %>

      <div id="incoming_<%=incoming_message.id%>" class="accordion-body collapse">

                <%= render :partial => 'incoming_message_actions', :locals => { :incoming_message => incoming_message } %>

            <% incoming_message.for_admin_column do |name, value, type, column_name| %>

                  <%=name%>

                  <% if column_name =~ /^cached_.*?$/ %>
                    <%= simple_format( truncate(h(value), :length => 400, :omission => link_to("...", "#", :class => "toggle-hidden")).html_safe) %>

<%= simple_format(value) %>

                  <% else %>
                    <%= simple_format(value) %>
                  <% end %>

            <% end %>

  <% end %>

Annotations

<% if @info_request.comments.size > 0 %>

    <% for comment in @info_request.comments %>

         <a href="#comment_<%=comment.id%>" data-toggle="collapse" data-parent="#comments"><%= chevron_right %>
         <% link_to admin_request_edit_comment_path(comment) do %>
            #<%=comment.id%>
            --
            <%=h(comment.user.name)%>
            <%=admin_value(comment.created_at)%>
            <% end %>

            <%= truncate(comment.body, :length => 400) %>

        <div id="comment_<%=comment.id%>" class="accordion-body collapse">

                 By <%= user_both_links(comment.user) %>

              <% comment.for_admin_column do |name, value, type, column_name |%>

                    <%=name%>

                    <% if column_name == 'body' && !comment.visible %>
                      <s><%=h comment.send(column_name) %></s>
                    <% else %>
                      <%=h comment.send(column_name) %>
                    <% end %>

              <% end %>

    <% end %>

<% else %>

None yet.

<% end %>

Mail server delivery logs

(Lines containing the request incoming email address, updated hourly.)

<% for mail_server_log_done_id, mail_server_logs in @info_request.mail_server_logs.group_by(&:mail_server_log_done_id) %>

<% for mail_server_log in mail_server_logs %><%=h mail_server_log.line%><% end %>

<% end %>
<% if @info_request.mail_server_logs.size == 0 %>

None (perhaps this is an old or a very new request)

<% end %>

Censor rules

<%= render :partial => 'admin_censor_rule/show', :locals => { :censor_rules => @info_request.censor_rules, :info_request => @info_request } %>

<% @title = _("FOI request – {{title}}", :title => h(@info_request.title)) %>

<%=@title%>

<% form_tag admin_request_move_request_path, { :class => "form form-horizontal" } do %>
  <%= hidden_field_tag 'info_request_id', @info_request.id %>

          <a href="#metadata_<%=@info_request.id%>" data-toggle="collapse" data-parent="#info_request"><%= chevron_down %>Request metadata

      <div id="metadata_<%=@info_request.id%>" class="accordion-body collapse in">

                 <%= link_to 'Edit metadata', admin_request_edit_path(@info_request), :class => "btn" %>

              Public page:
              <%= link_to request_url(@info_request), request_path(@info_request) %>

            <% @info_request.for_admin_column do |name, value, type, column_name|%>

                  <%= name %>:

                  <% if type == 'datetime' %>
                    <%= I18n.l(value, :format => "%e %B %Y %H:%M:%S") %>
                    (<%= _('{{length_of_time}} ago', :length_of_time => time_ago_in_words(value)) %>)
                  <% else %>
                    <%= h value %>
                  <% end %>
                  <% if column_name == 'described_state' %>

Initial request last sent at: <%= @info_request.calculate_status %>

Initial request last sent at: <%=@info_request.date_initial_request_last_sent_at.to_date %>

Date response required by: <%= @info_request.date_response_required_by %>

Very overdue after: <%= @info_request.date_very_overdue_after %>

                  <% end %>

        <% end %>

                Created by

                <% if @info_request.is_external? %>
                  <%= link_to(eye, @info_request.external_url, :title => "view URL of original request on external website") %>
                  <%= @info_request.public_body.name %> on behalf of <%= (@info_request.user_name || _('an anonymous user'))%> (using API)
                <% else %>
                  <%= user_both_links(@info_request.user) %>
                  <%= link_to _("move..."), "#", :class => "btn btn-mini btn-warning toggle-hidden" %>

                    url_name of new user:
                    <%= text_field_tag 'user_url_name', "", { :size => 20 } %>
                    <%= submit_tag "Move request to user", :class => "btn btn-info" %>

                <% end %>

                Public authority:

                <%= public_body_both_links(@info_request.public_body) %>
                <%= link_to "move...", "#", :class => "btn btn-mini btn-warning toggle-hidden" %>

                  url_name of new authority:
                  <%= text_field_tag 'public_body_url_name', "", { :size => 20 } %>
                  <%= submit_tag "Move request to authority", :class => "btn btn-info" %>

                <%=_("Incoming email address")%>

                <%= link_to h(@info_request.incoming_email), "mailto:#{@info_request.incoming_email}" %>

                <%=_("Tags")%>

                <%= render :partial => 'tags', :locals => { :info_request => @info_request} %>

                 <%= link_to 'Edit metadata', admin_request_edit_path(@info_request), :class => "btn" %>

<% end %>
<fieldset class="form-horizontal">
  <legend>Actions</legend>

      FOI officer upload URL

      <%= link_to 'Generate URL', admin_request_generate_upload_url_path(@info_request), :class => "btn" %>

(see also option to general URLs for individual incoming messages below)

  <% form_tag admin_request_hide_path(@info_request), :class => "form form-inline", :id => "hide_request_form", 'data-info-request-id' => @info_request.id.to_s do %>

      <% if  @info_request.is_external? %>
        Hide the request:
      <% else %>
        Hide the request and notify the user:
      <% end %>

        <% if ['hidden', 'requester_only'].include? @info_request.prominence %>

This request has already been hidden

        <% else %>

            <%= radio_button_tag "reason", "not_foi" %> <%= _("Not a valid FOI request") %>

            <%= radio_button_tag "reason", "vexatious" %> <%= _("A vexatious request") %>

        <% end %>

    <% if !['hidden', 'requester_only'].include? @info_request.prominence %>
      <% if ! @info_request.is_external? %>

          Subject of email:

            <%= text_field_tag "subject", "Your request on WhatDoTheyKnow.com hidden", {:id => "request_hidden_user_subject_field", :cols => 100} %>

          Reason for hiding the request (will be emailed to user):

            <%= text_area_tag "explanation", h(@request_hidden_user_explanation), {:id => "request_hidden_user_explanation_field"} %>

      <% end %>

        <%= submit_tag _("Hide request"), :class => "btn" %>

    <% end %>
  <% end %>
</fieldset>

Events

  <% for info_request_event in @info_request.info_request_events.find(:all, :order => "created_at, id") %>

        <a href="#event_<%=info_request_event.id%>" data-toggle="collapse" data-parent="#events"><%= chevron_right %>
          <%= _("Event {{id}}", :id => info_request_event.id) %>:

            <%=h info_request_event.event_type.humanize %><% if !info_request_event.calculated_state.nil? %>; state: <%= info_request_event.calculated_state %><% end %>

            <%= info_request_event.created_at%>

      <div id="event_<%=info_request_event.id%>" class="accordion-body collapse">

                <% if info_request_event.described_state != 'waiting_clarification' and info_request_event.event_type == 'response' %>
                  <% form_tag admin_request_clarification_path, :class => "form form-inline admin-table-form admin-inline-form" do %>
                    <%= hidden_field_tag 'info_request_event_id', info_request_event.id, :id => nil %>
                    <%= submit_tag "Was clarification request", :class => "btn btn-mini btn-primary" %>
                  <% end %>
                <% end %>

            <% info_request_event.for_admin_column do |name, value, type, column_name| %>

                  <%=h name%>

                  <% if column_name == 'params_yaml' %>
                    <%= info_request_event.params_yaml_as_html %>
                  <% elsif value.nil? %>
                    nil
                  <% elsif %w(text string).include?(type) %>
                    <%=h value.humanize %>
                  <% elsif type == 'datetime' %>
                    <%= admin_date value %>
                  <% else %>
                    <%=h value %>
                  <% end %>

            <% end %>

  <% end %>

Outgoing messages

  <% for outgoing_message in @info_request.outgoing_messages.find(:all, :order => 'created_at') %>

        <a href="#outgoing_<%=outgoing_message.id%>" data-toggle="collapse" data-parent="#outgoing_messages"><%= chevron_right %>
        <% link_to admin_request_edit_outgoing_path(outgoing_message) do %>
          #<%= outgoing_message.id %> -- <%= outgoing_message.status.humanize %> <%= outgoing_message.message_type.humanize %>
        <% end %>

          <%= truncate(outgoing_message.body, :length => 400) %>

      <div id="outgoing_<%=outgoing_message.id%>" class="accordion-body collapse">

                <% form_tag admin_request_resend_path, :class => "admin-table-form" do %>
                  <%= hidden_field_tag 'outgoing_message_id', outgoing_message.id %>
                  <%= submit_tag "Resend", :class => "btn" %>
                <% end %>

            <% outgoing_message.for_admin_column do |name, value, type, column_name| %>

                  <%=name%>

                  <% if column_name == 'body' %>
                    <%= simple_format(truncate(outgoing_message.body, :length => 400, :omission => link_to("...", "#", :class => "toggle-hidden" ))) %>

<%= simple_format( outgoing_message.body ) %>

                  <% else %>
                    <%= admin_value(value) %>
                  <% end %>

            <% end %>

  <% end %>

Incoming messages

  <% for incoming_message in @info_request.incoming_messages.find(:all, :order => 'created_at') %>

        <a href="#incoming_<%=incoming_message.id%>" data-toggle="collapse" data-parent="#incoming_messages"><%= chevron_right %>
        <%=incoming_message.id%> -- <%= h(incoming_message.mail_from) %> <%=_("at")%> <%=admin_value(incoming_message.sent_at)%>

          <% if !incoming_message.cached_main_body_text_folded.nil? %>
            <%= truncate(incoming_message.cached_main_body_text_folded.gsub('FOLDED_QUOTED_SECTION', ''), :length => 400) %>
          <% end %>

      <div id="incoming_<%=incoming_message.id%>" class="accordion-body collapse">

                <%= render :partial => 'incoming_message_actions', :locals => { :incoming_message => incoming_message } %>

            <% incoming_message.for_admin_column do |name, value, type, column_name| %>

                  <%=name%>

                  <% if column_name =~ /^cached_.*?$/ %>
                    <%= simple_format( truncate(value, :length => 400, :omission => link_to("...", "#", :class => "toggle-hidden"))) %>

<%= simple_format(value) %>

                  <% else %>
                    <%= simple_format(value) %>
                  <% end %>

            <% end %>

  <% end %>

Annotations

<% if @info_request.comments.size > 0 %>

    <% for comment in @info_request.comments %>

         <a href="#comment_<%=comment.id%>" data-toggle="collapse" data-parent="#comments"><%= chevron_right %>
         <% link_to admin_request_edit_comment_path(comment) do %>
            #<%=comment.id%>
            --
            <%=h(comment.user.name)%>
            <%=admin_value(comment.created_at)%>
            <% end %>

            <%= truncate(comment.body, :length => 400) %>

        <div id="comment_<%=comment.id%>" class="accordion-body collapse">

                 By <%= user_both_links(comment.user) %>

              <% comment.for_admin_column do |name, value, type, column_name |%>

                    <%=name%>

                    <% if column_name == 'body' && !comment.visible %>
                      <s><%=h comment.send(column_name) %></s>
                    <% else %>
                      <%=h comment.send(column_name) %>
                    <% end %>

              <% end %>

    <% end %>

<% else %>

None yet.

<% end %>

Mail server delivery logs

(Lines containing the request incoming email address, updated hourly.)

<% for mail_server_log_done_id, mail_server_logs in @info_request.mail_server_logs.group_by(&:mail_server_log_done_id) %>

<% for mail_server_log in mail_server_logs %><%=h mail_server_log.line%><% end %>

<% end %>
<% if @info_request.mail_server_logs.size == 0 %>

None (perhaps this is an old or a very new request)

<% end %>

Censor rules

<%= render :partial => 'admin_censor_rule/show', :locals => { :censor_rules => @info_request.censor_rules, :info_request => @info_request } %>


check event group present

check event group present

    Title

    <%= f.text_field :title %>

    Default text area character length

    <%= f.text_field :default_text_area_length %>

    <%= f.check_box :hidden %>
    Hide this event group and its sub elements

    <%= f.check_box :show_mpdtool %>
    Show link to mpdtool on acceptance page

    <%= f.check_box :allows_multiple_applications_with_same_form %>
    Allow multiple applications that use the same form

    <%= f.check_box :show_dates_as_distance %>
    Show dates as words ex "5 hours ago"

    Parent

    <%= f.select :parent_id, @tree_list %>

    Long description (this should should fit in a sentence like "you are applying for ..." for example "a 2007 summer project")

    <%= f.text_field :long_desc %>

    Outgoing email

    <%= f.text_field :outgoing_email %>

    <%= f.check_box :has_your_campuses %>
    Has Your Campuses Page

    <%= f.check_box :automatic_acceptance %>
    Automatically accept an application on submission if no references are required.

Upload a logo: <%= f.file_field :uploaded_data %>

  <% if @event_group && @event_group.has_logo? -%>

<%= check_box_tag :delete_logo %>Delete logo?

  <% end %>

  Title - If set, this replaces the default title "<%= Pat::CONFIG[:title] %>" in the top left of the PAT.

    <%= f.text_field :pat_title %>

  Cost Item Instructions - If set, this replaces the default instructions on the costing page.

    <%= f.text_area :cost_item_instructions, :rows => 2 %>

  Cost Item Line - If set, this replaces the default line on a cost item ("I will support raise for this item").

    <%= f.text_field :cost_item_phrase %>

  Slug - This enables a url <%= request.protocol %><%= request.host %><%= (":" + request.port.to_s) if request.port != 80 %>/register/<slug> that scopes this event group and starts the application form

     <%= request.protocol %><%= request.host %><%= (":" + request.port.to_s) if request.port != 80 %>/register/<%= f.text_field :slug %> <%- if @event_group && @event_group.slug.present? %> <%= link_to "Current slug url", request.protocol + request.host + ((":" + request.port.to_s) if request.port != 80).to_s + "/register/" + @event_group.slug %><% end %>

<% unless @event_group.nil? || @event_group.new_record? %>

Eventgroup Coordinators: <%= @event_group.eventgroup_coordinators_names %> <%= link_to 'Manage Coordinators', { :controller => :eventgroup_coordinators, :action => :list, :id => @event_group.id }, :target => :blank %> (Opens in new window)

Note: Eventgroup Coordinators for all parent EventGroups are automatically considered coordinators for this group.

<% end %>

    Title

    <%= f.text_field :title %>

    Default text area character length

    <%= f.text_field :default_text_area_length %>

    <%= f.check_box :hidden %>
    Hide this event group and its sub elements

    <%= f.check_box :show_mpdtool %>
    Show link to mpdtool on acceptance page

    <%= f.check_box :allows_multiple_applications_with_same_form %>
    Allow multiple applications that use the same form

    <%= f.check_box :show_dates_as_distance %>
    Show dates as words ex "5 hours ago"

    Parent

    <%= f.select :parent_id, @tree_list %>

    Long description (this should should fit in a sentence like "you are applying for ..." for example "a 2007 summer project")

    <%= f.text_field :long_desc %>

    Outgoing email

    <%= f.text_field :outgoing_email %>

    <%= f.check_box :has_your_campuses %>
    Has Your Campuses Page

    <%= f.check_box :automatic_acceptance %>
    Automatically accept an application on submission if no references are required.

Upload a logo: <%= f.file_field :uploaded_data %>

  <% if @event_group && @event_group.has_logo? -%>

<%= check_box_tag :delete_logo %>Delete logo?

  <% end %>

  Title - If set, this replaces the default title "<%= Pat::CONFIG[:title] %>" in the top left of the PAT.

    <%= f.text_field :pat_title %>

  Cost Item Instructions - If set, this replaces the default instructions on the costing page.

    <%= f.text_area :cost_item_instructions, :rows => 2 %>

  Cost Item Line - If set, this replaces the default line on a cost item ("I will support raise for this item").

    <%= f.text_field :cost_item_phrase %>

  Slug - This enables a url <%= request.protocol %><%= request.host %><%= (":" + request.port.to_s) if request.port != 80 %>/register/<slug> that scopes this event group and starts the application form

     <%= request.protocol %><%= request.host %><%= (":" + request.port.to_s) if request.port != 80 %>/register/<%= f.text_field :slug %> <%- if @event_group.slug.present? %> <%= link_to "Current slug url", request.protocol + request.host + ((":" + request.port.to_s) if request.port != 80).to_s + "/register/" + @event_group.slug %><% end %>

<% unless @event_group.nil? || @event_group.new_record? %>

Eventgroup Coordinators: <%= @event_group.eventgroup_coordinators_names %> <%= link_to 'Manage Coordinators', { :controller => :eventgroup_coordinators, :action => :list, :id => @event_group.id }, :target => :blank %> (Opens in new window)

Note: Eventgroup Coordinators for all parent EventGroups are automatically considered coordinators for this group.

<% end %>


Remove debugging.

Remove debugging.

<% @title = "Change profile photo" %>

<% raise "internal error" if not @user %>

Change your profile photo

<%= foi_error_messages_for :profile_photo %>

<% form_tag 'profile_photo', :html => { :id => 'profile_photo_form' }, :multipart => true do %>

	    Photo of you:
        <%= file_field_tag :file, :size => 35 %>

Privacy note: Your photo will be shown in public on the Internet,
    wherever you do something on WhatDoTheyKnow.

        <%= hidden_field_tag 'submitted_profile_photo', 1 %>
        <%= submit_tag "Change profile photo" %>

<% end %>

<% @title = "Change profile photo" %>

<%= params.to_yaml %>

<% raise "internal error" if not @user %>

Change your profile photo

<%= foi_error_messages_for :profile_photo %>

<% form_tag 'profile_photo', :html => { :id => 'profile_photo_form' }, :multipart => true do %>

	    Photo of you:
        <%= file_field_tag :file, :size => 35 %>

Privacy note: Your photo will be shown in public on the Internet,
    wherever you do something on WhatDoTheyKnow.

        <%= hidden_field_tag 'submitted_profile_photo', 1 %>
        <%= submit_tag "Change profile photo" %>

<% end %>


fixed silly error setting the current access_type for existing items shared with SysMO and Your projects

<%
   set_parameters_for_sharing_form
   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
%>
<%# 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.

          <% if try_block{@resource.can_publish?} %>

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

          <% end %>

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.

<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 @resource.respond_to?(:can_publish?) && !@resource.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 -%>

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

    <% end -%>

    <%= 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);" -%>

<%
   set_parameters_for_sharing_form
   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
%>
<%# 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.

          <% if try_block{@resource.can_publish?} %>

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

          <% end %>

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.

<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 @resource.respond_to?(:can_publish?) && !@resource.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 -%>

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

    <% end -%>

    <%= 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);" -%>


Remove unused code

Remove unused code

(ActionItem3031)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= html_language %>" lang="<%= html_language %>">

    <title>Noosfero embed block</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <%= noosfero_stylesheets %>
    <%= noosfero_javascript %>

  <body class="<%= h body_classes %>">

                    <%= yield %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= html_language %>" lang="<%= html_language %>">

    <title>Noosfero embed block</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <%= noosfero_stylesheets %>
    <%= noosfero_javascript %>

  <body class="<%= h body_classes %>">
    <%=
      @plugins.dispatch(:body_beginning).collect do |content|
        content.respond_to?(:call) ? content.call : content
      end.join("\n")
    %>

                    <%= yield %>


I18n fix

I18n fix

git-svn-id: 3ebd8a4fd9006ff03462623fffc479a1d4750d42@211 7a65b82a-1d14-0410-b525-e2835e71a0b4

<% @title = 'News' %>

<%= @title %>

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

Monday November 5, 2007

Patched bug with internationalization that was causing the string __localization_missing__ to appear unexpectedly.  I don't fully understand why it does this, but I've addressed the symptom. (Nathan Wilson)

More improvements to auto-completion. (Jason Hollinger)

Friday October 19, 2007

Improvements to auto-completion.  Contributed by Jason Hollinger.

Fixed a couple of minor bugs that users stumbled on.

Sunday October 14, 2007

Comments now visible directly on the Show Observation page.  In addition the Add Comment and Edit
        Comment pages now list all the information for the observation to make it easier to cut and
        paste while working on a comment.  Contributed by Jason Hollinger.

Deprecating or approving a name now asks for a comment.  Contributed by Jason Hollinger.

Better auto-completion enabled for Create Observation and Edit Observation.  Contributed by Jason Hollinger.

Saturday October 13, 2007

Added internationalization support including some translations into pt-BR (Brazilian Portuguese).

Tuesday October 9, 2007

An email is now automatically sent to the owner of the observation anytime a comment is made.  This feature can be turned off on your preferences page. Contributed by Jason Hollinger.

The email messages are now optionally HTMLized.  Contributed by Jason Hollinger.

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 19, 2007

Improvements to auto-completion.  Contributed by Jason Hollinger.

Fixed a couple of minor bugs that users stumbled on.

Sunday October 14, 2007

Comments now visible directly on the Show Observation page.  In addition the Add Comment and Edit
        Comment pages now list all the information for the observation to make it easier to cut and
        paste while working on a comment.  Contributed by Jason Hollinger.

Deprecating or approving a name now asks for a comment.  Contributed by Jason Hollinger.

Better auto-completion enabled for Create Observation and Edit Observation.  Contributed by Jason Hollinger.

Saturday October 13, 2007

Added internationalization support including some translations into pt-BR (Brazilian Portuguese).

Tuesday October 9, 2007

An email is now automatically sent to the owner of the observation anytime a comment is made.  This feature can be turned off on your preferences page. Contributed by Jason Hollinger.

The email messages are now optionally HTMLized.  Contributed by Jason Hollinger.

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.


Remove whitespace from a string on welcome page

<%= _('Welcome')%>

<%= _'Welcome to ClockingIT. To get started, follow the steps below.'%>
<%= link_to _("Don't show this splash page"), :controller => 'activities', :action => 'hide_welcome' %>

            <div class="tutorial<%= " complete" if @projects_count > 0%>">
              <%= _"The first step is to %s. Don't worry about entering real data, you can always delete the project you create and start over, once you get the hang of things.", link_to(_('create a project'), :controller => 'projects', :action => 'new') %>

                  <smaller><%= _ 'To create a project outside of this welcome page, click %s in the %s menu entry', _('New Project'), _('Projects') %></smaller>

            <div class="tutorial<%= " complete" if @tasks_count > 0 %><%= " todo" if @projects_count == 0%>">
              <%= _ 'Next up is %s. You can also do it by clicking the %s button up in the top menu. For more information about tasks, have a look at the documentation on the ClockingIT Wiki.', link_to(_('creating a task'), :controller => 'tasks', :action => 'new'), _('New Task') %>

            <div class="tutorial<%= " complete" if @work_count > 0 %><%= " todo" if @tasks_count == 0 %>">
              <%= _ "Once you have one or more tasks defined, it's time to start working on them. Click %s on the top menu, pick a task and click the %s next to it. The timer for that task starts running.", link_to(_('Browse'), :controller => 'views', :action => 'browse'), image_tag('time.png', :alt => 'Clock Icon') %>

              <%= _'When done working on that task, either click another %s to continue working but on a different task, or use %s to save off this work. %s stops the timer without logging any work.', image_tag('time.png', :alt => 'Clock Icon'), image_tag('time_add.png', :alt => 'Clock Add Icon'), image_tag('time_delete.png', :alt => 'Clock Icon')  %>

            <div class="tutorial<%= " complete" if @completed_count > 0 %><%= " todo" if @work_count == 0 %>">
             <%= _'After working on a task, it\'s time to complete it. Find your task by clicking %s on the top menu, or search for it from the search field in the same menu.', link_to(_('Browse'), :controller => 'views', :action => 'browse') %> <%= _'You can either click the checkbox to the left of the %s or you can edit the task and change the status to Closed, Won\'t Fix, Invalid or Duplicate.', image_tag('time.png', :alt => 'Clock Icon')  %>

            <div class="tutorial<%= " complete" if @users_count > 1 %><%= " todo" if @completed_count == 0 %>">
              <%= _'The last thing to do, is %s unless you\'re working alone. Once you have created logins for them, grant them access to the projects they are to work on from the Edit Project page, accessible from the %s.', link_to(_('invite some co-workers'), :controller => 'users', :action => 'new'), link_to(_('Overview'), :controller => 'activities', :action => 'list') %>

<%= _'If you require further help, check the forum, wiki or email us at support@clockingit.com.'%>


Make the welcome page a bit easier to translate.

<%= _('Welcome')%>

<%= _'Welcome to ClockingIT. To get started, follow the steps below.'%>
<%= link_to _("Don't show this splash page"), :controller => 'activities', :action => 'hide_welcome' %>

            <div class="tutorial<%= " complete" if @projects_count > 0%>">
              <%= _"The first step is to %s. Don't worry about entering real data, you can always delete the project you create and start over, once you get the hang of things.", link_to(_('create a project'), :controller => 'projects', :action => 'new') %>

                  <smaller><%= _ 'To create a project outside of this welcome page, click %s in the %s menu entry', _('New Project'), _('Projects') %></smaller>

            <div class="tutorial<%= " complete" if @tasks_count > 0 %><%= " todo" if @projects_count == 0%>">
              <%= _ 'Next up is %s. You can also do it by clicking the %s button up in the top menu. For more information about tasks, have a look at the documentation on the ClockingIT Wiki.', link_to(_('creating a task'), :controller => 'tasks', :action => 'new'), _('New Task') %>

            <div class="tutorial<%= " complete" if @work_count > 0 %><%= " todo" if @tasks_count == 0 %>">
              <%= _ "Once you have one or more tasks defined, it's time to start working on them. Click %s on the top menu, pick a task and click the %s next to it. The timer for that task starts running.", link_to(_('Browse'), :controller => 'views', :action => 'browse'), image_tag('time.png', :alt => 'Clock Icon') %>

              <%= _'When done working on that task, either click another %s to continue working but on a different task, or use %s to save off this work. %s stops the timer without logging any work.', image_tag('time.png', :alt => 'Clock Icon'), image_tag('time_add.png', :alt => 'Clock Add Icon'), image_tag('time_delete.png', :alt => 'Clock Icon')  %>

            <div class="tutorial<%= " complete" if @completed_count > 0 %><%= " todo" if @work_count == 0 %>">
             <%= _'After working on a task, it\'s time to complete it. Find your task by clicking %s on the top menu, or search for it from the search field in the same menu.', link_to(_('Browse'), :controller => 'views', :action => 'browse') %> <%= _'You can either click the checkbox to the left of the %s or you can edit the task and change the status to Closed, Won\'t Fix, Invalid or Duplicate.', image_tag('time.png', :alt => 'Clock Icon')  %>

            <div class="tutorial<%= " complete" if @users_count > 1 %><%= " todo" if @completed_count == 0 %>">
              <%= _'The last thing to do, is %s unless you\'re working alone. Once you have created logins for them, grant them access to the projects they are to work on from the Edit Project page, accessible from the %s.', link_to(_('invite some co-workers'), :controller => 'users', :action => 'new'), link_to(_('Overview'), :controller => 'activities', :action => 'list') %>

<%= _('If you require further help, check the %s, %s or email us at %s', "#{_'Forum'}", "#{_'Wiki'}", 'support@clockingit.com.')%>

<%= _('Welcome')%>

<%= _'Welcome to ClockingIT. To get started, follow the steps below.'%>
<%= link_to _("Don't show this splash page"), :controller => 'activities', :action => 'hide_welcome' %>

            <div class="tutorial<%= " complete" if @projects_count > 0%>">
              <%= _"The first step is to %s. Don't worry about entering real data, you can always delete the project you create and start over, once you get the hang of things.", link_to(_('create a project'), :controller => 'projects', :action => 'new') %>

                  <smaller><%= _ 'To create a project outside of this welcome page, click %s in the %s menu entry', _('New Project'), _('Projects') %></smaller>

            <div class="tutorial<%= " complete" if @tasks_count > 0 %><%= " todo" if @projects_count == 0%>">
              <%= _ 'Next up is %s. You can also do it by clicking the %s button up in the top menu. For more information about tasks, have a look at the documentation on the ClockingIT Wiki.', link_to(_('creating a task'), :controller => 'tasks', :action => 'new'), _('New Task') %>

            <div class="tutorial<%= " complete" if @work_count > 0 %><%= " todo" if @tasks_count == 0 %>">
              <%= _ "Once you have one or more tasks defined, it's time to start working on them. Click %s on the top menu, pick a task and click the %s next to it. The timer for that task starts running.", link_to(_('Browse'), :controller => 'views', :action => 'browse'), image_tag('time.png', :alt => 'Clock Icon') %>

              <%= _'When done working on that task, either click another %s to continue working but on a different task, or use %s to save off this work. %s stops the timer without logging any work.', image_tag('time.png', :alt => 'Clock Icon'), image_tag('time_add.png', :alt => 'Clock Add Icon'), image_tag('time_delete.png', :alt => 'Clock Icon')  %>

            <div class="tutorial<%= " complete" if @completed_count > 0 %><%= " todo" if @work_count == 0 %>">
             <%= _'After working on a task, it\'s time to complete it. Find your task by clicking %s on the top menu, or search for it from the search field in the same menu.', link_to(_('Browse'), :controller => 'views', :action => 'browse') %> <%= _'You can either click the checkbox to the left of the %s or you can edit the task and change the status to Closed, Won\'t Fix, Invalid or Duplicate.', image_tag('time.png', :alt => 'Clock Icon')  %>

            <div class="tutorial<%= " complete" if @users_count > 1 %><%= " todo" if @completed_count == 0 %>">
              <%= _'The last thing to do, is %s unless you\'re working alone. Once you have created logins for them, grant them access to the projects they are to work on from the Edit Project page, accessible from the %s.', link_to(_('invite some co-workers'), :controller => 'users', :action => 'new'), link_to(_('Overview'), :controller => 'activities', :action => 'list') %>

<%= _'If you require further help, check the forum, wiki or email us at support@clockingit.com.'%>


More changes for the vm

More changes for the vm

<%
p1 <- ifelse(is.null(GET$p1),.95,as.numeric(GET$p1))
p2 <- ifelse(is.null(GET$p2),.7,as.numeric(GET$p2))
mo <- ifelse(is.null(GET$mo),9,as.numeric(GET$mo))
options(hverbose=FALSE,verbose=FALSE)
library(Hmisc)
PLOTDIR='test/images'
plotname <- paste('plot.',sprintf('%.4f.%.4f.%d',p1,p2,mo),'.png',sep='')
filename <- file.path(PLOTDIR,plotname)
if (!file.exists(filename)){
	png(type='cairo',filename=filename,width=600,height=600)
	sink('/dev/null')
	sc <- Weibull2(c(1,3),c(p1,p2))
	rcens <- function(n) 1 + (5-1) * (runif(n) ^ .5)
	f <- Quantile2(sc,
		hratio=function(x) ifelse(x <= mo/12, 1, .75),
		dropin=function(x) ifelse(x <= .5, 0, .15 * (x-.5)/(5-.5)),
		dropout=function(x) .3*x/5
	)
	par(mfrow=c(2,2))
	plot(f,'all',label.curves=list(keys='lines'))
	dev.off()
	sink()
}
%>
<img src="/images/<%=plotname%>">

<%
p1 <- ifelse(is.null(GET$p1),.95,as.numeric(GET$p1))
p2 <- ifelse(is.null(GET$p2),.7,as.numeric(GET$p2))
mo <- ifelse(is.null(GET$mo),9,as.numeric(GET$mo))
options(hverbose=FALSE,verbose=FALSE)
library(Hmisc)
library(Cairo)
PLOTDIR='test/images'
plotname <- paste('plot.',sprintf('%.4f.%.4f.%d',p1,p2,mo),'.png',sep='')
filename <- file.path(PLOTDIR,plotname)
if (!file.exists(filename)){
	CairoPNG(filename=filename,width=600,height=600)
	sink('/dev/null')
	sc <- Weibull2(c(1,3),c(p1,p2))
	rcens <- function(n) 1 + (5-1) * (runif(n) ^ .5)
	f <- Quantile2(sc,
		hratio=function(x) ifelse(x <= mo/12, 1, .75),
		dropin=function(x) ifelse(x <= .5, 0, .15 * (x-.5)/(5-.5)),
		dropout=function(x) .3*x/5
	)
	par(mfrow=c(2,2))
	plot(f,'all',label.curves=list(keys='lines'))
	dev.off()
	sink()
}
%>
<img src="/images/<%=plotname%>">


Changing copyright and citation to 2009

Changing copyright and citation to 2009

Brew Templating

<% for (i in search()){ %>

Contents of <%=i%>

<% print(ls(i)) %>

<% } %>
<% stop("foo") %>


ActionItem1039: changing destroy to remove

<%= _('To remove %s') % @community.short_name %>

<%= _('Are you sure you want to remove "%s"?') % content_tag( 'i', @community.name ) %>

<% form_tag do %>
  <%= hidden_field_tag(:confirmation, 1) %>
  <%= submit_button(:ok, _("Yes, I want to remove.") % @community.short_name) %>
  <%= button(:cancel, _("No, I don't want."), :action => 'index') %>
<% end %>

<%= _('To remove %s') % @community.short_name %>

<%= _('Are you sure you want to destroy "%s"?') % content_tag( 'i', @community.name ) %>

<% form_tag do %>
  <%= hidden_field_tag(:confirmation, 1) %>
  <%= submit_button(:ok, _("Yes, I want to destroy.") % @community.short_name) %>
  <%= button(:cancel, _("No, I don't want."), :action => 'index') %>
<% end %>


Make clear the state just acknowledgements should go into

<% form_for(:incoming_message, @info_request, :url => describe_state_url(:id => @info_request.id)) do |f| %>

Hi! We need your help. The person who made the following request
    hasn't told us whether or not it was successful. Would you mind taking
    a moment to read it and help us keep the place tidy for everyone?
    Thanks.

    <% if @info_request.described_state != 'internal_review' %>

            <%= radio_button "incoming_message", "described_state", "waiting_response", :id => 'waiting_response' + id_suffix %>
            <label for="waiting_response<%=id_suffix%>">No response has been received
                (maybe there's just an acknowledgement)

    <% end %>
    <% if @info_request.described_state == 'internal_review' %>

            <%= radio_button "incoming_message", "described_state", "internal_review", :id => 'internal_review' + id_suffix %>
            <label for="internal_review<%=id_suffix%>">Still awaiting an internal review

    <% end %>

    <% if @info_request.described_state != 'internal_review' %>

            <%= radio_button "incoming_message", "described_state", "waiting_clarification", :id => 'waiting_clarification' + id_suffix %>
            <label for="waiting_clarification<%=id_suffix%>">Clarification has been requested

    <% end %>

        <%= radio_button "incoming_message", "described_state", "gone_postal", :id => 'gone_postal' + id_suffix %>
        <label for="gone_postal<%=id_suffix%>">A response will be sent by post

    <% if @info_request.described_state == 'internal_review' %>

The review has finished and overall:

    <% end %>

        <%= radio_button "incoming_message", "described_state", "not_held", :id => 'not_held' + id_suffix %>
        <label for="not_held<%=id_suffix%>">The authority do not have the information (maybe they say who does)

        <%= radio_button "incoming_message", "described_state", "partially_successful", :id => 'partially_successful' + id_suffix %>
        <label for="partially_successful<%=id_suffix%>">Some of the information has been sent

        <%= radio_button "incoming_message", "described_state", "successful", :id => 'successful' + id_suffix %>
        <label for="successful<%=id_suffix%>">All the information has been sent

        <%= radio_button "incoming_message", "described_state", "rejected", :id => 'rejected' + id_suffix %>
        <label for="rejected<%=id_suffix%>">The request has been rejected

       <%= radio_button "incoming_message", "described_state", "error_message", :id => 'error_message' + id_suffix %>
        <label for="error_message<%=id_suffix%>">
        An error message has been received

    <%= hidden_field_tag 'last_info_request_event_id', @last_info_request_event_id, :id => 'last_info_request_event_id' + id_suffix %>
    <%= hidden_field_tag 'submitted_describe_state', 1, :id => 'submitted_describe_state' + id_suffix %>
    <%= submit_tag "Submit status" %>

<% end %>

<% form_for(:incoming_message, @info_request, :url => describe_state_url(:id => @info_request.id)) do |f| %>

Hi! We need your help. The person who made the following request
    hasn't told us whether or not it was successful. Would you mind taking
    a moment to read it and help us keep the place tidy for everyone?
    Thanks.

    <% if @info_request.described_state != 'internal_review' %>

            <%= radio_button "incoming_message", "described_state", "waiting_response", :id => 'waiting_response' + id_suffix %>
            <label for="waiting_response<%=id_suffix%>"> No response has been received

    <% end %>
    <% if @info_request.described_state == 'internal_review' %>

            <%= radio_button "incoming_message", "described_state", "internal_review", :id => 'internal_review' + id_suffix %>
            <label for="internal_review<%=id_suffix%>">Still awaiting an internal review

    <% end %>

    <% if @info_request.described_state != 'internal_review' %>

            <%= radio_button "incoming_message", "described_state", "waiting_clarification", :id => 'waiting_clarification' + id_suffix %>
            <label for="waiting_clarification<%=id_suffix%>">Clarification has been requested

    <% end %>

        <%= radio_button "incoming_message", "described_state", "gone_postal", :id => 'gone_postal' + id_suffix %>
        <label for="gone_postal<%=id_suffix%>">A response will be sent by post

    <% if @info_request.described_state == 'internal_review' %>

The review has finished and overall:

    <% end %>

        <%= radio_button "incoming_message", "described_state", "not_held", :id => 'not_held' + id_suffix %>
        <label for="not_held<%=id_suffix%>">The authority do not have the information (maybe they say who does)

        <%= radio_button "incoming_message", "described_state", "partially_successful", :id => 'partially_successful' + id_suffix %>
        <label for="partially_successful<%=id_suffix%>">Some of the information has been sent

        <%= radio_button "incoming_message", "described_state", "successful", :id => 'successful' + id_suffix %>
        <label for="successful<%=id_suffix%>">All the information has been sent

        <%= radio_button "incoming_message", "described_state", "rejected", :id => 'rejected' + id_suffix %>
        <label for="rejected<%=id_suffix%>">The request has been rejected

       <%= radio_button "incoming_message", "described_state", "error_message", :id => 'error_message' + id_suffix %>
        <label for="error_message<%=id_suffix%>">
        An error message has been received

    <%= hidden_field_tag 'last_info_request_event_id', @last_info_request_event_id, :id => 'last_info_request_event_id' + id_suffix %>
    <%= hidden_field_tag 'submitted_describe_state', 1, :id => 'submitted_describe_state' + id_suffix %>
    <%= submit_tag "Submit status" %>

<% end %>