Ext.ns('VersionX.panel.Common'); VersionX.panel.Common.ContentPanel = function(config) { config = config || {}; config.id = config.id || Ext.id(); Ext.apply(config,{ items: [{ layout: 'column', border: false, items: [{ columnWidth: 1, layout: 'form', border: false, defaults: { width: '97%' }, items: [{ xtype: 'panel', border: false, style: 'border-bottom: 1px solid black; font-weight: bold;', html: _('versionx.resources.detail.tabs.resource-content.columnheader', {id:config.vxRecord.version_id}) + (config.vxRecordCmp ? ' + ' + _('versionx.resources.detail.tabs.resource-content.columnheader', {id:config.vxRecordCmp.version_id}) : '') },{ xtype: 'panel', border: false, style: 'padding: 15px 10px 10px 10px;', id: config.id + '-diff', html: (config.vxRecord) ? ((config.vxRecord[config.vxContentField]) ? config.vxRecord[config.vxContentField] : 'Empty') : 'No Version Chosen' }] }] }] }); /* if ( config.vxRecordCmp ) { config.items[0].items[0].columnWidth = .5; config.items[0].items.push({ columnWidth: .5, layout: 'form', border: false, defaults: { width: '97%' }, items: [{ xtype: 'panel', border: false, style: 'border-bottom: 1px solid black; font-weight: bold;', html: _('versionx.resources.detail.tabs.resource-content.columnheader', {id:config.vxRecordCmp.version_id}) },{ xtype: 'panel', border: false, style: 'padding: 15px 10px 10px 10px;', html: (config.vxRecordCmp) ? ((config.vxRecordCmp[config.vxContentField]) ? config.vxRecordCmp[config.vxContentField] : 'Empty') : 'No Version Chosen' }] }); }*/ VersionX.panel.Common.ContentPanel.superclass.constructor.call(this,config); this.on('afterrender', this.viewDiff) }; Ext.extend(VersionX.panel.Common.ContentPanel,MODx.Panel,{ viewDiff: function() { if ( this.config.vxRecordCmp ) { var panel = this; setTimeout(function() { var current = panel.config.vxRecord[panel.config.vxContentField], comparedTo = (panel.config.vxRecordCmp[panel.config.vxContentField]) ? panel.config.vxRecordCmp[panel.config.vxContentField] : ''; var diff = JsDiff.diffLines(current, comparedTo), display = document.getElementById(panel.config.id + '-diff'), fragment = document.createDocumentFragment(); diff.forEach(function(part){ // green for additions, red for deletions // grey for common parts var span = document.createElement('span'); span.className = part.added ? 'vx-added vx-inlinediff-added' : part.removed ? 'red vx-removed vx-inlinediff-removed' : ''; span.innerHTML = part.value; fragment.appendChild(span); }); display.innerHTML = ''; display.appendChild(fragment); }, 100); } } }); Ext.reg('versionx-panel-common-contentpanel',VersionX.panel.Common.ContentPanel);