Для тех, кто интересуется созданием своих собственных разделов и "деревьев" в админке, - в версии Composite C1 3.2 появилась возможность группировать "деревья" (и вообще т.н. "консольные приложения") из разных файлов определения древовидных структур (tree defintions) в одном разделе (своем, или как подпапку в существующем).
Что имеется в виду?
Скажем, у вас есть несколько файлов определения древовидных структур, каждый из которых создает свой раздел в админке.
Благодаря новому функционалу их можно объединить их в одном разделе, особенно если их будет немало. К тому же, если они связаны между собой логически, то тем более.
Как вариант, их также можно объединить в общей подпапке в существующем разделе.
Самое главное, что теперь не нужно "сливать" все файлы в один файл (что реально затруднит работу с ними). Нужно просто внести небольшие изменения в свои файлы определения древовидных структур.
А именно: во всех файлах определения древовидной структуры, которые мы собираемся сгруппировать в общем разделе:
Таким образом мы сообщим системе, что нужно взять все "деревья", - у которых: а) атрибут ShareRootElementById="true" (в XML-элементе ElementRoot) и б) атрибут Id (в "корневом" XML-элементе Element) имеет одинаковое значение, - и объединить их в одном разделе.
Пример:
Несколько замечаний:
Что имеется в виду?
Скажем, у вас есть несколько файлов определения древовидных структур, каждый из которых создает свой раздел в админке.
Благодаря новому функционалу их можно объединить их в одном разделе, особенно если их будет немало. К тому же, если они связаны между собой логически, то тем более.
Как вариант, их также можно объединить в общей подпапке в существующем разделе.
Самое главное, что теперь не нужно "сливать" все файлы в один файл (что реально затруднит работу с ними). Нужно просто внести небольшие изменения в свои файлы определения древовидных структур.
А именно: во всех файлах определения древовидной структуры, которые мы собираемся сгруппировать в общем разделе:
- Добавляем атрибут ShareRootElementById к XML-элементу ElementRoot.
- Устанавливаем ему значение "true".
- У самого верхнего XML-элемента Element (который служит "корнем" нашего дерева) в атрибуте Id указываем значение, одинаковое для всех группируемых деревьев, напр., "SharedTreesId".
Таким образом мы сообщим системе, что нужно взять все "деревья", - у которых: а) атрибут ShareRootElementById="true" (в XML-элементе ElementRoot) и б) атрибут Id (в "корневом" XML-элементе Element) имеет одинаковое значение, - и объединить их в одном разделе.
Пример:
<ElementStructure xmlns="http://www.composite.net/ns/management/trees/treemarkup/1.0" xmlns:f="http://www.composite.net/ns/function/1.0">
<ElementStructure.AutoAttachments>
<NamedParent Name="PerspectivesRoot" Position="Top" />
</ElementStructure.AutoAttachments>
<ElementRoot ShareRootElementById="true">
<Children>
<Element Label="Деревья" Id="SharedTreesId">
<Children>
<Element Label="Фруктовые деревья" Id="FruitTreesId">
<Children>
<!-- элементы данных -->
</Children>
</Element>
</Children>
</Element>
</Children>
</ElementRoot>
</ElementStructure>
<ElementStructure.AutoAttachments>
<NamedParent Name="PerspectivesRoot" Position="Top" />
</ElementStructure.AutoAttachments>
<ElementRoot ShareRootElementById="true">
<Children>
<Element Label="Деревья" Id="SharedTreesId">
<Children>
<Element Label="Фруктовые деревья" Id="FruitTreesId">
<Children>
<!-- элементы данных -->
</Children>
</Element>
</Children>
</Element>
</Children>
</ElementRoot>
</ElementStructure>
Несколько замечаний:
- Группировка не получится, если в вашей древовидной структуре - несколько "корневых" XML-элементов Element (дочерних у ElementRoot).
- При группировке разных "деревьев" имеет смысл размещать элементы данных в двух вложенных XML-элементах Element. Первый - для общего раздела (название, иконка, подсказка); второй, его дочерний, - "корень" для элементов данных. (В примере выше это Element[@Label="Деревья"] и Element[@Label="Фруктовые деревья"] соответственно.)
- Первое загруженное "дерево" будет определять название, подсказку и иконку нового раздела (или подпапки в существующем разделе). И "деревья" отобразятся в порядке загрузки.
- Если изменить раздел (NamedParent[@Name]) в файле, загружаемом первым, то это изменит общие установки всей группы (название раздела/подпапки, иконка, подсказка). Если же сделать такое изменение в любом другом файле, который не загружен первым, такого эффекта не будет.
Комментариев нет:
Отправить комментарий