2016-08-02 10 views
0

Ich habe eine einfache Frage. Ich möchte wissen, ob es möglich ist, eine Begrenzung Anzahl der untergeordneten Plugins in django-cms zu definieren. Mein Plugin hat Child-Plugins, aber ich möchte die Anzahl der Child-Plugins auf maximal 2 beschränken. Es ist möglich, das cms_plugins.py etwas Konfiguration hinzuzufügen? Ohne ein Formular hinzufügen und von Hand bestätigen zu müssen?Es ist möglich, die Anzahl der verschachtelten Plugins in django-cms zu begrenzen?

Ich habe diese zu settings.py:

CMS_PLACEHOLDER_CONF = { 
    'Ipp_Article_Sidebar': { 
     'plugins': ['ArticlesParentCMSPlugin', 'ArticlesChildCMSPlugin'], 
     'name': gettext("Right Side Content"), 
     'limits': { 
      'ArticlesParentCMSPlugin': 1, 
      'ArticlesChildCMSPlugin': 2 
     } 
    }, 
} 

Mein Platzhalter gehören zu einem Modell:

sidebar = PlaceholderField('ipp_article_sidebar', 
          related_name='IPP_ARTICLE_SIDEBAR') 

Aber ich kann immer noch mehr als 2 Kinder hinzuzufügen.

+0

Siehe http://docs.django-cms.org/en/develop/reference/configuration.html#cms-placeholder-conf – mishbah

+0

@mishbah ich meine Frage aktualisiert können Sie einen Blick darauf werfen? :) – patricia

Antwort

0

Momentan kann dies in Django CMS für verschachtelte Plugins nicht durchgeführt werden.

Ich brauchte etwas ähnliches und machte eine schnelle Abhilfe durch Überschreiben der Vorlage. Ich habe eine Reaktion auf eine ähnliche Frage auf Github: https://github.com/divio/django-cms/issues/5102#issuecomment-278303995

Fügen Sie einfach max_children = <number> auf Ihre Plugin Klasse und eine neue dragitem.html Vorlage im Vorlagenordner erstellen templates/cms/toolbar/ die bestehende Django CMS-Vorlage außer Kraft zu setzen. Siehe den folgenden Vergleich:

Dies deaktiviert das + Symbol, wenn die maximale Anzahl der Kinder erreicht wurde.

--- env/lib/python3.5/site-packages/cms/templates/cms/toolbar/dragitem.html  2016-09-15 12:06:26.132803200 +0200 
+++ templates/cms/toolbar/dragitem.html 2017-02-08 12:26:59.343312100 +0100 
@@ -9,6 +9,17 @@ 
     {% if plugin.child_plugin_instances %} cms-dragitem-collapsable{% endif %}"> 
     {% language request.toolbar.toolbar_language %} 
     {% if not disabled_child %} 
+   {% with max_children=plugin.get_plugin_instance.1.max_children child_count=plugin.child_plugin_instances|length %} 
+    {% if max_children %} 
+     <div class="cms-submenu-btn cms-submenu-add cms-btn 
+      {% if child_count >= max_children %} cms-btn-disabled{% endif %}"> 
+      {% if child_count >= max_children %} 
+       <span class="cms-hover-tooltip" data-cms-tooltip="{% trans "You cannot add plugins to this plugin." %}"></span> 
+      {% else %} 
+       <span class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay" data-cms-tooltip="{% trans "Add plugin" %}"></span> 
+      {% endif %} 
+     </div> 
+    {% else %} 
      <div class="cms-submenu-btn cms-submenu-add cms-btn 
       {% if not allow_children %} cms-btn-disabled{% endif %}"> 
       {% if not allow_children %} 
@@ -17,6 +28,8 @@ 
       <span class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay" data-cms-tooltip="{% trans "Add plugin" %}"></span> 
       {% endif %} 
      </div> 
+    {% endif %} 
+   {% endwith %} 
      <div class="cms-submenu-btn cms-submenu-edit cms-btn" data-rel="edit"> 
       <span class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay" data-cms-tooltip="{% trans "Edit" %}"></span> 
      </div>