Вывод ссылки на файлы активности в итогах в режиме отображения данных
Здравствуйте!
Пытаюсь в итогах в графике (в режиме отображения данных) сделать ссылки на приложенные файлы. Если в колонку выводить непосредственную ссылку вида 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);
},Соответственно, доработать будет непросто, поскольку нужно вмешиваться в логику ядра, а не скриптов в конфигурации.
Возможно, лучше будет сделать в итогах свой виджет с нужной логикой?