[freeside-commits] branch master updated. 64aa9aa36d8b8636b4984de7d15cd7bd1a889542

Mark Wells mark at 420.am
Tue Jul 12 13:55:34 PDT 2016


The branch, master has been updated
       via  64aa9aa36d8b8636b4984de7d15cd7bd1a889542 (commit)
      from  e215fc213a1eb9a3365cecf5ce82f1a58f154cd6 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 64aa9aa36d8b8636b4984de7d15cd7bd1a889542
Author: Mark Wells <mark at freeside.biz>
Date:   Tue Jul 12 13:51:47 2016 -0700

    workaround for page-break-inside:avoid on Chrome, #71301

diff --git a/httemplate/elements/freeside.css b/httemplate/elements/freeside.css
index cc104a1..87dec3d 100644
--- a/httemplate/elements/freeside.css
+++ b/httemplate/elements/freeside.css
@@ -342,4 +342,7 @@ div.package-marker-change_from {
   display: inline-block;
 }
 
-
+/* but see printtofit.js */
+.nosplit, .nosplitrows tr {
+  page-break-inside: avoid;
+}
diff --git a/httemplate/elements/printtofit.js b/httemplate/elements/printtofit.js
index 66257fc..9823602 100644
--- a/httemplate/elements/printtofit.js
+++ b/httemplate/elements/printtofit.js
@@ -1,13 +1,30 @@
 $().ready(function() {
+  // yuck
+  var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
   var beforePrint = function() {
     if ($('body').width() > 0) {
       // 7.5 inches * 96 DPI; maybe make the width a user pref?
       var maxwidth = 7.5 * 96;
       $('body').css('zoom', maxwidth / $('body').width());
+      if (isChrome) {
+        // Chrome doesn't respect page-break-* styles on table rows/cells,
+        // so wrap the contents of table cells with a block element
+        // ref. Chromium bug #99124, #87828, #59193
+        // should be fixed with Chrome 53
+        var nosplits = $('.nosplitrows td');
+        if (nosplits.length > 0) {
+          nosplits.wrapInner('<div class="nosplit autowrap" />');
+        }
+      }
     }
   };
   var afterPrint = function() {
     $('body').css('zoom', 1);
+    // get the direct children of the wrapper divs.
+    var nosplits = $('div.autowrap >');
+    if (nosplits.length > 0) {
+      nosplits.unwrap();
+    }
   }
 
   if (window.matchMedia) { // chrome, most importantly; also IE10?
diff --git a/httemplate/elements/table-grid.html b/httemplate/elements/table-grid.html
index 4f42005..bf60fe0 100644
--- a/httemplate/elements/table-grid.html
+++ b/httemplate/elements/table-grid.html
@@ -1,4 +1,4 @@
-<TABLE CLASS="grid" CELLSPACING=<% $opt{cellspacing} %> CELLPADDING=<% $opt{cellpadding} %> <% $opt{bgcolor} %>>
+<TABLE CLASS="grid nosplitrows" CELLSPACING=<% $opt{cellspacing} %> CELLPADDING=<% $opt{cellpadding} %> <% $opt{bgcolor} %>>
 
 <%init>
 
diff --git a/httemplate/search/elements/grouped-search/html b/httemplate/search/elements/grouped-search/html
index df1471a..2ecb688 100644
--- a/httemplate/search/elements/grouped-search/html
+++ b/httemplate/search/elements/grouped-search/html
@@ -120,7 +120,7 @@ for (my $i = 0; $i < $group_info->{num}; $i++) {
     border-spacing: 0;
   }
 </STYLE>
-<table class="grid">
+<table class="grid nosplitrows">
   <thead>
   <& /search/elements/search-html.html:header_row,
     'header'      => $opt{'header'},

-----------------------------------------------------------------------

Summary of changes:
 httemplate/elements/freeside.css               |    5 ++++-
 httemplate/elements/printtofit.js              |   17 +++++++++++++++++
 httemplate/elements/table-grid.html            |    2 +-
 httemplate/search/elements/grouped-search/html |    2 +-
 4 files changed, 23 insertions(+), 3 deletions(-)




More information about the freeside-commits mailing list