Каким образом можно хранить 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 }