Панель инструментов¶
Панель инструментов может содержать различные элементы, некоторые из которых, в свою очередь, могут содержать другие элементы. Эти элементы представлены классами, перечисленными в cms.toolbar.items
, и создаются с помощью различных API, описанных ниже.
Не инстанцируйте эти классы вручную
Эти классы описаны здесь только в справочных целях. Настоятельно рекомендуется не создавать экземпляры самостоятельно, а использовать перечисленные здесь методы.
Классы и методы¶
Common parameters (key
, verbose_name
, position
, on_close
, disabled
, active
) и опции описаны в конце этого документа.
-
class
cms.toolbar.toolbar.
CMSToolbar
¶ Панель инструментов является экземпляром класса
cms.toolbar.toolbar.CMSToolbar
. Его не следует путать сCMSToolbar
, базовым классом для классов-модификаторов панели инструментов в других приложениях, которые добавляют элементы на панель инструментов и манипулируют ею иным образом.Настоятельно рекомендуется взаимодействовать с панелью инструментов только в собственном коде:
API, задокументированные здесь
классы модификаторов панели инструментов на основе
cms.toolbar_base.CMSToolbar
Вы заметите, что некоторые методы, описанные здесь, не включают некоторые аргументы, присутствующие в коде. Это публичная справочная документация, а код может быть изменен без предупреждения.
Некоторые из следующих методов создания и добавления других объектов на панель инструментов унаследованы от
ToolbarAPIMixin
.-
add_link_item
()¶
-
add_sideframe_item
()¶
-
add_modal_item
()¶
-
add_ajax_item
()¶
-
add_item
()¶
Если меню с идентификатором
Menu
иkey
уже существует, этот метод вернет это меню. В противном случае будет создано меню с идентификаторомkey
.
Вернет
Menu
, идентифицированный сkey
, илиNone
.
Добавляет
Button
на панель инструментов.
Добавляет
SideframeButton
на панель инструментов.
Добавляет
ModalButton
на панель инструментов.
Добавляет (пустой)
ButtonList
на панель инструментов и возвращает его.
-
edit_mode_active
()¶ Свойство; возвращает
True
, если активны режимы редактирования доски содержимого или доски структуры.
-
watch_models
()¶ Свойство; список моделей, которые панель инструментов watches for URL changes, чтобы она могла перенаправить на новый URL при сохранении.
-
class
cms.toolbar.items.
Menu
¶ Предоставляет меню на панели инструментов. Используйте метод
CMSToolbar.get_or_create_menu
для создания экземпляраMenu
. Может быть добавлен кCMSToolbar
.Наследует от
SubMenu
ниже, поэтому разделяет все его методы, но дополнительно имеет:
-
class
cms.toolbar.items.
SubMenu
¶ Потомок
Menu
. Используйте методMenu.get_or_create_menu
для создания экземпляраSubMenu
. Может быть добавлен кMenu
.Некоторые из следующих методов создания и добавления объектов унаследованы от
ToolbarAPIMixin
.-
add_link_item
()¶
-
add_sideframe_item
()¶
-
add_modal_item
()¶
-
add_ajax_item
()¶
-
add_item
()¶
-
get_item_count
()¶ Возвращает количество пунктов в меню.
Другие методы:
-
-
class
cms.toolbar.items.
LinkItem
¶ Отправляет GET-запрос. Используйте метод
add_link_item
для создания экземпляраLinkItem
. Может быть добавлен кCMSToolbar
,Menu
,SubMenu
.
-
class
cms.toolbar.items.
SideframeItem
¶ Отправляет GET-запрос; загружает ответ в боковой рамке. Используйте метод
add_sideframe_item
для создания экземпляраSideframeItem
. Может быть добавлен кCMSToolbar
,Menu
,SubMenu
.
-
class
cms.toolbar.items.
ModalItem
¶ Отправляет GET-запрос; загружает ответ в модальном окне. Используйте метод
add_modal_item
для создания экземпляраModalItem
. Может быть добавлен кCMSToolbar
,Menu
,SubMenu
.
-
class
cms.toolbar.items.
AjaxItem
¶ Отправляет POST-запрос. Используйте метод
add_ajax_item
для создания экземпляраAjaxItem
. Может быть добавлен кCMSToolbar
,Menu
,SubMenu
.
-
class
cms.toolbar.items.
Break
¶ Визуальный разрыв в меню. Используйте метод
add_break
для создания экземпляраBreak
. Может быть добавлен кMenu
,SubMenu
.
-
class
cms.toolbar.items.
ButtonList
¶ Визуально связанный список из одной или нескольких кнопок. Используйте метод
add_button_list()
для создания экземпляраButton
. Может быть добавлен кCMSToolbar
.Добавляет
Button
в список кнопок и возвращает его.
Добавляет
ModalButton
на панель инструментов.
Добавляет (пустой)
ButtonList
на панель инструментов и возвращает его.
-
class
cms.toolbar.items.
Button
¶ Отправляет запрос GET. Используйте метод
CMSToolbar.add_button
илиButtonList.add_button()
для создания экземпляраButton
. Может быть добавлен кCMSToolbar
,ButtonList
.
-
class
cms.toolbar.items.
SideframeButton
¶ Отправляет запрос GET. Используйте метод
CMSToolbar.add_sideframe_button
илиButtonList.add_sideframe_button()
для создания экземпляраSideframeButton
. Может быть добавлен кCMSToolbar
,ButtonList
.
-
class
cms.toolbar.items.
ModalButton
¶ Отправляет запрос GET. Используйте метод
CMSToolbar.add_modal_button
илиButtonList.add_modal_button()
для создания экземпляраModalButton
. Может быть добавлен кCMSToolbar
,ButtonList
.
-
class
cms.toolbar.items.
BaseItem
¶ Все элементы панели инструментов наследуются от
BaseItem
. Если вам нужно создать пользовательский элемент панели инструментов, используйте подклассBaseItem
.-
template
¶ Должен быть установлен подклассами и указывать на шаблон Django
-
render
()¶ Рендерит элемент и возвращает его в виде строки. По умолчанию вызывает
get_context()
и рендеритtemplate
с возвращенным контекстом.
-
get_context
()¶ Возвращает контекст (в виде словаря) для данного элемента.
-
-
class
cms.toolbar.items.
ToolbarAPIMixin
¶ Предоставляет API, используемые
CMSToolbar
иMenu
.-
add_link_item
(name, url, active=False, disabled=False, position=None)¶ Добавляет
LinkItem
, который открываетurl
, и возвращает его.
-
add_sideframe_item
(name, url, active=False, disabled=False, on_close=None, position=None)¶ Добавляет
SideframeItem
, который открываетurl
в боковой рамке, и возвращает его.
-
add_modal_item
(name, url, active=False, disabled=False, on_close=REFRESH_PAGE, position=None)¶ Аналогичен
add_sideframe_item()
, но добавляетModalItem
, который открываетurl
в модальном диалоге вместо бокового фрейма, и возвращает его.
-
add_ajax_item
(name, action, active=False, disabled=False, data=None, question=None, position=None)¶ Добавляет
AjaxItem
, который отправляет POST-запрос наaction
сdata
, и возвращает его.data
должен бытьNone
или словарь. CSRF-токен будет автоматически добавлен к элементу.Если для
question
указана строка, она будет представлена пользователю для подтверждения перед отправкой запроса.
-
add_item
(item, position=None)¶ Добавляет элемент (который должен быть подклассом
BaseItem
) и возвращает его. Это низкоуровневый API, и для добавления элементов всегда следует использовать один из встроенных методов, специфичных для объекта, предпочитая, по возможности, использовать этот метод только для пользовательских классов элементов.
-
find_items
(item_type)¶ Возвращает список объектов
ItemSearchResult
, соответствующих всем элементамitem_type
(например,LinkItem
).
-
find_first
(item_type, **attributes)¶ Возвращает первый
ItemSearchResult
, соответствующий поиску, илиNone
. Стратегия поиска такая же, как и вfind_items()
. Возвращаемое значение этого метода безопасно для использования в качестве аргументаposition
различных API для добавления элементов.
-
-
class
cms.toolbar.items.
ItemSearchResult
¶ Возвращается API find в формате
ToolbarAPIMixin
.У
ItemSearchResult
будет два полезных атрибута:-
item
¶ Найденный предмет.
-
index
¶ Индекс элемента (его положение среди других элементов).
Сам параметр
ItemSearchResult
может быть приведен к целому числу и поддерживает сложение и вычитание чисел. Более подробную информацию см. в параметреposition
, а примеры - в Управление положением элементов на панели инструментов.-
-
class
cms.toolbar_base.CMSToolbar.
CMSToolbar
¶ Базовый класс для модификаторов панели инструментов.
Дополнительную информацию см. в разделе Как расширить панель инструментов.
Параметры¶
Описанные ниже методы создания/изменения элементов панели инструментов имеют ряд общих параметров:
-
key
¶
уникальный идентификатор (обычно строка)
-
verbose_name
¶
отображаемый текст в элементе
-
position
¶
Индекс позиции нового элемента в списке элементов. Может быть:
None
- добавляет элемент в списокцелое число - вставляет элемент по данному индексу в список
объект уже в списке - вставляет элемент в список непосредственно перед объектом; должен быть подклассом
BaseItem
, и должен существовать в спискеItemSearchResult
- вставляет элемент в список непосредственно передItemSearchResult
.ItemSearchResult
может рассматриваться как целое число.
-
on_close:
¶
Определяет, что происходит после закрытия фрейма (бокового или модального), который был открыт пунктом меню. Может быть:
None
- ничего не делает, когда боковой фрейм закрываетсяREFRESH_PAGE
- обновляет страницу при закрытии фреймаURL - открывает URL-адреса при закрытии фрейма.
-
disabled
¶
Закрашивает элемент и делает его неработоспособным.
-
active
¶
Применяется только к кнопкам; отображает кнопку в «активированном» состоянии.
Константы django CMS, используемые в панелях инструментов¶
-
cms.constants.
REFRESH_PAGE
¶ Подставляется в аргументы
on_close
для обновления текущей страницы при закрытии фрейма, например:from cms.constants import REFRESH_PAGE self.toolbar.add_modal_item( 'Modal item', url=modal_url, on_close=REFRESH_PAGE )
-
cms.cms_toolbars.
ADMIN_MENU_IDENTIFIER
¶ Меню Site (в котором обычно отображается доменное имя проекта, по умолчанию example.com).
ADMIN_MENU_IDENTIFIER
позволяет легко получить доступ к этому объекту. Пример использования см. в Поиск существующих элементов панели инструментов.