소스 검색

10 Feature Reusable Content Snippet (#13)

Implementing #10 reusable content snippet.
Cory Sutyak 6 년 전
부모
커밋
b1406a0083

+ 1 - 0
coderedcms/blocks/__init__.py

@@ -36,6 +36,7 @@ CONTENT_STREAMBLOCKS = HTML_STREAMBLOCKS + [
     ('page_list', PageListBlock()),
     ('modal', ModalBlock(HTML_STREAMBLOCKS)),
     ('pricelist', PriceListBlock()),
+    ('reusable_content', ReusableContentBlock()),
 ]
 
 NAVIGATION_STREAMBLOCKS = [

+ 12 - 0
coderedcms/blocks/content_blocks.py

@@ -312,3 +312,15 @@ class ContentWallBlock(BaseBlock):
         icon = 'fa-stop'
         label = _('Content Wall')
         template = 'coderedcms/blocks/content_wall_block.html'
+
+
+class ReusableContentBlock(BaseBlock):
+    """
+    Enables choosing a ResusableContent snippet.
+    """
+    content = SnippetChooserBlock('coderedcms.ReusableContent')
+
+    class Meta:
+        icon = 'fa-recycle'
+        label = _('Reusable Content')
+        template = 'coderedcms/blocks/reusable_content_block.html'

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 24 - 0
coderedcms/migrations/0003_auto_20180912_1632.py


+ 68 - 0
coderedcms/models/snippet_models.py

@@ -211,6 +211,74 @@ class Footer(models.Model):
     def __str__(self):
         return self.name
 
+@register_snippet
+class ReusableContent(models.Model):
+    """
+    Snippet for resusable content in streamfields.
+    """
+    class Meta:
+        verbose_name = _('Reusable Content')
+        verbose_name_plural = _('Reusable Content')
+
+    name = models.CharField(
+        max_length=255,
+        verbose_name=_('Name'),
+    )
+    content = StreamField(
+        LAYOUT_STREAMBLOCKS,
+        verbose_name=_('content')
+    )
+
+    panels = [
+        FieldPanel('name'),
+        StreamFieldPanel('content')
+    ]
+
+    def __str__(self):
+        return self.name
+
+
+@register_snippet
+class ContentWall(models.Model):
+    """
+    Snippet that restricts access to a page with a modal.
+    """
+    class Meta:
+        verbose_name = _('Content Wall')
+
+    name = models.CharField(
+        max_length=255,
+        verbose_name=_('Name'),
+    )
+    content = StreamField(
+        LAYOUT_STREAMBLOCKS,
+        verbose_name=_('Content'),
+    )
+    is_dismissible = models.BooleanField(
+        default=True,
+        verbose_name=_('Dismissible'),
+    )
+    show_once = models.BooleanField(
+        default=True,
+        verbose_name=_('Show once'),
+        help_text=_('Do not show the content wall to the same user again after it has been closed.')
+    )
+
+    panels = [
+        MultiFieldPanel(
+            [
+                FieldPanel('name'),
+                FieldPanel('is_dismissible'),
+                FieldPanel('show_once'),
+            ],
+            heading=_('Content Wall')
+        ),
+        StreamFieldPanel('content'),
+    ]
+
+    def __str__(self):
+        return self.name
+
 
 @register_snippet
 class ContentWall(models.Model):

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 22 - 0
coderedcms/project_template/website/migrations/0003_auto_20180912_1636.py


+ 2 - 0
coderedcms/templates/coderedcms/blocks/reusable_content_block.html

@@ -0,0 +1,2 @@
+{% load wagtailcore_tags %}
+{% include_block self.content.content %}

+ 1 - 1
setup.py

@@ -9,7 +9,7 @@ os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
 
 setup(
     name='coderedcms',
-    version='0.6.0',
+    version='0.7.0',
     packages=find_packages(),
     include_package_data=True,
     license='BSD License',

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.