diff --git a/doc/content/manual/ru/chapter_development.xml b/doc/content/manual/ru/chapter_development.xml
index 0847e21b1f..765264adcc 100644
--- a/doc/content/manual/ru/chapter_development.xml
+++ b/doc/content/manual/ru/chapter_development.xml
@@ -117,7 +117,7 @@
Файловая структура проекта
- Рассмотрим файловую структуру проекта на примере простого приложения Sales, состоящего из блоков Middleware и Web Client.
+ Рассмотрим файловую структуру проекта на примере простого приложения Sales, состоящего из блоков Middleware, Web Client и Web Portal.В корне проекта расположены скрипты сборки build.gradle, settings.gradle и проектные файлы IntelliJ IDEA.
- В каталоге modules расположены подкаталоги модулей проекта − global, core, gui, web.
+ В каталоге modules расположены подкаталоги модулей проекта − global, core, gui, portal, web. Модуль global содержит каталог исходных текстов src, в корне которого располагаются конфигурационные файлы
- sales-metadata.xml
+ metadata.xml
и
- sales-persistence.xml
+ persistence.xml
. Пакет com.sample.sales.core содержит интерфейсы сервисов Middleware, пакет com.sample.sales.entity - классы сущностей и файлы локализации для них.Модуль gui содержит каталог исходных текстов src, в корне которого располагается конфигурационный файл
- sales-screens.xml
+ screens.xml
. Пакет com.sample.sales.gui содержит XML-дескрипторы и контроллеры экранов и файлы локализации для них.Создание пользовательского интерфейса приложения
- Для ограничения списка поддерживаемых языков интерфейса откройте файл sales-web-app.properties модуля web и добавьте в него следующее значение:cuba.availableLocales=English|en;Russian|ru
+ Для ограничения списка поддерживаемых языков интерфейса откройте файл web-app.properties модуля web и добавьте в него следующее значение:cuba.availableLocales=English|en;Russian|ruФайлы, относящиеся к экранам, будем создавать в пакете com.sample.sales.gui модуля gui.Любой экран определяется XML-дескриптором, описывающим источники данных и расположение визуальных компонентов экрана. У экрана также может быть контроллер − Java-класс, содержащий логику инициализации и обработки событий экрана.
@@ -223,9 +222,9 @@ Order.amount=Сумма
Элемент rowsCount позволяет организовать постраничный вывод данных таблицы и отобразить общее количество строк.Элемент actions задает набор контекстных действий с таблицей. В нашем случае все указанные действия являются стандартными (что определяется именем действия в атрибуте id элемента action), и не требуют дополнительного кодирования. Задание некоторого действия для таблицы приводит к появлению соответствующего пункта контекстного меню таблицы.Над таблицей находится панель (элемент buttonsPanel), содержащая кнопки для управления данными в этой таблице. Кнопки связаны с действиями (actions) таблицы, и в данном случае дублируют пункты контекстного меню.
- XML-дескриптор экрана должен иметь идентификатор, по которому его можно вызвать из меню или из программного кода. Идентификатор в нашем случае назначается в файле sales-screens.xml модуля gui<screen id="sales$Customer.lookup" template="/com/haulmont/sales/gui/customer/customer-browse.xml"/>
+ XML-дескриптор экрана должен иметь идентификатор, по которому его можно вызвать из меню или из программного кода. Идентификатор в нашем случае назначается в файле screens.xml модуля gui<screen id="sales$Customer.lookup" template="/com/haulmont/sales/gui/customer/customer-browse.xml"/>Идентификатор sales$Customer.lookup удовлетворяет соглашению, по которому экраны списков сущностей должны иметь вид {entity_name}.lookup. Данное соглашение облегчает настройку визуальных компонентов, работающих со ссылочными атрибутами сущностей.
- Чтобы вызывать экран из главного меню приложения, добавьте в файл sales-web-menu.xml модуля web следующий элемент:<menu id="sales" insertBefore="administration">
+ Чтобы вызывать экран из главного меню приложения, добавьте в файл web-menu.xml модуля web следующий элемент:<menu id="sales" insertBefore="administration">
<item id="sales$Customer.lookup"/>
</menu>Для того, чтобы пункт меню содержал локализованное имя экрана, добавьте в главный пакет сообщений модуля web (файлы messages.properties и messages_ru.properties пакета com.sample.sales.web следующие строки:
@@ -267,7 +266,7 @@ menu-config.sales$Customer.lookup=ПокупателиАтрибуты id элементов field группы полей соответствуют именам редактируемых атрибутов сущности.Атрибут expand элемента layout нужен для того, чтобы растянуть фрейм на все свободное пространство по вертикали, тогда кнопки окажутся прижатыми вверх к группе полей.
- Зададим идентификатор экрана в файле sales-screens.xml модуля gui<screen id="sales$Customer.edit" template="/com/haulmont/sales/gui/customer/customer-edit.xml"/>
+ Зададим идентификатор экрана в файле screens.xml модуля gui<screen id="sales$Customer.edit" template="/com/haulmont/sales/gui/customer/customer-edit.xml"/>Для правильной работы стандартных действий create и edit таблицы в экране списка необходимо, чтобы идентификатор экрана редактирования соответствовал виду {entity_name}.editПопробуем добавить и отредактировать Покупателя в работающем приложении. Для этого пересоберите проект gradle restart
@@ -285,7 +284,7 @@ menu-config.sales$Customer.lookup=Покупатели
Экран списка ЗаказовСоздайте пакет com.sample.sales.gui.order и в нем файл order-browse.xml следующего содержания:Данный экран аналогичен описанному в и имеет следующую особенность: так как среди прочих отображается ссылочный атрибут Order.customer, требуется определить представление сущности Order, включающее этот атрибут (стандартные представления _local и _minimal не включают ссылочных атрибутов).
- Определите представление orderWithCustomer в файле sales-views.xml модуля core: <view class="com.sample.sales.entity.Order"
+ Определите представление orderWithCustomer в файле views.xml модуля core: <view class="com.sample.sales.entity.Order"
name="orderWithCustomer"
extends="_local">
<property name="customer" view="_minimal"/>
@@ -293,8 +292,8 @@ menu-config.sales$Customer.lookup=ПокупателиСоздайте файлы messages.properties и messages_ru.properties в пакете com.sample.sales.gui.order, и внесите в них локализацию заголовка экрана: messages.propertiesbrowserCaption=Ordersmessages_ru.propertiesbrowserCaption=Заказы
- Далее зарегистрируйте экран в файле sales-screens.xml модуля gui: <screen id="sales$Order.lookup" template="/com/haulmont/sales/gui/order/order-browse.xml"/>
- и добавьте соответствующий пункт меню в файл sales-web-menu.xml модуля web: <item id="sales$Order.lookup"/>
+ Далее зарегистрируйте экран в файле screens.xml модуля gui: <screen id="sales$Order.lookup" template="/com/haulmont/sales/gui/order/order-browse.xml"/>
+ и добавьте соответствующий пункт меню в файл web-menu.xml модуля web: <item id="sales$Order.lookup"/>Локализованные названия нового пункта меню добавьте в главный пакет сообщений модуля web (файлы messages.properties и messages_ru.properties пакета com.sample.sales.web):messages.propertiesmenu-config.sales$Order.lookup=Orders
@@ -319,7 +318,7 @@ menu-config.sales$Customer.lookup=ПокупателиДобавьте в файлы messages.properties и messages_ru.properties пакета com.sample.sales.gui.order локализацию заголовка экрана редактирования: messages.propertieseditorCaption=Ordermessages_ru.propertieseditorCaption=Заказ
- Зарегистрируйте экран в файле sales-screens.xml модуля gui:
+ Зарегистрируйте экран в файле screens.xml модуля gui: <screen id="sales$Order.edit" template="/com/haulmont/sales/gui/order/order-edit.xml"/>Пересоберите проект gradle restart
diff --git a/doc/content/manual/ru/img/project_structure.png b/doc/content/manual/ru/img/project_structure.png
index 73af2b5a48..e2c7c089b9 100644
Binary files a/doc/content/manual/ru/img/project_structure.png and b/doc/content/manual/ru/img/project_structure.png differ
diff --git a/doc/content/manual/ru/img/project_structure_core.png b/doc/content/manual/ru/img/project_structure_core.png
index d46e714e17..0e0a0aec65 100644
Binary files a/doc/content/manual/ru/img/project_structure_core.png and b/doc/content/manual/ru/img/project_structure_core.png differ
diff --git a/doc/content/manual/ru/img/project_structure_global.png b/doc/content/manual/ru/img/project_structure_global.png
index 143215f794..6cf4e1177c 100644
Binary files a/doc/content/manual/ru/img/project_structure_global.png and b/doc/content/manual/ru/img/project_structure_global.png differ
diff --git a/doc/content/manual/ru/img/project_structure_gui.png b/doc/content/manual/ru/img/project_structure_gui.png
index 7e74c7569c..9262aafb7d 100644
Binary files a/doc/content/manual/ru/img/project_structure_gui.png and b/doc/content/manual/ru/img/project_structure_gui.png differ
diff --git a/doc/content/manual/ru/img/project_structure_web.png b/doc/content/manual/ru/img/project_structure_web.png
index 3d53d08678..10f5b3e202 100644
Binary files a/doc/content/manual/ru/img/project_structure_web.png and b/doc/content/manual/ru/img/project_structure_web.png differ
diff --git a/doc/content/manual/ru/manual.xml b/doc/content/manual/ru/manual.xml
index e2613cb1ff..b1dc8f7305 100644
--- a/doc/content/manual/ru/manual.xml
+++ b/doc/content/manual/ru/manual.xml
@@ -567,7 +567,7 @@ menu-config.sales$Customer.lookup=Customers
<param-name>appPropertiesConfig</param-name>
<param-value>
classpath:cuba-app.properties
- classpath:sales-app.properties
+ classpath:app.properties
file:${catalina.home}/conf/app-core/local.app.properties
</param-value>
</context-param>
@@ -619,7 +619,7 @@ menu-config.sales$Customer.lookup=Customers
<param-name>appPropertiesConfig</param-name>
<param-value>
classpath:cuba-web-app.properties
- classpath:sales-web-app.properties
+ classpath:web-app.properties
file:${catalina.home}/conf/app/local.app.properties
</param-value>
</context-param>
@@ -921,7 +921,7 @@ menu-config.sales$Customer.lookup=Customers
Resources
.
Используется в блоках Web Client и Desktop Client.
- Пример:cuba.menuConfig=cuba-web-menu.xml sales-web-menu.xml
+ Пример:cuba.menuConfig=cuba-web-menu.xml web-menu.xml
@@ -934,7 +934,7 @@ menu-config.sales$Customer.lookup=Customers
Resources
.
Используется в блоке Middleware.
- Пример:cuba.metadataConfig=cuba-metadata.xml sales-metadata.xml
+ Пример:cuba.metadataConfig=cuba-metadata.xml metadata.xml
@@ -974,7 +974,7 @@ menu-config.sales$Customer.lookup=Customers
permissions.xml
.
Используется в блоках Web Client и Desktop Client.
- Пример:cuba.permissionConfig=cuba-web-permissions.xml sales-web-permissions.xml
+ Пример:cuba.permissionConfig=cuba-web-permissions.xml web-permissions.xml
@@ -987,7 +987,7 @@ menu-config.sales$Customer.lookup=Customers
Resources
.
Используется в блоке Middleware.
- Пример:cuba.persistenceConfig=cuba-persistence.xml sales-persistence.xml
+ Пример:cuba.persistenceConfig=cuba-persistence.xml persistence.xml
@@ -1013,7 +1013,7 @@ menu-config.sales$Customer.lookup=Customers
Resources
.
Используется в блоке Middleware.
- Пример:cuba.remotingSpringContextConfig=cuba-remoting-spring.xml sales-remoting-spring.xml
+ Пример:cuba.remotingSpringContextConfig=cuba-remoting-spring.xml remoting-spring.xml
@@ -1026,7 +1026,7 @@ menu-config.sales$Customer.lookup=Customers
Resources
.
Используется во всех стандартных блоках.
- Пример:cuba.springContextConfig=cuba-spring.xml sales-spring.xml
+ Пример:cuba.springContextConfig=cuba-spring.xml spring.xml
@@ -1120,7 +1120,7 @@ menu-config.sales$Customer.lookup=Customers
Конфигурационный параметр, задающий набор файлов views.xml, автоматически развертываемых на старте приложения. См. Используется во всех стандартных блоках.
- Пример:cuba.viewsConfig=cuba-views.xml reports-views.xml sales-views.xml
+ Пример:cuba.viewsConfig=cuba-views.xml reports-views.xml views.xml
@@ -1133,7 +1133,7 @@ menu-config.sales$Customer.lookup=Customers
Resources
.
Используется в блоках Web Client и Desktop Client.
- Пример:cuba.windowConfig=cuba-web-screens.xml sales-web-screens.xml
+ Пример:cuba.windowConfig=cuba-web-screens.xml web-screens.xml