diff --git a/addons/mcs_corporate_website/__init__.py b/addons/mcs_corporate_website/__init__.py
index 91c5580..a247bf3 100644
--- a/addons/mcs_corporate_website/__init__.py
+++ b/addons/mcs_corporate_website/__init__.py
@@ -1,2 +1,3 @@
from . import controllers
+from . import hooks
from . import models
diff --git a/addons/mcs_corporate_website/__manifest__.py b/addons/mcs_corporate_website/__manifest__.py
index 8968610..6e7338e 100644
--- a/addons/mcs_corporate_website/__manifest__.py
+++ b/addons/mcs_corporate_website/__manifest__.py
@@ -19,6 +19,7 @@
"security/security.xml",
"security/ir.model.access.csv",
"data/sequence_data.xml",
+ "data/website_data.xml",
"views/support_ticket_views.xml",
"views/website_templates.xml",
"views/website_menus.xml",
@@ -28,6 +29,7 @@
"mcs_corporate_website/static/src/scss/corporate_website.scss",
],
},
+ "post_init_hook": "post_init_hook",
"installable": True,
"application": False,
}
diff --git a/addons/mcs_corporate_website/data/website_data.xml b/addons/mcs_corporate_website/data/website_data.xml
new file mode 100644
index 0000000..1142cf1
--- /dev/null
+++ b/addons/mcs_corporate_website/data/website_data.xml
@@ -0,0 +1,6 @@
+
+
+ Metatroncube Workplace
+
+
+
diff --git a/addons/mcs_corporate_website/hooks.py b/addons/mcs_corporate_website/hooks.py
new file mode 100644
index 0000000..c1aac67
--- /dev/null
+++ b/addons/mcs_corporate_website/hooks.py
@@ -0,0 +1,38 @@
+import base64
+from pathlib import Path
+
+from odoo import api, SUPERUSER_ID
+
+
+def post_init_hook(env_or_cr, registry=None):
+ if registry is not None:
+ env = api.Environment(env_or_cr, SUPERUSER_ID, {})
+ else:
+ env = env_or_cr
+ CorporateWebsiteSetup(env).run()
+
+
+class CorporateWebsiteSetup:
+ def __init__(self, env):
+ self.env = env
+
+ def run(self):
+ self._brand_website()
+ self._hide_duplicate_home_menu()
+
+ def _brand_website(self):
+ website = self.env["website"].sudo().search([], limit=1)
+ if not website:
+ return
+ logo_path = Path(__file__).parent / "static" / "src" / "img" / "metatroncube-logo.png"
+ values = {
+ "name": "Metatroncube Workplace",
+ }
+ if logo_path.exists():
+ values["logo"] = base64.b64encode(logo_path.read_bytes())
+ website.write(values)
+
+ def _hide_duplicate_home_menu(self):
+ menu = self.env.ref("mcs_corporate_website.menu_home", raise_if_not_found=False)
+ if menu:
+ menu.sudo().write({"is_visible": False})
diff --git a/addons/mcs_corporate_website/static/src/img/metatroncube-logo.png b/addons/mcs_corporate_website/static/src/img/metatroncube-logo.png
new file mode 100644
index 0000000..10e8b77
Binary files /dev/null and b/addons/mcs_corporate_website/static/src/img/metatroncube-logo.png differ
diff --git a/addons/mcs_corporate_website/static/src/scss/corporate_website.scss b/addons/mcs_corporate_website/static/src/scss/corporate_website.scss
index 3503470..d58686d 100644
--- a/addons/mcs_corporate_website/static/src/scss/corporate_website.scss
+++ b/addons/mcs_corporate_website/static/src/scss/corporate_website.scss
@@ -1,10 +1,13 @@
.mcs-site {
--mcs-ink: #101828;
- --mcs-muted: #5b6474;
- --mcs-line: #d8dee8;
- --mcs-blue: #155eef;
- --mcs-blue-dark: #0f2f6f;
- --mcs-surface: #f5f8fc;
+ --mcs-muted: #596579;
+ --mcs-line: #d7dfe9;
+ --mcs-blue: #1c4ed8;
+ --mcs-navy: #071426;
+ --mcs-teal: #0f766e;
+ --mcs-gold: #d9931e;
+ --mcs-surface: #f6f8fb;
+ --mcs-panel: #ffffff;
color: var(--mcs-ink);
background: #ffffff;
@@ -20,9 +23,9 @@
}
h1 {
- font-size: clamp(2.4rem, 4rem, 4rem);
+ font-size: 4rem;
line-height: 1.02;
- font-weight: 750;
+ font-weight: 780;
}
h2 {
@@ -47,22 +50,79 @@
font-weight: 700;
padding: 0.75rem 1.05rem;
}
+
+ .btn-primary {
+ background: var(--mcs-blue);
+ border-color: var(--mcs-blue);
+ box-shadow: 0 8px 18px rgba(28, 78, 216, 0.18);
+ }
+
+ .btn-secondary {
+ color: #ffffff;
+ background: var(--mcs-teal);
+ border-color: var(--mcs-teal);
+ }
+}
+
+#wrapwrap > header {
+ .navbar {
+ min-height: 76px;
+ background: #071426 !important;
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
+ box-shadow: 0 12px 30px rgba(7, 20, 38, 0.16) !important;
+ }
+
+ .navbar-brand.logo {
+ display: flex;
+ align-items: center;
+ min-width: 180px;
+ margin-right: 28px !important;
+
+ img {
+ width: auto !important;
+ height: 44px !important;
+ max-width: 190px;
+ object-fit: contain;
+ }
+ }
+
+ .top_menu .nav-link {
+ color: rgba(255, 255, 255, 0.76) !important;
+ font-weight: 700;
+ padding-inline: 0.8rem !important;
+ }
+
+ .top_menu .nav-link.active,
+ .top_menu .nav-link:hover {
+ color: #ffffff !important;
+ }
+
+ .top_menu .nav-link.active span {
+ border-bottom: 2px solid #d9931e;
+ padding-bottom: 5px;
+ }
+
+ .o_header_hide_on_scroll {
+ background: #071426 !important;
+ }
}
.mcs-hero {
position: relative;
- min-height: 680px;
+ min-height: 640px;
display: flex;
align-items: center;
overflow: hidden;
color: #ffffff;
- background: #07111f;
+ background: #071426;
&::before {
content: "";
position: absolute;
inset: 0;
- background: linear-gradient(90deg, rgba(7, 17, 31, 0.94), rgba(7, 17, 31, 0.72), rgba(7, 17, 31, 0.18));
+ background:
+ linear-gradient(90deg, rgba(7, 20, 38, 0.96), rgba(7, 20, 38, 0.78), rgba(7, 20, 38, 0.28)),
+ linear-gradient(180deg, rgba(7, 20, 38, 0), rgba(7, 20, 38, 0.38));
z-index: 1;
}
}
@@ -89,14 +149,14 @@
.mcs-lead {
max-width: 650px;
margin: 24px 0 0;
- color: rgba(255, 255, 255, 0.82);
+ color: rgba(255, 255, 255, 0.84);
font-size: 1.18rem;
}
}
.mcs-eyebrow {
margin: 0 0 12px;
- color: var(--mcs-blue);
+ color: var(--mcs-gold);
font-size: 0.78rem;
font-weight: 800;
letter-spacing: 0.12em;
@@ -111,7 +171,7 @@
}
.mcs-band {
- padding: 76px 0;
+ padding: 80px 0;
}
.mcs-band--quiet {
@@ -148,11 +208,19 @@
.mcs-metrics div {
border: 1px solid var(--mcs-line);
border-radius: 8px;
- background: #ffffff;
+ background: var(--mcs-panel);
+ box-shadow: 0 18px 45px rgba(16, 24, 40, 0.07);
}
.mcs-service-card {
overflow: hidden;
+ transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
+
+ &:hover {
+ border-color: rgba(28, 78, 216, 0.24);
+ box-shadow: 0 24px 60px rgba(16, 24, 40, 0.12);
+ transform: translateY(-2px);
+ }
img {
width: 100%;
@@ -172,6 +240,7 @@
a {
display: inline-flex;
margin-top: 12px;
+ color: var(--mcs-blue);
font-weight: 700;
text-decoration: none;
}
@@ -190,6 +259,7 @@
div {
padding: 20px;
+ border-left: 4px solid var(--mcs-gold);
}
strong {
@@ -211,7 +281,7 @@
}
.mcs-cta {
- background: #101828;
+ background: var(--mcs-navy);
color: #ffffff;
h2 {
@@ -221,8 +291,10 @@
}
.mcs-page-head {
- padding: 96px 0 56px;
- background: #101828;
+ padding: 104px 0 64px;
+ background:
+ linear-gradient(90deg, rgba(7, 20, 38, 0.96), rgba(7, 20, 38, 0.86)),
+ url("https://metatroncubesolutions.com/assets/images/home/bg-without.webp") center / cover;
color: #ffffff;
p:not(.mcs-eyebrow) {
@@ -239,6 +311,7 @@
article {
padding: 26px;
+ border-top: 4px solid var(--mcs-blue);
}
}
@@ -283,7 +356,7 @@
}
.mcs-hero {
- min-height: 620px;
+ min-height: 560px;
}
.mcs-service-grid,
@@ -303,3 +376,18 @@
position: static;
}
}
+
+@media (max-width: 575.98px) {
+ #wrapwrap > header .navbar-brand.logo img {
+ height: 36px !important;
+ max-width: 158px;
+ }
+
+ .mcs-site h1 {
+ font-size: 2.1rem;
+ }
+
+ .mcs-band {
+ padding: 56px 0;
+ }
+}
diff --git a/addons/mcs_corporate_website/views/website_menus.xml b/addons/mcs_corporate_website/views/website_menus.xml
index f07973f..4fd6aad 100644
--- a/addons/mcs_corporate_website/views/website_menus.xml
+++ b/addons/mcs_corporate_website/views/website_menus.xml
@@ -4,6 +4,7 @@
/
5
+