Django CMS - проблема с пользовательским интерфейсом для меню CMSToolbar справа - PullRequest
0 голосов
/ 17 июня 2020

Обзор

В моем проекте django cms (v3.7.3) у меня есть файл cms_toolbars.py с простым элементом тестового меню. cms_toolbars.py

from cms.toolbar_base import CMSToolbar
from cms.toolbar_pool import toolbar_pool

class TestMenu(CMSToolbar):

    def populate(self):
        self.toolbar.get_or_create_menu(
            key='test_menu',
            verbose_name='Test Menu',
    )

toolbar_pool.register(TestMenu)

Это, очевидно, простой пример, который отлично работает. Мой новый пункт «Тестовое меню» отображается на панели инструментов cms слева рядом с пунктом меню «Страница».

Проблема

Позже я решил, что хочу, чтобы мой новый пункт «Тестовое меню» отображался в правой части панели инструментов. Итак, я изменил свой cms_toolbars.py на это: cms_toolbars.py - с дополнительным боковым параметром

from cms.toolbar_base import CMSToolbar
from cms.toolbar_pool import toolbar_pool

class TestMenu(CMSToolbar):

    def populate(self):
        self.toolbar.get_or_create_menu(
            key='test_menu',
            verbose_name='Test Menu',
            side=self.toolbar.RIGHT,
    )

toolbar_pool.register(TestMenu)

После перезапуска локального сервера «Тестовое меню» теперь отображается в правой части панели инструментов cms, но html / css потому что это испортилось. После проверки html в моем браузере я обнаружил, что есть два блока div для левого и правого пунктов меню: <div class="cms-toolbar-left"> и <div class="cms-toolbar-right">. Проблема заключается в том, что для div cms-toolbar-right нет элемента <ul> - только элемент <li> моего «Тестового меню» отображается под div

Затем я решил взглянуть на код django -cms и заметил, что <div class="cms-toolbar-right"> даже не имеет элемента <ul> с необходимыми классами панели инструментов, такими как <div class="cms-toolbar-left">:

<div class="cms-toolbar-left">
    ...
    <ul class="cms-toolbar-item cms-toolbar-item-navigation">
        {% for item in cms_toolbar.get_left_items %}
            {{ item.render }}
        {% endfor %}
    </ul>
    ...
</div>

<div class="cms-toolbar-right">
    {% for item in cms_toolbar.get_right_items %}
        {{ item.render }}
    {% endfor %}
</div>

Вы можете увидеть полный django -cms html файл здесь

Вопрос

Кто-нибудь еще сталкивался с этой проблемой раньше? Если да, то как вы устранили проблему? Мне не хватает чего-то еще, что требуется для добавления пунктов меню в правой части? Также возможно, что это ошибка django -cms, но я решил, что сначала поставлю здесь проблему / вопрос на всякий случай.

...