Metatron_Student_ERP/wrapper.xml

729 lines
29 KiB
XML

<template id="education_portal.portal_student_theme_layout" name="Student Theme Layout">
<t t-call="portal.portal_layout">
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800&amp;display=swap" rel="stylesheet"/>
<style>
/* Absolute Reset and Layout overrides */
header, footer, .o_portal_navbar, .o_breadcrumb, #oe_structure_portal_footer_1, .o_portal_submenu, .breadcrumb {
display: none !important;
}
.container, .o_portal_container {
max-width: 100% !important;
width: 100% !important;
padding: 0 !important;
margin: 0 !important;
}
body {
background-color: #eef9f9 !important;
background-image: radial-gradient(at 0% 0%, rgba(204, 241, 241, 0.4) 0, transparent 50%), radial-gradient(at 100% 0%, rgba(204, 241, 241, 0.8) 0, transparent 50%) !important;
font-family: 'Nunito', sans-serif !important;
color: #3b3b3b !important;
margin: 0;
padding: 0;
min-height: 100vh;
}
#wrap {
background: transparent !important;
}
/* Top Header Navbar */
.portal-header {
height: 70px;
background: #eef9f9 !important;
border-bottom: 1px solid rgba(31, 143, 143, 0.1);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 40px;
position: sticky;
top: 0;
z-index: 100;
}
.portal-logo-area {
display: flex;
align-items: center;
gap: 12px;
font-size: 1.35rem;
font-weight: 800;
color: #144d4d;
}
.portal-logo-area i {
color: #1f8f8f;
font-size: 1.6rem;
}
.portal-user-area {
display: flex;
align-items: center;
gap: 20px;
}
.notification-bell {
font-size: 1.35rem;
color: #4a5568;
position: relative;
cursor: pointer;
}
.notification-badge {
position: absolute;
top: -6px;
right: -6px;
background: #ff5e5e;
color: #ffffff;
font-size: 0.65rem;
font-weight: 800;
width: 16px;
height: 16px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
}
.user-profile-bubble {
display: flex;
align-items: center;
gap: 10px;
font-weight: 700;
color: #144d4d;
cursor: pointer;
}
.dropdown-toggle::after {
display: none !important;
}
.user-avatar-initial {
width: 38px;
height: 38px;
background: #1f8f8f;
color: #ffffff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 800;
}
/* Sidebar Layout */
.portal-layout-wrapper {
display: flex;
min-height: calc(100vh - 130px);
}
.portal-sidebar {
width: 280px;
background: #ffffff;
border-right: 1px solid rgba(31, 143, 143, 0.1);
padding: 30px 20px;
display: flex;
flex-direction: column;
gap: 10px;
position: sticky;
top: 70px;
align-self: flex-start;
max-height: calc(100vh - 70px);
overflow-y: auto;
}
.sidebar-link {
display: flex;
align-items: center;
gap: 16px;
padding: 14px 20px;
border-radius: 12px;
color: #4a5568;
font-weight: 700;
text-decoration: none !important;
transition: all 0.2s ease;
}
.sidebar-link:hover {
background: rgba(31, 143, 143, 0.05);
color: #1f8f8f;
}
.sidebar-link.active {
background: #e6f7f7;
color: #1f8f8f;
}
.sidebar-link i {
font-size: 1.2rem;
width: 24px;
color: inherit;
}
.sidebar-promo-card {
background: linear-gradient(135deg, #e6f7f7 0%, #d1f1f1 100%);
border-radius: 16px;
padding: 24px 20px;
text-align: center;
margin-top: auto;
border: 1px solid rgba(31, 143, 143, 0.15);
}
.promo-icon-box {
font-size: 2.8rem;
color: #1f8f8f;
margin-bottom: 12px;
}
/* Content Area */
.portal-content-area {
flex: 1;
padding: 24px 40px;
max-width: 1400px;
min-height: calc(100vh - 130px);
}
/* Breadcrumbs */
.breadcrumb-premium {
background: transparent !important;
padding: 0 !important;
margin-bottom: 16px;
display: flex;
gap: 8px;
font-weight: 600;
font-size: 0.95rem;
}
.breadcrumb-premium a {
color: #1f8f8f;
text-decoration: none;
}
.breadcrumb-premium span {
color: #a0aec0;
}
.breadcrumb-premium .active {
color: #1f8f8f;
}
/* Premium Card */
.premium-card {
background: #ffffff !important;
border: 1px solid rgba(31, 143, 143, 0.1) !important;
border-radius: 20px !important;
padding: 20px 24px !important;
box-shadow: 0 4px 20px 0 rgba(31, 143, 143, 0.03) !important;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
margin-bottom: 16px;
position: relative;
}
.premium-card:hover {
transform: translateY(-2px);
box-shadow: 0 8px 24px 0 rgba(31, 143, 143, 0.06) !important;
}
.card-deco-dots {
position: absolute;
top: 20px;
right: 24px;
color: #d1f1f1;
font-size: 1.1rem;
letter-spacing: 2px;
}
/* Welcome Banner Widget */
.welcome-banner-card {
background: linear-gradient(135deg, #106fcc 0%, #1f8f8f 100%);
border-radius: 20px;
padding: 30px;
color: #ffffff;
position: relative;
overflow: hidden;
box-shadow: 0 8px 24px rgba(31, 143, 143, 0.15);
margin-bottom: 24px;
display: flex;
align-items: center;
justify-content: space-between;
}
.welcome-banner-left {
display: flex;
align-items: center;
gap: 24px;
}
.welcome-banner-avatar {
width: 90px;
height: 90px;
border-radius: 50%;
border: 4px solid rgba(255, 255, 255, 0.25);
object-fit: cover;
}
.welcome-banner-fallback {
width: 90px;
height: 90px;
border-radius: 50%;
border: 4px solid rgba(255, 255, 255, 0.25);
background: rgba(255, 255, 255, 0.2);
display: flex;
align-items: center;
justify-content: center;
font-size: 2.2rem;
font-weight: 800;
}
.welcome-text-title {
font-size: 1.7rem;
font-weight: 800;
margin-bottom: 6px;
}
.welcome-text-subtitle {
color: rgba(255, 255, 255, 0.85);
font-size: 0.95rem;
margin-bottom: 12px;
}
.welcome-metadata {
font-size: 0.85rem;
color: rgba(255, 255, 255, 0.75);
}
.welcome-banner-right-illustration {
font-size: 5.5rem;
color: rgba(255, 255, 255, 0.15);
position: absolute;
right: 30px;
bottom: -10px;
}
/* Profile Summary Widget (Top Right) */
.right-profile-card {
text-align: center;
padding: 24px !important;
}
.right-profile-avatar {
width: 70px;
height: 70px;
border-radius: 50%;
background: #1f8f8f;
color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
font-size: 2rem;
font-weight: 800;
margin: 0 auto 14px;
}
.right-profile-name {
font-size: 1.25rem;
font-weight: 800;
color: #144d4d;
margin-bottom: 4px;
}
.right-profile-email {
font-size: 0.85rem;
color: #718096;
margin-bottom: 16px;
}
.right-profile-edit-link {
color: #1f8f8f;
font-size: 0.85rem;
font-weight: 700;
text-decoration: none !important;
}
/* Quick Link Card Widget */
.quick-card {
background: #ffffff;
border: 1px solid rgba(31, 143, 143, 0.1);
border-radius: 16px;
padding: 20px;
height: 100%;
position: relative;
transition: all 0.25s ease;
box-shadow: 0 4px 15px rgba(31, 143, 143, 0.02);
}
.quick-card:hover {
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(31, 143, 143, 0.06);
}
.quick-icon-box {
width: 44px;
height: 44px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.2rem;
margin-bottom: 16px;
}
.quick-icon-box.purple {
background: #ede9fe;
color: #6d28d9;
}
.quick-icon-box.green {
background: #dcfce7;
color: #15803d;
}
.quick-icon-box.blue {
background: #dbeafe;
color: #1d4ed8;
}
.quick-title {
font-size: 1.05rem;
font-weight: 800;
color: #144d4d;
margin-bottom: 6px;
}
.quick-desc {
font-size: 0.8rem;
color: #718096;
line-height: 1.4;
margin-bottom: 12px;
max-width:200px;
}
.quick-arrow {
position: absolute;
bottom: 16px;
right: 20px;
color: #1f8f8f;
font-size: 1.1rem;
}
/* Progress Card Widget */
.progress-widget-card {
background: #ffffff;
border: 1px solid rgba(31, 143, 143, 0.1);
border-radius: 16px;
padding: 20px;
display: flex;
align-items: center;
gap: 16px;
}
.progress-icon {
width: 42px;
height: 42px;
border-radius: 50%;
background: #e6f7f7;
color: #1f8f8f;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.1rem;
}
.progress-title {
font-size: 0.95rem;
font-weight: 800;
color: #144d4d;
margin-bottom: 2px;
}
.progress-subtitle {
font-size: 0.8rem;
color: #718096;
margin-bottom: 8px;
}
.progress-bar-container {
height: 6px;
background: #edf2f7;
border-radius: 3px;
overflow: hidden;
width: 100%;
}
.progress-bar-fill {
height: 100%;
background: #1f8f8f;
border-radius: 3px;
}
/* Academic Summary Grid */
.acad-grid-item {
display: flex;
align-items: center;
gap: 14px;
padding: 10px 0;
}
.acad-grid-icon {
width: 36px;
height: 36px;
border-radius: 8px;
background: #e6f7f7;
color: #1f8f8f;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.05rem;
}
.acad-grid-label {
font-size: 0.8rem;
color: #718096;
margin-bottom: 2px;
}
.acad-grid-value {
font-size: 0.9rem;
font-weight: 700;
color: #144d4d;
}
/* Finance Overview Card Widget */
.fin-card {
border-radius: 12px;
padding: 14px 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
.fin-card.blue {
background: #eff6ff;
border: 1px solid #bfdbfe;
}
.fin-card.green {
background: #f0fdf4;
border: 1px solid #bbf7d0;
}
.fin-card.red {
background: #fdf2f2;
border: 1px solid #fde8e8;
}
.fin-label {
font-size: 0.75rem;
font-weight: 700;
margin-bottom: 4px;
}
.fin-card.blue .fin-label { color: #1e40af; }
.fin-card.green .fin-label { color: #166534; }
.fin-card.red .fin-label { color: #9b1c1c; }
.fin-amount {
font-size: 1.15rem;
font-weight: 800;
}
.fin-card.blue .fin-amount { color: #1e3a8a; }
.fin-card.green .fin-amount { color: #14532d; }
.fin-card.red .fin-amount { color: #7f1d1d; }
.fin-icon-box {
width: 32px;
height: 32px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.95rem;
}
.fin-card.blue .fin-icon-box { background: #dbeafe; color: #1d4ed8; }
.fin-card.green .fin-icon-box { background: #dcfce7; color: #15803d; }
.fin-card.red .fin-icon-box { background: #fde8e8; color: #de3535; }
/* Upcoming Events */
.event-item {
display: flex;
align-items: flex-start;
gap: 16px;
padding: 12px 0;
border-bottom: 1px solid #edf2f7;
}
.event-item:last-child {
border-bottom: none;
}
.event-date-box {
width: 48px;
height: 48px;
border-radius: 10px;
background: #eff6ff;
border: 1px solid #dbeafe;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
}
.event-day {
font-size: 1.1rem;
font-weight: 800;
color: #1e3a8a;
line-height: 1;
}
.event-month {
font-size: 0.65rem;
font-weight: 700;
color: #64748b;
text-transform: uppercase;
}
.event-info {
flex: 1;
}
.event-title {
font-size: 0.9rem;
font-weight: 700;
color: #144d4d;
margin-bottom: 2px;
}
.event-desc {
font-size: 0.75rem;
color: #718096;
}
.event-time {
font-size: 0.75rem;
font-weight: 700;
color: #4a5568;
margin-top: 4px;
}
/* Header Links styling */
.header-link-action {
color: #1f8f8f;
font-size: 0.8rem;
font-weight: 700;
text-decoration: none !important;
}
.header-link-action:hover {
color: #144d4d;
}
/* Responsive Design overrides */
@media (max-width: 991px) {
.portal-layout-wrapper {
flex-direction: column;
}
.portal-sidebar {
width: 100% !important;
border-right: none !important;
border-bottom: 1px solid rgba(31, 143, 143, 0.1);
padding: 16px 20px;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
gap: 8px;
position: static !important;
max-height: none !important;
}
.sidebar-link {
padding: 10px 16px;
}
.sidebar-promo-card {
display: none !important;
}
.portal-content-area {
padding: 24px !important;
height: auto !important;
min-height: auto !important;
overflow: visible !important;
}
}
@media (max-width: 767px) {
.portal-header {
padding: 0 20px;
}
.portal-sidebar {
padding: 12px 8px;
gap: 4px;
}
.sidebar-link {
padding: 8px 12px;
font-size: 0.85rem;
gap: 8px;
}
.sidebar-link span {
display: none;
}
.sidebar-link i {
font-size: 1.3rem;
margin: 0;
width: auto;
}
}
@media (max-width: 575px) {
.portal-header {
padding: 0 12px;
height: 60px;
}
.portal-logo-area span {
display: none;
}
.premium-card {
padding: 20px !important;
border-radius: 18px !important;
}
}
</style>
<!-- Top Header -->
<div class="portal-header">
<div class="portal-logo-area">
<t t-if="student.campus_id and student.campus_id.logo">
<img t-attf-src="/web/image?model=education.campus&amp;id={{ student.campus_id.id }}&amp;field=logo" style="max-height: 40px; width: auto;" alt="Logo"/>
</t>
<t t-else="">
<img t-attf-src="/web/image?model=res.company&amp;id={{ student.campus_id.company_id.id or student.company_id.id }}&amp;field=logo" style="max-height: 40px; width: auto;" alt="Logo"/>
</t>
</div>
<div class="portal-user-area">
<div class="notification-bell">
<i class="fa fa-bell-o"/>
<div class="notification-badge">3</div>
</div>
<div class="dropdown">
<div class="user-profile-bubble dropdown-toggle" data-toggle="dropdown" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" id="userMenuDropdown" style="cursor: pointer; display: flex; align-items: center; gap: 10px;">
<span><t t-esc="student.full_name"/></span>
<div class="user-avatar-initial">
<t t-esc="student.full_name[0]"/>
</div>
<i class="fa fa-angle-down"/>
</div>
<div class="dropdown-menu dropdown-menu-end shadow-sm" aria-labelledby="userMenuDropdown" style="border-radius: 12px; border: 1px solid rgba(31, 143, 143, 0.1); margin-top: 10px;">
<a class="dropdown-item py-2" href="/my/education/profile" style="font-weight: 600; color: #4a5568;"><i class="fa fa-user-circle mr-2 text-muted"/> My Profile</a>
<a class="dropdown-item py-2" href="/my/education/dashboard" style="font-weight: 600; color: #4a5568;"><i class="fa fa-home mr-2 text-muted"/> Dashboard</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item py-2 text-danger" href="/web/session/logout?redirect=/" style="font-weight: 600;"><i class="fa fa-sign-out mr-2"/> Logout</a>
</div>
</div>
</div>
</div>
<!-- Page Layout Wrapper -->
<div class="portal-layout-wrapper">
<!-- Sidebar -->
<div class="portal-sidebar">
<a href="/my/education/dashboard" class="sidebar-link active">
<i class="fa fa-home"/>
<span>Dashboard</span>
</a>
<a href="/my/education/profile" class="sidebar-link">
<i class="fa fa-user-circle"/>
<span>My Profile</span>
</a>
<a href="/my/education/attendance" class="sidebar-link">
<i class="fa fa-calendar-check-o"/>
<span>Attendance</span>
</a>
<a href="/my/education/finance" class="sidebar-link">
<i class="fa fa-credit-card"/>
<span>Fee &amp; Payments</span>
</a>
<a href="/my/education/finance" class="sidebar-link">
<i class="fa fa-file-text-o"/>
<span>Receipts</span>
</a>
<a href="/my/exams" class="sidebar-link">
<i class="fa fa-pencil-square-o"/>
<span>Exams</span>
</a>
<a href="/my/results" class="sidebar-link">
<i class="fa fa-graduation-cap"/>
<span>Results</span>
</a>
<a href="/my/education/dashboard" class="sidebar-link">
<i class="fa fa-bell-o"/>
<span>Notices</span>
</a>
<a href="/my/education/documents" class="sidebar-link">
<i class="fa fa-download"/>
<span>Downloads</span>
</a>
<a href="#" class="sidebar-link">
<i class="fa fa-cog"/>
<span>Settings</span>
</a>
<a href="/web/session/logout?redirect=/" class="sidebar-link">
<i class="fa fa-sign-out"/>
<span>Logout</span>
</a>
<!-- Sidebar Promo Card -->
<div class="sidebar-promo-card">
<div class="promo-icon-box">
<i class="fa fa-graduation-cap"/>
</div>
<h6 class="font-weight-bold mb-1" style="color: #144d4d;">Keep Learning,</h6>
<h6 class="font-weight-bold mb-1" style="color: #144d4d;">Keep Growing!</h6>
<p class="small mb-0" style="color: #4a5568;">Your journey to success starts here.</p>
</div>
</div>
<!-- Main Content Area -->
<div class="portal-content-area">
<t t-out="0"/>
</div> <!-- End portal-content-area -->
</div> <!-- End portal-layout-wrapper -->
<!-- Bottom Footer Area -->
<div style="height: 60px; background: #ffffff; border-top: 1px solid rgba(31, 143, 143, 0.1); display: flex; align-items: center; justify-content: space-between; padding: 0 40px; font-size: 0.9rem; color: #718096; font-weight: 600;">
<span>© 2026 My Company. All rights reserved.</span>
<span>Powered by <span style="color: #714B67; font-weight: 700;">odoo</span></span>
</div>
</t>
</template>