diff options
Diffstat (limited to 'plugins/jetpack/modules/shortcodes/js/recipes-printthis.js')
-rw-r--r-- | plugins/jetpack/modules/shortcodes/js/recipes-printthis.js | 289 |
1 files changed, 0 insertions, 289 deletions
diff --git a/plugins/jetpack/modules/shortcodes/js/recipes-printthis.js b/plugins/jetpack/modules/shortcodes/js/recipes-printthis.js deleted file mode 100644 index 4561642d..00000000 --- a/plugins/jetpack/modules/shortcodes/js/recipes-printthis.js +++ /dev/null @@ -1,289 +0,0 @@ -// jshint ignore: start -/* - * printThis v1.9.0 - * @desc Printing plug-in for jQuery - * @author Jason Day - * - * Resources (based on) : - * jPrintArea: http://plugins.jquery.com/project/jPrintArea - * jqPrint: https://github.com/permanenttourist/jquery.jqprint - * Ben Nadal: http://www.bennadel.com/blog/1591-Ask-Ben-Print-Part-Of-A-Web-Page-With-jQuery.htm - * - * Licensed under the MIT licence: - * http://www.opensource.org/licenses/mit-license.php - * - * (c) Jason Day 2015 - * - * Usage: - * - * $("#mySelector").printThis({ - * debug: false, * show the iframe for debugging - * importCSS: true, * import page CSS - * importStyle: false, * import style tags - * printContainer: true, * grab outer container as well as the contents of the selector - * loadCSS: "path/to/my.css", * path to additional css file - us an array [] for multiple - * pageTitle: "", * add title to print page - * removeInline: false, * remove all inline styles from print elements - * printDelay: 333, * variable print delay - * header: null, * prefix to html - * footer: null, * postfix to html - * base: false, * preserve the BASE tag, or accept a string for the URL - * formValues: true * preserve input/form values - * canvas: false * copy canvas elements (experimental) - * doctypeString: '...' * enter a different doctype for older markup - * }); - * - * Notes: - * - the loadCSS will load additional css (with or without @media print) into the iframe, adjusting layout - * - * jshint onevar: false, smarttabs: true, devel: true - */ -; -(function($) { - var opt; - $.fn.printThis = function(options) { - opt = $.extend({}, $.fn.printThis.defaults, options); - var $element = this instanceof jQuery ? this : $(this); - - var strFrameName = "printThis-" + (new Date()).getTime(); - - if (window.location.hostname !== document.domain && navigator.userAgent.match(/msie/i)) { - // Ugly IE hacks due to IE not inheriting document.domain from parent - // checks if document.domain is set by comparing the host name against document.domain - var iframeSrc = "javascript:document.write(\"<head><script>document.domain=\\\"" + document.domain + "\\\";</s" + "cript></head><body></body>\")"; - var printI = document.createElement('iframe'); - printI.name = "printIframe"; - printI.id = strFrameName; - printI.className = "MSIE"; - document.body.appendChild(printI); - printI.src = iframeSrc; - - } else { - // other browsers inherit document.domain, and IE works if document.domain is not explicitly set - var $frame = $("<iframe id='" + strFrameName + "' name='printIframe' />"); - $frame.appendTo("body"); - } - - - var $iframe = $("#" + strFrameName); - - // show frame if in debug mode - if (!opt.debug) $iframe.css({ - position: "absolute", - width: "0px", - height: "0px", - left: "-600px", - top: "-600px" - }); - - // $iframe.ready() and $iframe.load were inconsistent between browsers - setTimeout(function() { - - // Add doctype to fix the style difference between printing and render - function setDocType($iframe,doctype){ - var win, doc; - win = $iframe.get(0); - win = win.contentWindow || win.contentDocument || win; - doc = win.document || win.contentDocument || win; - doc.open(); - doc.write(doctype); - doc.close(); - } - if(opt.doctypeString){ - setDocType($iframe,opt.doctypeString); - } - - var $doc = $iframe.contents(), - $head = $doc.find("head"), - $body = $doc.find("body"), - $base = $('base'), - baseURL; - - // add base tag to ensure elements use the parent domain - if (opt.base === true && $base.length > 0) { - // take the base tag from the original page - baseURL = $base.attr('href'); - } else if (typeof opt.base === 'string') { - // An exact base string is provided - baseURL = opt.base; - } else { - // Use the page URL as the base - baseURL = document.location.protocol + '//' + document.location.host; - } - - $head.append('<base href="' + baseURL + '">'); - - // import page stylesheets - if (opt.importCSS) $("link[rel=stylesheet]").each(function() { - var href = $(this).attr("href"); - if (href) { - var media = $(this).attr("media") || "all"; - $head.append("<link type='text/css' rel='stylesheet' href='" + href + "' media='" + media + "'>"); - } - }); - - // import style tags - if (opt.importStyle) $("style").each(function() { - $(this).clone().appendTo($head); - }); - - // add title of the page - if (opt.pageTitle) $head.append("<title>" + opt.pageTitle + "</title>"); - - // import additional stylesheet(s) - if (opt.loadCSS) { - if( $.isArray(opt.loadCSS)) { - jQuery.each(opt.loadCSS, function(index, value) { - $head.append("<link type='text/css' rel='stylesheet' href='" + this + "'>"); - }); - } else { - $head.append("<link type='text/css' rel='stylesheet' href='" + opt.loadCSS + "'>"); - } - } - - // print header - if (opt.header) $body.append(opt.header); - - if (opt.canvas) { - // add canvas data-ids for easy access after the cloning. - var canvasId = 0; - $element.find('canvas').each(function(){ - $(this).attr('data-printthis', canvasId++); - }); - } - - // grab $.selector as container - if (opt.printContainer) $body.append($element.outer()); - - // otherwise just print interior elements of container - else $element.each(function() { - $body.append($(this).html()); - }); - - if (opt.canvas) { - // Re-draw new canvases by referencing the originals - $body.find('canvas').each(function(){ - var cid = $(this).data('printthis'), - $src = $('[data-printthis="' + cid + '"]'); - - this.getContext('2d').drawImage($src[0], 0, 0); - - // Remove the mark-up from the original - $src.removeData('printthis'); - }); - } - - // capture form/field values - if (opt.formValues) { - // loop through inputs - var $input = $element.find('input'); - if ($input.length) { - $input.each(function() { - var $this = $(this), - $name = $(this).attr('name'), - $checker = $this.is(':checkbox') || $this.is(':radio'), - $iframeInput = $doc.find('input[name="' + $name + '"]'), - $value = $this.val(); - - // order matters here - if (!$checker) { - $iframeInput.val($value); - } else if ($this.is(':checked')) { - if ($this.is(':checkbox')) { - $iframeInput.attr('checked', 'checked'); - } else if ($this.is(':radio')) { - $doc.find('input[name="' + $name + '"][value="' + $value + '"]').attr('checked', 'checked'); - } - } - - }); - } - - // loop through selects - var $select = $element.find('select'); - if ($select.length) { - $select.each(function() { - var $this = $(this), - $name = $(this).attr('name'), - $value = $this.val(); - $doc.find('select[name="' + $name + '"]').val($value); - }); - } - - // loop through textareas - var $textarea = $element.find('textarea'); - if ($textarea.length) { - $textarea.each(function() { - var $this = $(this), - $name = $(this).attr('name'), - $value = $this.val(); - $doc.find('textarea[name="' + $name + '"]').val($value); - }); - } - } // end capture form/field values - - // remove inline styles - if (opt.removeInline) { - // $.removeAttr available jQuery 1.7+ - if ($.isFunction($.removeAttr)) { - $doc.find("body *").removeAttr("style"); - } else { - $doc.find("body *").attr("style", ""); - } - } - - // print "footer" - if (opt.footer) $body.append(opt.footer); - - setTimeout(function() { - if ($iframe.hasClass("MSIE")) { - // check if the iframe was created with the ugly hack - // and perform another ugly hack out of neccessity - window.frames["printIframe"].focus(); - $head.append("<script> window.print(); </s" + "cript>"); - } else { - // proper method - if (document.queryCommandSupported("print")) { - $iframe[0].contentWindow.document.execCommand("print", false, null); - } else { - $iframe[0].contentWindow.focus(); - $iframe[0].contentWindow.print(); - } - } - - // remove iframe after print - if (!opt.debug) { - setTimeout(function() { - $iframe.remove(); - }, 1000); - } - - }, opt.printDelay); - - }, 333); - - }; - - // defaults - $.fn.printThis.defaults = { - debug: false, // show the iframe for debugging - importCSS: true, // import parent page css - importStyle: false, // import style tags - printContainer: true, // print outer container/$.selector - loadCSS: "", // load an additional css file - load multiple stylesheets with an array [] - pageTitle: "", // add title to print page - removeInline: false, // remove all inline styles - printDelay: 333, // variable print delay - header: null, // prefix to html - footer: null, // postfix to html - formValues: true, // preserve input/form values - canvas: false, // Copy canvas content (experimental) - base: false, // preserve the BASE tag, or accept a string for the URL - doctypeString: '<!DOCTYPE html>' // html doctype - }; - - // $.selector container - jQuery.fn.outer = function() { - return $($("<div></div>").html(this.clone())).html(); - } -})(jQuery); |