// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors // MIT License. See license.txt // default print style _p.def_print_style_body = "html, body, div, span, td, p { \ font-family: inherit; \ font-size: inherit; \ }\ .page-settings {\ font-family: Arial, Helvetica Neue, Sans;\ font-size: 9pt;\ }\ pre { margin:0; padding:0;}"; _p.def_print_style_other = "\n.simpletable, .noborder { \ border-collapse: collapse;\ margin-bottom: 10px;\ }\ .simpletable td {\ border: 1pt solid #777;\ vertical-align: top;\ padding: 4px;\ }\ .noborder td {\ vertical-align: top;\ }"; _p.go = function(html) { var w = _p.preview(html); w.print(); w.close(); } _p.preview = function(html) { var w = window.open(); if(!w) { msgprint(_("Please enable pop-ups")); return; } w.document.write(html); return w } // _p can be referenced as this inside $.extend $.extend(_p, { show_dialog: function() { if(!_p.dialog) { _p.make_dialog(); } _p.dialog.show(); }, make_dialog: function() { // Prepare Dialog Box Layout var dialog = new wn.ui.Dialog({ title: "Print Formats", fields: [ {fieldtype:"Select", label:"Print Format", fieldname:"print_format", reqd:1}, {fieldtype:"Check", label:"No Letter Head", fieldname:"no_letterhead"}, {fieldtype:"HTML", options: '
\ \ \
'}, ] }); dialog.$wrapper.find(".btn-print").click(function() { var args = dialog.get_values(); _p.build( args.print_format, // fmtname _p.go, // onload args.no_letterhead // no_letterhead ); }); dialog.$wrapper.find(".btn-preview").click(function() { var args = dialog.get_values(); _p.build( args.print_format, // fmtname _p.preview, // onload args.no_letterhead // no_letterhead ); }); dialog.onshow = function() { var $print = dialog.fields_dict.print_format.$input; $print.empty().add_options(cur_frm.print_formats); if(cur_frm.$print_view_select && cur_frm.$print_view_select.val()) $print.val(cur_frm.$print_view_select.val()); } _p.dialog = dialog; }, // Define formats dict formats: {}, /* args dict can contain: + fmtname --> print format name + onload + no_letterhead + only_body */ build: function(fmtname, onload, no_letterhead, only_body, no_heading) { if(!fmtname) { fmtname= "Standard"; } args = { fmtname: fmtname, onload: onload, no_letterhead: no_letterhead, only_body: only_body }; if(!cur_frm) { alert('No Document Selected'); return; } // Get current doc (record) var doc = locals[cur_frm.doctype][cur_frm.docname]; if(args.fmtname == 'Standard') { args.onload(_p.render({ body: _p.print_std(args.no_letterhead, no_heading), style: _p.print_style, doc: doc, title: doc.name, no_letterhead: args.no_letterhead, no_heading: no_heading, only_body: args.only_body })); } else { var print_format_doc = locals["Print Format"][args.fmtname]; if(!print_format_doc) { msgprint("Unknown Print Format: " + args.fmtname); return; } args.onload(_p.render({ body: print_format_doc.html, style: '', doc: doc, title: doc.name, no_letterhead: args.no_letterhead, no_heading: no_heading, only_body: args.only_body })); } }, render: function(args) { var container = document.createElement('div'); var stat = ''; if(!args.no_heading) { // if draft/archived, show draft/archived banner stat += _p.show_draft(args); stat += _p.show_archived(args); stat += _p.show_cancelled(args); } // Append args.body's content as a child of container container.innerHTML = args.body; // Show letterhead? _p.show_letterhead(container, args); _p.run_embedded_js(container, args.doc); var style = _p.consolidate_css(container, args); _p.render_header_on_break(container, args); return _p.render_final(style, stat, container, args); }, head_banner_format: function() { return "\