dont updateCustomSharingSettings when disable_advance_view

<%
   object ||= nil
   set_parameters_for_sharing_form object
   disable_advanced_view ||= nil
   show_advanced_permissions = !@resource.respond_to?(:has_advanced_permissions?) || @resource.has_advanced_permissions?
   default_projects_access_type = @resource.is_asset? ? Policy::ACCESSIBLE : Policy::EDITING
   default_consortium_access_type = Policy::VISIBLE
%>
<%# 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 %>
          <% if !disable_advanced_view%>

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

          <% end %>

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

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

Or share it with..

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

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

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

          <label for="sharing_scope_<%= Policy::EVERYONE -%>">
            <input type="radio" <%= 'checked="checked"' if @sharing_mode == Policy::EVERYONE -%> id="sharing_scope_<%= Policy::EVERYONE -%>" name="sharing[sharing_scope]"
                   value="<%= Policy::EVERYONE -%>" <%= 'disabled="true"' if @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 -%>

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

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

Additional fine-grained sharing permissions

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

              Loading...

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

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

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

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

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

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

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

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

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

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

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

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

                  Step 3

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

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

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

                      Step 3: Choose access rights, review and
                      submit

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

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

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

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

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

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

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

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

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

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

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

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

  <% end %>


ActionItem1260: replace "My communities" with "My groups"

<div id="user_menu" class="top_extra_menu AOM_paddingBottom_6"<%=
  ' help="'+ _('This menu gives you access to your personal functionalities.') +'"' if logged_in?
  %>>

  <% if logged_in? %>

      <img src="<%=
      (current_user.person.image)?
      current_user.person.image.public_filename(:icon) : "/images/icons-bar/photo.png"
      %>" alt="<%= current_user.name %> Icon-Photo" title="" height="20" border="0"/>
      <%= _("%s's Menu") % current_user.person.short_name %>

          <%= link_to( '' + __('My Home Page'), user.url, :help => _('Go to your home page.'))%>

        <%= link_to('' + _('My groups'), { :controller => 'memberships', :profile => user.identifier, :action => 'index' }) %>

        <% for enterprise in user.enterprises %>

<%= link_to('' + (_('Manage %s') % enterprise.short_name), { :controller => 'profile_editor', :profile => enterprise.identifier, :action => 'index' }) %>

        <% end %>

        <% if MailConf.enabled? && current_user.enable_email %>

          <%= link_to '' + _('Webmail'), MailConf.webmail_url %>

        <% end %>

        <%= link_to(''+ _('Control panel'), { :controller => 'profile_editor', :action => 'index', :profile => user.identifier }, :id => 'link_edit_profile', :help => _('Control panel: change your picture, edit your personal information, create content or change the way your home page looks.')) %>

        <% if user.is_admin?(environment) %>

<%= link_to( ''+ _('Admin'),
                             {:controller => 'admin_panel' },
                             :id => 'link_admin_panel',
                             :help => _('Access the site administration panel.')
                             )%>

        <% end %>

<%= link_to( ''+ _('Logout'),
                                  {:controller => 'account', :action => 'logout'},
                                  :id => 'link_logout',
                                  :help => _('This link takes you out of the system. You should logout if other people are willing to use the same computer after you.')
                                ) %>

  <% else %>

    <% if theme_option( :menu_login ) == 'full_form' %>

      <%= render :file => 'account/login_block' %>

    <% else # theme_option( :menu_login ) != 'full_form' %>

      <%= thickbox_inline_popup_link(''+ _('Login'), 'inlineLoginBox', :id => 'link_login', :help => _('Click here to enter your username and password and be recognized by the system.')) %>

        <%= render :file => 'account/login' %>
        <%= thickbox_close_button _('Close') %>

    <% end # theme_option( :menu_login ) != 'full_form' %>

  <% end %>

<%= javascript_tag 'setAutoOpenMenu( $("user_menu") )' if theme_option( :menu_login ) != 'full_form' %>

<div id="user_menu" class="top_extra_menu AOM_paddingBottom_6"<%=
  ' help="'+ _('This menu gives you access to your personal functionalities.') +'"' if logged_in?
  %>>

  <% if logged_in? %>

      <img src="<%=
      (current_user.person.image)?
      current_user.person.image.public_filename(:icon) : "/images/icons-bar/photo.png"
      %>" alt="<%= current_user.name %> Icon-Photo" title="" height="20" border="0"/>
      <%= _("%s's Menu") % current_user.person.short_name %>

          <%= link_to( '' + __('My Home Page'), user.url, :help => _('Go to your home page.'))%>

        <%= link_to('' + __('My communities'), { :controller => 'memberships', :profile => user.identifier, :action => 'index' }) %>

        <% for enterprise in user.enterprises %>

<%= link_to('' + (_('Manage %s') % enterprise.short_name), { :controller => 'profile_editor', :profile => enterprise.identifier, :action => 'index' }) %>

        <% end %>

        <% if MailConf.enabled? && current_user.enable_email %>

          <%= link_to '' + _('Webmail'), MailConf.webmail_url %>

        <% end %>

        <%= link_to(''+ _('Control panel'), { :controller => 'profile_editor', :action => 'index', :profile => user.identifier }, :id => 'link_edit_profile', :help => _('Control panel: change your picture, edit your personal information, create content or change the way your home page looks.')) %>

        <% if user.is_admin?(environment) %>

<%= link_to( ''+ _('Admin'),
                             {:controller => 'admin_panel' },
                             :id => 'link_admin_panel',
                             :help => _('Access the site administration panel.')
                             )%>

        <% end %>

<%= link_to( ''+ _('Logout'),
                                  {:controller => 'account', :action => 'logout'},
                                  :id => 'link_logout',
                                  :help => _('This link takes you out of the system. You should logout if other people are willing to use the same computer after you.')
                                ) %>

  <% else %>

    <% if theme_option( :menu_login ) == 'full_form' %>

      <%= render :file => 'account/login_block' %>

    <% else # theme_option( :menu_login ) != 'full_form' %>

      <%= thickbox_inline_popup_link(''+ _('Login'), 'inlineLoginBox', :id => 'link_login', :help => _('Click here to enter your username and password and be recognized by the system.')) %>

        <%= render :file => 'account/login' %>
        <%= thickbox_close_button _('Close') %>

    <% end # theme_option( :menu_login ) != 'full_form' %>

  <% end %>

<%= javascript_tag 'setAutoOpenMenu( $("user_menu") )' if theme_option( :menu_login ) != 'full_form' %>


ActionItem862: no need to duplicate the enterprise name

 <%= _('Products/Services') % @profile.name %>

<% @products.each do |product| %>

    <%= link_to_product product, :class => 'product-pic', :style => 'background-image:url(%s)' %
          ( product.image ? product.image.public_filename(:portrait) : '/images/icons-app/product-default-pic-portrait.png' ) %>

      <%= link_to_product product %>

      <% if product.price %>

 <%= _('Price: %s') % ( "%.2f" % product.price) %>

      <% end %>

 <%= link_to_category(product.product_category) %>

    <% if product.description %>

      <%= txt2html product.description %>

    <% else %>

    <% end %>

<% end %>

 <%= _('%s:Products/Services') % @profile.name %>

<% @products.each do |product| %>

    <%= link_to_product product, :class => 'product-pic', :style => 'background-image:url(%s)' %
          ( product.image ? product.image.public_filename(:portrait) : '/images/icons-app/product-default-pic-portrait.png' ) %>

      <%= link_to_product product %>

      <% if product.price %>

 <%= _('Price: %s') % ( "%.2f" % product.price) %>

      <% end %>

 <%= link_to_category(product.product_category) %>

    <% if product.description %>

      <%= txt2html product.description %>

    <% else %>

    <% end %>

<% end %>


added id to h2 projects in app/views/welcome/index

  <% if @projects.any? %>

<a href="<%= projects_path %>"><%= l(:label_project_plural) %>

<%=l(:label_featured_projects)%>

      <% for project in @projects %>
        <% @project = project %>

        <%= link_to_project project %> (<%= format_time(project.created_on) %>)
        <%= textilizable project.short_description, :project => project %>

      <% end %>
      <% @project = nil %>

  <% end %>
  <%= call_hook(:view_welcome_index_left, :projects => @projects) %>

<%= textilizable Setting.welcome_text %>

  <% if @news.any? %>

<%=l(:label_news_latest)%>

    <%= render :partial => 'news/news', :collection => @news %>
    <%= link_to l(:label_news_view_all), :controller => 'news' %>

  <% end %>
  <%= call_hook(:view_welcome_index_right, :projects => @projects) %>

<% content_for :header_tags do %>
<%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
                                   :title => "#{Setting.app_title}: #{l(:label_news_latest)}") %>
<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
                                   :title => "#{Setting.app_title}: #{l(:label_activity)}") %>
<% end %>


Cancel link

Cancel link

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

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

Choose your profile photo

<%= foi_error_messages_for :set_profile_photo %>

<% form_tag 'set_photo', :id => 'set_draft_profile_photo_form', :multipart => true do %>

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

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

        <%= hidden_field_tag 'submitted_draft_profile_photo', 1 %>

            <%= hidden_field_tag 'automatically_crop', 1 %>
            <%= submit_tag "Done >>" %>

<% end %>

<% if @user.profile_photo %>

OR remove the existing photo

    <% form_tag 'clear_photo', :id => 'clear_profile_photo_form', :multipart => true do %>
        <%= submit_tag "Clear photo" %>
    <% end %>

<% end %>

    <%= link_to h("Cancel, return to your profile page"), user_url(@user) %>


Fixed label for attributes on article creation form (closes #229) [kevin@sb.org]

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

<%= error_messages_for 'article' %>

  Title:

  <%= text_field 'article', 'title'  %>
  (<%= link_to_function "» edit permalink", "Toggle.display('permalink')" %>)

  Permalink:

  <%= text_field 'article', 'permalink'  %>

  Categories:

  <select id="categories" name="categories[]" multiple="multiple" size="10" style="width:250px;">
  <%= options_from_collection_for_select(@categories, "id", "name", @selected) %>
  </select>

  Article:

  <%= text_area 'article', 'body', :rows => 25  %>

  Add Extended Content

  Extended:

  <%= text_area 'article', 'extended', :rows => 30  %>

Toggle Advanced Options (+/-)

Allow comments: <%= check_box 'article', 'allow_comments'  %>

Allow pings: <%= check_box 'article', 'allow_pings'  %>

Published:<%= check_box 'article', 'published'  %>

Textfilter: <%= select 'article', 'text_filter', text_filter_options %>

Creation date:<%= datetime_select 'article', 'created_at'  %>

<%= error_messages_for 'article' %>

  Title:

  <%= text_field 'article', 'title'  %>
  (<%= link_to_function "» edit permalink", "Toggle.display('permalink')" %>)

  Permalink:

  <%= text_field 'article', 'permalink'  %>

  Categories:

  <select name="categories[]" multiple="multiple" size="10" style="width:250px;">
  <%= options_from_collection_for_select(@categories, "id", "name", @selected) %>
  </select>

  Article:

  <%= text_area 'article', 'body', :rows => 25  %>

  Add Extended Content

  Extended:

  <%= text_area 'article', 'extended', :rows => 30  %>

Toggle Advanced Options (+/-)

Allow comments: <%= check_box 'article', 'allow_comments'  %>

Allow pings: <%= check_box 'article', 'allow_pings'  %>

Published:<%= check_box 'article', 'published'  %>

Textfilter: <%= select 'article', 'text_filter', text_filter_options %>

Creation date:<%= datetime_select 'article', 'created_at'  %>


Removing useless code

Removing useless code

mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda
mexendo o contedudo para ver como fica a parada toda


fixed html

fixed html

<!doctype html>
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="/css/main.css">
    <link rel="alternate" type="application/atom+xml" title="<%= title %> - feed" href="/index.xml" />
    <title><%= title %></title>
  </head>
  <body>
    <section>
      <%= yield %>
    </section>
  </body>
</html>

<doctype html>
<head>
  <link rel="stylesheet" type="text/css" href="/css/main.css">
  <link rel="alternate" type="application/atom+xml" title="<%= title %> - feed" href="/index.xml" />
  <title><%= title %></title>
</head>
<html>
  <body>
    <section>
      <%= yield %>
    </section>
  </body>
</html>


ds: fixed css zindex and coloring

ds: fixed css zindex and coloring

<style>
div#query_review_parent {
    position: absolute;
    top: 1px;
    left: 1px;
		z-index: 100000;
}

div.query_review_container {
    float: left;
}

div.query_review {
	height: 18px;
	margin: 1px;
	opacity: 0.75;
	padding-left: 3px;
	padding-right: 3px;
	border: 1px solid black;
	font-size: 12px;
	font-weight: bold;
  text-align: left;
}

div.query_review.sql_ok {
	background-color: #090;
	color: #020;
}

div.query_review.sql_warning {
	background-color: #FAE100;
	color: #F05000;
}

div.query_review.sql_critical {
	background-color: #F99;
	color: #A00;
}

div.query_review.sql_disabled {
	background-color: #BBB;
	color: #555;
}

div.query_review a {
	color: inherit;
	text-decoration: none;
}

div.query_review_details {
	width: 900px;
	height: 600px;
	opacity: 0.9;
	margin: 1px;
	padding: 2px;
	border: 1px solid black;
	font-size: 12px;
	overflow: auto;
	background-color: #DDD;
  text-align: left;
  text-indent: 0px;
  color: black;
}

div.query_review_details p {
	margin: 2px 0 2px 0;
	padding: 0px;
}

div.query_review_details a {
	color: #29ABE2;
}

div.query_review_details ul {
	list-style-type: circle;
	padding-left: 15px;
}

div.query_review_details li {
  clear: both;
}

div.query_review_details code {
	white-space: normal;
	line-height: 120%;
}

div.query_review_details .title {
	font-weight: bold;
}

div.query_review_details .indent {
	padding-left: 10px;
}

div.query_review_details .number {
	font-weight: bold;
}

div.query_review_details .bad {
	color: #900;
}

div.query_review_details .good {
	color: #090;
}

div.query_review_details div.divider {
	width: 504px;
	position: relative;
	left: -2px;
	height: 1px;
	border-top: 1px dashed black;
	margin: 2px 0 2px 0;
}

div.query_review_details .small {
	font-size: 10px;
}

div.query_review_details .tbpadded {
	padding-top: 3px;
	padding-bottom: 3px;
}

div.query_review_details .trace {
	background-color: #0C1021;
	color: #7F908A;
	padding: 5px;
	margin-right: 30px;
}

div.query_review_details .trace .bold {
	color: white;
}

div.query_review_details div.spectrum_container {
	margin-top: 4px;
	width: 35px;
	display: block;
	float: left;
	position: relative;
	height: 14px;
	margin-right: 5px;
}

div.query_review_details div.spectrum_elem {
	width: 1px;
	display: block;
	float: left;
	height: 10px;
}
div.query_review_details div.spectrum_pointer {
	width: 2px;
	display: block;
	float: left;
	position: absolute;
	height: 14px;
	background-color: black;
	top: -2px;
}

div.query_review_details table {
	background-color: white;
	border: 1px solid gray;
	padding: 0px;
	margin: 0px;
}

div.query_review_details tbody {
	border: 0px;
	padding: 0px;
	margin: 0px;
}

div.query_review_details thead {
	border-bottom: 1px solid gray;
	padding: 0px;
	margin: 0px;
}

div.query_review_details tr {
	border: 0px;
	padding: 0px;
	margin: 0px;
}

div.query_review_details td {
	border: 0px;
	padding: 0px;
	margin: 0px;
    overflow: hidden;
}

div.query_review_details th {
	border-bottom: 1px solid gray;
	padding: 0px;
	margin: 0px;
}

</style>

<style>
.sql {
	color: black;
}
.sql .String {
	color: #009933;
}
.sql .Keyword {
	color: #0000FF;
}
.sql .Constant {
	color: #6782D3;
}
.sql .Number {
	color: #0066FF;
}
.sql .Comment {
   color: #0066FF;
   font-style: italic;
}
</style>

<script type="text/javascript">
//Super lame show/hide functions so we don't need any 3rd party JS libs
function query_review_show(id) {
	document.getElementById(id).style.display = "block";
}

function query_review_hide(id) {
	document.getElementById(id).style.display = "none";
}
function query_review_toggle(id) {
	if(document.getElementById(id).style.display == "none") {
		document.getElementById(id).style.display = "block";
	} else {
		document.getElementById(id).style.display = "none";
	}
}
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function ignore_list() {
	var ignore_list = readCookie("query_review_ignore_list")
	if (!ignore_list)
		ignore_list = []
	else
		ignore_list = ignore_list.split(",")
	return ignore_list
}

function add_ignore_hash(h){
	var list = ignore_list();
	list[list.length] = h
	createCookie("query_review_ignore_list", list.join(","))
}

function remove_ignore_hash(h) {
	var list = ignore_list();
	var new_list = []
	for(var i=0; i<list.length; i++)
	{
		if(list[i].toString() != h.toString()) {
			new_list[new_list.length] = list[i]
		}
	}
	createCookie("query_review_ignore_list", new_list.join(","))
}
</script>

<style>
div#query_review_parent {
    position: absolute;
    top: 1px;
    left: 1px;
}

div.query_review_container {
    float: left;
}

div.query_review {
	height: 18px;
	margin: 1px;
	opacity: 0.75;
	padding-left: 3px;
	padding-right: 3px;
	border: 1px solid black;
	font-size: 12px;
	font-weight: bold;
  text-align: left;
}

div.query_review.sql_ok {
	background-color: #090;
	color: #020;
}

div.query_review.sql_warning {
	background-color: #FAE100;
	color: #F05000;
}

div.query_review.sql_critical {
	background-color: #F99;
	color: #A00;
}

div.query_review.sql_disabled {
	background-color: #BBB;
	color: #555;
}

div.query_review a {
	color: inherit;
	text-decoration: none;
}

div.query_review_details {
/*	position: absolute;
	top: 21px;
	left: 1px;*/
	width: 900px;
	height: 600px;
	opacity: 0.9;
	margin: 1px;
	padding: 2px;
	border: 1px solid black;
	font-size: 12px;
	overflow: auto;
	background-color: #DDD;
  text-align: left;
  text-indent: 0px;
}

div.query_review_details p {
	margin: 2px 0 2px 0;
	padding: 0px;
}

div.query_review_details a {
	color: #29ABE2;
}

div.query_review_details ul {
	list-style-type: circle;
	padding-left: 15px;
}

div.query_review_details li {
  clear: both;
}

div.query_review_details code {
	white-space: normal;
	line-height: 120%;
}

div.query_review_details .title {
	font-weight: bold;
}

div.query_review_details .indent {
	padding-left: 10px;
}

div.query_review_details .number {
	font-weight: bold;
}

div.query_review_details .bad {
	color: #900;
}

div.query_review_details .good {
	color: #090;
}

div.query_review_details div.divider {
	width: 504px;
	position: relative;
	left: -2px;
	height: 1px;
	border-top: 1px dashed black;
	margin: 2px 0 2px 0;
}

div.query_review_details .small {
	font-size: 10px;
}

div.query_review_details .tbpadded {
	padding-top: 3px;
	padding-bottom: 3px;
}

div.query_review_details .trace {
	background-color: #0C1021;
	color: #7F908A;
	padding: 5px;
	margin-right: 30px;
}

div.query_review_details .trace .bold {
	color: white;
}

div.query_review_details div.spectrum_container {
	margin-top: 4px;
	width: 35px;
	display: block;
	float: left;
	position: relative;
	height: 14px;
	margin-right: 5px;
}

div.query_review_details div.spectrum_elem {
	width: 1px;
	display: block;
	float: left;
	height: 10px;
}
div.query_review_details div.spectrum_pointer {
	width: 2px;
	display: block;
	float: left;
	position: absolute;
	height: 14px;
	background-color: black;
	top: -2px;
}

div.query_review_details table {
	background-color: white;
	border: 1px solid gray;
	padding: 0px;
	margin: 0px;
}

div.query_review_details tbody {
	border: 0px;
	padding: 0px;
	margin: 0px;
}

div.query_review_details thead {
	border-bottom: 1px solid gray;
	padding: 0px;
	margin: 0px;
}

div.query_review_details tr {
	border: 0px;
	padding: 0px;
	margin: 0px;
}

div.query_review_details td {
	border: 0px;
	padding: 0px;
	margin: 0px;
    overflow: hidden;
}

div.query_review_details th {
	border-bottom: 1px solid gray;
	padding: 0px;
	margin: 0px;
}

</style>

<style>
.sql {
	color: black;
}
.sql .String {
	color: #009933;
}
.sql .Keyword {
	color: #0000FF;
}
.sql .Constant {
	color: #6782D3;
}
.sql .Number {
	color: #0066FF;
}
.sql .Comment {
   color: #0066FF;
   font-style: italic;
}
</style>

<script type="text/javascript">
//Super lame show/hide functions so we don't need any 3rd party JS libs
function query_review_show(id) {
	document.getElementById(id).style.display = "block";
}

function query_review_hide(id) {
	document.getElementById(id).style.display = "none";
}
function query_review_toggle(id) {
	if(document.getElementById(id).style.display == "none") {
		document.getElementById(id).style.display = "block";
	} else {
		document.getElementById(id).style.display = "none";
	}
}
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function ignore_list() {
	var ignore_list = readCookie("query_review_ignore_list")
	if (!ignore_list)
		ignore_list = []
	else
		ignore_list = ignore_list.split(",")
	return ignore_list
}

function add_ignore_hash(h){
	var list = ignore_list();
	list[list.length] = h
	createCookie("query_review_ignore_list", list.join(","))
}

function remove_ignore_hash(h) {
	var list = ignore_list();
	var new_list = []
	for(var i=0; i<list.length; i++)
	{
		if(list[i].toString() != h.toString()) {
			new_list[new_list.length] = list[i]
		}
	}
	createCookie("query_review_ignore_list", new_list.join(","))
}
</script>


fix edit route

fix edit route

<% content_for('optionbar') do %>
  <%= pagination_links(@electricity_reading_pages) %>
  <%= option "new_reading", { :account => params[:account] } %>
  <%= option "back_to_add_data" %>
  <%= option "edit_elec_account", { :account => params[:account] } %>

    <%= image_tag_with_tooltip('export.png') %>
    <%= link_to 'Export Data', { :action => 'export', :account => params[:account]} %>

  <% if @electricity_readings.size > 1 %>
    <%= option "analysis" %>
  <% end %>
<% end %>

<% if @electricity_readings.empty? %>
  <%= tip_box("You don't have any data in this account yet! Take an electricity reading and enter it here so we can proceed.") %>
<% elsif @electricity_readings.size == 1 %>
  <%= tip_box("You need two readings in order for us to analyse your data! Take another electricity reading (a few days after the first) and enter it here so we can proceed.") %>
<% else %>
  <%= tip_box(@tip) %>
<% end %>

NOTE: If the units are wrong for your meter, you can change them in the <%= link_to 'edit account details', edit_user_electricity_account_path(@current_user, @account) %> section.

  Date
<% if @account.night_rate %>
  Day (<%=h @account.electricity_unit.abbreviation %>)
  Night (<%=h @account.electricity_unit.abbreviation %>)
<% else %>
  Reading (<%=h @account.electricity_unit.abbreviation %>)
<% end %>

<% for reading in @electricity_readings %>
  <tr id="reading<%= reading.id %>">
  <%=h reading.taken_on.strftime("%d %b %y") %>
<% if @account.night_rate %>
  <%=h reading.reading_day %>
  <%=h reading.reading_night %>
<% else %>
  <%=h reading.reading_day %>
<% end %>
  <%= image_tag_with_tooltip('automatic.png') if reading.automatic %>
  <%= link_to image_tag_with_tooltip('edit.png'), :action => 'edit', :id => reading, :account => params[:account] %>
  <%= link_to image_tag_with_tooltip('delete.png'), { :action => 'destroy', :id => reading, :account => params[:account] }, :confirm => 'Delete this reading?', :method => :post %>

<% end %>

<% content_for('optionbar') do %>
  <%= pagination_links(@electricity_reading_pages) %>
  <%= option "new_reading", { :account => params[:account] } %>
  <%= option "back_to_add_data" %>
  <%= option "edit_elec_account", { :account => params[:account] } %>

    <%= image_tag_with_tooltip('export.png') %>
    <%= link_to 'Export Data', { :action => 'export', :account => params[:account]} %>

  <% if @electricity_readings.size > 1 %>
    <%= option "analysis" %>
  <% end %>
<% end %>

<% if @electricity_readings.empty? %>
  <%= tip_box("You don't have any data in this account yet! Take an electricity reading and enter it here so we can proceed.") %>
<% elsif @electricity_readings.size == 1 %>
  <%= tip_box("You need two readings in order for us to analyse your data! Take another electricity reading (a few days after the first) and enter it here so we can proceed.") %>
<% else %>
  <%= tip_box(@tip) %>
<% end %>

NOTE: If the units are wrong for your meter, you can change them in the <%= link_to 'edit account details', :controller => '/electricity_accounts', :action => 'edit', :id => params[:account] %> section.

  Date
<% if @account.night_rate %>
  Day (<%=h @account.electricity_unit.abbreviation %>)
  Night (<%=h @account.electricity_unit.abbreviation %>)
<% else %>
  Reading (<%=h @account.electricity_unit.abbreviation %>)
<% end %>

<% for reading in @electricity_readings %>
  <tr id="reading<%= reading.id %>">
  <%=h reading.taken_on.strftime("%d %b %y") %>
<% if @account.night_rate %>
  <%=h reading.reading_day %>
  <%=h reading.reading_night %>
<% else %>
  <%=h reading.reading_day %>
<% end %>
  <%= image_tag_with_tooltip('automatic.png') if reading.automatic %>
  <%= link_to image_tag_with_tooltip('edit.png'), :action => 'edit', :id => reading, :account => params[:account] %>
  <%= link_to image_tag_with_tooltip('delete.png'), { :action => 'destroy', :id => reading, :account => params[:account] }, :confirm => 'Delete this reading?', :method => :post %>

<% end %>


Fixed #9944 Wrong list of activities in Hot Buttons plugin configuration

<%
  issue_statuses = {}
	IssueStatus.find(:all).each { |status| issue_statuses[status.id] = status.name }

	issue_fields = {
	  :issue_tracker_id => l(:field_tracker),
	  :issue_subject => l(:field_subject),
	  :issue_status_id => l(:field_status),
	  :issue_priority_id => l(:field_priority),
	  :issue_parent_issue_id => l(:field_parent_issue),
	  :issue_start_date => l(:field_start_date),
	  :issue_due_date => l(:field_due_date),
	  :issue_estimated_hours => l(:field_estimated_hours),
	  :issue_done_ratio => l(:field_done_ratio)
	}

  issue_custom_fields = {}
  time_entry_custom_fields = {}
	CustomField.find(:all).each { |field|
	  if field[:type].eql? "IssueCustomField"
	    issue_custom_fields[field.id] = field.name
	  elsif field[:type].eql? "TimeEntryCustomField"
      time_entry_custom_fields[field.id] = field.name
	  end
	}

  user_roles = {}
	Role.find(:all).each { |role| user_roles[role.id] = role.name }

  i18n_strings = I18n.backend.send(:translations)
  locale = I18n.locale

  trackers = {}
  Tracker.find(:all).each { |tracker| trackers[tracker.id] = tracker.name }

  activities = {}
  TimeEntryActivity.find(:all, :conditions => ['project_id IS NULL AND active = 1']).each { |activity| activities[activity.id] = activity.name}

  projects = {}
  Project.find(:all).each { |project|
    projects[project.id] = project.name
    project.activities.each { |activity|
      activities[activity.id] || activities[activity.id] = "#{activity.name} (#{project.name})"
    }
  };
%>
<% content_for :header_tags do %>
  <%= javascript_include_tag 'settings.js', :plugin => 'issue_hot_buttons_plugin' %>
  <%= stylesheet_link_tag 'settings.css', :plugin => 'issue_hot_buttons_plugin' %>

<% end %>

<%
  issue_statuses = {}
	IssueStatus.find(:all).each { |status| issue_statuses[status.id] = status.name }

	issue_fields = {
	  :issue_tracker_id => l(:field_tracker),
	  :issue_subject => l(:field_subject),
	  :issue_status_id => l(:field_status),
	  :issue_priority_id => l(:field_priority),
	  :issue_parent_issue_id => l(:field_parent_issue),
	  :issue_start_date => l(:field_start_date),
	  :issue_due_date => l(:field_due_date),
	  :issue_estimated_hours => l(:field_estimated_hours),
	  :issue_done_ratio => l(:field_done_ratio)
	}

  issue_custom_fields = {}
  time_entry_custom_fields = {}
	CustomField.find(:all).each { |field|
	  if field[:type].eql? "IssueCustomField"
	    issue_custom_fields[field.id] = field.name
	  elsif field[:type].eql? "TimeEntryCustomField"
      time_entry_custom_fields[field.id] = field.name
	  end
	}

  user_roles = {}
	Role.find(:all).each { |role| user_roles[role.id] = role.name }

  i18n_strings = I18n.backend.send(:translations)
  locale = I18n.locale

  trackers = {}
  Tracker.find(:all).each { |tracker| trackers[tracker.id] = tracker.name }

  activities = {}
  TimeEntryActivity.find(:all).each { |activity| activities[activity.id] = activity.name}

  projects = {}
  Project.find(:all).each { |project| projects[project.id] = project.name};
%>
<% content_for :header_tags do %>
  <%= javascript_include_tag 'settings.js', :plugin => 'issue_hot_buttons_plugin' %>
  <%= stylesheet_link_tag 'settings.css', :plugin => 'issue_hot_buttons_plugin' %>

<% end %>


Removed the ability to move a bat to a new cage from the weigh one bat page.

Band
Weight
Already Fed
Weight Note

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

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

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

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

<%= submit_tag 'Submit Weight' %>

Band
Weight
Already Fed
Weight Note
Cage
Cage change reason

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

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

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

<%# See http://www.rubyonrails.org/api/classes/ActionView/Helpers/FormOptionsHelper.html#M000404 %>
<%= select 'bat_cage', weigh_one_bat.id.to_s , @cages.collect {|c| [c.name , c.id] }, :selected => weigh_one_bat.cage.id  %>
<%= text_field 'cage_change_note', weigh_one_bat.id %>

<%= submit_tag 'Submit Weight' %>


Include link to source tree in revision page.

  «
  <% unless @changeset.previous.nil? -%>
    <%= link_to_revision(@changeset.previous.revision, @project, :text => l(:label_previous)) %>
  <% else -%>
    <%= l(:label_previous) %>
  <% end -%>
|
  <% unless @changeset.next.nil? -%>
    <%= link_to_revision(@changeset.next.revision, @project, :text => l(:label_next)) %>
  <% else -%>
    <%= l(:label_next) %>
  <% end -%>
  »

  <% form_tag({:controller => 'repositories', :action => 'revision', :id => @project, :rev => nil}, :method => :get) do %>
    <%= text_field_tag 'rev', @rev[0,8], :size => 8 %>
    <%= submit_tag 'OK', :name => nil %>
  <% end %>

<%= l(:label_revision) %> <%= format_revision(@changeset.revision) %>

<%= link_to "(View source tree.)", {:action => "show", :controller => "repositories", :rev => @changeset.revision} %>

<% if @changeset.scmid %>ID: <%= @changeset.scmid %>
<% end %>
<%= authoring(@changeset.committed_on, @changeset.author) %>

<%= textilizable @changeset.comments %>

<% if @changeset.issues.visible.any? %>

<%= l(:label_related_issues) %>

<% @changeset.issues.visible.each do |issue| %>

<%= link_to_issue issue %>

<% end %>

<% end %>

<% if User.current.allowed_to?(:browse_repository, @project) %>

<%= l(:label_attachment_plural) %>

<%= l(:label_added) %>

<%= l(:label_modified) %>

<%= l(:label_copied) %>

<%= l(:label_renamed) %>

<%= l(:label_deleted) %>

<%= link_to(l(:label_view_diff), :action => 'diff', :id => @project, :path => "", :rev => @changeset.revision) if @changeset.changes.any? %>

<%= render_changeset_changes %>

<% end %>

<% content_for :header_tags do %>
<%= stylesheet_link_tag "scm" %>
<% end %>

<% html_title("#{l(:label_revision)} #{@changeset.revision}") -%>

  «
  <% unless @changeset.previous.nil? -%>
    <%= link_to_revision(@changeset.previous.revision, @project, :text => l(:label_previous)) %>
  <% else -%>
    <%= l(:label_previous) %>
  <% end -%>
|
  <% unless @changeset.next.nil? -%>
    <%= link_to_revision(@changeset.next.revision, @project, :text => l(:label_next)) %>
  <% else -%>
    <%= l(:label_next) %>
  <% end -%>
  »

  <% form_tag({:controller => 'repositories', :action => 'revision', :id => @project, :rev => nil}, :method => :get) do %>
    <%= text_field_tag 'rev', @rev[0,8], :size => 8 %>
    <%= submit_tag 'OK', :name => nil %>
  <% end %>

<%= l(:label_revision) %> <%= format_revision(@changeset.revision) %>

<% if @changeset.scmid %>ID: <%= @changeset.scmid %>
<% end %>
<%= authoring(@changeset.committed_on, @changeset.author) %>

<%= textilizable @changeset.comments %>

<% if @changeset.issues.visible.any? %>

<%= l(:label_related_issues) %>

<% @changeset.issues.visible.each do |issue| %>

<%= link_to_issue issue %>

<% end %>

<% end %>

<% if User.current.allowed_to?(:browse_repository, @project) %>

<%= l(:label_attachment_plural) %>

<%= l(:label_added) %>

<%= l(:label_modified) %>

<%= l(:label_copied) %>

<%= l(:label_renamed) %>

<%= l(:label_deleted) %>

<%= link_to(l(:label_view_diff), :action => 'diff', :id => @project, :path => "", :rev => @changeset.revision) if @changeset.changes.any? %>

<%= render_changeset_changes %>

<% end %>

<% content_for :header_tags do %>
<%= stylesheet_link_tag "scm" %>
<% end %>

<% html_title("#{l(:label_revision)} #{@changeset.revision}") -%>


* _markdown.rhtml: Fixed wiki link hint.

git-svn-id: ce004a3be656e491f060c65e2aab8dd2a5477e8b@15 f7b17897-190c-4688-811d-8cf59fb8cab0

Markdown formatting tips (advanced)

# your text	→
Your  Text

## your text	→
Your Text

### your text	→
Your Text

_your text_	→	your text

*your text*	→	your text

**your text**	→	your text

`my code`	→	my code

* Bulleted list
* Second item	→	• Bulleted list
• Second item

1. Numbered list
1. Second item	→	1. Numbered list
2. Second item

[[Wiki Page]]	→	Wiki Page

[link name](URL)	→	link name

***	→	Horizontal ruler

<http://url>
<email@add.com>	→	Auto-linked

![Alt text](URL)	→	Image

Markdown formatting tips (advanced)

# your text	→
Your  Text

## your text	→
Your Text

### your text	→
Your Text

_your text_	→	your text

*your text*	→	your text

**your text**	→	your text

`my code`	→	my code

* Bulleted list
* Second item	→	• Bulleted list
• Second item

1. Numbered list
1. Second item	→	1. Numbered list
2. Second item

[[Wiki Page]](URL)	→	Wiki Page

[link name](URL)	→	link name

***	→	Horizontal ruler

<http://url>
<email@add.com>	→	Auto-linked

![Alt text](URL)	→	Image


another small fix to ensure comments can be posted when viewed inside the category.

git-svn-id: 035394e0ea20290a56a73539b1ebfcd8236adefd@400 7bd17f4f-1217-0410-bbc5-bc4367116c30

<div class="post" id="article_<%= article.id %>">
  <% unless article.published? -%>

<%= "\"#{article.title}\" is saved as a draft, which means others will not see it until it is published.\"" %>

  <% end -%>

Author: <%= User.find(article.author).full_name %>

Published On: <%=article.published_at %>

<%= article.title %>"<%= link_to_if_editable("#{image_tag('/images/icons/pencil.png')} Edit", {:controller=>'article',:action=>'write', :id=>article.id},{:class=>"editOptions"}) %>

<%= article.body %>

		<%= image_tag('/images/icons/tag_blue.png')%> Tags
		<% for tag in article.tags -%>

<%= link_to tag.name, {:controller=>'search',:action=>'all',:id=>tag.name},:post=>true %>

		<% end -%>

	<% if article.allow_comments? -%>

Comments (<%= article.comment_count %>)

  <%= error_messages_for 'article' -%>
	<%= start_form_tag :controller=>'article', :action=>'comment_on' , :id=>article %>

	  <%= render :partial=>'article/comment_form'%>

Save Changes:<%= submit_tag "Add Comment" %>

	</form>
	  <% article.comments.each do | comment | -%>
        <%= render :partial=>'article/comment',:locals=>{:comment=>comment} %>
    <% end -%>
	<% end -%>

	<%= "
 Comments are not allowed.
"    unless article.allow_comments? %>

<div class="post" id="article_<%= article.id %>">
  <% unless article.published? -%>

<%= "\"#{article.title}\" is saved as a draft, which means others will not see it until it is published.\"" %>

  <% end -%>

Author: <%= User.find(article.author).full_name %>

Published On: <%=article.published_at %>

<%= article.title %>"<%= link_to_if_editable("#{image_tag('/images/icons/pencil.png')} Edit", {:controller=>'article',:action=>'write', :id=>article.id},{:class=>"editOptions"}) %>

<%= article.body %>

		<%= image_tag('/images/icons/tag_blue.png')%> Tags
		<% for tag in article.tags -%>

<%= link_to tag.name, {:controller=>'search',:action=>'all',:id=>tag.name},:post=>true %>

		<% end -%>

	<% if article.allow_comments? -%>

Comments (<%= article.comment_count %>)

  <%= error_messages_for 'article' -%>
	<%= start_form_tag :action=>'comment_on' , :id=>article %>

	  <%= render :partial=>'article/comment_form'%>

Save Changes:<%= submit_tag "Add Comment" %>

	</form>
	  <% article.comments.each do | comment | -%>
        <%= render :partial=>'article/comment',:locals=>{:comment=>comment} %>
    <% end -%>
	<% end -%>

	<%= "
 Comments are not allowed.
"    unless article.allow_comments? %>


should fix the formatting of doodle answer mails #973

<%=h @doodle_answer.doodle.project.name %>: <%= link_to(h(@doodle_answer.doodle.title), @doodle_url) %>

<%=h @doodle_answer.doodle.author %>

<%= l(:text_doodle_answered, :author => h(@doodle_answer.author)) %>


Fix leaked i18n

Fix leaked i18n

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

<div class="atomentry" id="article-<%= article.id %>">

    <%= (controller.action_name.include? 'permalink') ? article.title : article_link(article.title, article) %>
    <%= content_tag(:span, article.comments.size, :class => 'comment_count') if article.comments.size > 0 %>

    Posted by <%= author_link(article) %>
    <abbr class="published" title="<%= article.created_at.xmlschema %>"><%= js_distance_of_time_in_words_to_now article.created_at %>

    <%= article_html(article, :body) %>

    <% if article.extended? -%>

        <% if controller.action_name == 'index' -%>

<%= article_link "Continue reading...", article %>

        <% else -%>
          <%= article_html(article, :extended) %>
        <% end -%>

    <% end -%>

    <%= content_tag(:li, category_links(article), :class => 'categories') unless article.categories.empty? %>
    <%= content_tag(:li, tag_links(article), :class => 'tags') unless article.tags.empty? %>

Meta
      <%= trackbacks_link(article) << ',' if article.allow_pings? %>
      <%= comments_link(article) << ',' if article.allow_comments? %>
      <a href="<%= article_url article %>" rel="bookmark">permalink,
      <a href="<%= xml_url :action=>'feed', :type=>'article', :format => 'rss',  :id => article %>">rss,
      <a href="<%= xml_url :action=>'feed', :type=>'article', :format => 'atom', :id => article %>">atom

<div class="atomentry" id="article-<%= article.id %>">

    <%= (controller.action_name.include? 'permalink') ? article.title : article_link(article.title, article) %>
    <%= content_tag(:span, article.comments.size, :class => 'comment_count') if article.comments.size > 0 %>

    Posted by <%= author_link(article) %>
    <abbr class="published" title="<%= article.created_at.xmlschema %>"><%= js_distance_of_time_in_words_to_now article.created_at %>

    <%= article_html(article, :body) %>

    <% if article.extended? -%>

        <% if controller.action_name == 'index' -%>

<%= article_link "Continue reading...", article %>

        <% else -%>
          <%= article_html(article, :extended) %>
        <% end -%>

    <% end -%>

    <%= content_tag(:li, category_links(article), :class => 'categories') unless article.categories.empty? %>
    <%= content_tag(:li, tag_links(article), :class => 'tags') unless article.tags.empty? %>

Meta
      <%= trackbacks_link(article) << ',' if article.allow_pings? %>
      <%= comments_link(article) << ',' if article.allow_comments? %>
      <a href="<%= article_url article %>" rel="bookmark"><%=h _('permalink')%>,
      <a href="<%= xml_url :action=>'feed', :type=>'article', :format => 'rss',  :id => article %>">rss,
      <a href="<%= xml_url :action=>'feed', :type=>'article', :format => 'atom', :id => article %>">atom


Some more help improvements.

Some more help improvements.

<% @title = "About" %>

Contact us

If your question isn't answered here, or you just wanted to let us know
something about the site, contact us.

Introduction to WhatDoTheyKnow

What is WhatDoTheyKnow for?

To help you find out inside information about what the UK government
is doing.

How does the site work?

You choose the public authority that you would like information from, then
write a brief note describing what you want to know. We then send your request
to the public authority. Any response they make is automatically published on the
website for you and anyone else to find and read.

Why would I bother to do this?

You pay taxes, and then government does things with the money. All sorts of
things that affect your life, from healthcare through to national defence. Some
it does badly, some it does well. The more we find out about how government
works, the better able we are to make suggestions to improve the things that
are done badly, and to celebrate the things that are done well.

Why would the public authority bother to reply?

Under Freedom of Information (FOI) law, they have to respond.

Who makes it?

WhatDoTheyKnow is created and run by mySociety,
and was initially funded by the JRSST Charitable Trust. mySociety is a project of the
registered charity UK Citizens Online Democracy.
If you like what we're doing, then you can
make a donation.

Making requests

You're missing the public authority that I want to request from!

Please contact us with the name of the public authority and,
if you can find it, their contact email address for Freedom of Information requests.
If you'd like to help add a whole category of public authority to the site, for example all
primary care trusts or all schools, then please
edit this shared spreadsheet (Google account required).

How quickly will I get a response?

By law public authorities must respond "promptly", and in any event not later
than 20 working days after receiving your request. The date of that hard limit
is shown on the page for your request. You will be emailed if this date goes by
without a response, so you can send the public authority another note to remind
them that they are breaking the law. Note: If you had to
clarify your request, the clock starts from that date, instead of the date they
received your initial request.

What if I'm not satisfied with the response?

If you didn't get the information you asked for, or you didn't get it in time,
then read our page 'Unhappy about the response you got?'.

Can you tell me more of the nitty gritty about the process of making requests?

Have a look at the
access to official information
pages on the Information Commisioner's website.

Can I request information about myself?

Not using this site. Requests made using WhatDoTheyKnow are public, made under the
Freedom of Information Act, and cannot help you find information about a
private individual. If you would like to know what information a public
authority holds about yourself, you should make a "Subject Access Request" in
private using Data Protection law.  The leaflet Subject
Access - A guide for data subjects (on the Information Commisioner's
website) explains how to do this.

I'd like to keep my request secret! (At least until I publish my story)

WhatDoTheyKnow is currently only designed for public requests. All
responses that we receive are automatically published on the website for anyone
to read.  You should contact the public authority directly if you would like to
make a request in private.  If you're interested in buying a system which helps
you manage FOI requests in secret, then contact us.

Why can I only request information about the environment from some authorities?

Some public authorities, such as South East Water,
don't come under the Freedom of Information Act, but do come under another law called
the Environmental Information Regulations (EIR). It's a very similar law, so you make a request
to them using WhatDoTheyKnow in just the same way as an FOI request. The only difference
is that on the page where you write you request, it reminds you that you can only
request "environmental information" and tells you what that means. It is quite broad.

So can I request information using EIR from other authorities?

Yes, just make a Freedom of Information (FOI) request as normal. The
authority has a duty to work out if the Environmental Information Regulations
(EIR) is the more appropriate legislation to reply under.

Privacy questions

Who gets to see my email address?

We will not disclose your email address to anyone, including the public
authority you are sending a request to, unless we are obliged to by law,
or you ask us to. If you send a message to another user on the site, then
it will reveal your email address to them. You will be told that this
is going to happen.

Will you send nasty, brutish spam to my email address?

Nope. After you sign up to WhatDoTheyKnow we will only send you emails
relating to a request you made, an email alert that you have signed up for,
or for other reasons that you specifically authorise. We will never give or
sell your email addresses to anyone else, unless we are obliged to by law, or
you ask us to.

Why will my name appear publically on the site?

It means that someone researching the same area can get in touch with you,
and maybe give you more information or ideas relating to your request.  Also,
we're going to publish the response with the name of the civil servant who
wrote it, so it seems only fair that your name should be public too!
Therefore, we encourage you to use your real name, but you may use a pseudonym
if you would like to be anonymous.

So I can make an FOI request using a pseudonym?

It is good practice for the public authority to reply to an anonymous request,
except in special circumstances such as if they suspect you of making vexatious
requests. See Freedom of Information Good Practice Guidance No 6
for details.  You should refer to this if a public authority attempts to refuse
a request because you used a pseudonym.

However, there are good reasons to use your real name: see the question
above.  If nothing else, it avoids the risk of an authority being picky,
ignoring the guidance and refusing your request.

They've asked for my postal address!

If a public authority asks you for your full, physical address, reply to them saying
that section 8.1.b of the FOI Act asks for an "address for correspondence",
and that the email address you are using is sufficient.

The Ministry of Justice has guidance
on this –
"As well as hard copy written correspondence, requests that are
transmitted electronically (for example, in emails) are acceptable
... If a request is received by email and no postal address is given, the email
address should be treated as the return address."

As if that isn't enough, the Information Commissioner's
Hints for Practitioners say
"Any correspondence could include a request for information. If it is written (this includes e-mail), legible, gives the name of the applicant, an address for reply (which could be electronic), and includes a description of the information required, then it will fall within the scope of the legislation."

No no, they need a postal address to send a paper response!

If an authority only has a paper copy of the information that you want,
they may ask you for a postal address. To start with, try persuading them
to scan in the documents for you. You can even offer to gift them a scanner, which in that particular case
embarrassed the authority into finding one they had already.

If that doesn't work, and you want to provide your postal address privately
in order to receive the documents, then please contact
us.

How do you moderate request annotations?

Annotations on WhatDoTheyKnow are to help
people get the information they want, or to give them pointers to places they
can go to help them act on it. We reserve the right to remove anything else.

Endless, political discussions are not allowed.
Post a link to a suitable forum or campaign site elsewhere.

FOI officer questions

I just got here from bottom of an FOI request, what is going on?

WhatDoTheyKnow is a service run by a charity. It helps ordinary members
of the public make FOI requests, and easily track and share the responses.

The FOI request you received was made by someone using WhatDoTheyKnow. You can
simply reply to the request as you would any other request from an individual.
The only difference is that your response will be automatically published on
the Internet.

If you have privacy or copyright concerns, please read the answers below.
You might also like to read this page from the top to find out more about what
the site does from the point of view of a user. You can also search the
site to find the authority that you work for, and view the status of
any requests made using the site.

Finally, we welcome comments and
thoughts from FOI officers, please get in touch.

Why are you publishing responses to FOI requests?

We think there are lots of benefits. Most importantly it will encourage the
public to be more interested and involved in the work of government. We
also hope that it will reduce the number of duplicate requests on any
subject that a public body will receive. Given that Freedom of Information
responses contain public information, which anybody could easily request
again from the public authority, we think there should be no reason not to
publish it widely.

Are the people making requests real people?

Yes. For the purposes of keeping track of responses we use
computer-generated email addresses for each request. However, before
they can send a request, each user must register on the site with a
unique email address that we then verify. You can search this site and
find a page listing all requests that each person has made.

An email isn't a sufficient address for an FOI request!

Yes it is. This
letter from the ICO to Rother District Council gives guidance on the matter, specifically
in the context of requests made via WhatDoTheyKnow.

Aren't you making lots of vexatious requests?

WhatDoTheyKnow is not making any requests. We are sending requests on
behalf of our users, who are real people making the requests.

Look at it like this - if lots of different people made requests from
different Hotmail email addresses, then you would not think that Microsoft were
making vexatious requests. It is exactly the same if lots of requests are made
via WhatDoTheyKnow. Moreover, since all requests are public it is much easier
for you to see if one of our users is making vexatious requests, and for us to
block them when that happens.

If that isn't enough for you, the
letter from the ICO to Rother District Council gives some guidance on the matter.

Won't I be breaking copyright law by sending a response that you then publish?

No, you will simply be replying to an FOI request by email (the "expressed
preference" of the requester, under
section
11(1) of the Freedom of Information Act). That we are later republishing your
response is a separate matter, and not something which FOIA lists as a reason
for rejecting a request.

Isn't it a problem that you publish the names of civil servants
and the text of emails?

Officers or servants responding to requests are doing so on behalf of the
public as part of their job, and we publish their response on that
basis. Usually the names and phone numbers of FOI officers are already
available on authority websites. We also encourage our users to give their real
name too, so it is fair both ways.

Do you publish email addresses or mobile phone numbers?

We automatically remove email addresses and labelled mobile phone numbers
that are in the email part of responses from public authorities. Please
contact us if we've missed one. We don't currently
remove these from attachments,
such as Word documents.

Can you take down private information about me?

If you see any information on the site which you'd like us to remove or
hide, then please let us know. We'll then
remove it, provided it is genuinely private information.

Credit where credit is due

Which people made WhatDoTheyKnow?

Oh, nearly everyone (and maybe you too)!

    Heather Brooke
    (vampy!) has
    been pushing the idea of a UK FOI archive for years now.

    Both Phil Rodgers and Francis Irving
    entered it in a mySociety competition for ideas for public interest websites to build.

    It won,
    and then Chris Lightfoot (RIP :()
    thought up the wheeze of intercepting email responses to requests and
    automatically publishing them.

    Tom Steinberg got the cash to pay for the site from
    a dead chocolate mogul (thank you!) ...

    ... so that Francis Irving, Angie Ahl, Tommy Martin, Louise Crow, Matthew Somerville
    and Tom Steinberg could do the complex mixture of design and coding to build
    what you see today.

    Thanks particularly to Julian Todd (great blog!),
    Francis Davey, and Etienne Pollard for using the site early on and giving
    feedback (and/or legal advice!), and also to all our other users and
    testers.

    Lots of people have been looking up FOI email addresses, and a few
    volunteering to run the site - most especially Adam McGreggor, Alex
    Skene, John Cross and Tony Bowden.

Finally we couldn't do any of this without those
crazy people who volunteer,
amongst many other things, to do the accounts and fill in our VAT return.

You're all stars.

<% @title = "About" %>

Contact us

If your question isn't answered here, or you just wanted to let us know
something about the site, contact us.

Introduction to WhatDoTheyKnow

What is WhatDoTheyKnow for?

To help you find out inside information about what the UK government
is doing.

How does the site work?

You choose the public authority that you would like information from, then
write a brief note describing what you want to know. We then send your request
to the public authority. Any response they make is automatically published on the
website for you and anyone else to find and read.

Why would I bother to do this?

You pay taxes, and then government does things with the money. All sorts of
things that affect your life, from healthcare through to national defence. Some
it does badly, some it does well. The more we find out about how government
works, the better able we are to make suggestions to improve the things that
are done badly, and to celebrate the things that are done well.

Why would the public authority bother to reply?

Under Freedom of Information (FOI) law, they have to respond.

Who makes it?

WhatDoTheyKnow is created and run by mySociety,
and was initially funded by the JRSST Charitable Trust. mySociety is a project of the
registered charity UK Citizens Online Democracy.
If you like what we're doing, then you can
make a donation.

Making requests

You're missing the public authority that I want to request from!

Please contact us with the name of the public authority and,
if you can find it, their contact email address for Freedom of Information requests.
If you'd like to help add a whole category of public authority to the site, for example all
primary care trusts or all schools, then please
edit this shared spreadsheet (Google account required).

How quickly will I get a response?

By law public authorities must respond "promptly", and in any event not later
than 20 working days after receiving your request. The date of that hard limit
is shown on the page for your request. You will be emailed if this date goes by
without a response, so you can send the public authority another note to remind
them that they are breaking the law. Note: If you had to
clarify your request, the clock starts from that date, instead of the date they
received your initial request.

What if I'm not satisfied with the response?

If you didn't get the information you asked for, or you didn't get it in time,
then read our page 'Unhappy about the response you got?'.

Can you tell me more of the nitty gritty about the process of making requests?

Have a look at the
access to official information
pages on the Information Commisioner's website.

Can I request information about myself?

Not using this site. Requests made using WhatDoTheyKnow are public, made under the
Freedom of Information Act, and cannot help you find information about a
private individual. If you would like to know what information a public
authority holds about yourself, you should make a "Subject Access Request" in
private using Data Protection law.  The leaflet Subject
Access - A guide for data subjects (on the Information Commisioner's
website) explains how to do this.

I'd like to keep my request secret! (At least until I publish my story)

WhatDoTheyKnow is currently only designed for public requests. All
responses that we receive are automatically published on the website for anyone
to read.  You should contact the public authority directly if you would like to
make a request in private.  If you're interested in buying a system which helps
you manage FOI requests in secret, then contact us.

Why can I only request information about the environment from some authorities?

Some public authorities, such as South East Water,
don't come under the Freedom of Information Act, but do come under another law called
the Environmental Information Regulations (EIR). It's a very similar law, so you make a request
to them using WhatDoTheyKnow in just the same way as an FOI request. The only difference
is that on the page where you write you request, it reminds you that you can only
request "environmental information" and tells you what that means. It is quite broad.

So can I request information using EIR from other authorities?

Yes, just make a Freedom of Information (FOI) request as normal. The
authority has a duty to work out if the Environmental Information Regulations
(EIR) is the more appropriate legislation to reply under.

Privacy questions

Who gets to see my email address?

We will not disclose your email address to anyone, including the public
authority you are sending a request to, unless we are obliged to by law,
or you ask us to. If you send a message to another user on the site, then
it will reveal your email address to them. You will be told that this
is going to happen.

Will you send nasty, brutish spam to my email address?

Nope. After you sign up to WhatDoTheyKnow we will only send you emails
relating to a request you made, an email alert that you have signed up for,
or for other reasons that you specifically authorise. We will never give or
sell your email addresses to anyone else, unless we are obliged to by law, or
you ask us to.

Why will my name appear publically on the site?

It means that someone researching the same area can get in touch with you,
and maybe give you more information or ideas relating to your request.  Also,
we're going to publish the response with the name of the civil servant who
wrote it, so it seems only fair that your name should be public too!
Therefore, we encourage you to use your real name, but you may use a pseudonym
if you would like to be anonymous.

So I can make an FOI request using a pseudonym?

It is good practice for the public authority to reply to an anonymous request,
except in special circumstances such as if they suspect you of making vexatious
requests. See Freedom of Information Good Practice Guidance No 6
for details.  You should refer to this if a public authority attempts to refuse
a request because you used a pseudonym.

However, there are good reasons to use your real name: see the question
above.  If nothing else, it avoids the risk of an authority being picky,
ignoring the guidance and refusing your request.

They've asked for my postal address!

If a public authority asks you for your full, physical address, reply to them saying
that section 8.1.b of the FOI Act asks for an "address for correspondence",
and that the email address you are using is sufficient.

The Ministry of Justice has guidance
on this –
"As well as hard copy written correspondence, requests that are
transmitted electronically (for example, in emails) are acceptable
... If a request is received by email and no postal address is given, the email
address should be treated as the return address."

As if that isn't enough, the Information Commissioner's
Hints for Practitioners say
"Any correspondence could include a request for information. If it is written (this includes e-mail), legible, gives the name of the applicant, an address for reply (which could be electronic), and includes a description of the information required, then it will fall within the scope of the legislation."

No no, they need a postal address to send a paper response!

If an authority only has a paper copy of the information that you want,
they may ask you for a postal address. To start with, try persuading them
to scan in the documents for you. You can even offer to gift them a scanner, which in that particular case
embarrassed the authority into finding one they had already.

If that doesn't work, and you want to provide your postal address privately
in order to receive the documents, then please contact
us.

How do you moderate request annotations?

Annotations on WhatDoTheyKnow are to help
people get the information they want, or to give them pointers to places they
can go to help them act on it. We reserve the right to remove anything else.

Endless, political discussions are not allowed.
Post a link to a suitable forum or campaign site elsewhere.

FOI officer questions

I just got here from bottom of an FOI request, what is going on?

WhatDoTheyKnow is a service run by a charity. It helps ordinary members
of the public make FOI requests, and easily track and share the responses.

The FOI request you got was made by someone using WhatDoTheyKnow. You can
simply reply to the request as you would any other request from an individual.
The only difference is that your response will be automatically published on
the Internet.

If you have privacy or copyright concerns, please read the answers below.
You might also like to read this page from the top to find out more about what
the site does from the point of view of a user. You can also search the
site to find the authority that you work for, and view the status of
any requests made using the site.

Finally, we welcome comments and
thoughts from FOI officers, please get in touch.

Why are you publishing responses to FOI requests?

Freedom of Information responses contain public information, which anybody could
easily request again from the public authority. Therefore,
there is no reason they shouldn't be published on the Internet. There are lots
of benefits - everything from preventing duplicate requests, to getting the public
more involved and interested in the work of government.

Are the people making requests real people?

Yes. For the purposes of keeping track of responses we use
computer-generated email addresses for each request. However, before
they can send a request, each user must register on the site with a
unique email address that we then verify. You can search this site and
find a page listing all requests that each person has made.

An email isn't a sufficient address for an FOI request!

Yes it is. This
letter from the ICO to Rother District Council gives guidance on the matter, specifically
in the context of requests made via WhatDoTheyKnow.

Aren't you making lots of vexatious requests?

WhatDoTheyKnow is not making any requests. We are sending requests on
behalf of our users, who are real people making the requests.

Look at it like this - if lots of different people made requests from
different Hotmail email addresses, then you would not think that Microsoft were
making vexatious requests. It is exactly the same if lots of requests are made
via WhatDoTheyKnow. Moreover, since all requests are public it is much easier
for you to see if one of our users is making vexatious requests, and for us to
block them when that happens.

If that isn't enough for you, the
letter from the ICO to Rother District Council gives some guidance on the matter.

Won't I be breaking copyright law by sending a response that you then publish?

No, you will simply be replying to an FOI request by email (the "expressed
preference" of the requester, under
section
11(1) of the Freedom of Information Act). That we are later republishing your
response is a separate matter of copyright law, and not something which FOIA lists
as a reason for rejecting a request.

Isn't it a problem that you publish the names of civil servants
and the text of emails?

Officers or servants responding to requests are doing so on behalf of the
public as part of their job, and we publish their response on that
basis. Usually the names and phone numbers of FOI officers are already
available on authority websites. We also encourage our users to give their real
name too, so it is fair both ways.

Do you publish email addresses or mobile phone numbers?

We automatically remove email addresses and labelled mobile phone numbers
that are in the email part of responses from public authorities. Please
contact us if we've missed one. We don't currently
remove these from attachments,
such as Word documents.

Can you take down private information about me?

If you see any information on the site which you'd like us to remove or
hide, then please let us know. We'll then
remove it, provided it is genuinely private information.

Credit where credit is due

Which people made WhatDoTheyKnow?

Oh, nearly everyone (and maybe you too)!

    Heather Brooke
    (vampy!) has
    been pushing the idea of a UK FOI archive for years now.

    Both Phil Rodgers and Francis Irving
    entered it in a mySociety competition for ideas for public interest websites to build.

    It won,
    and then Chris Lightfoot (RIP :()
    thought up the wheeze of intercepting email responses to requests and
    automatically publishing them.

    Tom Steinberg got the cash to pay for the site from
    a dead chocolate mogul (thank you!) ...

    ... so that Francis Irving, Angie Ahl, Tommy Martin, Louise Crow, Matthew Somerville
    and Tom Steinberg could do the complex mixture of design and coding to build
    what you see today.

    Thanks particularly to Julian Todd (great blog!),
    Francis Davey, and Etienne Pollard for using the site early on and giving
    feedback (and/or legal advice!), and also to all our other users and
    testers.

    Lots of people have been looking up FOI email addresses, and a few
    volunteering to run the site - most especially Adam McGreggor, Alex
    Skene, John Cross and Tony Bowden.

Finally we couldn't do any of this without those
crazy people who volunteer,
amongst many other things, to do the accounts and fill in our VAT return.

You're all stars.