Files
Odoo-Modules/fusion_clock/views/kiosk_templates.xml
gsinghpal a5ec79013a feat(fusion_clock): PIN kiosk — polished photo-tile + PIN clock (opt-in)
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>
2026-05-31 21:25:32 -04:00

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>