aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/general_controller.rb6
-rw-r--r--app/models/incoming_message.rb9
-rw-r--r--app/models/info_request.rb5
-rw-r--r--app/views/general/search.rhtml8
-rw-r--r--app/views/request/_correspondence.rhtml51
-rw-r--r--app/views/request/_request_listing_via_incoming.rhtml18
-rw-r--r--app/views/request/_request_listing_via_outgoing.rhtml24
-rw-r--r--todo.txt3
8 files changed, 85 insertions, 39 deletions
diff --git a/app/controllers/general_controller.rb b/app/controllers/general_controller.rb
index b4f7c6eac..1f8c46648 100644
--- a/app/controllers/general_controller.rb
+++ b/app/controllers/general_controller.rb
@@ -5,7 +5,7 @@
# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: general_controller.rb,v 1.1 2008-03-06 01:23:38 francis Exp $
+# $Id: general_controller.rb,v 1.2 2008-03-06 20:10:29 francis Exp $
class GeneralController < ApplicationController
@@ -45,8 +45,10 @@ class GeneralController < ApplicationController
# Actual search
def search
+ @per_page = 20
query = params[:query]
- @solr_object = InfoRequest.multi_solr_search(query, :models => [ OutgoingMessage, IncomingMessage ])
+ @solr_object = InfoRequest.multi_solr_search(query, :models => [ OutgoingMessage, IncomingMessage ],
+ :limit => @per_page, :offset => ((params[:page]||"1").to_i-1) * @per_page)
@search_results = @solr_object.results
end
diff --git a/app/models/incoming_message.rb b/app/models/incoming_message.rb
index 02256805e..20f7ac7e4 100644
--- a/app/models/incoming_message.rb
+++ b/app/models/incoming_message.rb
@@ -18,7 +18,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: incoming_message.rb,v 1.49 2008-03-06 01:23:38 francis Exp $
+# $Id: incoming_message.rb,v 1.50 2008-03-06 20:10:29 francis Exp $
# TODO
@@ -50,7 +50,7 @@ class IncomingMessage < ActiveRecord::Base
has_many :outgoing_message_followups, :class_name => OutgoingMessage
- acts_as_solr :fields => [ :get_main_body_text ], :if => "$do_solr_index"
+ acts_as_solr :fields => [ :get_text_for_indexing ], :if => "$do_solr_index"
# Return the structured TMail::Mail object
# Documentation at http://i.loveruby.net/en/projects/tmail/doc/
@@ -273,6 +273,11 @@ class IncomingMessage < ActiveRecord::Base
text = IncomingMessage.remove_quoted_sections(text, "")
end
+ # Returns text for indexing
+ def get_text_for_indexing
+ return get_body_for_quoting()
+ end
+
# Returns the name of the person the incoming message is from, or nil if there isn't one
# or if there is only an email address.
def safe_mail_from
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index 89f5c8259..9bff40a60 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -21,7 +21,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: info_request.rb,v 1.56 2008-03-06 19:05:42 francis Exp $
+# $Id: info_request.rb,v 1.57 2008-03-06 20:10:29 francis Exp $
require 'digest/sha1'
@@ -362,7 +362,8 @@ public
if outgoing_messages.empty? # mainly for use with incomplete fixtures
return ""
end
- excerpt = outgoing_messages[0].body
+ messages = self.outgoing_messages.find(:all, :order => "created_at")
+ excerpt = messages[0].body
excerpt.sub!(/Dear .+,/, "")
return excerpt
end
diff --git a/app/views/general/search.rhtml b/app/views/general/search.rhtml
index 5d848c66a..56d5e44b3 100644
--- a/app/views/general/search.rhtml
+++ b/app/views/general/search.rhtml
@@ -16,15 +16,13 @@
<% if search_result.class.to_s == 'InfoRequest' %>
<%= render :partial => 'request/request_listing_single', :locals => { :info_request => search_result } %>
<% elsif search_result.class.to_s == 'OutgoingMessage' %>
- <%= render :partial => 'request/request_listing_single', :locals => { :info_request => search_result.info_request } %>
+ <%= render :partial => 'request/request_listing_via_outgoing', :locals => { :info_request => search_result.info_request, :outgoing_message => search_result } %>
<% elsif search_result.class.to_s == 'IncomingMessage' %>
- <%= render :partial => 'request/request_listing_single', :locals => { :info_request => search_result.info_request } %>
+ <%= render :partial => 'request/request_listing_via_incoming', :locals => { :info_request => search_result.info_request, :incoming_message => search_result } %>
<% else %>
<p><strong>Unknown search result type <%=search_result.class.to_s%></strong></p>
<% end %>
<% end %>
<% end %>
-<%
-#= will_paginate(@info_requests)
-%>
+<%= will_paginate WillPaginate::Collection.new(params[:page]||1, @per_page, @solr_object.total_hits) %>
diff --git a/app/views/request/_correspondence.rhtml b/app/views/request/_correspondence.rhtml
index 88e17db88..3bb823fa1 100644
--- a/app/views/request/_correspondence.rhtml
+++ b/app/views/request/_correspondence.rhtml
@@ -1,14 +1,12 @@
-<div class="correspondence">
-
<%
-
- @last_email = nil
- if !info_request_event.nil? && info_request_event.event_type == 'response'
- incoming_message = IncomingMessage.find(info_request_event.params[:incoming_message_id])
- end
-
- if not incoming_message.nil?
- %>
+@last_email = nil
+if !info_request_event.nil? && info_request_event.event_type == 'response'
+ incoming_message = IncomingMessage.find(info_request_event.params[:incoming_message_id])
+end
+
+if not incoming_message.nil?
+%>
+ <div class="correspondence" id="incoming-<%=incoming_message.id.to_s%>">
<% if @previous_date.nil? or (@previous_date != incoming_message.sent_at.to_date) %>
<h2><%= simple_date(incoming_message.sent_at) %></h2>
<% end
@@ -29,10 +27,12 @@
(<%= link_to "link to this", show_response_url(:id => incoming_message.info_request.id, :incoming_message_id => incoming_message.id) %>,
<%= link_to "reply", show_response_url(:id => incoming_message.info_request.id, :incoming_message_id => incoming_message.id) + "#show_response_followup" %>)
</p>
- <%
- elsif info_request_event.event_type == 'sent' || info_request_event.event_type == 'followup_sent'
- outgoing_message = OutgoingMessage.find(info_request_event.params[:outgoing_message_id])
- %>
+ </div>
+<%
+elsif info_request_event.event_type == 'sent' || info_request_event.event_type == 'followup_sent'
+ outgoing_message = OutgoingMessage.find(info_request_event.params[:outgoing_message_id])
+ %>
+ <div class="correspondence" id="outgoing-<%=outgoing_message.id.to_s%>">
<% if @previous_date.nil? or (@previous_date != info_request_event.created_at.to_date) %>
<h2><%= simple_date(info_request_event.created_at) %></h2>
<% end
@@ -64,20 +64,21 @@
<% else raise "unknown outgoing_message.message_type" %>
<% end %>
(<%= link_to "send follow up", show_response_no_followup_url(:id => outgoing_message.info_request.id, :incoming_message_id => nil) + "#show_response_followup" %>)
- </p>
- <% elsif info_request_event.event_type == 'resent' %>
+ </p>
+ </div>
+<% elsif info_request_event.event_type == 'resent' %>
+ <div class="correspondence">
<p class="event_plain">
Sent to <%= public_body_link(@info_request.public_body) %>
again (perhaps to a new contact address) <!-- XXX actually say if it is a new one or not -->
</p>
- <%
- end
- if !info_request_event.nil?
- if ['sent', 'resent'].include?(info_request_event.event_type)
- @last_email = info_request_event.params[:email]
- end
+ </div>
+<%
+end
+
+if !info_request_event.nil?
+ if ['sent', 'resent'].include?(info_request_event.event_type)
+ @last_email = info_request_event.params[:email]
end
+end
%>
-
-</div>
-
diff --git a/app/views/request/_request_listing_via_incoming.rhtml b/app/views/request/_request_listing_via_incoming.rhtml
new file mode 100644
index 000000000..8fd57559a
--- /dev/null
+++ b/app/views/request/_request_listing_via_incoming.rhtml
@@ -0,0 +1,18 @@
+<p class="request_listing">
+ <%= link_to "Response to '" + h(info_request.title) + "'", request_url(info_request)+"#incoming-"+incoming_message.id.to_s %>
+
+ <br>
+ <%=h excerpt(incoming_message.get_text_for_indexing, "", 300) %>
+ <br>
+
+ <span class="request_listing_bottomline">
+ <strong>
+ <%= info_request.display_status %>
+ </strong>
+
+ Response from <%= public_body_link(info_request.public_body) %>
+ to <%= user_link(info_request.user) %>
+ on <%= simple_date(incoming_message.sent_at) %>.
+ </span>
+</p>
+
diff --git a/app/views/request/_request_listing_via_outgoing.rhtml b/app/views/request/_request_listing_via_outgoing.rhtml
new file mode 100644
index 000000000..7c079eeec
--- /dev/null
+++ b/app/views/request/_request_listing_via_outgoing.rhtml
@@ -0,0 +1,24 @@
+<p class="request_listing">
+ <% if outgoing_message.message_type == 'initial_request' %>
+ <%= link_to "Initial request for '" + h(info_request.title) + "'", request_url(info_request)+"#outgoing-"+outgoing_message.id.to_s %>
+ <% elsif outgoing_message.message_type == 'followup' %>
+ <%= link_to "Initial request for '" + h(info_request.title) + "'", request_url(info_request)+"#outgoing-"+outgoing_message.id.to_s %>
+ <% else %>
+ <% raise "unknown outgoing message type" %>
+ <% end %>
+
+ <br>
+ <%=h excerpt(outgoing_message.body, "", 300) %>
+ <br>
+
+ <span class="request_listing_bottomline">
+ <strong>
+ <%= info_request.display_status %>
+ </strong>
+
+ Requested from <%= public_body_link(info_request.public_body) %>
+ by <%= user_link(info_request.user) %>
+ on <%= simple_date(info_request.created_at) %>.
+ </span>
+</p>
+
diff --git a/todo.txt b/todo.txt
index 02150fefc..92ad3897f 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,9 +1,6 @@
Search:
-Go to correct id for incoming / outgoing messages
-Show correct extract for incoming / outgoing messages
Add indexing of PDFs and DOCs etc.
-Pagination - http://www.quarkruby.com/2007/8/12/acts_as_solr-for-search-and-faceting
Date ranges and types and stuff
Highlighting - http://www.quarkruby.com/2007/9/14/advanced-acts_as_solr