182 lines
11 KiB
XML
182 lines
11 KiB
XML
<odoo>
|
|
<template id="custom_login_layout" inherit_id="web.login_layout" name="Custom Dine360 Login Layout" priority="99">
|
|
<xpath expr="t" position="replace">
|
|
<t t-call="web.frontend_layout">
|
|
<t t-set="html_data" t-value="{'style': 'height: 100%;'}"/>
|
|
<t t-set="body_classname" t-value="'o_custom_login_body'"/>
|
|
<t t-set="no_header" t-value="True"/>
|
|
<t t-set="no_footer" t-value="True"/>
|
|
<t t-set="title">Dine360 - Smart Restaurant Management</t>
|
|
<t t-set="head">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
|
<link rel="stylesheet" type="text/css" href="/dine360_dashboard/static/src/css/login_style.css?v=3.5"/>
|
|
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet"/>
|
|
<script type="text/javascript">
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
var btn = document.getElementById('togglePasswordBtn');
|
|
var pwd = document.getElementById('password');
|
|
var icon = document.getElementById('togglePasswordIcon');
|
|
if (btn && pwd && icon) {
|
|
btn.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
if (pwd.type === 'password') {
|
|
pwd.type = 'text';
|
|
icon.classList.remove('fa-eye-slash');
|
|
icon.classList.add('fa-eye');
|
|
} else {
|
|
pwd.type = 'password';
|
|
icon.classList.remove('fa-eye');
|
|
icon.classList.add('fa-eye-slash');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
</script>
|
|
</t>
|
|
|
|
<!-- Top Navbar Header (Div container to prevent header resets) -->
|
|
<div class="o_login_top_header">
|
|
<div class="o_top_header_left">
|
|
<div class="o_top_brand">
|
|
<div class="o_top_brand_icon">
|
|
<i class="fa fa-cutlery"/>
|
|
</div>
|
|
<span class="o_top_brand_name">Dine<span class="o_top_brand_accent">360</span></span>
|
|
</div>
|
|
<div class="o_top_header_divider"/>
|
|
<span class="o_top_header_subtitle">Smart Restaurant Management</span>
|
|
</div>
|
|
<div class="o_top_header_right">
|
|
<div class="o_lang_dropdown">
|
|
<button class="o_lang_btn" type="button">
|
|
<i class="fa fa-globe"/>
|
|
<span>English</span>
|
|
<i class="fa fa-angle-down"/>
|
|
</button>
|
|
</div>
|
|
<a href="mailto:support@dine360.com" class="o_help_pill_btn">
|
|
<i class="fa fa-headphones"/>
|
|
<span>Need Help?</span>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="o_login_main_wrapper">
|
|
<!-- Subtle background decorative curved swoosh SVG -->
|
|
<div class="o_curved_red_accent">
|
|
<svg viewBox="0 0 600 600" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M600 50C450 120 320 280 400 480C440 580 520 620 600 650" stroke="#dc2626" stroke-width="1.2" stroke-opacity="0.3" fill="none"/>
|
|
<path d="M600 120C480 180 370 320 440 500C475 585 540 620 600 640" stroke="#fca5a5" stroke-width="0.8" stroke-opacity="0.25" fill="none"/>
|
|
</svg>
|
|
</div>
|
|
|
|
<!-- Left Side: Culinary Branding Hero Showcase -->
|
|
<div class="o_login_left_side">
|
|
<div class="o_login_hero_content">
|
|
<div class="o_hero_badge">
|
|
<span class="o_hero_badge_dot"/>
|
|
<span>NEXT-GEN RESTAURANT SUITE</span>
|
|
</div>
|
|
<h1 class="o_hero_title">
|
|
Elevate Your Dining<br/>
|
|
<span class="o_title_accent">Experience</span>
|
|
</h1>
|
|
<p class="o_hero_subtitle">Unified Kitchen Display System (KDS), Interactive Tables, Reservations, and Online Orders — all in one modern platform.</p>
|
|
|
|
<div class="o_hero_features">
|
|
<div class="o_hero_feature_item">
|
|
<div class="o_feature_icon"><i class="fa fa-cutlery"/></div>
|
|
<div class="o_feature_text">
|
|
<h6>Interactive Floor Plans</h6>
|
|
<p>Real-time visual table booking & occupancy tracking.</p>
|
|
</div>
|
|
</div>
|
|
<div class="o_hero_feature_item">
|
|
<div class="o_feature_icon">
|
|
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
|
|
<path d="M12 2C9.5 2 7.4 3.7 6.8 6c-.4-.1-.8-.1-1.2-.1C3 5.9 1 7.9 1 10.5 1 12.8 2.6 14.8 4.8 15.1L5 20h14l.2-4.9c2.2-.3 3.8-2.3 3.8-4.6 0-2.6-2-4.6-4.6-4.6-.4 0-.8 0-1.2.1C16.6 3.7 14.5 2 12 2zm-5 17h10v1H7v-1z"/>
|
|
</svg>
|
|
</div>
|
|
<div class="o_feature_text">
|
|
<h6>Real-Time Kitchen Display</h6>
|
|
<p>Automated order routing, prep times, and status syncing.</p>
|
|
</div>
|
|
</div>
|
|
<div class="o_hero_feature_item">
|
|
<div class="o_feature_icon"><i class="fa fa-mobile"/></div>
|
|
<div class="o_feature_text">
|
|
<h6>Seamless QR & Online Orders</h6>
|
|
<p>Zero-friction customer self-ordering and delivery dispatch.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Right Side: Clean White Floating Login Card -->
|
|
<div class="o_login_right_side">
|
|
<div class="o_login_card">
|
|
<div class="o_login_card_logo">
|
|
<div class="o_brand_icon">
|
|
<i class="fa fa-cutlery"/>
|
|
</div>
|
|
<span class="o_brand_name">Dine<span class="o_brand_accent">360</span></span>
|
|
</div>
|
|
|
|
<div class="o_login_header_text text-center">
|
|
<h3>Welcome Back</h3>
|
|
<p>Sign in to access your restaurant operations dashboard</p>
|
|
</div>
|
|
|
|
<div class="o_login_form_container">
|
|
<t t-out="0"/>
|
|
</div>
|
|
|
|
<div class="o_login_footer text-center mt-3">
|
|
<a href="/web/database/selector" t-if="not disable_database_manager" class="o_login_link small text-decoration-none">
|
|
<i class="fa fa-database me-1"/>Switch Database
|
|
</a>
|
|
</div>
|
|
|
|
<div class="o_login_brand_footer text-center mt-3">
|
|
<p>Powered by <span class="o_powered_brand">Dine360</span> Cloud ERP</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</xpath>
|
|
</template>
|
|
|
|
<!-- Custom Login Form Fields Inheritance (Icons + Eye Toggle + Arrow Button) -->
|
|
<template id="custom_login_form_fields" inherit_id="web.login" name="Custom Dine360 Login Fields" priority="99">
|
|
<xpath expr="//div[hasclass('field-login')]" position="replace">
|
|
<div class="mb-3 field-login">
|
|
<label for="login" class="form-label">Email</label>
|
|
<div class="o_input_icon_wrap">
|
|
<i class="fa fa-envelope-o o_input_icon"/>
|
|
<input type="text" placeholder="Email" name="login" t-att-value="login" id="login" class="form-control" required="required" autocomplete="username" autofocus="autofocus" autocapitalize="off"/>
|
|
</div>
|
|
</div>
|
|
</xpath>
|
|
<xpath expr="//div[hasclass('mb-3')][label[@for='password']]" position="replace">
|
|
<div class="mb-3 field-password">
|
|
<label for="password" class="form-label">Password</label>
|
|
<div class="o_input_icon_wrap">
|
|
<i class="fa fa-lock o_input_icon"/>
|
|
<input type="password" placeholder="Password" name="password" id="password" class="form-control" required="required" autocomplete="current-password" t-att-autofocus="'autofocus' if login else None" maxlength="4096"/>
|
|
<button type="button" class="btn o_toggle_password_btn" id="togglePasswordBtn" tabindex="-1">
|
|
<i class="fa fa-eye-slash" id="togglePasswordIcon"/>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</xpath>
|
|
<xpath expr="//button[@type='submit']" position="replace">
|
|
<button type="submit" class="btn btn-primary o_login_submit_btn">
|
|
<span>Log In</span>
|
|
<i class="fa fa-arrow-right ms-2"/>
|
|
</button>
|
|
</xpath>
|
|
</template>
|
|
</odoo>
|