[freeside-commits] branch FREESIDE_3_BRANCH updated. 66eb3662102dbf92ac40fb8889c9c5051fd1ed29

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


The branch, FREESIDE_3_BRANCH has been updated
       via  66eb3662102dbf92ac40fb8889c9c5051fd1ed29 (commit)
      from  408574c3f92b84f422f9a95dd0ab904d9c23ece6 (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 66eb3662102dbf92ac40fb8889c9c5051fd1ed29
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 8ad724a..3a6239e 100644
--- a/httemplate/elements/freeside.css
+++ b/httemplate/elements/freeside.css
@@ -313,3 +313,7 @@ td.label {
   color: #ff0000;
 }
 
+/* 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               |    4 ++++
 httemplate/elements/printtofit.js              |   17 +++++++++++++++++
 httemplate/elements/table-grid.html            |    2 +-
 httemplate/search/elements/grouped-search/html |    2 +-
 4 files changed, 23 insertions(+), 2 deletions(-)




More information about the freeside-commits mailing list