Если вы вставите изображение в HtmlFieldControl «Описание» при редактировании рабочего элемента, тогда атрибут html img src будет иметь абсолютный URL-адрес, например <img src='http://mytfsserver:8080/tfs/dc/_api/_wit/DownloadAttachment?fileGuid=03e65645..." .. >
Затем изображения не будут отображаться при работе с обратным прокси, когда пользователи из-за пределов нашей компании получают доступ к нашим tfs с URL-адресом типа «https://tfs.mycompany.com/tfs», потому что извне нет доступа к «http://mytfsсервер:8080/tfs».
Теперь моя идея состоит в том, чтобы преобразовать абсолютный URL-адрес в относительный, например <img src='/tfs/dc/_api/_wit/DownloadAttachment?fileGuid=03e65645..." .. >
. После редактирования html поля System.Description вручную и его сохранения изображение отображается правильно, как внутри пользователей tfs, так и для внешних пользователей, которые используют обратный прокси-сервер.
Я узнал, что расширение VSTS может реагировать на событие onFieldChanged, и я хочу соответствующим образом изменить img src в html поле System.Descripton.
Начиная с TFS 2017 появился новый элемент под названием «Элементы WebLayout and Control», который был бы идеальным подходом. К сожалению, наша компания до сих пор использует TFS 2015 локально, и обновление будет сделано не ранее конца этого года.
Итак, мой вопрос, могу ли я использовать уже существующий способ разработки функциональности для автоматической или ручной замены абсолютного URL на относительный?
я не нашел способа для использования расширений VSTS НА существующей формы рабочего элемента с TFS 2015. И кажется невозможным улучшить HtmlFieldControl по умолчанию. Или я могу написать собственный HtmlFieldControl?
Невозможно поместить другой элемент управления, такой как «FieldControl» для System.Description, в остроумную форму, он не поддерживается. Было бы утомительно редактировать html вручную всегда после вставки изображения в HtmlFieldControl, сохранять его, перезагружать и редактировать в обычном FieldControl. Но даже это будет принято как обходной путь.
Наконец это легко:
var descriptionField = that._workItem.getField("System.Description");
var descriptionHTML = descriptionField._getValue().toString();
...
descriptionHTML = descriptionHTML.replace(toReplace,replaceWith);
descriptionField.setValue(descriptionHTML);