django CMS不会在登录时显示工具栏

时间:2016-07-01 15:32:58

标签: django django-cms

我正在寻找一种方法,当一个'员工 - 用户'时,不会自动显示CMS工具栏(版本3.3.0)。登录。

只有在 A B C 0 1 1 a 1 2 3 b 2 3 4 c 1 5 4 e 位于网址时才会激活工具栏 documentation提到?edit选项,但启用时我看不到任何效果。还有描述:

  

"如果为True,则工具栏隐藏在django CMS的页面中。"

对我来说似乎并不完全清楚......

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果您将?toolbar_off添加到网址,则工具栏会完全消失(无切换按钮)。 ?edit将其重新打开。

要自动将其关闭:

(A)你可以在登录链中添加类似中间件或钩子的东西并在那里添加参数。

(B)您可以继承/扩展CMSToolbar以覆盖以下默认行为:

def init_toolbar(self, request):
    self.request = request
    self.is_staff = self.request.user.is_staff
    self.edit_mode = self.is_staff and self.request.session.get('cms_edit', False)
    self.show_toolbar = self.is_staff or self.request.session.get('cms_edit', False)
    if self.request.session.get('cms_toolbar_disabled', False):
        self.show_toolbar = False

特别是最后一行必须更改为使用默认值True

    if self.request.session.get('cms_toolbar_disabled', True):
        self.show_toolbar = False

答案 1 :(得分:0)

我已覆盖login.html,并在?toolbar_off隐藏的输入值中添加了结尾的{{ next }}

<form action="{{ app_path }}" method="post" id="login-form">{% csrf_token %}
    <div class="form-element-wrapper">
        <input class="form-input" type="text" name="username" autofocus="" maxlength="254"
               required="" id="id_username" data-cip-id="id_username">
        <span class="form-input-highlight"></span>
        <span class="form-input-bar"></span>
        <label for="username" class="form-label">Username</label>
    </div>
    <div class="form-element-wrapper">
        <input class="form-input [% password_css %]" type="password" name="password" required=""
               id="id_password" data-cip-id="id_password">
        <span class="form-input-highlight"></span>
        <span class="form-input-bar"></span>
        <label for="password" class="form-label">Passwort</label>
<!-- THIS IS THE IMPORTANT LINE! -->
        <input type="hidden" name="next" value="{{ next }}?toolbar_off"/>
    </div>
    <div class="form-element-wrapper">
        <button class="form-element form-button" type="submit"
                value="{% trans 'Log in' %}">{% trans 'Log in' %}</button>
    </div>
</form>

一个简单的解决方案,如果用户通过登录页面登录。这不会影响通过?edit的登录。