Files
project_v19/custom_subscriptions/static/src/xml/app_selector.xml
T

65 lines
2.9 KiB
XML
Raw Normal View History

2026-07-01 14:41:49 +07:00
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="custom_subscriptions.AppSelectorTemplate" owl="1">
<div class="app-selector-wrapper">
<div class="app-selector-header">
<h1>Choose your Apps</h1>
<p>Free instant access. No credit card required.</p>
</div>
<div class="app-selector-content">
<!-- App Grid -->
<div class="app-grid">
<t t-if="state.loading">
<div class="text-center p-5 text-muted">Loading apps...</div>
</t>
<t t-else="">
<t t-foreach="Object.keys(state.categories)" t-as="category" t-key="category">
<div class="category-section">
<h2 class="category-title" t-esc="category"/>
<div class="app-cards-row">
<t t-foreach="state.categories[category]" t-as="app" t-key="app.id">
<div class="app-card"
t-att-class="isSelected(app.id) ? 'selected' : ''"
t-on-click="() => this.toggleSelection(app.id)">
<div class="card-check">
<i class="fa fa-check"/>
</div>
<div class="card-body">
<img t-att-src="app.icon" class="app-icon" alt="" onerror="this.src='/web/static/img/placeholder.png'"/>
<div class="app-name" t-esc="app.name"/>
<div class="app-desc" t-esc="app.shortdesc"/>
</div>
</div>
</t>
</div>
</div>
</t>
</t>
</div>
<!-- Sidebar -->
<div class="app-sidebar">
<div class="sidebar-card">
<h3><t t-esc="state.selectedIds.length"/> Apps selected</h3>
<div class="trial-info">
<p><strong>Community Edition</strong></p>
<p>Install modules instantly.</p>
<p>No credit card required.</p>
</div>
<button class="btn-continue" t-on-click="installApps" t-att-disabled="state.selectedIds.length === 0">
Continue
</button>
</div>
</div>
</div>
</div>
</t>
</templates>