如何使用户能够在内部部署TFS 2015中编辑HtmlFieldControl源?

时间:2019-04-09 11:25:15

标签: tfs azure-devops tfs2015

如果在编辑工作项时将图像插入“说明” 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中进行编辑将很繁琐。但是,即使那样也可以作为解决方法。

1 个答案:

答案 0 :(得分:0)

最后很容易:

var descriptionField = that._workItem.getField("System.Description");
var descriptionHTML = descriptionField._getValue().toString();
...
descriptionHTML = descriptionHTML.replace(toReplace,replaceWith);
descriptionField.setValue(descriptionHTML);