aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/request_controller.rb62
-rw-r--r--app/views/comment/_single_comment.html.erb2
-rw-r--r--app/views/general/_stylesheet_includes.html.erb39
-rw-r--r--app/views/request/show.html.erb4
-rw-r--r--config/general.yml-example6
-rw-r--r--config/test.yml2
-rw-r--r--public/stylesheets/print.css4
7 files changed, 69 insertions, 50 deletions
diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb
index 6f1a549c5..9dff180d6 100644
--- a/app/controllers/request_controller.rb
+++ b/app/controllers/request_controller.rb
@@ -888,32 +888,10 @@ class RequestController < ApplicationController
if !File.exists?(file_path)
FileUtils.mkdir_p(File.dirname(file_path))
Zip::ZipFile.open(file_path, Zip::ZipFile::CREATE) { |zipfile|
- convert_command = AlaveteliConfiguration::html_to_pdf_command
- done = false
- if !convert_command.blank? && File.exists?(convert_command)
- url = "http://#{AlaveteliConfiguration::domain}#{request_path(@info_request)}?print_stylesheet=1"
- tempfile = Tempfile.new('foihtml2pdf')
- output = AlaveteliExternalCommand.run(convert_command, url, tempfile.path)
- if !output.nil?
- zipfile.get_output_stream("correspondence.pdf") { |f|
- f.puts(File.open(tempfile.path).read)
- }
- done = true
- else
- logger.error("Could not convert info request #{@info_request.id} to PDF with command '#{convert_command} #{url} #{tempfile.path}'")
- end
- tempfile.close
- else
- logger.warn("No HTML -> PDF converter found at #{convert_command}")
- end
- if !done
- @info_request_events = @info_request.info_request_events
- template = File.read(File.join(File.dirname(__FILE__), "..", "views", "request", "simple_correspondence.html.erb"))
- output = ERB.new(template).result(binding)
- zipfile.get_output_stream("correspondence.txt") { |f|
- f.puts(output)
- }
- end
+
+ file_info = make_request_summary_file(@info_request)
+ zipfile.get_output_stream(file_info[:filename]) { |f| f.puts(file_info[:data]) }
+
for message in @info_request.incoming_messages
attachments = message.get_attachments_for_display
for attachment in attachments
@@ -963,6 +941,38 @@ class RequestController < ApplicationController
@last_response = info_request.get_last_response
end
+ def make_request_summary_file(info_request)
+ done = false
+ convert_command = AlaveteliConfiguration::html_to_pdf_command
+ assign_variables_for_show_template(info_request)
+ if !convert_command.blank? && File.exists?(convert_command)
+ @render_to_file = true
+ html_output = render_to_string(:template => 'request/show')
+ tmp_input = Tempfile.new(['foihtml2pdf-input', '.html'])
+ tmp_input.write(html_output)
+ tmp_input.close
+ tmp_output = Tempfile.new('foihtml2pdf-output')
+ output = AlaveteliExternalCommand.run(convert_command, tmp_input.path, tmp_output.path)
+ if !output.nil?
+ file_info = { :filename => 'correspondence.pdf',
+ :data => File.open(tmp_output.path).read }
+ done = true
+ else
+ logger.error("Could not convert info request #{@info_request.id} to PDF with command '#{convert_command} #{tmp_input.path} #{tmp_output.path}'")
+ end
+ tmp_output.close
+ tmp_input.delete
+ tmp_output.delete
+ else
+ logger.warn("No HTML -> PDF converter found at #{convert_command}")
+ end
+ if !done
+ file_info = { :filename => 'correspondence.txt',
+ :data => render_to_string(:template => 'request/simple_correspondence.html.erb',
+ :layout => false) }
+ end
+ file_info
+ end
end
diff --git a/app/views/comment/_single_comment.html.erb b/app/views/comment/_single_comment.html.erb
index 421a9d4ba..af1de0649 100644
--- a/app/views/comment/_single_comment.html.erb
+++ b/app/views/comment/_single_comment.html.erb
@@ -1,5 +1,5 @@
<div class="comment_in_request" id="comment-<%=comment.id.to_s%>">
- <% if comment.user && comment.user.profile_photo %>
+ <% if comment.user && comment.user.profile_photo && !@render_to_file %>
<div class="user_photo_on_comment">
<img src="<%= get_profile_photo_url(:url_name => comment.user.url_name) %>" alt="">
</div>
diff --git a/app/views/general/_stylesheet_includes.html.erb b/app/views/general/_stylesheet_includes.html.erb
index 9dd1f357d..416ddb825 100644
--- a/app/views/general/_stylesheet_includes.html.erb
+++ b/app/views/general/_stylesheet_includes.html.erb
@@ -1,16 +1,23 @@
- <%= stylesheet_link_tag 'main', :title => "Main", :rel => "stylesheet", :media => "all" %>
- <%= stylesheet_link_tag 'fonts', :rel => "stylesheet", :media => "all" %>
- <%= stylesheet_link_tag 'print', :rel => "stylesheet", :media => "print" %>
- <% if !params[:print_stylesheet].nil? %>
- <%= stylesheet_link_tag 'print', :rel => "stylesheet", :media => "all" %>
- <% end %>
- <%= stylesheet_link_tag 'admin-theme/jquery-ui-1.8.15.custom.css', :rel => 'stylesheet'%>
- <!--[if LT IE 7]>
- <style type="text/css">@import url("/stylesheets/ie6.css");</style>
- <![endif]-->
- <!--[if LT IE 8]>
- <style type="text/css">@import url("/stylesheets/ie7.css");</style>
- <![endif]-->
- <% if AlaveteliConfiguration::force_registration_on_new_request %>
- <%= stylesheet_link_tag 'jquery.fancybox-1.3.4', :rel => "stylesheet" %>
- <% end %>
+<%- if @render_to_file %>
+ <style>
+ <%= raw File.read(Rails.root.join('public', 'stylesheets', 'main.css')) %>
+ <%= raw File.read(Rails.root.join('public', 'stylesheets', 'print.css')) %>
+ </style>
+<%- else %>
+ <%= stylesheet_link_tag 'main', :title => "Main", :rel => "stylesheet", :media => "all" %>
+ <%= stylesheet_link_tag 'fonts', :rel => "stylesheet", :media => "all" %>
+ <%= stylesheet_link_tag 'print', :rel => "stylesheet", :media => "print" %>
+ <% if !params[:print_stylesheet].nil? %>
+ <%= stylesheet_link_tag 'print', :rel => "stylesheet", :media => "all" %>
+ <% end %>
+ <%= stylesheet_link_tag 'admin-theme/jquery-ui-1.8.15.custom.css', :rel => 'stylesheet'%>
+ <!--[if LT IE 7]>
+ <style type="text/css">@import url("/stylesheets/ie6.css");</style>
+ <![endif]-->
+ <!--[if LT IE 8]>
+ <style type="text/css">@import url("/stylesheets/ie7.css");</style>
+ <![endif]-->
+ <% if AlaveteliConfiguration::force_registration_on_new_request %>
+ <%= stylesheet_link_tag 'jquery.fancybox-1.3.4', :rel => "stylesheet" %>
+ <% end %>
+<% end %>
diff --git a/app/views/request/show.html.erb b/app/views/request/show.html.erb
index 455846aeb..c520ce40c 100644
--- a/app/views/request/show.html.erb
+++ b/app/views/request/show.html.erb
@@ -25,7 +25,7 @@
<div id="left_column">
<h1><%=h(@info_request.title)%></h1>
- <% if !@info_request.is_external? && @info_request.user.profile_photo %>
+ <% if !@info_request.is_external? && @info_request.user.profile_photo && !@render_to_file %>
<p class="user_photo_on_request">
<img src="<%= get_profile_photo_url(:url_name => @info_request.user.url_name) %>" alt="">
</p>
@@ -48,7 +48,7 @@
<p id="request_status" class="request_icon_line icon_<%= @info_request.calculate_status %>">
<% if @info_request.awaiting_description %>
- <% if @is_owning_user && !@info_request.is_external? %>
+ <% if @is_owning_user && !@info_request.is_external? && !@render_to_file %>
<%= _('Please <strong>answer the question above</strong> so we know whether the ')%>
<%= MySociety::Format.fancy_pluralize(@new_responses_count, 'recent response contains', 'recent responses contain') %> <%= _('useful information.') %>
<% else %>
diff --git a/config/general.yml-example b/config/general.yml-example
index 0753af46b..0491ef64d 100644
--- a/config/general.yml-example
+++ b/config/general.yml-example
@@ -147,9 +147,9 @@ GAZE_URL: http://gaze.mysociety.org
# The email address to which non-bounce responses should be forwarded
FORWARD_NONBOUNCE_RESPONSES_TO: user-support@localhost
-# Path to a program that converts a page at a URL to HTML. It should
-# take two arguments: the URL, and a path to an output file. A static
-# binary of wkhtmltopdf is recommended:
+# Path to a program that converts an HTML page in a file to PDF. It
+#should take two arguments: the URL, and a path to an output file.
+# A static binary of wkhtmltopdf is recommended:
# http://code.google.com/p/wkhtmltopdf/downloads/list
# If the command is not present, a text-only version will be rendered
# instead.
diff --git a/config/test.yml b/config/test.yml
index 5c08e928b..b26ca99d4 100644
--- a/config/test.yml
+++ b/config/test.yml
@@ -108,7 +108,7 @@ ACCELERATOR_PORT: '6081'
# mySociety's gazeteer service. Shouldn't change.
GAZE_URL: http://gaze.mysociety.org
-# Path to a program that converts a page at a URL to HTML. It should
+# Path to a program that converts a page in a file to PDF. It should
# take two arguments: the URL, and a path to an output file. A static
# binary of wkhtmltopdf is recommended:
# http://code.google.com/p/wkhtmltopdf/downloads/list
diff --git a/public/stylesheets/print.css b/public/stylesheets/print.css
index 89be21019..6f29c18da 100644
--- a/public/stylesheets/print.css
+++ b/public/stylesheets/print.css
@@ -18,9 +18,11 @@ p.event_actions,
div#after_actions,
#right_column,
#banner,
+.admin .navbar,
#header_right,
#describe_state_form_1,
-#describe_state_form_2 input[type=submit],
+#describe_state_form_2,
+.attachment_image,
#footer {
display: none;
}