Панель инструментов¶
Панель инструментов может содержать различные элементы, некоторые из которых, в свою очередь, могут содержать другие элементы. Эти элементы представлены классами, перечисленными в 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позволяет легко получить доступ к этому объекту. Пример использования см. в Поиск существующих элементов панели инструментов.