如果在编辑工作项时将图像插入“说明” HtmlFieldControl,则html img src属性将具有绝对网址,例如<img src='http://mytfsserver:8080/tfs/dc/_api/_wit/DownloadAttachment?fileGuid=03e65645..." .. >
然后,当使用反向代理时,图像将不会显示,其中来自公司外部的用户使用像'https://tfs.mycompany.com/tfs'这样的URL来访问我们的tfs,因为从外部无法访问'http://mytfsserver:8080/tfs '
我现在的想法是将绝对URL转换为相对的URL,例如<img src='/tfs/dc/_api/_wit/DownloadAttachment?fileGuid=03e65645..." .. >
。手动编辑System.Description字段的html并将其保存后,从tfs用户内部以及使用反向代理的外部用户也可以正确显示该图像。
我发现VSTS扩展可以对onFieldChanged事件做出反应,我想在System.Descripton字段的html中相应地更改img src。
自TFS 2017起,有一个名为“ WebLayout and Control elements”的新元素,这将是完美的方法。不幸的是,我们公司仍在内部使用TFS 2015,并且更新将不早于今年年底。
我的问题是,我可以使用一种现有的方式来开发功能来提供自动还是手动用相对URL替换绝对值吗?
我找不到办法在TFS 2015中将VSTS扩展 ON 使用到现有工作项表单中。似乎无法增强默认的HtmlFieldControl。或者我可以编写自定义的HtmlFieldControl?
不可能将诸如System.Description的“ FieldControl”之类的其他控件放到wit表单上,不支持。在将图像插入HtmlFieldControl之后,总是手动编辑html,将其保存,重新加载并在普通的FieldControl中进行编辑将很繁琐。但是,即使那样也可以作为解决方法。
答案 0 :(得分:0)
最后很容易:
var descriptionField = that._workItem.getField("System.Description");
var descriptionHTML = descriptionField._getValue().toString();
...
descriptionHTML = descriptionHTML.replace(toReplace,replaceWith);
descriptionField.setValue(descriptionHTML);