Каким образом можно хранить URL и как возможно сделать так, чтобы на форме это поле стало "кликабельным"
Вопрос
Каким образом можно хранить URL (в каком поле) и как возможно (если это возможно в принципе) сделать так, чтобы на форме это поле стало "кликабельным"?
Ответ
URL можно хранить в текстовом поле.
Основные нюансы реализации описаны в ответе на комьюнити: http://www.community.terrasoft.ru/forum/topic/9686#comment-54881
Для поля необходимо добавить следующие свойства в свойство values элемента массива diff:
"showValueAsLink": true,
"href": {
"bindTo": "UsrFieldName",
"bindConfig": {"converter": "getUsrFieldNameLink"}
},
"controlConfig": {
"className": "Terrasoft.TextEdit",
"linkclick": { bindTo: "onUsrFieldNameLinkClick"}
}Где UsrFieldName - название поля, которое мы хотим отображать как гиперссылку.
Также необходимо реализовать два метода, с которыми мы связали наше поле:
getUsrFieldNameLink: function(value) {
return {
"url": value,
"caption": value
};
},
onUsrFieldNameLinkClick: function(url) {
if (url != null) {
window.open(url, "_blank", "height=" + this.get("WindowHeight") + ",width=" + this.get("WindowWidth"));
return false;
}
}Необходимо также следить за тем, чтобы значение данного поля начиналось с http или https, иначе система будет добавлять к содержимому путь к приложению. Можно также анализировать значение входящего параметра value в первом методе и в случае необходимости добавлять эту приставку.
Полный пример элемента diff:
{
"operation": "insert",
"name": "UsrURLpage22872546-f334-4b46-a445-112b532455c4",
"values": {
"layout": {
"colSpan": 12,
"rowSpan": 1,
"column": 0,
"row": 3,
"layoutName": "Header"
},
"labelConfig": {},
"enabled": true,
"bindTo": "UsrURLpage",
"showValueAsLink": true,
"href": {
"bindTo": "UsrURLpage",
"bindConfig": {"converter": "getUsrURLpageLink"}
},
"controlConfig": {
"className": "Terrasoft.TextEdit",
"linkclick": { bindTo: "onUsrURLpageLinkClick"}
}
},
"parentName": "Header",
"propertyName": "items",
"index": 6
}