richie 2.32.0__py2.py3-none-any.whl → 2.32.1.dev4__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of richie might be problematic. Click here for more details.

frontend/package.json CHANGED
@@ -132,7 +132,7 @@
132
132
  "tsconfig-paths-webpack-plugin": "4.1.0",
133
133
  "typescript": "5.6.3",
134
134
  "uuid": "11.0.2",
135
- "webpack": "5.95.0",
135
+ "webpack": "5.96.0",
136
136
  "webpack-cli": "5.1.4",
137
137
  "whatwg-fetch": "3.6.20",
138
138
  "xhr-mock": "2.5.1",
@@ -151,6 +151,12 @@ $r-theme: (
151
151
  primary-color: r-color('denim'),
152
152
  secondary-color: r-color('white'),
153
153
  ),
154
+ slider-plugin: (
155
+ arrows-color: r-color('white'),
156
+ arrows-hover-color: r-color('firebrick6'),
157
+ index-color: r-color('charcoal'),
158
+ index-hover-color: r-color('black'),
159
+ ),
154
160
  blogpost-glimpse: (
155
161
  card-background: r-color('white'),
156
162
  title-color: r-color('black'),
@@ -60,6 +60,7 @@
60
60
  @import './templates/courses/plugins/category_plugin';
61
61
  @import './templates/courses/plugins/licence_plugin';
62
62
  @import './templates/richie/simpletext/simpletext';
63
+ @import './templates/richie/slider/slider';
63
64
  @import './templates/richie/section/section';
64
65
  @import './templates/richie/large_banner/large_banner';
65
66
  @import './templates/richie/large_banner/compacted_banner';
@@ -0,0 +1,142 @@
1
+ $r-slider-title-fontsize: $h1-font-size !default;
2
+ $r-slider-title-fontweight: $font-weight-bold !default;
3
+ $r-slider-title-fontfamily: $headings-font-family !default;
4
+ $r-slider-content-fontsize: $h4-font-size !default;
5
+ $r-slider-content-line-height: 1.1 !default;
6
+
7
+ .slider {
8
+ position: relative;
9
+ width: 100%;
10
+ // Reserved space for slide indexes
11
+ padding-bottom: 1.75rem;
12
+
13
+ &__items {
14
+ display: flex;
15
+ overflow-x: hidden;
16
+ }
17
+
18
+ &__tools {
19
+ @include make-container-max-widths();
20
+ margin: 0 auto;
21
+ padding: 0;
22
+ display: flex;
23
+ justify-content: center;
24
+ align-content: center;
25
+ }
26
+
27
+ &__next,
28
+ &__previous {
29
+ position: absolute;
30
+ top: 25%;
31
+ left: 0;
32
+ right: 0;
33
+ background: none;
34
+ border: 0;
35
+
36
+ svg {
37
+ width: 5rem;
38
+ height: 5rem;
39
+ color: r-theme-val(slider-plugin, arrows-color);
40
+ }
41
+
42
+ &:hover {
43
+ svg {
44
+ color: r-theme-val(slider-plugin, arrows-hover-color);
45
+ }
46
+ }
47
+ }
48
+
49
+ &__next {
50
+ left: auto;
51
+ right: 0;
52
+ }
53
+
54
+ &__previous {
55
+ left: 0;
56
+ right: auto;
57
+ }
58
+
59
+ &__indexes {
60
+ @include make-container-max-widths();
61
+ margin: 0 auto;
62
+ width: 100%;
63
+ padding: 0.5rem;
64
+ position: absolute;
65
+ bottom: 0;
66
+ display: flex;
67
+ justify-content: flex-end;
68
+ align-items: center;
69
+ }
70
+
71
+ &__index {
72
+ @include sv-flex(1, 0, 1.9rem);
73
+ padding: 0;
74
+ height: 1rem;
75
+ background: transparent;
76
+ border: 0;
77
+
78
+ &::before {
79
+ content: '';
80
+ display: block;
81
+ height: 0.2rem;
82
+ background: r-theme-val(slider-plugin, index-color);
83
+ border: 0;
84
+ }
85
+
86
+ &--active {
87
+ pointer-events: none;
88
+
89
+ &::before {
90
+ height: 0.5rem;
91
+ }
92
+ }
93
+
94
+ &:hover {
95
+ &::before {
96
+ background: r-theme-val(slider-plugin, index-hover-color);
97
+ }
98
+ }
99
+ }
100
+
101
+ &__index + &__index {
102
+ margin-left: 0.3rem;
103
+ }
104
+ }
105
+
106
+ .slider-item {
107
+ @include sv-flex(1, 0, 100%);
108
+ display: block;
109
+ color: inherit;
110
+ text-decoration: none;
111
+
112
+ // Disable any hover event on content since it can be in a link
113
+ &:hover,
114
+ *:hover {
115
+ color: inherit !important;
116
+ text-decoration: none !important;
117
+ }
118
+
119
+ &__image {
120
+ display: block;
121
+ margin: 0 0 1rem 0;
122
+ width: 100%;
123
+ }
124
+
125
+ &__container {
126
+ @include make-container-max-widths();
127
+ position: relative;
128
+ margin: 0 auto;
129
+ }
130
+
131
+ &__title {
132
+ @include font-size($r-slider-title-fontsize);
133
+ font-family: $r-slider-title-fontfamily;
134
+ font-weight: $r-slider-title-fontweight;
135
+ margin: 0 0 0.5rem 0;
136
+ }
137
+
138
+ &__content {
139
+ @include font-size($r-slider-content-fontsize);
140
+ line-height: $r-slider-content-line-height;
141
+ }
142
+ }
@@ -182,3 +182,6 @@ $r-section-grid-gutters: (
182
182
  'sm': 0.5rem,
183
183
  'xl': 1rem,
184
184
  );
185
+
186
+ // Slider plugin adjustments
187
+ $r-slider-title-fontweight: $font-weight-extrabold;
frontend/yarn.lock CHANGED
@@ -3877,22 +3877,6 @@
3877
3877
  resolved "https://registry.yarnpkg.com/@types/escodegen/-/escodegen-0.0.6.tgz#5230a9ce796e042cda6f086dbf19f22ea330659c"
3878
3878
  integrity sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==
3879
3879
 
3880
- "@types/eslint-scope@^3.7.3":
3881
- version "3.7.7"
3882
- resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5"
3883
- integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==
3884
- dependencies:
3885
- "@types/eslint" "*"
3886
- "@types/estree" "*"
3887
-
3888
- "@types/eslint@*":
3889
- version "9.6.0"
3890
- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.0.tgz#51d4fe4d0316da9e9f2c80884f2c20ed5fb022ff"
3891
- integrity sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==
3892
- dependencies:
3893
- "@types/estree" "*"
3894
- "@types/json-schema" "*"
3895
-
3896
3880
  "@types/eslint@9":
3897
3881
  version "9.6.1"
3898
3882
  resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584"
@@ -3901,10 +3885,10 @@
3901
3885
  "@types/estree" "*"
3902
3886
  "@types/json-schema" "*"
3903
3887
 
3904
- "@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5":
3905
- version "1.0.5"
3906
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
3907
- integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
3888
+ "@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.6":
3889
+ version "1.0.6"
3890
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
3891
+ integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
3908
3892
 
3909
3893
  "@types/estree@^0.0.51":
3910
3894
  version "0.0.51"
@@ -4572,11 +4556,6 @@ acorn-globals@^7.0.0:
4572
4556
  acorn "^8.1.0"
4573
4557
  acorn-walk "^8.0.2"
4574
4558
 
4575
- acorn-import-attributes@^1.9.5:
4576
- version "1.9.5"
4577
- resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef"
4578
- integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==
4579
-
4580
4559
  acorn-jsx@^5.3.1, acorn-jsx@^5.3.2:
4581
4560
  version "5.3.2"
4582
4561
  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
@@ -4599,10 +4578,10 @@ acorn@^7.4.1:
4599
4578
  resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
4600
4579
  integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
4601
4580
 
4602
- acorn@^8.1.0, acorn@^8.11.0, acorn@^8.12.1, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
4603
- version "8.12.1"
4604
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
4605
- integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
4581
+ acorn@^8.1.0, acorn@^8.11.0, acorn@^8.12.1, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
4582
+ version "8.14.0"
4583
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
4584
+ integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
4606
4585
 
4607
4586
  agent-base@6:
4608
4587
  version "6.0.2"
@@ -5070,27 +5049,7 @@ browser-assert@^1.2.1:
5070
5049
  resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200"
5071
5050
  integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==
5072
5051
 
5073
- browserslist@^4.21.10, browserslist@^4.23.1:
5074
- version "4.23.2"
5075
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed"
5076
- integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==
5077
- dependencies:
5078
- caniuse-lite "^1.0.30001640"
5079
- electron-to-chromium "^1.4.820"
5080
- node-releases "^2.0.14"
5081
- update-browserslist-db "^1.1.0"
5082
-
5083
- browserslist@^4.23.3:
5084
- version "4.23.3"
5085
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800"
5086
- integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
5087
- dependencies:
5088
- caniuse-lite "^1.0.30001646"
5089
- electron-to-chromium "^1.5.4"
5090
- node-releases "^2.0.18"
5091
- update-browserslist-db "^1.1.0"
5092
-
5093
- browserslist@^4.24.0:
5052
+ browserslist@^4.23.1, browserslist@^4.23.3, browserslist@^4.24.0:
5094
5053
  version "4.24.0"
5095
5054
  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4"
5096
5055
  integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==
@@ -5151,16 +5110,11 @@ camelcase@^6.2.0:
5151
5110
  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
5152
5111
  integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
5153
5112
 
5154
- caniuse-lite@^1.0.30001639, caniuse-lite@^1.0.30001640:
5113
+ caniuse-lite@^1.0.30001639:
5155
5114
  version "1.0.30001643"
5156
5115
  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz#9c004caef315de9452ab970c3da71085f8241dbd"
5157
5116
  integrity sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==
5158
5117
 
5159
- caniuse-lite@^1.0.30001646:
5160
- version "1.0.30001660"
5161
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz#31218de3463fabb44d0b7607b652e56edf2e2355"
5162
- integrity sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==
5163
-
5164
5118
  caniuse-lite@^1.0.30001663:
5165
5119
  version "1.0.30001667"
5166
5120
  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz#99fc5ea0d9c6e96897a104a8352604378377f949"
@@ -5494,9 +5448,9 @@ create-require@^1.1.0:
5494
5448
  integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
5495
5449
 
5496
5450
  cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
5497
- version "7.0.3"
5498
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
5499
- integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
5451
+ version "7.0.6"
5452
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
5453
+ integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
5500
5454
  dependencies:
5501
5455
  path-key "^3.1.0"
5502
5456
  shebang-command "^2.0.0"
@@ -5845,21 +5799,11 @@ ee-first@1.1.1:
5845
5799
  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
5846
5800
  integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
5847
5801
 
5848
- electron-to-chromium@^1.4.820:
5849
- version "1.5.2"
5850
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.2.tgz#6126ad229ce45e781ec54ca40db0504787f23d19"
5851
- integrity sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==
5852
-
5853
5802
  electron-to-chromium@^1.5.28:
5854
5803
  version "1.5.34"
5855
5804
  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.34.tgz#59f6eef987d2301d96d46b1bc4da913fe784baeb"
5856
5805
  integrity sha512-/TZAiChbAflBNjCg+VvstbcwAtIL/VdMFO3NgRFIzBjpvPzWOTIbbO8kNb6RwU4bt9TP7K+3KqBKw/lOU+Y+GA==
5857
5806
 
5858
- electron-to-chromium@^1.5.4:
5859
- version "1.5.24"
5860
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.24.tgz#b3cd2f71b7a84bac340d862e3b7b0aadf48478de"
5861
- integrity sha512-0x0wLCmpdKFCi9ulhvYZebgcPmHTkFVUfU2wzDykadkslKwT4oAmDTHEKLnlrDsMGZe4B+ksn8quZfZjYsBetA==
5862
-
5863
5807
  emittery@^0.13.1:
5864
5808
  version "0.13.1"
5865
5809
  resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad"
@@ -5918,7 +5862,7 @@ enhanced-resolve@^0.9.1:
5918
5862
  memory-fs "^0.2.0"
5919
5863
  tapable "^0.1.8"
5920
5864
 
5921
- enhanced-resolve@^5.17.0, enhanced-resolve@^5.17.1, enhanced-resolve@^5.7.0:
5865
+ enhanced-resolve@^5.17.1, enhanced-resolve@^5.7.0:
5922
5866
  version "5.17.1"
5923
5867
  resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15"
5924
5868
  integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==
@@ -8990,7 +8934,7 @@ node-int64@^0.4.0:
8990
8934
  resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
8991
8935
  integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
8992
8936
 
8993
- node-releases@^2.0.14, node-releases@^2.0.18:
8937
+ node-releases@^2.0.18:
8994
8938
  version "2.0.18"
8995
8939
  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
8996
8940
  integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
@@ -11278,48 +11222,17 @@ webpack-virtual-modules@^0.6.0, webpack-virtual-modules@^0.6.2:
11278
11222
  resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8"
11279
11223
  integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==
11280
11224
 
11281
- webpack@5:
11282
- version "5.93.0"
11283
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.93.0.tgz#2e89ec7035579bdfba9760d26c63ac5c3462a5e5"
11284
- integrity sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==
11285
- dependencies:
11286
- "@types/eslint-scope" "^3.7.3"
11287
- "@types/estree" "^1.0.5"
11288
- "@webassemblyjs/ast" "^1.12.1"
11289
- "@webassemblyjs/wasm-edit" "^1.12.1"
11290
- "@webassemblyjs/wasm-parser" "^1.12.1"
11291
- acorn "^8.7.1"
11292
- acorn-import-attributes "^1.9.5"
11293
- browserslist "^4.21.10"
11294
- chrome-trace-event "^1.0.2"
11295
- enhanced-resolve "^5.17.0"
11296
- es-module-lexer "^1.2.1"
11297
- eslint-scope "5.1.1"
11298
- events "^3.2.0"
11299
- glob-to-regexp "^0.4.1"
11300
- graceful-fs "^4.2.11"
11301
- json-parse-even-better-errors "^2.3.1"
11302
- loader-runner "^4.2.0"
11303
- mime-types "^2.1.27"
11304
- neo-async "^2.6.2"
11305
- schema-utils "^3.2.0"
11306
- tapable "^2.1.1"
11307
- terser-webpack-plugin "^5.3.10"
11308
- watchpack "^2.4.1"
11309
- webpack-sources "^3.2.3"
11310
-
11311
- webpack@5.95.0:
11312
- version "5.95.0"
11313
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.95.0.tgz#8fd8c454fa60dad186fbe36c400a55848307b4c0"
11314
- integrity sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==
11225
+ webpack@5, webpack@5.96.0:
11226
+ version "5.96.0"
11227
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.96.0.tgz#1e4dc9d1d819ff1b1f89d53e45a299ffe9231a8a"
11228
+ integrity sha512-gvn84AfQ4f6vUeNWmFuRp3vGERyxK4epADKTaAo60K0EQbY/YBNQbXH3Ji/ZRK5M25O/XneAOuChF4xQZjQ4xA==
11315
11229
  dependencies:
11316
- "@types/estree" "^1.0.5"
11230
+ "@types/estree" "^1.0.6"
11317
11231
  "@webassemblyjs/ast" "^1.12.1"
11318
11232
  "@webassemblyjs/wasm-edit" "^1.12.1"
11319
11233
  "@webassemblyjs/wasm-parser" "^1.12.1"
11320
- acorn "^8.7.1"
11321
- acorn-import-attributes "^1.9.5"
11322
- browserslist "^4.21.10"
11234
+ acorn "^8.14.0"
11235
+ browserslist "^4.24.0"
11323
11236
  chrome-trace-event "^1.0.2"
11324
11237
  enhanced-resolve "^5.17.1"
11325
11238
  es-module-lexer "^1.2.1"
@@ -114,7 +114,7 @@ CMS_PLACEHOLDER_CONF = {
114
114
  # Homepage
115
115
  "richie/homepage.html maincontent": {
116
116
  "name": _("Main content"),
117
- "plugins": ["LargeBannerPlugin", "SectionPlugin"],
117
+ "plugins": ["LargeBannerPlugin", "SectionPlugin", "SliderPlugin"],
118
118
  "child_classes": {
119
119
  "SectionPlugin": [
120
120
  "BlogPostPlugin",
File without changes
@@ -0,0 +1,85 @@
1
+ """
2
+ Slider CMS plugins
3
+ """
4
+
5
+ from django.utils.translation import gettext_lazy as _
6
+
7
+ from cms.plugin_base import CMSPluginBase
8
+ from cms.plugin_pool import plugin_pool
9
+
10
+ from richie.apps.core.defaults import PLUGINS_GROUP
11
+
12
+ from .forms import SlideItemForm, SliderForm
13
+ from .models import SlideItem, Slider
14
+
15
+
16
+ @plugin_pool.register_plugin
17
+ class SliderPlugin(CMSPluginBase):
18
+ """
19
+ CMSPlugin to hold Slide plugin items.
20
+ """
21
+
22
+ cache = True
23
+ module = PLUGINS_GROUP
24
+ name = _("Slider")
25
+ model = Slider
26
+ form = SliderForm
27
+ render_template = "richie/slider/slider.html"
28
+ allow_children = True
29
+ child_classes = ["SlideItemPlugin"]
30
+ fieldsets = ((None, {"fields": ["title"]}),)
31
+
32
+ def render(self, context, instance, placeholder):
33
+ context.update(
34
+ {
35
+ "instance": instance,
36
+ "placeholder": placeholder,
37
+ }
38
+ )
39
+ return context
40
+
41
+
42
+ @plugin_pool.register_plugin
43
+ class SlideItemPlugin(CMSPluginBase):
44
+ """
45
+ CMSPlugin for slide item content.
46
+ """
47
+
48
+ cache = True
49
+ module = PLUGINS_GROUP
50
+ name = _("Slide item")
51
+ model = SlideItem
52
+ form = SlideItemForm
53
+ render_template = "richie/slider/slide-item.html"
54
+ require_parent = True
55
+ parent_classes = ["SliderPlugin"]
56
+ fieldsets = [
57
+ (
58
+ None,
59
+ {
60
+ "fields": (
61
+ "title",
62
+ "image",
63
+ "content",
64
+ ),
65
+ },
66
+ ),
67
+ (
68
+ _("Link"),
69
+ {
70
+ "fields": (
71
+ "link_url",
72
+ "link_open_blank",
73
+ ),
74
+ },
75
+ ),
76
+ ]
77
+
78
+ def render(self, context, instance, placeholder):
79
+ context.update(
80
+ {
81
+ "instance": instance,
82
+ "placeholder": placeholder,
83
+ }
84
+ )
85
+ return context
@@ -0,0 +1,33 @@
1
+ """
2
+ Slider CMS plugin factories
3
+ """
4
+
5
+ import factory
6
+
7
+ from .models import SlideItem, Slider
8
+
9
+
10
+ class SliderFactory(factory.django.DjangoModelFactory):
11
+ """
12
+ Factory to create instance of a Slider.
13
+ """
14
+
15
+ title = factory.Faker("text", max_nb_chars=20)
16
+
17
+ class Meta:
18
+ model = Slider
19
+
20
+
21
+ class SlideItemFactory(factory.django.DjangoModelFactory):
22
+ """
23
+ Factory to create instance of a SlideItem.
24
+ """
25
+
26
+ title = factory.Faker("text", max_nb_chars=20)
27
+ content = factory.Faker("text", max_nb_chars=42)
28
+ image = factory.SubFactory("richie.apps.core.factories.FilerImageFactory")
29
+ link_url = factory.Faker("url")
30
+ link_open_blank = factory.Faker("pybool")
31
+
32
+ class Meta:
33
+ model = SlideItem
@@ -0,0 +1,40 @@
1
+ """
2
+ Slider plugin forms
3
+ """
4
+
5
+ from django import forms
6
+
7
+ from djangocms_text_ckeditor.widgets import TextEditorWidget
8
+
9
+ from .models import SlideItem, Slider
10
+
11
+
12
+ class SliderForm(forms.ModelForm):
13
+ """
14
+ Slider form used to fill its content from frontend admin.
15
+ """
16
+
17
+ class Meta:
18
+ model = Slider
19
+ fields = [
20
+ "title",
21
+ ]
22
+
23
+
24
+ class SlideItemForm(forms.ModelForm):
25
+ """
26
+ SlideItem form used to fill its content from frontend admin.
27
+ """
28
+
29
+ class Meta:
30
+ model = SlideItem
31
+ fields = [
32
+ "title",
33
+ "image",
34
+ "content",
35
+ "link_url",
36
+ "link_open_blank",
37
+ ]
38
+ widgets = {
39
+ "content": TextEditorWidget,
40
+ }
@@ -0,0 +1,102 @@
1
+ # Generated by Django 4.2.16 on 2024-11-22 00:16
2
+
3
+ import django.db.models.deletion
4
+ from django.conf import settings
5
+ from django.db import migrations, models
6
+
7
+ import filer.fields.image
8
+
9
+
10
+ class Migration(migrations.Migration):
11
+
12
+ initial = True
13
+
14
+ dependencies = [
15
+ ("cms", "0022_auto_20180620_1551"),
16
+ migrations.swappable_dependency(settings.FILER_IMAGE_MODEL),
17
+ ]
18
+
19
+ operations = [
20
+ migrations.CreateModel(
21
+ name="Slider",
22
+ fields=[
23
+ (
24
+ "cmsplugin_ptr",
25
+ models.OneToOneField(
26
+ auto_created=True,
27
+ on_delete=django.db.models.deletion.CASCADE,
28
+ parent_link=True,
29
+ primary_key=True,
30
+ related_name="%(app_label)s_%(class)s",
31
+ serialize=False,
32
+ to="cms.cmsplugin",
33
+ ),
34
+ ),
35
+ ("title", models.CharField(max_length=255, verbose_name="title")),
36
+ ],
37
+ options={
38
+ "verbose_name": "Slider",
39
+ "verbose_name_plural": "Sliders",
40
+ },
41
+ bases=("cms.cmsplugin",),
42
+ ),
43
+ migrations.CreateModel(
44
+ name="SlideItem",
45
+ fields=[
46
+ (
47
+ "cmsplugin_ptr",
48
+ models.OneToOneField(
49
+ auto_created=True,
50
+ on_delete=django.db.models.deletion.CASCADE,
51
+ parent_link=True,
52
+ primary_key=True,
53
+ related_name="%(app_label)s_%(class)s",
54
+ serialize=False,
55
+ to="cms.cmsplugin",
56
+ ),
57
+ ),
58
+ (
59
+ "title",
60
+ models.CharField(default="", max_length=150, verbose_name="title"),
61
+ ),
62
+ (
63
+ "content",
64
+ models.TextField(blank=True, default="", verbose_name="content"),
65
+ ),
66
+ (
67
+ "link_url",
68
+ models.URLField(
69
+ blank=True,
70
+ help_text="Make the slide as a link with an URL.",
71
+ max_length=255,
72
+ null=True,
73
+ verbose_name="link URL",
74
+ ),
75
+ ),
76
+ (
77
+ "link_open_blank",
78
+ models.BooleanField(
79
+ default=False,
80
+ help_text="If checked the link will be open in a new window",
81
+ verbose_name="open new window",
82
+ ),
83
+ ),
84
+ (
85
+ "image",
86
+ filer.fields.image.FilerImageField(
87
+ default=None,
88
+ null=True,
89
+ on_delete=django.db.models.deletion.SET_NULL,
90
+ related_name="slide_image",
91
+ to=settings.FILER_IMAGE_MODEL,
92
+ verbose_name="image",
93
+ ),
94
+ ),
95
+ ],
96
+ options={
97
+ "verbose_name": "Slide item",
98
+ "verbose_name_plural": "Slide items",
99
+ },
100
+ bases=("cms.cmsplugin",),
101
+ ),
102
+ ]
File without changes