Всем доброго времени суток. Версия 7.12.
В своё время работал с настройкой мобильного приложения, в т.ч. с добавлением кастомных элементов на страницы. Вроде тогда всё работало (в 7.10 и эмуляторе приложения для 7.10) - https://community.terrasoft.ru/questions/dobavlenie-kastomnyh-elementov…
Хотелось бы ещё раз разобрать задачу замещения страниц и добавления своих элементов по пунктам.
Итак, к примеру, я хочу как-то изменить страницу контакта в мобильном приложении (доработать, помимо обычного перетаскивания колонок).
Есть схема MobileContactPreviewPage, которая подключена в MobileApplicationManifestDefaultWorkplace у контакта в Models:
"Contact": {
"Preview": "MobileContactPreviewPage",
"RequiredModels": [
"Account",
"Contact",
"ContactCommunication",
"CommunicationType",
"Department",
"ContactAddress",
"AddressType",
"Country",
"Region",
"City",
"ContactAnniversary",
"AnniversaryType",
"Activity",
"SysImage",
"FileType",
"ActivityPriority",
"ActivityType",
"ActivityCategory",
"ActivityStatus",
"Job"
],
"ModelExtensions": [],
"PagesExtensions": [
"MobileContactRecordPageSettingsDefaultWorkplace",
"MobileContactGridPageSettingsDefaultWorkplace",
"MobileContactActionsSettingsDefaultWorkplace",
"MobileContactModuleConfig"
]
}
Я заместил схему MobileContactPreviewPage, перенёс содержимое из оригинальной реализации полностью, добавил свою небольшую доработку- просто добавление кнопки на страницу:
/* globals Contact: false */
Terrasoft.LastLoadedPageData = {
controllerName: "ContactPreviewPage.Controller",
viewXType: "contactpreviewpageview"
};
Ext.define("ContactPreviewPage.View", {
extend: "Terrasoft.view.BasePreviewPage",
xtype: "contactpreviewpageview",
config: {
id: "ContactPreviewPage"
}
});
Ext.define("ContactPreviewPage.Controller", {
extend: "Terrasoft.controller.BasePreviewPage",
statics: {
Model: Contact
},
config: {
refs: {
view: "#ContactPreviewPage"
}
},
/**
* @inheritdoc
* @protected
* @overridden
*/
onCallPhoneStarted: function() {
this.callParent(arguments);
Terrasoft.PhoneCallLogUtils.openPage({
activityLinkColumnNames: [
{
parentColumnName: "Id",
activityColumnName: "Contact"
},
{
parentColumnName: "Account",
activityColumnName: "Account"
}
],
record: this.record
});
},
onLoadRecord: function(loadedRecord, callback) {
this.callParent([loadedRecord, function() {
Terrasoft.MessageBox.showMessage("onLoadRecord");
var panelItems = this.getView().getPanel().getItems();
var primaryColumnSet = panelItems.first();
//Кнопка
var controlbutton = this.getOurCustomButton(loadedRecord);
controlbutton.on("tap", function () {
loadedRecord.set("UsrImgData","");
}, this);
primaryColumnSet.add(controlbutton); //если добавляем в конце панели
}]);
},
getOurCustomButton: function(record) {
return Ext.create('Ext.Button', {
xtype: "button",
cls: "x-button x-button-primary-blue",
text: "Очистить"
});
},
});
Собственно, кнопки так и не появилось, сообщение showmessage тоже отсутствует. Версия приложения последняя, установил прямо с GooglePlay, проверяю всё непосредственно с телефона.
И ещё общий вопрос - что собственно, представляет собой приложение? Могу ли я туда выводить непосредственно html- или нативный javascript-код как в браузер? Будет ли при этом работать javascript-код на всех видах устройств?