From da4d0e173db864b181bcdf51fdd7cb08d8f17fcb Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Tue, 29 Oct 2019 11:52:21 +0100 Subject: [PATCH 01/22] Added menu item modal link: Cascade Theme --- cmsplugin_cascade/cms_toolbars.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/cmsplugin_cascade/cms_toolbars.py b/cmsplugin_cascade/cms_toolbars.py index 23e6ce1cc..c241906aa 100644 --- a/cmsplugin_cascade/cms_toolbars.py +++ b/cmsplugin_cascade/cms_toolbars.py @@ -1,8 +1,10 @@ from django.utils.translation import ugettext_lazy as _ +from django.urls import reverse from cms.extensions.toolbar import ExtensionToolbar from cms.toolbar_pool import toolbar_pool from cms.toolbar.items import Break -from cms.cms_toolbars import PAGE_MENU_SECOND_BREAK +from cms.toolbar_base import CMSToolbar +from cms.cms_toolbars import PAGE_MENU_SECOND_BREAK, USER_SETTINGS_BREAK from cmsplugin_cascade.models import CascadePage @@ -19,3 +21,21 @@ def populate(self): position = current_page_menu.find_first(Break, identifier=PAGE_MENU_SECOND_BREAK) disabled = not self.toolbar.edit_mode_active current_page_menu.add_modal_item(_("Extra Page Fields"), position=position, url=url, disabled=disabled) + + +@toolbar_pool.register +class CascadeToolbar(CMSToolbar): + + def populate(self): + if getattr(settings, 'CASCADE_THEME', None): + admin_menu = self.toolbar.get_or_create_menu( + ADMIN_MENU_IDENTIFIER, _('Site')) + position_user_set= admin_menu.find_first(Break, identifier=USER_SETTINGS_BREAK) + position_theme = admin_menu.add_break('THEME', position_user_set) + position_theme = admin_menu.find_first(Break, identifier=USER_SETTINGS_BREAK) + + admin_menu.add_modal_item( + name='Theme', + url=reverse('cascade_theme'), + position=position_theme, + ) From b15bb13e49653df6435043971386c2c29cc9e342 Mon Sep 17 00:00:00 2001 From: Haricot Date: Tue, 29 Oct 2019 12:10:37 +0100 Subject: [PATCH 02/22] add missing import settings --- cmsplugin_cascade/cms_toolbars.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cmsplugin_cascade/cms_toolbars.py b/cmsplugin_cascade/cms_toolbars.py index c241906aa..d726cc53c 100644 --- a/cmsplugin_cascade/cms_toolbars.py +++ b/cmsplugin_cascade/cms_toolbars.py @@ -1,4 +1,5 @@ from django.utils.translation import ugettext_lazy as _ +from django.conf import settings from django.urls import reverse from cms.extensions.toolbar import ExtensionToolbar from cms.toolbar_pool import toolbar_pool From 5c3a068d45145d8396f7decb75e9f8f75eadae88 Mon Sep 17 00:00:00 2001 From: Haricot Date: Tue, 29 Oct 2019 12:12:21 +0100 Subject: [PATCH 03/22] add pyproject.toml for poetry --- examples/pyproject.toml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 examples/pyproject.toml diff --git a/examples/pyproject.toml b/examples/pyproject.toml new file mode 100644 index 000000000..5d6f69b0a --- /dev/null +++ b/examples/pyproject.toml @@ -0,0 +1,37 @@ +[tool.poetry] +name = "bs4demo" +version = "1.1.1" +description = "djangocms-cascade demo" +authors = ["Jacob Rief "] +license = "MIT" + +[tool.poetry.dependencies] +python = "^3.6" + +[tool.poetry.dev-dependencies] +django = "<2.2" +djangocms-cascade = "*" +django-compressor = "*" +django-filer = "*" +django-sass-processor = "*" +django-select2 = "*" +djangocms-bootstrap = "*" +django-admin-sortable2 = "*" +libsass = "*" +djangocms-history = "*" +djangocms-transfer = "*" + +[dev-packages] +tox = "*" +pytest = "*" +pytest-django = "*" +beautifulsoup4 = "*" +lxml = "*" +factory-boy = "*" +pytest-factoryboy = "*" +autopep8 = "*" + +[build-system] +requires = ["poetry>=0.12"] +build-backend = "poetry.masonry.api" + From 8cbcf82fdb6371196eb6043eb53425beb7fb9e74 Mon Sep 17 00:00:00 2001 From: Haricot Date: Tue, 29 Oct 2019 12:13:44 +0100 Subject: [PATCH 04/22] default:add a-color-pickier in package.json --- examples/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/package.json b/examples/package.json index ba87b90da..a1ba74698 100644 --- a/examples/package.json +++ b/examples/package.json @@ -18,7 +18,8 @@ "leaflet-easybutton": "^2.2.0", "picturefill": "^3.0.2", "popper.js": "^1.12.9", - "select2": "^4.0.3" + "select2": "^4.0.3", + "a-color-picker": "^1.2.1" }, "devDependencies": {}, "scripts": { @@ -35,3 +36,4 @@ }, "homepage": "https://github.com/jrief/djangocms-cascade#readme" } + From 656cd8aec4e37ab2ae122bfc839851c23ba1d6e8 Mon Sep 17 00:00:00 2001 From: Haricot Date: Tue, 29 Oct 2019 12:19:50 +0100 Subject: [PATCH 05/22] bs4demo/settings.py: active CASCADE_THEME --- examples/bs4demo/settings.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/bs4demo/settings.py b/examples/bs4demo/settings.py index 8e8e3f130..a45f36644 100644 --- a/examples/bs4demo/settings.py +++ b/examples/bs4demo/settings.py @@ -281,6 +281,8 @@ # to access files such as fonts via staticfiles finders NODE_MODULES_URL = STATIC_URL + 'node_modules/' +CASCADE_THEME = True + try: from .private_settings import * except ImportError: From d322d6b6aabc51d776c0fc6d0b1fee331030dc29 Mon Sep 17 00:00:00 2001 From: Haricot Date: Tue, 29 Oct 2019 12:59:16 +0100 Subject: [PATCH 06/22] update cmsplugin_cascade/cms_toolbars.py --- cmsplugin_cascade/cms_toolbars.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmsplugin_cascade/cms_toolbars.py b/cmsplugin_cascade/cms_toolbars.py index d726cc53c..f71fe339d 100644 --- a/cmsplugin_cascade/cms_toolbars.py +++ b/cmsplugin_cascade/cms_toolbars.py @@ -5,7 +5,7 @@ from cms.toolbar_pool import toolbar_pool from cms.toolbar.items import Break from cms.toolbar_base import CMSToolbar -from cms.cms_toolbars import PAGE_MENU_SECOND_BREAK, USER_SETTINGS_BREAK +from cms.cms_toolbars import PAGE_MENU_SECOND_BREAK, ADMIN_MENU_IDENTIFIER, USER_SETTINGS_BREAK from cmsplugin_cascade.models import CascadePage @@ -31,12 +31,12 @@ def populate(self): if getattr(settings, 'CASCADE_THEME', None): admin_menu = self.toolbar.get_or_create_menu( ADMIN_MENU_IDENTIFIER, _('Site')) - position_user_set= admin_menu.find_first(Break, identifier=USER_SETTINGS_BREAK) + position_user_set = admin_menu.find_first(Break, identifier=USER_SETTINGS_BREAK) position_theme = admin_menu.add_break('THEME', position_user_set) position_theme = admin_menu.find_first(Break, identifier=USER_SETTINGS_BREAK) admin_menu.add_modal_item( name='Theme', - url=reverse('cascade_theme'), + url="reverse('cascade_theme')", position=position_theme, ) From 397ea80f8dd6ff4e038f8583ccf94bed83374522 Mon Sep 17 00:00:00 2001 From: Haricot Date: Thu, 31 Oct 2019 12:05:41 +0100 Subject: [PATCH 07/22] added modal link in cms_toolbars.py --- cmsplugin_cascade/cms_toolbars.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmsplugin_cascade/cms_toolbars.py b/cmsplugin_cascade/cms_toolbars.py index f71fe339d..c13d3fd3b 100644 --- a/cmsplugin_cascade/cms_toolbars.py +++ b/cmsplugin_cascade/cms_toolbars.py @@ -34,9 +34,9 @@ def populate(self): position_user_set = admin_menu.find_first(Break, identifier=USER_SETTINGS_BREAK) position_theme = admin_menu.add_break('THEME', position_user_set) position_theme = admin_menu.find_first(Break, identifier=USER_SETTINGS_BREAK) - - admin_menu.add_modal_item( + + admin_menu.add_modal_item( name='Theme', - url="reverse('cascade_theme')", + url="/theme/", position=position_theme, ) From 08de694a0fdc0d22e8615ef465448459f1fba86c Mon Sep 17 00:00:00 2001 From: Haricot Date: Thu, 31 Oct 2019 12:07:27 +0100 Subject: [PATCH 08/22] added dynamic_preference/sass custom_function --- examples/bs4demo/settings.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/examples/bs4demo/settings.py b/examples/bs4demo/settings.py index a45f36644..0303479db 100644 --- a/examples/bs4demo/settings.py +++ b/examples/bs4demo/settings.py @@ -7,6 +7,7 @@ from django.urls import reverse_lazy from cmsplugin_cascade.extra_fields.config import PluginExtraFieldsConfig +from cmsplugin_cascade import __path__ as cmsplugin_cascade_path from django.utils.text import format_lazy DEBUG = True @@ -36,6 +37,7 @@ INSTALLED_APPS = [ 'django.contrib.auth', + 'dynamic_preferences', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', @@ -132,6 +134,8 @@ 'sekizai.context_processors.sekizai', 'cms.context_processors.cms_settings', 'bs4demo.context_processors.cascade', + 'django.template.context_processors.request', + 'dynamic_preferences.processors.global_preferences', ), }, }] @@ -273,6 +277,7 @@ } SASS_PROCESSOR_INCLUDE_DIRS = [ + os.path.join(cmsplugin_cascade_path[0], 'static'), os.path.join(PROJECT_ROOT, 'node_modules'), ] @@ -283,6 +288,17 @@ CASCADE_THEME = True +SASS_PROCESSOR_CUSTOM_FUNCTIONS = { + 'get-color-primary-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_primary', + 'get-color-secondary-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_secondary', + 'get-color-success-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_success', + 'get-color-warning-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_warning', + 'get-color-danger-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_danger', + 'get-color-info-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_info', + 'get-color-light-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_light', + 'get-color-dark-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_dark', +} + try: from .private_settings import * except ImportError: From 5495caeebb9b052fcfdd2920743c0d771ccc543d Mon Sep 17 00:00:00 2001 From: Haricot Date: Thu, 31 Oct 2019 12:10:08 +0100 Subject: [PATCH 09/22] added dynamic_preference/sass custom_function --- cmsplugin_cascade/cascade_theme/urls.py | 10 +++ cmsplugin_cascade/cascade_theme/utils.py | 28 ++++++ cmsplugin_cascade/cascade_theme/views.py | 24 +++++ .../dynamic_preferences_registry.py | 88 +++++++++++++++++++ .../templates/cascade/admin/theme/base.html | 23 +++++ .../templates/cascade/admin/theme/form.html | 37 ++++++++ .../cascade/admin/theme/sections.html | 8 ++ examples/bs4demo/static/bs4demo/css/main.scss | 14 +++ examples/bs4demo/urls.py | 4 +- examples/pyproject.toml | 1 + 10 files changed, 236 insertions(+), 1 deletion(-) create mode 100644 cmsplugin_cascade/cascade_theme/urls.py create mode 100644 cmsplugin_cascade/cascade_theme/utils.py create mode 100644 cmsplugin_cascade/cascade_theme/views.py create mode 100644 cmsplugin_cascade/dynamic_preferences_registry.py create mode 100644 cmsplugin_cascade/templates/cascade/admin/theme/base.html create mode 100644 cmsplugin_cascade/templates/cascade/admin/theme/form.html create mode 100644 cmsplugin_cascade/templates/cascade/admin/theme/sections.html diff --git a/cmsplugin_cascade/cascade_theme/urls.py b/cmsplugin_cascade/cascade_theme/urls.py new file mode 100644 index 000000000..3ebb2c64a --- /dev/null +++ b/cmsplugin_cascade/cascade_theme/urls.py @@ -0,0 +1,10 @@ +from django.conf.urls import include, url +from django.conf import settings +from cmsplugin_cascade.cascade_theme.views import myview, CascadePreferenceFormView + +if getattr(settings, 'CASCADE_THEME', None): + extra_cascade_theme_patterns = [ + url(r'^theme/',CascadePreferenceFormView.as_view()), + ] +else: + extra_cascade_theme_patterns = [] diff --git a/cmsplugin_cascade/cascade_theme/utils.py b/cmsplugin_cascade/cascade_theme/utils.py new file mode 100644 index 000000000..3a866c07b --- /dev/null +++ b/cmsplugin_cascade/cascade_theme/utils.py @@ -0,0 +1,28 @@ +from dynamic_preferences.registries import global_preferences_registry +# We instantiate a manager for our global preferences +global_preferences = global_preferences_registry.manager() + +def get_color_primary(): + return global_preferences['primary__color'] + +def get_color_secondary(): + return global_preferences['secondary__color'] + +def get_color_success(): + return global_preferences['success__color'] + +def get_color_warning(): + return global_preferences['warning__color'] + +def get_color_danger(): + return global_preferences['danger__color'] + +def get_color_info(): + return global_preferences['info__color'] + +def get_color_light(): + return global_preferences['light__color'] + +def get_color_dark(): + return global_preferences['dark__color'] + diff --git a/cmsplugin_cascade/cascade_theme/views.py b/cmsplugin_cascade/cascade_theme/views.py new file mode 100644 index 000000000..1c9c96195 --- /dev/null +++ b/cmsplugin_cascade/cascade_theme/views.py @@ -0,0 +1,24 @@ +from dynamic_preferences.registries import global_preferences_registry +from django.shortcuts import render +from dynamic_preferences.views import PreferenceFormView + +# We instantiate a manager for our global preferences +global_preferences = global_preferences_registry.manager() + +# Now, we can use it to retrieve our preferences +# the lookup for a preference has the following form:
__ +from dynamic_preferences.forms import GlobalPreferenceForm + +class CascadePreferenceFormView( PreferenceFormView): + template_name = "cascade/admin/theme/form.html" + registry = None + form_class = None + registry = global_preferences_registry + form_class = GlobalPreferenceForm + +def myview(request): + presentation = global_preferences['general__presentation'] + + return render(request, 'example.html', { + 'presentation': presentation, + }) diff --git a/cmsplugin_cascade/dynamic_preferences_registry.py b/cmsplugin_cascade/dynamic_preferences_registry.py new file mode 100644 index 000000000..b1add904f --- /dev/null +++ b/cmsplugin_cascade/dynamic_preferences_registry.py @@ -0,0 +1,88 @@ +# cmsplugin_cascade/dynamic_preferences_registry.py + +from dynamic_preferences.types import BooleanPreference, StringPreference, IntPreference,LongStringPreference, ChoicePreference +from dynamic_preferences.preferences import Section +from dynamic_preferences.registries import global_preferences_registry +from dynamic_preferences.users.registries import user_preferences_registry +from django import forms +# we create some section objects to link related preferences together + + +#general = Section('general') +#discussion = Section('discussion') + + +@global_preferences_registry.register +class FavouriteColour(StringPreference): + """ + What's your favourite colour ? + """ + section = "primary" + name = "color" + default = "#007bff" + +@global_preferences_registry.register +class FavouriteColour(StringPreference): + """ + What's your favourite colour ? + """ + section = "secondary" + name = "color" + default = "#6c757d" + +@global_preferences_registry.register +class FavouriteColour(StringPreference): + """ + What's your favourite colour ? + """ + section = "success" + name = "color" + default = "#28a745" + + +@global_preferences_registry.register +class FavouriteColour(StringPreference): + """ + What's your favourite colour ? + """ + section = "warning" + name = "color" + default = "#ffc107" + +@global_preferences_registry.register +class FavouriteColour(StringPreference): + """ + What's your favourite colour ? + """ + section = "danger" + name = "color" + default = "#dc3545" + + +@global_preferences_registry.register +class FavouriteColour(StringPreference): + """ + What's your favourite colour ? + """ + section = "info" + name = "color" + default = "#17a2b8" + +@global_preferences_registry.register +class FavouriteColour(StringPreference): + """ + What's your favourite colour ? + """ + section = "light" + name = "color" + default = "#f8f9fa" + +@global_preferences_registry.register +class FavouriteColour(StringPreference): + """ + What's your favourite colour ? + """ + section = "dark" + name = "color" + default = "#343a40" + diff --git a/cmsplugin_cascade/templates/cascade/admin/theme/base.html b/cmsplugin_cascade/templates/cascade/admin/theme/base.html new file mode 100644 index 000000000..f4989202b --- /dev/null +++ b/cmsplugin_cascade/templates/cascade/admin/theme/base.html @@ -0,0 +1,23 @@ +{% load static cms_tags bootstrap_tags sekizai_tags sass_tags %} + + + + {% block title %}Page Title{% endblock %} + + + + {% block head %}{% endblock %} + {% render_block "css" %} + + + + +
+ {% block content %}{% endblock %} +
+ + + + + diff --git a/cmsplugin_cascade/templates/cascade/admin/theme/form.html b/cmsplugin_cascade/templates/cascade/admin/theme/form.html new file mode 100644 index 000000000..75aa80fd6 --- /dev/null +++ b/cmsplugin_cascade/templates/cascade/admin/theme/form.html @@ -0,0 +1,37 @@ +{% extends "cascade/admin/theme/base.html" %} +{% load i18n static cms_tags bootstrap_tags sekizai_tags sass_tags %} +{% block head %} +{% addtoblock "css" %}{% endaddtoblock %} +{% endblock head %} + +{% block content %} + {# we continue to pass the sections key in case someone subclassed the template and use these #} + {# include "cascade/admin/theme/sections.html" with registry=registry sections=registry.sections #} +
+ {% csrf_token %} +
+ {% for field in form %} + {% if '__color' in field.name %} +
+
+ {{ field.label_tag }} +
+ {{ field }} +
+
+
+ {% else %} +
+ {{ field.label_tag }} : {{ field }} +
+ {% endif %} + {{ field.errors }} + + {% endfor %} +
+
+ +
+
+{% endblock %} + diff --git a/cmsplugin_cascade/templates/cascade/admin/theme/sections.html b/cmsplugin_cascade/templates/cascade/admin/theme/sections.html new file mode 100644 index 000000000..a084b6875 --- /dev/null +++ b/cmsplugin_cascade/templates/cascade/admin/theme/sections.html @@ -0,0 +1,8 @@ + + diff --git a/examples/bs4demo/static/bs4demo/css/main.scss b/examples/bs4demo/static/bs4demo/css/main.scss index 151f18dab..e6ee60811 100644 --- a/examples/bs4demo/static/bs4demo/css/main.scss +++ b/examples/bs4demo/static/bs4demo/css/main.scss @@ -1,4 +1,18 @@ @import "variables"; +$primary: get-color-primary-docfunclist(); +$secondary: get-color-secondary-docfunclist(); + +$theme-colors: ( + primary: get-color-primary-docfunclist(), + secondary: get-color-secondary-docfunclist(), + success: get-color-success-docfunclist(), + warning: get-color-warning-docfunclist(), + danger: get-color-danger-docfunclist(), + info: get-color-info-docfunclist(), + light: get-color-light-docfunclist(), + dark: get-color-dark-docfunclist(), +); + @import "bootstrap/scss/bootstrap"; @import "footer"; diff --git a/examples/bs4demo/urls.py b/examples/bs4demo/urls.py index 416b73531..1b328a9ff 100644 --- a/examples/bs4demo/urls.py +++ b/examples/bs4demo/urls.py @@ -4,17 +4,19 @@ from django.conf.urls.static import static from django.contrib import admin from django.views.generic import TemplateView +from cmsplugin_cascade.cascade_theme.urls import extra_cascade_theme_patterns class CascadeDemoView(TemplateView): template_name = 'bs4demo/strides.html' - admin.autodiscover() urlpatterns = [ path('admin/select2/', include('django_select2.urls')), path('admin/', admin.site.urls), path('cascade/', CascadeDemoView.as_view()), + path('', include(extra_cascade_theme_patterns)), path('', include('cms.urls')), ] urlpatterns.extend(static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)) + diff --git a/examples/pyproject.toml b/examples/pyproject.toml index 5d6f69b0a..fe79bccd2 100644 --- a/examples/pyproject.toml +++ b/examples/pyproject.toml @@ -20,6 +20,7 @@ django-admin-sortable2 = "*" libsass = "*" djangocms-history = "*" djangocms-transfer = "*" +django-dynamic-preferences = "*" [dev-packages] tox = "*" From a1aa15cf16b3e912bf40638dbd822235684b78c3 Mon Sep 17 00:00:00 2001 From: Haricot Date: Thu, 31 Oct 2019 12:36:03 +0100 Subject: [PATCH 10/22] rename cascade_theme to theme/clean code --- .gitignore | 1 + .../{cascade_theme => theme}/urls.py | 0 .../{cascade_theme => theme}/utils.py | 0 .../{cascade_theme => theme}/views.py | 0 examples/bs4demo/settings.py | 16 ++++++++-------- examples/bs4demo/urls.py | 4 ++-- examples/package.json | 1 - 7 files changed, 11 insertions(+), 11 deletions(-) rename cmsplugin_cascade/{cascade_theme => theme}/urls.py (100%) rename cmsplugin_cascade/{cascade_theme => theme}/utils.py (100%) rename cmsplugin_cascade/{cascade_theme => theme}/views.py (100%) diff --git a/.gitignore b/.gitignore index 682b185ac..10126f767 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ workdir/ filer_public/ filer_public_thumbnails/ examples/bs3demo/private_settings.py +examples/bs4demo/static/bs4demo/css/main__replace_sass_cfunc_list.scss \ No newline at end of file diff --git a/cmsplugin_cascade/cascade_theme/urls.py b/cmsplugin_cascade/theme/urls.py similarity index 100% rename from cmsplugin_cascade/cascade_theme/urls.py rename to cmsplugin_cascade/theme/urls.py diff --git a/cmsplugin_cascade/cascade_theme/utils.py b/cmsplugin_cascade/theme/utils.py similarity index 100% rename from cmsplugin_cascade/cascade_theme/utils.py rename to cmsplugin_cascade/theme/utils.py diff --git a/cmsplugin_cascade/cascade_theme/views.py b/cmsplugin_cascade/theme/views.py similarity index 100% rename from cmsplugin_cascade/cascade_theme/views.py rename to cmsplugin_cascade/theme/views.py diff --git a/examples/bs4demo/settings.py b/examples/bs4demo/settings.py index 0303479db..87b91924c 100644 --- a/examples/bs4demo/settings.py +++ b/examples/bs4demo/settings.py @@ -289,14 +289,14 @@ CASCADE_THEME = True SASS_PROCESSOR_CUSTOM_FUNCTIONS = { - 'get-color-primary-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_primary', - 'get-color-secondary-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_secondary', - 'get-color-success-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_success', - 'get-color-warning-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_warning', - 'get-color-danger-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_danger', - 'get-color-info-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_info', - 'get-color-light-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_light', - 'get-color-dark-docfunclist': 'cmsplugin_cascade.cascade_theme.utils.get_color_dark', + 'get-color-primary-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_primary', + 'get-color-secondary-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_secondary', + 'get-color-success-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_success', + 'get-color-warning-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_warning', + 'get-color-danger-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_danger', + 'get-color-info-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_info', + 'get-color-light-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_light', + 'get-color-dark-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_dark', } try: diff --git a/examples/bs4demo/urls.py b/examples/bs4demo/urls.py index 1b328a9ff..7c2b8e02e 100644 --- a/examples/bs4demo/urls.py +++ b/examples/bs4demo/urls.py @@ -4,11 +4,12 @@ from django.conf.urls.static import static from django.contrib import admin from django.views.generic import TemplateView -from cmsplugin_cascade.cascade_theme.urls import extra_cascade_theme_patterns +from cmsplugin_cascade.theme.urls import extra_cascade_theme_patterns class CascadeDemoView(TemplateView): template_name = 'bs4demo/strides.html' + admin.autodiscover() urlpatterns = [ @@ -19,4 +20,3 @@ class CascadeDemoView(TemplateView): path('', include('cms.urls')), ] urlpatterns.extend(static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)) - diff --git a/examples/package.json b/examples/package.json index a1ba74698..252dd4cb5 100644 --- a/examples/package.json +++ b/examples/package.json @@ -36,4 +36,3 @@ }, "homepage": "https://github.com/jrief/djangocms-cascade#readme" } - From 860ff4bedf4643651c67bf504b654efc8cf3e861 Mon Sep 17 00:00:00 2001 From: Haricot Date: Thu, 31 Oct 2019 12:37:26 +0100 Subject: [PATCH 11/22] rename cascade_theme to theme --- cmsplugin_cascade/theme/urls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmsplugin_cascade/theme/urls.py b/cmsplugin_cascade/theme/urls.py index 3ebb2c64a..e692f994b 100644 --- a/cmsplugin_cascade/theme/urls.py +++ b/cmsplugin_cascade/theme/urls.py @@ -1,6 +1,6 @@ from django.conf.urls import include, url from django.conf import settings -from cmsplugin_cascade.cascade_theme.views import myview, CascadePreferenceFormView +from cmsplugin_cascade.theme.views import myview, CascadePreferenceFormView if getattr(settings, 'CASCADE_THEME', None): extra_cascade_theme_patterns = [ From cdf3259db481903d4de92c5e8028f98d88e6d6ef Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 1 Nov 2019 14:20:33 +0100 Subject: [PATCH 12/22] rename docfunclist to presass --- examples/bs4demo/settings.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/examples/bs4demo/settings.py b/examples/bs4demo/settings.py index 87b91924c..db7994ac0 100644 --- a/examples/bs4demo/settings.py +++ b/examples/bs4demo/settings.py @@ -289,18 +289,17 @@ CASCADE_THEME = True SASS_PROCESSOR_CUSTOM_FUNCTIONS = { - 'get-color-primary-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_primary', - 'get-color-secondary-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_secondary', - 'get-color-success-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_success', - 'get-color-warning-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_warning', - 'get-color-danger-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_danger', - 'get-color-info-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_info', - 'get-color-light-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_light', - 'get-color-dark-docfunclist': 'cmsplugin_cascade.theme.utils.get_color_dark', + 'get-color-primary-presass': 'cmsplugin_cascade.theme.utils.get_color_primary', + 'get-color-secondary-presass': 'cmsplugin_cascade.theme.utils.get_color_secondary', + 'get-color-success-presass': 'cmsplugin_cascade.theme.utils.get_color_success', + 'get-color-warning-presass': 'cmsplugin_cascade.theme.utils.get_color_warning', + 'get-color-danger-presass': 'cmsplugin_cascade.theme.utils.get_color_danger', + 'get-color-info-presass': 'cmsplugin_cascade.theme.utils.get_color_info', + 'get-color-light-presass': 'cmsplugin_cascade.theme.utils.get_color_light', + 'get-color-dark-presass': 'cmsplugin_cascade.theme.utils.get_color_dark', } try: from .private_settings import * except ImportError: pass - From c056454550ce587e0e2a927ee105cebce2c855c1 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 1 Nov 2019 14:21:39 +0100 Subject: [PATCH 13/22] rename docfunclist to presass --- examples/bs4demo/static/bs4demo/css/main.scss | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/examples/bs4demo/static/bs4demo/css/main.scss b/examples/bs4demo/static/bs4demo/css/main.scss index e6ee60811..d8c441a0f 100644 --- a/examples/bs4demo/static/bs4demo/css/main.scss +++ b/examples/bs4demo/static/bs4demo/css/main.scss @@ -1,16 +1,14 @@ @import "variables"; -$primary: get-color-primary-docfunclist(); -$secondary: get-color-secondary-docfunclist(); $theme-colors: ( - primary: get-color-primary-docfunclist(), - secondary: get-color-secondary-docfunclist(), - success: get-color-success-docfunclist(), - warning: get-color-warning-docfunclist(), - danger: get-color-danger-docfunclist(), - info: get-color-info-docfunclist(), - light: get-color-light-docfunclist(), - dark: get-color-dark-docfunclist(), + primary: get-color-primary-presass(), + secondary: get-color-secondary-presass(), + success: get-color-success-presass(), + warning: get-color-warning-presass(), + danger: get-color-danger-presass(), + info: get-color-info-presass(), + light: get-color-light-presass(), + dark: get-color-dark-presass(), ); @import "bootstrap/scss/bootstrap"; From d7a3f0dd68fe6c27e45b3a8bd5b3d2e06b67a6ec Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 1 Nov 2019 14:22:09 +0100 Subject: [PATCH 14/22] rename presass --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 10126f767..803579e29 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,4 @@ workdir/ filer_public/ filer_public_thumbnails/ examples/bs3demo/private_settings.py -examples/bs4demo/static/bs4demo/css/main__replace_sass_cfunc_list.scss \ No newline at end of file +examples/bs4demo/static/bs4demo/css/main__presass.scss From 1d40dff234715ecb31b36f2d12ec61c5fe1e1238 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 1 Nov 2019 19:38:41 +0100 Subject: [PATCH 15/22] Update utils.py --- cmsplugin_cascade/theme/utils.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cmsplugin_cascade/theme/utils.py b/cmsplugin_cascade/theme/utils.py index 3a866c07b..2295471dd 100644 --- a/cmsplugin_cascade/theme/utils.py +++ b/cmsplugin_cascade/theme/utils.py @@ -1,3 +1,4 @@ +from django.conf import settings from dynamic_preferences.registries import global_preferences_registry # We instantiate a manager for our global preferences global_preferences = global_preferences_registry.manager() @@ -26,3 +27,10 @@ def get_color_light(): def get_color_dark(): return global_preferences['dark__color'] +def get_path_file_variables_scss(): + if getattr(settings, 'CASCADE_SCSS_VARIABLES', None): + path_variables_scss = '"../{}"'.format( settings.CASCADE_SCSS_VARIABLES) + else: + project_name = settings.ROOT_URLCONF.split('.')[0] + path_variables_scss = '"../{0}/static/{0}/css/variables.scss"'.format(project_name) + return path_variables_scss From 7140a3556c748e2833c89001904f7d4bd3ff8292 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 1 Nov 2019 19:40:56 +0100 Subject: [PATCH 16/22] add custom_function get-path-variables-scss-presass --- examples/bs4demo/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/bs4demo/settings.py b/examples/bs4demo/settings.py index db7994ac0..4f8ed00a1 100644 --- a/examples/bs4demo/settings.py +++ b/examples/bs4demo/settings.py @@ -297,6 +297,7 @@ 'get-color-info-presass': 'cmsplugin_cascade.theme.utils.get_color_info', 'get-color-light-presass': 'cmsplugin_cascade.theme.utils.get_color_light', 'get-color-dark-presass': 'cmsplugin_cascade.theme.utils.get_color_dark', + 'get-path-variables-scss-presass': "cmsplugin_cascade.theme.utils.get_path_variables_scss", } try: From 0c855817fd0c4ef081f41ba3dc18d39b3062d648 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 1 Nov 2019 19:43:30 +0100 Subject: [PATCH 17/22] Create bootstrap4-buttons-theme.css --- .../css/admin/bootstrap4-buttons-theme.css | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 cmsplugin_cascade/static/cascade/css/admin/bootstrap4-buttons-theme.css diff --git a/cmsplugin_cascade/static/cascade/css/admin/bootstrap4-buttons-theme.css b/cmsplugin_cascade/static/cascade/css/admin/bootstrap4-buttons-theme.css new file mode 100644 index 000000000..fc5a377c8 --- /dev/null +++ b/cmsplugin_cascade/static/cascade/css/admin/bootstrap4-buttons-theme.css @@ -0,0 +1,21 @@ +@import get-path-file-variables-scss-presass(); + +$theme-colors: ( + primary: get-color-primary-presass(), + secondary: get-color-secondary-presass(), + success: get-color-success-presass(), + warning: get-color-warning-presass(), + danger: get-color-danger-presass(), + info: get-color-info-presass(), + light: get-color-light-presass(), + dark: get-color-dark-presass(), +); + +@import "bootstrap/scss/vendor/rfs"; +@import "bootstrap/scss/mixins/border-radius"; +@import "bootstrap/scss/mixins/transition"; +@import "bootstrap/scss/mixins/hover"; +@import "bootstrap/scss/mixins/box-shadow"; +@import "bootstrap/scss/mixins/gradients"; +@import "bootstrap/scss/mixins/buttons"; +@import "bootstrap/scss/buttons"; From f768ee42c70e9f8fde3e391c177e1cb13a69b818 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 1 Nov 2019 20:27:34 +0100 Subject: [PATCH 18/22] sass_processor logic for theme button --- cmsplugin_cascade/bootstrap4/buttons.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cmsplugin_cascade/bootstrap4/buttons.py b/cmsplugin_cascade/bootstrap4/buttons.py index 28dd0e5d1..2349e4759 100644 --- a/cmsplugin_cascade/bootstrap4/buttons.py +++ b/cmsplugin_cascade/bootstrap4/buttons.py @@ -1,4 +1,5 @@ from django import VERSION as DJANGO_VERSION +from django.conf import settings from django.forms import widgets from django.forms.fields import BooleanField, CharField, ChoiceField, MultipleChoiceField from django.utils.html import format_html @@ -119,7 +120,13 @@ class BootstrapButtonMixin(IconPluginMixin): ring_plugin = 'ButtonMixin' class Media: - css = {'all': ['cascade/css/admin/bootstrap4-buttons.css', 'cascade/css/admin/iconplugin.css']} + if getattr(settings, 'CASCADE_THEME', None): + from sass_processor.processor import sass_processor + css = { + 'all': [sass_processor('cascade/css/admin/bootstrap4-buttons.scss'), 'cascade/css/admin/iconplugin.css'], + } + else: + css = {'all': ['cascade/css/admin/bootstrap4-buttons.css', 'cascade/css/admin/iconplugin.css']} js = ['admin/js/jquery.init.js', 'cascade/js/admin/buttonmixin.js'] def render(self, context, instance, placeholder): From 920fc3a9478c065b403f3290c1134ed89faddeff Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 1 Nov 2019 20:28:03 +0100 Subject: [PATCH 19/22] Update buttons.py --- cmsplugin_cascade/bootstrap4/buttons.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmsplugin_cascade/bootstrap4/buttons.py b/cmsplugin_cascade/bootstrap4/buttons.py index 2349e4759..2a7cd6659 100644 --- a/cmsplugin_cascade/bootstrap4/buttons.py +++ b/cmsplugin_cascade/bootstrap4/buttons.py @@ -1,5 +1,4 @@ from django import VERSION as DJANGO_VERSION -from django.conf import settings from django.forms import widgets from django.forms.fields import BooleanField, CharField, ChoiceField, MultipleChoiceField from django.utils.html import format_html @@ -121,6 +120,7 @@ class BootstrapButtonMixin(IconPluginMixin): class Media: if getattr(settings, 'CASCADE_THEME', None): + from django.conf import settings from sass_processor.processor import sass_processor css = { 'all': [sass_processor('cascade/css/admin/bootstrap4-buttons.scss'), 'cascade/css/admin/iconplugin.css'], From c815484ffd3a34eefb1ded83a59bd5104aa2e1c8 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 1 Nov 2019 21:28:55 +0100 Subject: [PATCH 20/22] Update buttons.py --- cmsplugin_cascade/bootstrap4/buttons.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmsplugin_cascade/bootstrap4/buttons.py b/cmsplugin_cascade/bootstrap4/buttons.py index 2a7cd6659..6b9bdc428 100644 --- a/cmsplugin_cascade/bootstrap4/buttons.py +++ b/cmsplugin_cascade/bootstrap4/buttons.py @@ -1,5 +1,6 @@ from django import VERSION as DJANGO_VERSION from django.forms import widgets +from django.conf import settings from django.forms.fields import BooleanField, CharField, ChoiceField, MultipleChoiceField from django.utils.html import format_html from django.utils.translation import ugettext_lazy as _ @@ -120,7 +121,6 @@ class BootstrapButtonMixin(IconPluginMixin): class Media: if getattr(settings, 'CASCADE_THEME', None): - from django.conf import settings from sass_processor.processor import sass_processor css = { 'all': [sass_processor('cascade/css/admin/bootstrap4-buttons.scss'), 'cascade/css/admin/iconplugin.css'], From 0c75c4fe8c408acf2281dd14fa67f84fedc0d0f1 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Sat, 2 Nov 2019 08:39:06 +0100 Subject: [PATCH 21/22] add color picker for cascade theme --- .../templates/cascade/admin/theme/base.html | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/cmsplugin_cascade/templates/cascade/admin/theme/base.html b/cmsplugin_cascade/templates/cascade/admin/theme/base.html index f4989202b..a9dd50d40 100644 --- a/cmsplugin_cascade/templates/cascade/admin/theme/base.html +++ b/cmsplugin_cascade/templates/cascade/admin/theme/base.html @@ -19,5 +19,34 @@ + + From cb20efec488dca7918a544f9e0e78053f2db1e8f Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Sat, 2 Nov 2019 08:39:44 +0100 Subject: [PATCH 22/22] add color picker for cascade theme --- .../templates/cascade/admin/theme/form.html | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/cmsplugin_cascade/templates/cascade/admin/theme/form.html b/cmsplugin_cascade/templates/cascade/admin/theme/form.html index 75aa80fd6..00470779f 100644 --- a/cmsplugin_cascade/templates/cascade/admin/theme/form.html +++ b/cmsplugin_cascade/templates/cascade/admin/theme/form.html @@ -3,7 +3,6 @@ {% block head %} {% addtoblock "css" %}{% endaddtoblock %} {% endblock head %} - {% block content %} {# we continue to pass the sections key in case someone subclassed the template and use these #} {# include "cascade/admin/theme/sections.html" with registry=registry sections=registry.sections #} @@ -13,25 +12,23 @@ {% for field in form %} {% if '__color' in field.name %}
-
- {{ field.label_tag }} -
- {{ field }} -
-
+
+ {{ field.label_tag }} +
+ {{ field }}
+
+
{% else %} -
- {{ field.label_tag }} : {{ field }} -
+
+ {{ field.label_tag }} : {{ field }} +
{% endif %} - {{ field.errors }} - + {{ field.errors }} {% endfor %} -
- -
+
+ +
{% endblock %} -