A proper shared-device PIN kiosk for clients who don't want NFC: photo-tile grid (+search) -> tap -> PIN (or first-use create) -> optional master-gated selfie -> clock, in the NFC kiosk's dark glass + brand-gradient style. Built as an Odoo 19 Interaction; new pin_kiosk.scss (scoped); reworked clock_kiosk.py (search +avatar/has_pin, verify_pin needs_setup, set_pin, clock via kiosk location). Drops the redundant kiosk_pin_required (PIN always required); relabels the company kiosk location; adds a PIN-kiosk app icon. Opt-in via enable_kiosk (off by default). HttpCase tests added. Bump 19.0.4.0.0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
41 lines
1.8 KiB
XML
41 lines
1.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
|
|
<template id="kiosk_page" name="Fusion Clock PIN Kiosk">
|
|
<t t-call="web.frontend_layout">
|
|
<t t-set="no_header" t-value="True"/>
|
|
<t t-set="no_footer" t-value="True"/>
|
|
<t t-set="head">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
|
|
<!-- Kiosk lockdown: hide Odoo's frontend->backend nav so a kiosk
|
|
user can't reach the backend. Page-scoped. -->
|
|
<style>.o_frontend_to_backend_nav { display: none !important; }</style>
|
|
</t>
|
|
|
|
<div id="pin_kiosk_root" class="pin-kiosk"
|
|
t-att-data-location="location_name"
|
|
t-att-data-sounds="'1' if sounds_enabled else '0'"
|
|
t-att-data-photo="'1' if photo_required else '0'">
|
|
|
|
<img t-if="company_logo_url"
|
|
id="pin_kiosk_logo" class="pin-kiosk__logo"
|
|
t-att-src="company_logo_url" crossorigin="anonymous" alt="Company logo"/>
|
|
|
|
<div class="pin-kiosk__clock" id="pin_kiosk_clock">--:--</div>
|
|
<div class="pin-kiosk__date" id="pin_kiosk_date">—</div>
|
|
|
|
<input type="text" class="pin-kiosk__search" id="pin_kiosk_search"
|
|
placeholder="Search your name…" autocomplete="off"/>
|
|
<div class="pin-kiosk__grid" id="pin_kiosk_grid"></div>
|
|
|
|
<div class="pin-kiosk__location" t-esc="location_name"/>
|
|
<div class="pin-kiosk__settings" id="pin_kiosk_settings" title="Settings">⚙</div>
|
|
|
|
<!-- JS swaps overlays (PIN pad / setup / photo / result) in here -->
|
|
<div id="pin_state_container"></div>
|
|
</div>
|
|
</t>
|
|
</template>
|
|
|
|
</odoo>
|