From 790a6b19723f8a395c0d668d719b94c2b6af644f Mon Sep 17 00:00:00 2001 From: wvengen Date: Thu, 28 Aug 2014 08:10:57 +0200 Subject: [PATCH] allow to set page break options for each document --- config/app_config.yml.SAMPLE | 5 +++++ lib/order_pdf.rb | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/config/app_config.yml.SAMPLE b/config/app_config.yml.SAMPLE index b8e9ee51..d63bce33 100644 --- a/config/app_config.yml.SAMPLE +++ b/config/app_config.yml.SAMPLE @@ -83,6 +83,11 @@ default: &defaults # Some documents (like group and article PDFs) can include page breaks # after each sublist. #pdf_add_page_breaks: true + # Alternatively, this can be set for each document. + #pdf_add_page_breaks: + # order_by_groups: true + # order_by_articles: true + # Page footer (html allowed). Default is a Foodsoft footer. Set to `blank` for no footer. #page_footer: FC Test is supported by Hoster. diff --git a/lib/order_pdf.rb b/lib/order_pdf.rb index 5b158b8b..b636b423 100644 --- a/lib/order_pdf.rb +++ b/lib/order_pdf.rb @@ -50,10 +50,25 @@ class OrderPdf < Prawn::Document # add pagebreak or vertical whitespace, depending on configuration def down_or_page(space=10) - if FoodsoftConfig[:pdf_add_page_breaks] + if pdf_add_page_breaks? start_new_page else move_down space end end + + protected + + # return whether pagebreak or vertical whitespace is used for breaks + def pdf_add_page_breaks?(docid=nil) + docid ||= self.class.name.underscore + cfg = FoodsoftConfig[:pdf_add_page_breaks] + if cfg.is_a? Array + cfg.index(docid.to_s).any? + elsif cfg.is_a? Hash + cfg[docid.to_s] + else + cfg + end + end end