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