Вывод ссылки на файлы активности в итогах в режиме отображения данных
Здравствуйте!
Пытаюсь в итогах в графике (в режиме отображения данных) сделать ссылки на приложенные файлы. Если в колонку выводить непосредственную ссылку вида http://bpm/0/rest/FileService/GetFile/080c9917-7ec9-42e5-86ff-75a683d4f…, то при клике на нее можно взять файл. Если же попытаться обернуть ссылку в тэги для человеческого представления, то ссылка не работает. В отладке я вижу, что тэги были убраны системой. Хочу, чтобы было так же, как при отображении столбца Заголовок. Подскажите, пожалуйста, как это реализовать?
Нравится
Сергей, насколько понимаю, это не конкретно для итогов, а базовая логика компонента Grid, реализованного в JS-ядре (см. сайт/0/core/hash/Terrasoft/controls/grid/grid.js):
/** * Generates html cell. * @private * @param {String} dataType Cell type. * @param {String} cellData Cell text. * @return {String} Cell html. */ formatCellSpan: function(dataType, cellData) { const spanCellXTemplate = this._getSpanCellXTemplate(); const valueWithoutTags = Terrasoft.removeHtmlTags(cellData); const text = this.encodeHtml(valueWithoutTags); let direction = null; if (Terrasoft.getIsRtlMode()) { direction = Terrasoft.containsRtlChars(cellData) ? direction : "ltr"; } const html = spanCellXTemplate.apply({ type: dataType, text: text, direction: direction }); return html; },
А затем в соседней функции добавляет, если нужно, внутренние ссылки на карточки записей в разделах системы:
/** * Generates html cell-link. * @private * @param {Object} linkData Link params. * @param {String} dataColumn Links data-column attribute. * @param {String} innerHtml Links internal content. * @return {String} Cell html. */ formatCellLink: function(linkData, dataColumn, innerHtml) { const linkTpl = "<a href=\"{0}\" target=\"{1}\" title=\"{2}\" data-column=\"{3}\">{4}</a>"; if (linkData.customUrlsExists) { const urlOccurrencePattern = "url_occurrence_{0}"; linkData.customUrls.forEach(function(url, index) { innerHtml = innerHtml.replace(this.encodeHtml(url), Ext.String.format(urlOccurrencePattern, index)); }, this); linkData.customUrls.forEach(function(url, index) { innerHtml = innerHtml.replace(Ext.String.format(urlOccurrencePattern, index), Ext.String.format(linkTpl, url, linkData.target, this.encodeHtml(url), "", url)); }, this); return innerHtml; } return Ext.String.format(linkTpl, linkData.url, linkData.target, this.encodeHtml(linkData.title), dataColumn, innerHtml); },
Соответственно, доработать будет непросто, поскольку нужно вмешиваться в логику ядра, а не скриптов в конфигурации.
Возможно, лучше будет сделать в итогах свой виджет с нужной логикой?