// -*- coding: utf-8; indent-tabs-mode: nil -*- Ext.namespace('Zarafa.contact.printer'); /** * @class Zarafa.contact.printer.DistlistRenderer * @extends Zarafa.common.printer.renderers.RecordRenderer * * A printer for distribution lists using the same layout as for emails */ Zarafa.contact.printer.DistlistRenderer = Ext.extend(Zarafa.common.printer.renderers.RecordRenderer, { /** * Generate the XTemplate HTML text for printing a single contact or distlist. * @param {Zarafa.core.data.MAPIRecord} record The task item to print * @return {String} The HTML for the XTemplate to print */ generateBodyTemplate: function(record) { var html = ''; html += '<b>{fullname:htmlEncode}</b>\n'; html += '<hr>\n'; html += '<table>\n'; html += this.optionalRow(_('Full Name'), 'display_name', '{display_name:htmlEncode}'); html += '</table><br><p>\n'; html += _('Members') + '\n'; html += '<table>\n'; html += '<tpl for="members">\n'; html += this.addRow('', '{display_name:htmlEncodeUndef}'); html += '</tpl>\n'; html += '</table><br><p>\n'; html += record.getBody(true); html += '</p>\n'; return html; }, /** * Returns the data for the XTemplate used in generateBodyTemplate() * @param {Zarafa.core.data.MAPIRecord} record The task item to print * @return {Object} XTemplate data */ prepareData: function(record) { var data = Zarafa.contact.printer.DistlistRenderer.superclass.prepareData.apply(this, arguments); data.members = Ext.pluck(record.getMemberStore().getRange(), 'data'); // HTML Encode all properties of the members for (var i = 0; i < data.members.length; i++) { // Make an explicit copy of the member, otherwise we // will save the escaped data to the distlist. data.members[i] = Ext.apply({}, data.members[i]); var member = data.members[i]; for (var key in member) { if(Ext.isString(member[key])) { member[key] = Ext.util.Format.htmlEncode(member[key]); } } } return data; } });