mirror of
https://gitee.com/jmix/cuba.git
synced 2024-12-04 20:28:00 +08:00
1) Исправлена глава Установка CUBA Studio: исправлена ссылка на дистрибутив Студии, удалена информация о логине и пароле доступа к репозиторию.
2) Убрана информация по AccessControl 3) Изменения в соответствии с тикетом https://youtrack.haulmont.com/issue/PL-2013
This commit is contained in:
parent
55a8d12677
commit
9e8aa15036
@ -8279,13 +8279,15 @@ protected boolean postCommit(boolean committed, boolean close) {
|
|||||||
<warning>
|
<warning>
|
||||||
<para>Обязательными вложенными элементами являются элементы <sgmltag>columns</sgmltag> и <sgmltag>rows</sgmltag>. </para>
|
<para>Обязательными вложенными элементами являются элементы <sgmltag>columns</sgmltag> и <sgmltag>rows</sgmltag>. </para>
|
||||||
</warning>
|
</warning>
|
||||||
<para id="gui_attr_grid_rows"><sgmltag>rows</sgmltag> − обязательный элемент, содержит последовательность строк (<sgmltag>row</sgmltag>). Хотя бы один элемент строки является обязательным.</para>
|
<para id="gui_attr_grid_columns"><sgmltag>columns</sgmltag> − обязательный элемент, содержит последовательность колонок <sgmltag>column</sgmltag>.</para>
|
||||||
<para id="gui_attr_grid_row"><sgmltag>row</sgmltag> − элемент строки, контейнер для содержимого ряда. Состоит из контейнеров или компонентов.</para>
|
|
||||||
<para id="gui_attr_grid_row_flex"><sgmltag>flex</sgmltag> − необязательный атрибут для элемента <sgmltag>row</sgmltag>, задает соотношение высот рядов сетки.</para>
|
|
||||||
<para id="gui_attr_grid_columns"><sgmltag>columns</sgmltag> − обязательный элемент, содержит последовательность <sgmltag>column</sgmltag>.</para>
|
|
||||||
<para id="gui_attr_grid_count">Атрибут <sgmltag>count</sgmltag> − необязательный атрибут, задает количество колонок, если не заданы элементы <sgmltag>column</sgmltag>.</para>
|
<para id="gui_attr_grid_count">Атрибут <sgmltag>count</sgmltag> − необязательный атрибут, задает количество колонок, если не заданы элементы <sgmltag>column</sgmltag>.</para>
|
||||||
<para id="gui_attr_grid_column"><sgmltag>column</sgmltag> − необязательный элемент для элемента <link linkend="gui_attr_grid_columns">columns</link>, декларирует атрибуты колонок сетки.</para>
|
<para id="gui_attr_grid_column"><sgmltag>column</sgmltag> − необязательный элемент для элемента <link linkend="gui_attr_grid_columns">columns</link>, декларирует атрибуты колонок сетки.</para>
|
||||||
<para id="gui_attr_grid_column_flex">Атрибут <sgmltag>flex</sgmltag> − необязательный атрибут, задает соотношение ширин колонок.</para>
|
<para id="gui_attr_grid_column_flex">Атрибут <sgmltag>flex</sgmltag> − необязательный атрибут, задает соотношение ширин колонок.</para>
|
||||||
|
<para>Для того чтобы определить ширину колонок друг относительно друга, необходимо чтобы для контейнера <sgmltag>grid</sgmltag> была установлена ширина (атрибут <link linkend="gui_attr_basic_width">width</link>). Для каждого элемента <link linkend="gui_attr_grid_column">column</link> следует установить требуемое значение атрибута <sgmltag>flex</sgmltag>. Например, в примере, находящемся ниже, ширина колонок сетки определяется соотношением 3:0:1:0. Колонкам 2 и 4 устанавливаются ширины, равные ширинам содержащихся в них компонентов; оставшаяся часть делится в пропорции 3 к 1 (это ширины колонок 1 и 3). Таким образом, ширина колонки, для которой задан атрибут <sgmltag>flex</sgmltag> со значением <literal>0</literal>, равна ширине компонента, содержащегося в данной колонке. Отсутствие атрибута <sgmltag>flex</sgmltag> у элемента <link linkend="gui_attr_grid_column">column</link> приравнивается значению <code>flex="0"</code>.</para>
|
||||||
|
<programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="source/section_gui/grid/grid_flex.txt" encoding="UTF-8" parse="text"/></programlisting>
|
||||||
|
<para id="gui_attr_grid_rows"><sgmltag>rows</sgmltag> − обязательный элемент, содержит последовательность строк (<sgmltag>row</sgmltag>). Хотя бы один элемент строки является обязательным.</para>
|
||||||
|
<para id="gui_attr_grid_row"><sgmltag>row</sgmltag> − элемент строки, контейнер для содержимого ряда. Состоит из контейнеров или компонентов.</para>
|
||||||
|
<para id="gui_attr_grid_row_flex"><sgmltag>flex</sgmltag> − необязательный атрибут для элемента <sgmltag>row</sgmltag>, задает соотношение высот рядов сетки. Аналогичен атрибуту <link linkend="gui_attr_grid_column_flex">flex</link> для элемента <link linkend="gui_attr_grid_column">column</link>.</para>
|
||||||
<para>Атрибуты <sgmltag>grid</sgmltag>:</para>
|
<para>Атрибуты <sgmltag>grid</sgmltag>:</para>
|
||||||
<informaltable frame="none" pgwide="0" align="left">
|
<informaltable frame="none" pgwide="0" align="left">
|
||||||
<tgroup cols="4" colsep="1" rowsep="1" align="left"><colspec colname="c1"/><colspec colname="c2"/><colspec colname="c3"/><colspec colname="c4"/>c <tbody>
|
<tgroup cols="4" colsep="1" rowsep="1" align="left"><colspec colname="c1"/><colspec colname="c2"/><colspec colname="c3"/><colspec colname="c4"/>c <tbody>
|
||||||
@ -8651,46 +8653,6 @@ protected boolean postCommit(boolean committed, boolean close) {
|
|||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Разное</title>
|
<title>Разное</title>
|
||||||
<section>
|
|
||||||
<title>AccessControl</title>
|
|
||||||
<para>Компонент <sgmltag>accessControl</sgmltag> предназначен для декларативного управления доступом к частям экрана. Он представляет собой контейнер, который никак не отображает себя на экране, а только управляет атрибутами <link linkend="gui_attr_basic_visible">visible</link> и <link linkend="gui_attr_basic_editable">editable</link> входящих в него компонентов.</para>
|
|
||||||
<para>Состояние управляемых компонентов определяется на основе двух элементов, вложенных в <sgmltag>accessControl</sgmltag>: <sgmltag>visible</sgmltag> и <sgmltag>editable</sgmltag>.</para>
|
|
||||||
<para>Соответствующее значение принимается либо из скрипта, возвращающего <code>boolean</code>, либо из свойства объекта <link linkend="AccessData">AccessData</link>, связанного с компонентом.
|
|
||||||
Скрипт задается либо атрибутом <sgmltag>script</sgmltag>, либо непосредственно в тексте элемента.
|
|
||||||
Свойство объекта <link linkend="AccessData">AccessData</link> задается атрибутом <sgmltag>property</sgmltag> и имеет больший приоритет, чем скрипт.</para>
|
|
||||||
<warning>
|
|
||||||
<para>В случае <sgmltag>visible</sgmltag>=<literal>false</literal> вложенные компоненты вообще не создаются, поэтому будьте осторожны при обращении к ним из контроллера.</para>
|
|
||||||
</warning>
|
|
||||||
<para>
|
|
||||||
<programlisting><tab id="mainTab" caption="msg://mainTab">
|
|
||||||
<accessControl data="workflow.client.web.ui.card.CardAccessData" param="accessData">
|
|
||||||
<editable property="notStarted"/>
|
|
||||||
|
|
||||||
<vbox margin="true" expand="attachmentsPane">
|
|
||||||
...</programlisting>
|
|
||||||
</para>
|
|
||||||
<section id="AccessData">
|
|
||||||
<title>Объект AccessData</title>
|
|
||||||
<para>В связи с тем что одни и те же параметры доступа могут многократно потребоваться в разных частях экрана и в коде контроллера, компонент <sgmltag>accessControl</sgmltag> может быть связан с объектом Java или Groovy, вычисляющим и хранящим эти параметры. Таким образом, дорогостоящая инициализация параметра доступа производится только один раз и затем доступна на протяжении жизни экрана.</para>
|
|
||||||
<para>Для связи компонента с данными доступа создайте класс, унаследованный от <code>AbstractAccessData</code>, и задайте следующие атрибуты компонента <code>accessControl</code>:</para>
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><emphasis role="bold">data</emphasis> − имя класса <code>AccessData</code></para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para><emphasis role="bold">param</emphasis> − имя параметра экрана, в котором будет сохранен объект <code>AccessData</code></para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
<para>В момент создания экрана загрузчик компонента <code>accessControl</code> проверяет наличие экземпляра <code>AccessData</code> в указанном параметре, и если его там нет, создает новый экземпляр.</para>
|
|
||||||
<para>В дальнейшем в коде контроллера можно получить экземпляр <code>AccessData</code> из параметров экрана, например:</para>
|
|
||||||
<programlisting>AbstractWfAccessData accessData = getContext().getParamValue("accessData");</programlisting>
|
|
||||||
<para>При создании класса <code>AccessData</code> следует иметь в виду, что в параметры экрана-редактора всегда передается параметр <parameter>param$item</parameter>, содержащий текущий редактируемый экземпляр сущности. Однако этот экземпляр загружен по <link linkend="views">представлению</link> вызывающего экрана, а не по представлению редактора.</para>
|
|
||||||
<para>Свойства <code>AccessData</code>, на которые можно ссылаться из компонента <code>accessControl</code>, должны быть реализованы по стандарту JavaBeans: методами с сигнатурой boolean <methodname>getXxx()</methodname></para>
|
|
||||||
<para>
|
|
||||||
<programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="source/section_gui/CardAccessData.java" encoding="UTF-8" parse="text"/></programlisting>
|
|
||||||
</para>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
<section id="gui_Action">
|
<section id="gui_Action">
|
||||||
<title>Action</title>
|
<title>Action</title>
|
||||||
<para><code>Action</code> − интерфейс, абстрагирующий действие от визуального компонента.</para>
|
<para><code>Action</code> − интерфейс, абстрагирующий действие от визуального компонента.</para>
|
||||||
|
@ -428,7 +428,7 @@ menu-config.sales$Customer.lookup=Покупатели</programlisting>
|
|||||||
<para>Выберите пункт меню <guimenu>Run</guimenu> −> <guimenu>Deploy</guimenu>. В подкаталоге <filename>build</filename> проекта будет установлен сервер <application>Tomcat</application> с собранным приложением.</para>
|
<para>Выберите пункт меню <guimenu>Run</guimenu> −> <guimenu>Deploy</guimenu>. В подкаталоге <filename>build</filename> проекта будет установлен сервер <application>Tomcat</application> с собранным приложением.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Выберите пункт меню <guimenu>Run</guimenu> −> <guimenu>Start application</guimenu>. Через несколько секунд в панели статуса ссылка рядом с надписью <guilabel>Web application</guilabel> станет доступной, и по ней можно осуществить переход к приложению непосредственно из Студии.</para>
|
<para>Выберите пункт меню <guimenu>Run</guimenu> −> <guimenu>Start application server</guimenu>. Через несколько секунд в панели статуса ссылка рядом с надписью <guilabel>Web application</guilabel> станет доступной, и по ней можно осуществить переход к приложению непосредственно из Студии.</para>
|
||||||
<para>Логин и пароль пользователя − admin / admin.</para>
|
<para>Логин и пароль пользователя − admin / admin.</para>
|
||||||
<para>Запущенное приложение содержит два главных пункта меню (<guimenu>Администрирование</guimenu> и <guimenu>Помощь</guimenu>), функциональность подсистемы безопасности и администрирования системы.</para>
|
<para>Запущенное приложение содержит два главных пункта меню (<guimenu>Администрирование</guimenu> и <guimenu>Помощь</guimenu>), функциональность подсистемы безопасности и администрирования системы.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -448,6 +448,9 @@ menu-config.sales$Customer.lookup=Покупатели</programlisting>
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>В поле <guilabel>Parent class</guilabel> оставьте установленное значение − <link linkend="standardEntity">StandardEntity</link>. </para>
|
<para>В поле <guilabel>Parent class</guilabel> оставьте установленное значение − <link linkend="standardEntity">StandardEntity</link>. </para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>Поле <guilabel>Inheritance strategy</guilabel> служит для объявления стратегии наследования для создаваемой сущности. Это поле оставьте пустым.</para>
|
||||||
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Нажмите на кнопку <guibutton>...</guibutton> рядом с именем сущности. На экране отобразится окно <guilabel>Localized message</guilabel>, в нем следует задать <link linkend="localization">локализацию</link> имени сущности на доступных языках.</para>
|
<para>Нажмите на кнопку <guibutton>...</guibutton> рядом с именем сущности. На экране отобразится окно <guilabel>Localized message</guilabel>, в нем следует задать <link linkend="localization">локализацию</link> имени сущности на доступных языках.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -455,7 +458,7 @@ menu-config.sales$Customer.lookup=Покупатели</programlisting>
|
|||||||
<para>Далее создадим атрибуты сущности. Для этого нажмите на кнопку <guibutton>New</guibutton>, находящуюся под таблицей <guilabel>Attributes</guilabel>.</para>
|
<para>Далее создадим атрибуты сущности. Для этого нажмите на кнопку <guibutton>New</guibutton>, находящуюся под таблицей <guilabel>Attributes</guilabel>.</para>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>В отобразившемся окне <guilabel>Create attribute</guilabel> в поле <guilabel>Name</guilabel> введите название атрибута сущности − <userinput>name</userinput>, в списке <guilabel>Attribute type</guilabel> выберите значение <link linkend="datatype">DATATYPE</link>, в поле <guilabel>Type</guilabel> укажите тип атрибута <userinput>String</userinput> и далее укажите длину текстового атрибута в поле <guilabel>Length</guilabel>, равной 100 символам. Установите флажок <guilabel>Mandatory</guilabel>. Установленный флажок означает, что атрибут является обязательным к заполнению. В поле <guilabel>Column</guilabel> автоматически сгенерируется имя колонки в базе данных. Далее нажмите на кнопку <guibutton>...</guibutton> рядом с названием атрибута. На экране отобразится окно <guilabel>Localized message</guilabel>, в нем следует задать локализацию названия атрибута на доступных языках.</para>
|
<para>В отобразившемся окне <guilabel>Create attribute</guilabel> в поле <guilabel>Name</guilabel> введите название атрибута сущности − <userinput>name</userinput>, в списке <guilabel>Attribute type</guilabel> выберите значение <link linkend="datatype">DATATYPE</link>, в поле <guilabel>Type</guilabel> укажите тип атрибута <userinput>String</userinput> и далее укажите длину текстового атрибута в поле <guilabel>Length</guilabel>, равной 100 символам. Установите флажок <guilabel>Mandatory</guilabel>. Установленный флажок означает, что атрибут является обязательным к заполнению. В поле <guilabel>Column</guilabel> автоматически сгенерируется имя колонки в базе данных. Далее нажмите на кнопку <guibutton>...</guibutton> рядом с названием атрибута. На экране отобразится окно <guilabel>Localized message</guilabel>, в нем следует задать локализацию названия атрибута на доступных языках. Для добавления атрибута нажмите на кнопку <guibutton>Add</guibutton>.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Атрибут <code>email</code> создается таким же образом, за исключением того, что в поле <guilabel>Length</guilabel> следует указать значение <userinput>50</userinput>.</para>
|
<para>Атрибут <code>email</code> создается таким же образом, за исключением того, что в поле <guilabel>Length</guilabel> следует указать значение <userinput>50</userinput>.</para>
|
||||||
@ -473,14 +476,14 @@ menu-config.sales$Customer.lookup=Покупатели</programlisting>
|
|||||||
<para><guilabel>Name</guilabel> − <userinput>date</userinput>, <guilabel>Attribute type</guilabel> − <link linkend="datatype">DATATYPE</link>, <guilabel>Type</guilabel> − <userinput>Date</userinput>. Для атрибута <code>date</code> установите галочку <guilabel>Mandatory</guilabel>.</para>
|
<para><guilabel>Name</guilabel> − <userinput>date</userinput>, <guilabel>Attribute type</guilabel> − <link linkend="datatype">DATATYPE</link>, <guilabel>Type</guilabel> − <userinput>Date</userinput>. Для атрибута <code>date</code> установите галочку <guilabel>Mandatory</guilabel>.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para><guilabel>Name</guilabel> − <userinput>amount</userinput>, <guilabel>Attribute type</guilabel> − <link linkend="datatype">DATATYPE</link>, <guilabel>Type</guilabel> − <userinput>Decimal</userinput>.</para>
|
<para><guilabel>Name</guilabel> − <userinput>amount</userinput>, <guilabel>Attribute type</guilabel> − <link linkend="datatype">DATATYPE</link>, <guilabel>Type</guilabel> − <userinput>BigDecimal</userinput>.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
<para>Для каждого атрибута укажите <link linkend="localization">локализованные</link> названия.</para>
|
<para>Для каждого атрибута укажите <link linkend="localization">локализованные</link> названия.</para>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Создание таблиц базы данных</title>
|
<title>Создание таблиц базы данных</title>
|
||||||
<para>Для создания таблиц базы данных достаточно на вкладке <guilabel>Entities</guilabel> панели навигатора нажать на кнопку <guibutton>Generate DB scripts</guibutton>. После этого откроется страница <guilabel>Database update scripts</guilabel>. На вкладке будут сгенерированы скрипты обновления базы данных от ее текущего состояния (<guilabel>Update scripts</guilabel>) и скрипты создания БД с нуля (<guilabel>Init tables</guilabel>, <guilabel>Init constraints</guilabel>, <guilabel>Init data</guilabel>). Нажмите на кнопку <guibutton>Save scripts</guibutton> в верхнем правом углу рабочей панели и затем <guibutton>Close</guibutton>. Для запуска скриптов обновления остановите запущенное приложение с помощью команды <guimenu>Run</guimenu> −> <guimenu>Stop application</guimenu>, затем выполните <guimenu>Run</guimenu> −> <guimenu>Update database</guimenu>.</para>
|
<para>Для создания таблиц базы данных достаточно на вкладке <guilabel>Entities</guilabel> панели навигатора нажать на кнопку <guibutton>Generate DB scripts</guibutton>. После этого откроется страница <guilabel>Database update scripts</guilabel>. На вкладке будут сгенерированы скрипты обновления базы данных от ее текущего состояния (<guilabel>Update scripts</guilabel>) и скрипты создания БД с нуля (<guilabel>Init tables</guilabel>, <guilabel>Init constraints</guilabel>, <guilabel>Init data</guilabel>). Нажмите на кнопку <guibutton>Save scripts</guibutton> в верхнем правом углу рабочей панели и затем <guibutton>Close</guibutton>. Для запуска скриптов обновления остановите запущенное приложение с помощью команды <guimenu>Run</guimenu> −> <guimenu>Stop application server</guimenu>, затем выполните <guimenu>Run</guimenu> −> <guimenu>Update database</guimenu>.</para>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Создание пользовательского интерфейса приложения</title>
|
<title>Создание пользовательского интерфейса приложения</title>
|
||||||
|
@ -243,7 +243,7 @@
|
|||||||
<para>Установите инструменты сборки и настройте окружение согласно предыдущим разделам данной главы.</para>
|
<para>Установите инструменты сборки и настройте окружение согласно предыдущим разделам данной главы.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Загрузите архив <filename>studio-0.3.zip</filename> по ссылке <ulink url="http://repository.haulmont.com:8587/nexus/content/repositories/releases/com/haulmont/studio/studio/0.3/studio-0.3.zip">http://repository.haulmont.com:8587/nexus/content/repositories/releases/com/haulmont/studio/studio/0.3/studio-0.3.zip</ulink> (для доступа к репозиторию используйте имя <userinput>cuba</userinput> и пароль <userinput>cuba123</userinput>).</para>
|
<para>Загрузите архив <filename>studio-0.4.zip</filename> по ссылке <ulink url="http://repository.haulmont.com:8587/nexus/content/repositories/releases/com/haulmont/studio/studio/0.4/studio-0.4.zip">http://repository.haulmont.com:8587/nexus/content/repositories/releases/com/haulmont/studio/studio/0.4/studio-0.4.zip</ulink>.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Распакуйте архив в локальный путь, не содержащий пробелов, например, <filename>c:/work/studio</filename></para>
|
<para>Распакуйте архив в локальный путь, не содержащий пробелов, например, <filename>c:/work/studio</filename></para>
|
||||||
@ -269,7 +269,7 @@
|
|||||||
<para><guilabel>IDE port</guilabel> − порт, на котором будет принимать подключения плагин к IDE</para>
|
<para><guilabel>IDE port</guilabel> − порт, на котором будет принимать подключения плагин к IDE</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para><guilabel>Repository</guilabel> − URL <link linkend="artifact_repository">репозитория</link> бинарных артефактов. Нажмите кнопку <guibutton>Auth</guibutton> и укажите имя <userinput>cuba</userinput> и пароль <userinput>cuba123</userinput>.</para>
|
<para><guilabel>Repository</guilabel> − URL <link linkend="artifact_repository">репозитория</link> бинарных артефактов. Нажмите кнопку <guibutton>Auth</guibutton> и укажите имя и пароль доступа к репозиторию.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
16
doc/content/manual/ru/source/section_gui/grid/grid_flex.txt
Normal file
16
doc/content/manual/ru/source/section_gui/grid/grid_flex.txt
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<grid spacing="true" margin="true" width="100%">
|
||||||
|
<columns>
|
||||||
|
<column flex="3"/>
|
||||||
|
<column/>
|
||||||
|
<column flex="1"/>
|
||||||
|
<column flex="0"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<label value="Name"/>
|
||||||
|
<textField id="name" datasource="customerDs" property="name"/>
|
||||||
|
<label value="Email"/>
|
||||||
|
<textField id="email" datasource="customerDs" property="email"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
Loading…
Reference in New Issue
Block a user