Открытие новой страницы(переход к другой странице) при нажатии на действие
Здравствуйте!
1) Добавила новое действие.
Требуется реализовать переход на другую страницу при нажатии на данное действие.
Не могли бы вы подсказать как это сделать?
2) Не могу найти какая страница отвечает стандартному действию "Права доступа"
Спасибо большое!
Нравится
Здравствуйте!
1) Правильно ли я понимаю, что Вы используете версию 5.X?
Примеры есть в темах:
http://www.community.terrasoft.ru/forum/topic/9471
http://www.community.terrasoft.ru/forum/topic/8691
2) Деталь "Права доступа" в разделе (если речь идет о 5.X) отображается в том случае, если объект раздела администрируется по записям.
1) Спасибо большое, Андрей!!
2) Нет, деталь я вижу , я не могу найти его исходный код.
Сабина, посмотрите BaseObjectRecordRightsGridPage.
Другой вопрос, для чего Вам это нужно:)
Мы не рекомендуем вносить изменения в данную деталь, т.к. это может повлиять на работу системы.
Спасибо!
Хочу создать аналогичную страницу для редактирования прав доступа для выделенных активностей.
"Безродный Андрей" написал:Здравствуйте!
1) Правильно ли я понимаю, что Вы используете версию 5.X?
Примеры есть в темах:
http://www.community.terrasoft.ru/forum/topic/9471
http://www.community.terrasoft.ru/forum/topic/8691
2) Деталь "Права доступа" в разделе (если речь идет о 5.X) отображается в том случае, если объект раздела администрируется по записям.
Я очень извиняюсь, здесь как я понимаю редактируется карточка. При редактировании раздела надо поступать аналогично? Просто при изменении раздела открывается окно для написания javascript кода, а для карточки c#.
Спасибо.
1. Как сделать по кнопке переход в другой раздел — описано здесь.
2. В линейке 5.Х код всех окнон: карточек, реестров, разделов написан на C#. На JS есть только отдельные вкрапления внутри C#. Пожалуйста, покажите скриншот, чтобы понять, что Вы хотите изменить.
"Смена прав" в разделе "Мои активности". (1я картинка)
Исходный код на 2й картинке.
Мне надо чтобы при нажатии открывалась некая страница .
Сабина, для добавления действия в раздел достаточно переопределить метод getSectionActions. Например, как это сделано в разделе «Контакты» (ContactSectionV2).
"Вильшанский Дмитрий" написал:Сабина, для добавления действия в раздел достаточно переопределить метод getSectionActions. Например, как это сделано в разделе «Контакты» (ContactSectionV2).
Спасибо, но вопрос ведь не в добавлении, а в реализации перехода на другую страницу.
Или там что-то подобное реализовано?
Сабина, данное действие реализовано аналогично. Вы можете посмотреть как это реализовано в базовом функционале любого раздела (см. предыдущий комментарий).
"Вильшанский Дмитрий" написал:Сабина, данное действие реализовано аналогично. Вы можете посмотреть как это реализовано в базовом функционале любого раздела (см. предыдущий комментарий).
this.methods.onSchedulerView = function() {
var tag = prepareEdit(this);
var recordId = this.get('activeRow');
this.view(tag, recordId);
это оно?
Можно создать для одного раздела две разные страницы вида?(одна уже реализована в базовом)
"Исаева Сабина" написал:
Вильшанский Дмитрий пишет:
Сабина, данное действие реализовано аналогично. Вы можете посмотреть как это реализовано в базовом функционале любого раздела (см. предыдущий комментарий).
this.methods.onSchedulerView = function() {
var tag = prepareEdit(this);
var recordId = this.get('activeRow');
this.view(tag, recordId);это оно?
Можно создать для одного раздела две разные страницы вида?(одна уже реализована в базовом)
Вам нужен метод getSectionActions.
Конечно можно, у раздела может быть несколько страниц редактирования.
Посмотрите базовый функционал в разделе «Активности». Например, в разделе есть страницы с типом «Задача», «E-mail».
"Исаева Сабина" написал:
Вильшанский Дмитрий пишет:
Сабина, данное действие реализовано аналогично. Вы можете посмотреть как это реализовано в базовом функционале любого раздела (см. предыдущий комментарий).
this.methods.onSchedulerView = function() {
var tag = prepareEdit(this);
var recordId = this.get('activeRow');
this.view(tag, recordId);это оно?
Можно создать для одного раздела две разные страницы вида?(одна уже реализована в базовом)
Вам нужен метод getSectionActions.
Конечно можно, у раздела может быть несколько страниц редактирования.
Посмотрите базовый функционал в разделе «Активности». Например, в разделе есть страницы с типом «Задача», «E-mail».
"Александр Зубков" написал:Задача
this.methods.onSchedulerCopy = function() {
var tag = prepareEdit(this);
var recordId = this.get('activeRow');
this.copy(tag, recordId);
};
this.methods.onSchedulerDelete = function() {
prepareEdit(this);
this.onDelete();
};
вот они они как я понимаю.
А как они связываются?
т.е как система понимает что вызывать при данной операции? (в каком месте эта привязка осуществляется? )
Сабина, добрый день!
Конкретно эти методы связываются с соответствующими кнопками в функции generateEditButtons схемы ActivitySection (обработчик события click):
buttonsConfig.push({ className: 'Terrasoft.Button', enabled: { bindTo: 'getEditButtonsEnabled' }, click: { bindTo: 'onSchedulerCopy' }, styles: { textStyle: { margin: '0px 10px 0px 0px' } }, style: Terrasoft.controls.ButtonEnums.style.DEFAULT, caption: resources.localizableStrings.CopyButtonCaption, tag: ConfigurationEnums.CardState.Copy });
"Лабьяк Олег Игоревич" написал:Сабина, добрый день!
Конкретно эти методы связываются с соответствующими кнопками в функции generateEditButtons схемы ActivitySection (обработчик события click):
buttonsConfig.push({
className: 'Terrasoft.Button',
enabled: {
bindTo: 'getEditButtonsEnabled'
},
click: {
bindTo: 'onSchedulerCopy'
},
styles: {
textStyle: {
margin: '0px 10px 0px 0px'
}
},
style: Terrasoft.controls.ButtonEnums.style.DEFAULT,
caption: resources.localizableStrings.CopyButtonCaption,
tag: ConfigurationEnums.CardState.Copy
});С уважением,
Олег Лабьяк,
инженер-программист,
группа компаний Terrasoft.
Добрый день, Олег!
Нет , вопрос в последующем действии, как программа понимает какую страницу открывать при вызове this.copy?
Страница определяется в результате вызова функции prepareEdit(this). Внутри этой функции происходит поиск карточки редактирования, соответствующей текущему модулю. Если страница найдена, она сохраняется в переменную tag, которая используется в вызове this.copy.
this.methods.onSchedulerView = function() {
var tag = prepareEdit(this);
var recordId = this.get('activeRow');
this.view(tag, recordId);
};
this.methods.onSchedulerEdit = function() {
var tag = prepareEdit(this);
var recordId = this.get('activeRow');
this.edit(tag, recordId);
};
this.methods.onSchedulerCopy = function() {
var tag = prepareEdit(this);
var recordId = this.get('activeRow');
this.copy(tag, recordId);
};
this.methods.onSchedulerDelete = function() {
prepareEdit(this);
this.onDelete();
};
Что бы ни передавали в эти edit, copy view , для каждого открываются одинаковые страницы. Может они как то по умолчанию прикреплены?
Сабина, посмотрите, пожалуйста, реализацию функции prepareEdit. В ней происходит поиск карточек редактирования, соответствующих текущему разделу. Сами карточки регистрируются в системной таблице SysModuleEdit, но при старте системы информация о них сохраняется в отдельную коллекцию для каждого раздела. Сами разделы сохраняются в Terrasoft.configuration.ModuleStructure, а получить карточки редактирования, соответствующие модулю, можно следующим образом (пример для раздела "Активности"):
var pages = Terrasoft.configuration.ModuleStructure[Activity.name].pages;
Далее в зависимости от типа выбранной активности определяется соответствующая ей карточка редактирования.
Если карточка не зарегистрирована в SysModuleEdit, система не сможет получить к ней доступ.