// -*- coding: utf-8; indent-tabs-mode: nil -*- Ext.namespace('Zarafa.common.printer.renderers'); /** * @class Zarafa.common.printer.renderers.RecordRenderer * @extends Zarafa.common.printer.renderers.BaseRenderer * Utility functions for a record renderer class. Don't use this directly, use a subclass instead. */ Zarafa.common.printer.renderers.RecordRenderer = Ext.extend(Zarafa.common.printer.renderers.BaseRenderer, { /** * Print a single table row * @param {String} header to place in the table before the record value * @param {String} data value * @private */ addRow: function(header, data) { var args = Ext.toArray(arguments); var tpl = '<tr>'; tpl += '<th valign="top">' + header + (Ext.isEmpty(header) ? '' : ':') + '</th>'; for (var i = 1, len = args.length; i < len; i++) { tpl += '<td valign="top">' + args[i] + '</td>'; } tpl += '</tr>\n'; return tpl; }, /** * Helper function to print an optional column in the email header table * @param {Zarafa.core.data.MAPIRecord} record to get data value from * @param {String} header to place in the table before the record value * @param {String} tag to get from the record * @param {String} format The template string which should be added * @private */ optionalRow: function(header, tag, format) { var html = ''; html += '<tpl if="!Ext.isEmpty(values.'+tag+')">'; html += this.addRow(header, format); html += '</tpl>'; return html; }, /** * Prepares data for any record for use in the XTemplate * @param {Zarafa.core.data.MAPIRecord} record The mapi record to print * @return {Array} Data suitable for use in the XTemplate */ prepareData: function(record) { var data = Zarafa.common.printer.renderers.RecordRenderer.superclass.prepareData(record); var opt; // remove default values opt = record.get('sensitivity'); if (!Ext.isEmpty(opt) && opt === 0) { delete data['sensitivity']; } opt = record.get('importance'); if (!Ext.isEmpty(opt) && opt == 1) { delete data['importance']; } // add printer specific tags data['attachment_names'] = Ext.util.Format.htmlEncode(record.getAttachmentNames()); return data; }, /** * @property customStylesheetPaths * @type Hash of Strings * The path at which the print stylesheets can be found for a specific renderer */ customStylesheetPath: 'client/resources/css/external/print.record.css' });