diff --git a/db.sqlite3 b/db.sqlite3
index a26858da..fb9be894 100644
Binary files a/db.sqlite3 and b/db.sqlite3 differ
diff --git a/home/__pycache__/wagtail_hooks.cpython-310.pyc b/home/__pycache__/wagtail_hooks.cpython-310.pyc
index 77da1ac6..43f117c5 100644
Binary files a/home/__pycache__/wagtail_hooks.cpython-310.pyc and b/home/__pycache__/wagtail_hooks.cpython-310.pyc differ
diff --git a/media/images/amazon-webservices.max-165x165.svg b/media/images/amazon-webservices.max-165x165.svg
new file mode 100644
index 00000000..b3e8e4fe
--- /dev/null
+++ b/media/images/amazon-webservices.max-165x165.svg
@@ -0,0 +1,42 @@
+
\ No newline at end of file
diff --git a/media/images/angular-js.max-165x165.svg b/media/images/angular-js.max-165x165.svg
new file mode 100644
index 00000000..0fff03b8
--- /dev/null
+++ b/media/images/angular-js.max-165x165.svg
@@ -0,0 +1,24 @@
+
\ No newline at end of file
diff --git a/media/images/docker.max-165x165.svg b/media/images/docker.max-165x165.svg
new file mode 100644
index 00000000..da469a59
--- /dev/null
+++ b/media/images/docker.max-165x165.svg
@@ -0,0 +1,31 @@
+
\ No newline at end of file
diff --git a/media/images/elastic.max-165x165.svg b/media/images/elastic.max-165x165.svg
new file mode 100644
index 00000000..95e7797f
--- /dev/null
+++ b/media/images/elastic.max-165x165.svg
@@ -0,0 +1,27 @@
+
\ No newline at end of file
diff --git a/media/images/es6.max-165x165.svg b/media/images/es6.max-165x165.svg
new file mode 100644
index 00000000..057d21e2
--- /dev/null
+++ b/media/images/es6.max-165x165.svg
@@ -0,0 +1,25 @@
+
\ No newline at end of file
diff --git a/media/images/html-5.max-165x165.svg b/media/images/html-5.max-165x165.svg
new file mode 100644
index 00000000..d3070b2a
--- /dev/null
+++ b/media/images/html-5.max-165x165.svg
@@ -0,0 +1,26 @@
+
\ No newline at end of file
diff --git a/media/images/jenkins.max-165x165.svg b/media/images/jenkins.max-165x165.svg
new file mode 100644
index 00000000..0ee703ea
--- /dev/null
+++ b/media/images/jenkins.max-165x165.svg
@@ -0,0 +1,37 @@
+
\ No newline at end of file
diff --git a/media/images/mongodb.max-165x165.svg b/media/images/mongodb.max-165x165.svg
new file mode 100644
index 00000000..3c45bea1
--- /dev/null
+++ b/media/images/mongodb.max-165x165.svg
@@ -0,0 +1,22 @@
+
\ No newline at end of file
diff --git a/media/images/mysql.max-165x165.svg b/media/images/mysql.max-165x165.svg
new file mode 100644
index 00000000..b1e955a4
--- /dev/null
+++ b/media/images/mysql.max-165x165.svg
@@ -0,0 +1,20 @@
+
\ No newline at end of file
diff --git a/media/images/nodejs.max-165x165.svg b/media/images/nodejs.max-165x165.svg
new file mode 100644
index 00000000..604d5890
--- /dev/null
+++ b/media/images/nodejs.max-165x165.svg
@@ -0,0 +1,26 @@
+
\ No newline at end of file
diff --git a/media/images/postgresql.max-165x165.svg b/media/images/postgresql.max-165x165.svg
new file mode 100644
index 00000000..4eafd9dd
--- /dev/null
+++ b/media/images/postgresql.max-165x165.svg
@@ -0,0 +1,28 @@
+
\ No newline at end of file
diff --git a/media/images/python.max-165x165.svg b/media/images/python.max-165x165.svg
new file mode 100644
index 00000000..8e225aab
--- /dev/null
+++ b/media/images/python.max-165x165.svg
@@ -0,0 +1,20 @@
+
\ No newline at end of file
diff --git a/media/images/rails.max-165x165.svg b/media/images/rails.max-165x165.svg
new file mode 100644
index 00000000..ee18879b
--- /dev/null
+++ b/media/images/rails.max-165x165.svg
@@ -0,0 +1,32 @@
+
\ No newline at end of file
diff --git a/media/images/react.max-165x165.svg b/media/images/react.max-165x165.svg
new file mode 100644
index 00000000..386b3fd6
--- /dev/null
+++ b/media/images/react.max-165x165.svg
@@ -0,0 +1,21 @@
+
\ No newline at end of file
diff --git a/media/images/redis.max-165x165.svg b/media/images/redis.max-165x165.svg
new file mode 100644
index 00000000..3d2f666f
--- /dev/null
+++ b/media/images/redis.max-165x165.svg
@@ -0,0 +1,35 @@
+
\ No newline at end of file
diff --git a/media/images/ruby.max-165x165.svg b/media/images/ruby.max-165x165.svg
new file mode 100644
index 00000000..a99c8a47
--- /dev/null
+++ b/media/images/ruby.max-165x165.svg
@@ -0,0 +1,25 @@
+
\ No newline at end of file
diff --git a/media/original_images/amazon-webservices.svg b/media/original_images/amazon-webservices.svg
new file mode 100644
index 00000000..32a2c558
--- /dev/null
+++ b/media/original_images/amazon-webservices.svg
@@ -0,0 +1,45 @@
+
+
+
diff --git a/media/original_images/angular-js.svg b/media/original_images/angular-js.svg
new file mode 100644
index 00000000..e0a9d8a9
--- /dev/null
+++ b/media/original_images/angular-js.svg
@@ -0,0 +1,29 @@
+
+
+
diff --git a/media/original_images/docker.svg b/media/original_images/docker.svg
new file mode 100644
index 00000000..824f7325
--- /dev/null
+++ b/media/original_images/docker.svg
@@ -0,0 +1,36 @@
+
+
+
diff --git a/media/original_images/elastic.svg b/media/original_images/elastic.svg
new file mode 100644
index 00000000..3143b12f
--- /dev/null
+++ b/media/original_images/elastic.svg
@@ -0,0 +1,37 @@
+
+
+
diff --git a/media/original_images/es6.svg b/media/original_images/es6.svg
new file mode 100644
index 00000000..a41543fb
--- /dev/null
+++ b/media/original_images/es6.svg
@@ -0,0 +1,29 @@
+
+
+
diff --git a/media/original_images/html-5.svg b/media/original_images/html-5.svg
new file mode 100644
index 00000000..f4ba11b5
--- /dev/null
+++ b/media/original_images/html-5.svg
@@ -0,0 +1,29 @@
+
+
+
diff --git a/media/original_images/jenkins.svg b/media/original_images/jenkins.svg
new file mode 100644
index 00000000..7c62a296
--- /dev/null
+++ b/media/original_images/jenkins.svg
@@ -0,0 +1,55 @@
+
+
+
diff --git a/media/original_images/mongodb.svg b/media/original_images/mongodb.svg
new file mode 100644
index 00000000..f8145241
--- /dev/null
+++ b/media/original_images/mongodb.svg
@@ -0,0 +1,25 @@
+
+
+
diff --git a/media/original_images/mysql.svg b/media/original_images/mysql.svg
new file mode 100644
index 00000000..15638b16
--- /dev/null
+++ b/media/original_images/mysql.svg
@@ -0,0 +1,32 @@
+
+
+
diff --git a/media/original_images/nodejs.svg b/media/original_images/nodejs.svg
new file mode 100644
index 00000000..e8986603
--- /dev/null
+++ b/media/original_images/nodejs.svg
@@ -0,0 +1,33 @@
+
+
+
diff --git a/media/original_images/postgresql.svg b/media/original_images/postgresql.svg
new file mode 100644
index 00000000..6794bc6c
--- /dev/null
+++ b/media/original_images/postgresql.svg
@@ -0,0 +1,47 @@
+
+
+
diff --git a/media/original_images/python.svg b/media/original_images/python.svg
new file mode 100644
index 00000000..5b789c10
--- /dev/null
+++ b/media/original_images/python.svg
@@ -0,0 +1,27 @@
+
+
+
diff --git a/media/original_images/rails.svg b/media/original_images/rails.svg
new file mode 100644
index 00000000..34edcc98
--- /dev/null
+++ b/media/original_images/rails.svg
@@ -0,0 +1,35 @@
+
+
+
diff --git a/media/original_images/react.svg b/media/original_images/react.svg
new file mode 100644
index 00000000..2d551c41
--- /dev/null
+++ b/media/original_images/react.svg
@@ -0,0 +1,27 @@
+
+
+
diff --git a/media/original_images/redis.svg b/media/original_images/redis.svg
new file mode 100644
index 00000000..43c6b40e
--- /dev/null
+++ b/media/original_images/redis.svg
@@ -0,0 +1,39 @@
+
+
+
diff --git a/media/original_images/ruby.svg b/media/original_images/ruby.svg
new file mode 100644
index 00000000..25d0a4b1
--- /dev/null
+++ b/media/original_images/ruby.svg
@@ -0,0 +1,28 @@
+
+
+
diff --git a/services/__pycache__/models.cpython-310.pyc b/services/__pycache__/models.cpython-310.pyc
index a86ed6e6..d079c71e 100644
Binary files a/services/__pycache__/models.cpython-310.pyc and b/services/__pycache__/models.cpython-310.pyc differ
diff --git a/services/migrations/0003_blogpagerelatedlink.py b/services/migrations/0003_blogpagerelatedlink.py
new file mode 100644
index 00000000..9af22311
--- /dev/null
+++ b/services/migrations/0003_blogpagerelatedlink.py
@@ -0,0 +1,30 @@
+# Generated by Django 5.0.8 on 2024-09-14 15:56
+
+import django.db.models.deletion
+import modelcluster.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('services', '0002_rename_sf5img_servicespage_section_five_img_and_more'),
+ ('wagtailimages', '0026_delete_uploadedimage'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='BlogPageRelatedLink',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
+ ('carouse_name', models.CharField(blank=True, max_length=255)),
+ ('carouse_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')),
+ ('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='carousel_services', to='services.servicespage')),
+ ],
+ options={
+ 'ordering': ['sort_order'],
+ 'abstract': False,
+ },
+ ),
+ ]
diff --git a/services/migrations/0004_rename_blogpagerelatedlink_servicespagecarousel.py b/services/migrations/0004_rename_blogpagerelatedlink_servicespagecarousel.py
new file mode 100644
index 00000000..1b2ad8a0
--- /dev/null
+++ b/services/migrations/0004_rename_blogpagerelatedlink_servicespagecarousel.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.0.8 on 2024-09-14 15:57
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('services', '0003_blogpagerelatedlink'),
+ ('wagtailimages', '0026_delete_uploadedimage'),
+ ]
+
+ operations = [
+ migrations.RenameModel(
+ old_name='BlogPageRelatedLink',
+ new_name='ServicesPageCarousel',
+ ),
+ ]
diff --git a/services/migrations/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.py b/services/migrations/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.py
new file mode 100644
index 00000000..c2330a45
--- /dev/null
+++ b/services/migrations/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.0.8 on 2024-09-14 15:59
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('services', '0004_rename_blogpagerelatedlink_servicespagecarousel'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='servicespagecarousel',
+ old_name='carouse_image',
+ new_name='carousel_image',
+ ),
+ migrations.RenameField(
+ model_name='servicespagecarousel',
+ old_name='carouse_name',
+ new_name='carousel_name',
+ ),
+ ]
diff --git a/services/migrations/__pycache__/0001_initial.cpython-310.pyc b/services/migrations/__pycache__/0001_initial.cpython-310.pyc
index a89ff067..78e93973 100644
Binary files a/services/migrations/__pycache__/0001_initial.cpython-310.pyc and b/services/migrations/__pycache__/0001_initial.cpython-310.pyc differ
diff --git a/services/migrations/__pycache__/0002_rename_sf5img_servicespage_section_five_img_and_more.cpython-310.pyc b/services/migrations/__pycache__/0002_rename_sf5img_servicespage_section_five_img_and_more.cpython-310.pyc
index f483d85d..8c1756a9 100644
Binary files a/services/migrations/__pycache__/0002_rename_sf5img_servicespage_section_five_img_and_more.cpython-310.pyc and b/services/migrations/__pycache__/0002_rename_sf5img_servicespage_section_five_img_and_more.cpython-310.pyc differ
diff --git a/services/migrations/__pycache__/0003_blogpagerelatedlink.cpython-310.pyc b/services/migrations/__pycache__/0003_blogpagerelatedlink.cpython-310.pyc
new file mode 100644
index 00000000..0f692581
Binary files /dev/null and b/services/migrations/__pycache__/0003_blogpagerelatedlink.cpython-310.pyc differ
diff --git a/services/migrations/__pycache__/0004_rename_blogpagerelatedlink_servicespagecarousel.cpython-310.pyc b/services/migrations/__pycache__/0004_rename_blogpagerelatedlink_servicespagecarousel.cpython-310.pyc
new file mode 100644
index 00000000..434338c4
Binary files /dev/null and b/services/migrations/__pycache__/0004_rename_blogpagerelatedlink_servicespagecarousel.cpython-310.pyc differ
diff --git a/services/migrations/__pycache__/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.cpython-310.pyc b/services/migrations/__pycache__/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.cpython-310.pyc
new file mode 100644
index 00000000..19696de2
Binary files /dev/null and b/services/migrations/__pycache__/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.cpython-310.pyc differ
diff --git a/services/migrations/__pycache__/__init__.cpython-310.pyc b/services/migrations/__pycache__/__init__.cpython-310.pyc
index e901b30a..1937568e 100644
Binary files a/services/migrations/__pycache__/__init__.cpython-310.pyc and b/services/migrations/__pycache__/__init__.cpython-310.pyc differ
diff --git a/services/models.py b/services/models.py
index 3f524a14..b0d5068f 100644
--- a/services/models.py
+++ b/services/models.py
@@ -2,11 +2,13 @@ from __future__ import unicode_literals
from django.db import models
from wagtail.fields import RichTextField
-from wagtail.admin.panels import FieldPanel, MultiFieldPanel
-from wagtail.models import Page
+from wagtail.admin.panels import FieldPanel, MultiFieldPanel, InlinePanel
+from wagtail.models import Page, Orderable
+from modelcluster.models import ParentalKey
from saburly.custom_editor import FULL_EDITOR
+
class ServicesPage(Page):
section_one_title = RichTextField(blank=True, features=FULL_EDITOR)
section_one_text = RichTextField(blank=True, features=FULL_EDITOR)
@@ -97,4 +99,24 @@ class ServicesPage(Page):
FieldPanel('sub_section_six'),
FieldPanel('sub_section_six_img'),
], heading="Section 5 Subfields"),
+
+ InlinePanel('carousel_services', heading="Carousel Services", label="Carousel Services"),
+
]
+
+class ServicesPageCarousel(Orderable):
+
+ page = ParentalKey(ServicesPage, on_delete=models.CASCADE, related_name='carousel_services')
+ carousel_name = models.CharField(max_length=255, blank=True)
+ carousel_image = models.ForeignKey(
+ 'wagtailimages.Image',
+ null=True,
+ blank=True,
+ on_delete=models.SET_NULL,
+ related_name='+'
+ )
+
+ panels = [
+ FieldPanel('carousel_name'),
+ FieldPanel('carousel_image'),
+ ]
\ No newline at end of file
diff --git a/static/css/style.css b/static/css/style.css
index a9be78a8..cbba6df8 100644
--- a/static/css/style.css
+++ b/static/css/style.css
@@ -198,7 +198,9 @@ body.side-menu.active {
.content-open:before {
position: absolute;
top: 0;
- bottom: 0;
+ right: 0;
+ left: 0;
+ bottom: -2000000000px;
width: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 99;
@@ -220,3 +222,39 @@ body.side-menu.active {
.block-scroll{
overflow: hidden;
}
+
+.carousel-slider{
+ width: 100%;
+ height: 130px;
+ overflow: hidden;
+}
+.carousel-slider .carousel-list{
+ display: flex;
+ width: 100%;
+ min-width: calc(100px * 16);
+ position: relative;
+}
+.carousel-slider .carousel-list .carousel-item{
+ width: 100px;
+ height: 100px;
+ position: absolute;
+ left: 100%;
+ animation: autoRun 16s linear infinite;
+ animation-delay: calc((16s / 16) * (var(--position) - 1));
+}
+ .carousel-slider .carousel-list .carousel-item img{
+ width: 100%;
+ }
+
+ @keyframes autoRun {
+ from{
+ left: 100%;
+ }to{
+ left: calc(100px * -1);
+ }
+ }
+
+ .carousel-slider:hover .carousel-item{
+ animation-play-state: paused!important;
+ }
+
diff --git a/templates/base.html b/templates/base.html
index b1f267ca..11499edd 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -41,13 +41,15 @@
const content = document.querySelector('.content');
const headermove = document.getElementById('header');
const body = document.body;
+ const footermove = document.getElementById('footer');
sideToggle.addEventListener('click', function() {
sideMenu.classList.toggle('active');
this.classList.toggle('menu-opened');
content.classList.toggle('content-open');
headermove.classList.toggle('header-move');
- body.classList.toggle('block-scroll')
+ body.classList.toggle('block-scroll');
+ footermove.classList.toggle('header-move');
});
sideCloseButtons.forEach(button => {
@@ -57,6 +59,7 @@
content.classList.remove('content-open');
headermove.classList.remove('header-move');
body.classList.remove('block-scroll');
+ footermove.classList.remove('header-move');
});
});
})
@@ -76,7 +79,7 @@
}
prevScrollPos = currentScrollPos;
- };
+ };