From b42d3086b7beeae7b64b140b08a321325b796d9a Mon Sep 17 00:00:00 2001
From: Joao Ventura <jcnventura-drupal@venturas.org>
Date: Sat, 3 Oct 2009 15:21:22 +0000
Subject: [PATCH] Fix #566138: add setting to close the window when both the
 new window and send to printer are enabled

---
 print.admin.inc | 7 +++++++
 print.install   | 1 +
 print.module    | 1 +
 print.pages.inc | 5 ++++-
 4 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/print.admin.inc b/print.admin.inc
index d6f2a326..004a4cc1 100644
--- a/print.admin.inc
+++ b/print.admin.inc
@@ -293,6 +293,13 @@ function print_html_settings() {
     '#description' => t("Automatically calls the browser's print function when the printer-friendly version is displayed."),
   );
 
+  $form['settings']['print_html_windowclose'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Close window after sending to printer'),
+    '#default_value' => variable_get('print_html_windowclose', PRINT_HTML_WINDOWCLOSE_DEFAULT),
+    '#description' => t("When the above options are enabled, this option will close the window after its contents are printed."),
+  );
+
   $form['settings']['print_robots_settings'] = array(
       '#type' => 'fieldset',
       '#title' => t('Robots META tags'),
diff --git a/print.install b/print.install
index cb4746c3..5817cf96 100644
--- a/print.install
+++ b/print.install
@@ -49,6 +49,7 @@ function print_uninstall() {
   variable_del('print_html_book_link');
   variable_del('print_html_new_window');
   variable_del('print_html_sendtoprinter');
+  variable_del('print_html_windowclose');
   variable_del('print_robots_noindex');
   variable_del('print_robots_nofollow');
   variable_del('print_robots_noarchive');
diff --git a/print.module b/print.module
index cf8e611a..0ed60c6d 100644
--- a/print.module
+++ b/print.module
@@ -61,6 +61,7 @@ define('PRINT_HTML_LINK_USE_ALIAS_DEFAULT', 0);
 define('PRINT_HTML_BOOK_LINK_DEFAULT', 1);
 define('PRINT_HTML_NEW_WINDOW_DEFAULT', 0);
 define('PRINT_HTML_SENDTOPRINTER_DEFAULT', 0);
+define('PRINT_HTML_WINDOWCLOSE_DEFAULT', 1);
 
 define('PRINT_SOURCEURL_ENABLED_DEFAULT', 1);
 define('PRINT_SOURCEURL_DATE_DEFAULT', 0);
diff --git a/print.pages.inc b/print.pages.inc
index 6cbd34fa..9cd21296 100644
--- a/print.pages.inc
+++ b/print.pages.inc
@@ -158,7 +158,9 @@ function _print_var_generator($node, $message = NULL, $cid = NULL) {
   $print_css = variable_get('print_css', PRINT_CSS_DEFAULT);
   $print_logo_options = variable_get('print_logo_options', PRINT_LOGO_OPTIONS_DEFAULT);
   $print_logo_url = variable_get('print_logo_url', PRINT_LOGO_URL_DEFAULT);
+  $print_html_new_window = variable_get('print_html_new_window', PRINT_HTML_NEW_WINDOW_DEFAULT);
   $print_html_sendtoprinter = variable_get('print_html_sendtoprinter', PRINT_HTML_SENDTOPRINTER_DEFAULT);
+  $print_html_windowclose = variable_get('print_html_windowclose', PRINT_HTML_WINDOWCLOSE_DEFAULT);
   $print_sourceurl_enabled = variable_get('print_sourceurl_enabled', PRINT_SOURCEURL_ENABLED_DEFAULT);
   $print_sourceurl_forcenode = variable_get('print_sourceurl_forcenode', PRINT_SOURCEURL_FORCENODE_DEFAULT);
   $print_sourceurl_date = variable_get('print_sourceurl_date', PRINT_SOURCEURL_DATE_DEFAULT);
@@ -216,7 +218,8 @@ function _print_var_generator($node, $message = NULL, $cid = NULL) {
     }
   }
 
-  $print['sendtoprinter'] = $print_html_sendtoprinter ? ' onload="window.print();"' : '';
+  $window_close = ($print_html_new_window && $print_html_windowclose) ? 'window.close();' : '';
+  $print['sendtoprinter'] = $print_html_sendtoprinter ? " onload='window.print();$window_close'" : '';
 
   switch ($print_logo_options) {
     case 0: // none
-- 
GitLab