<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <!-- Custom module kanban : install button (even if already installed) which redirects to website after (fake or not) installation + live preview button -->
    <record model="ir.ui.view" id="theme_view_kanban">
        <field name="name">Themes Kanban</field>
        <field name="model">ir.module.module</field>
        <field name="arch" type="xml">
            <kanban create="false" class="o_theme_kanban" default_order="state,sequence,name">
                <field name="icon"/>
                <field name="name"/>
                <field name="state"/>
                <field name="url"/>
                <field name="image_ids"/>
                <field name="category_id"/>
                <field name="display_name"/>
                <field name="is_installed_on_current_website"/>
                <templates>
                    <div t-name="kanban-box" t-attf-class="o_theme_preview mb16 mt16 #{record.is_installed_on_current_website.raw_value? 'o_theme_installed' : ''}">
                        <t t-set="has_image" t-value="record.image_ids.raw_value.length > 0"/>
                        <t t-set="has_screenshot" t-value="record.image_ids.raw_value.length > 1"/>
                        <t t-set="image_url" t-value="has_image ? 'web/image/' + record.image_ids.raw_value[0] : record.icon.value"/>

                        <div class="o_theme_preview_top bg-white mb4">
                            <div class="o_browser_bar">
                                <i states="installed" t-if="record.is_installed_on_current_website.raw_value" class="text-center ml4 img-circle fa fa-check-circle" role="img" aria-label="Installed" title="Installed"/>
                            </div>
                            <div t-attf-class="bg-gray-lighter #{has_screenshot? 'o_theme_screenshot' : (has_image ? 'o_theme_cover' : 'o_theme_logo')}" t-attf-style="background-image: url(#{image_url});"/>
                            <div t-if="record.is_installed_on_current_website.raw_value" class="o_button_area">
                                <button type="object" name="button_refresh_theme" class="btn btn-primary">Update theme</button>
                                <hr />
                                <button type="object" name="button_remove_theme" class="btn btn-secondary">Remove theme</button>
                            </div>
                            <div t-else="" class="o_button_area">
                                <button type="object" name="button_choose_theme" class="btn btn-primary">Use this theme</button>
                                <hr t-if="record.url.value"/>
                                <a role="button" t-if="record.url.value" class="btn btn-secondary" t-att-href="record.url.value" target="_blank">Live Preview</a>
                            </div>
                        </div>
                        <div class="o_theme_preview_bottom clearfix">
                            <h5 t-if="record.display_name.value" class="text-uppercase float-left">
                                <img class="float-left mr4"  t-att-src="record.icon.value" height="16" width="16" alt="Theme preview"/>
                                <b><t t-esc="record.display_name.value.replace(('Theme'), '').replace(('theme'), '')"/></b>
                            </h5>
                            <h6 t-if="record.category_id.value" class="text-muted float-right">
                                <b><t t-esc="record.category_id.value"/></b>
                            </h6>
                        </div>
                    </div>
                </templates>
            </kanban>
        </field>
    </record>
    <record model="ir.ui.view" id="theme_view_search">
        <field name="name">Themes Search</field>
        <field name="model">ir.module.module</field>
        <field name="priority">50</field>
        <field name="arch" type="xml">
            <search>
                <field name="name" filter_domain="['|', '|', ('summary', 'ilike', self), ('shortdesc', 'ilike', self), ('name', 'ilike', self)]" string="Theme"/>
                <field name="category_id" filter_domain="['|', '|', ('summary', 'ilike', self), ('shortdesc', 'ilike', self), ('category_id', 'ilike', self)]" string="Category"/>
                <group>
                    <filter string="Author" name="author" domain="[]" context="{'group_by':'author'}"/>
                    <filter string="Category" name="category" domain="[]" context="{'group_by':'category_id'}"/>
                </group>
            </search>
        </field>
    </record>

    <!-- themes should be installed through website_theme_install -->
    <record id="base.open_module_tree" model="ir.actions.act_window">
        <field name="domain">['!', ('name', '=like', 'theme_%')]</field>
    </record>

    <!-- Actions to list themes with custom kanban (launched on module installation) -->
    <record id="theme_install_kanban_action" model="ir.actions.act_window">
        <field name="name">Choose a theme for your website</field>
        <field name="res_model">ir.module.module</field>
        <field name="view_mode">kanban</field>
        <field name="view_id" ref="theme_view_kanban"/>
        <field name="search_view_id" ref="theme_view_search"/>
        <field name="domain" eval="[
            ('category_id', 'not in', [ref('base.module_category_hidden', False), ref('base.module_category_theme_hidden', False)]),
            '|', ('category_id', '=', ref('base.module_category_theme', False)), ('category_id.parent_id', '=', ref('base.module_category_theme', False))
        ]"/>
    </record>

    <record id="theme_install_todo_action" model="ir.actions.server">
        <field name="name">Config: Choose Your Theme</field>
        <field name="model_id" ref="model_ir_module_module"/>
        <field name="state">code</field>
        <field name="code">
model.update_list()
action = {
    'type': 'ir.actions.act_url',
    'url': '/web?reload#action=website_theme_install.theme_install_kanban_action', # the ?reload option is there to fool the webclient into thinking it is a different location and so to force a reload
    'target': 'self',
}
        </field>
    </record>
    <record id="theme_install_todo" model="ir.actions.todo">
        <field name="action_id" ref="theme_install_todo_action"/>
        <field name="sequence">0</field>
    </record>

    <!-- Add link to theme install in default customize modal -->
    <template id="customize_modal" inherit_id="website.theme_customize" priority="99">
        <xpath expr="//div" position="replace">
            <div>
                Please <a href="/web#action=website_theme_install.theme_install_kanban_action">install a theme</a> to customize your website.
            </div>
        </xpath>
    </template>

    <record id="view_website_form_view_themes_modal" model="ir.ui.view">
        <field name="name">website.form</field>
        <field name="model">website</field>
        <field name="inherit_id" ref="website.view_website_form"/>
        <field name="mode">primary</field>
        <field name="arch" type="xml">
            <xpath expr="//form" position='inside'>
                <footer>
                    <button name="create_and_redirect_to_theme" type="object" string="Choose a theme" class="ml-2 btn btn-primary" icon="fa-paint-brush"/>
                    <button string="Cancel" class="btn btn-default" special="cancel"/>
                </footer>
            </xpath>
        </field>
    </record>

    <!-- ONBOARDING -->
    <template id="onboarding_website_theme_step">
        <t t-call="base.onboarding_step">
            <t t-set="title">Website Theme</t>
            <t t-set="description">Select a theme for your website.</t>
            <t t-set="btn_text">Let's start!</t>
            <t t-set="method" t-value="'action_open_website_theme_selector'" />
            <t t-set="model" t-value="'res.company'" />
            <t t-set="done" t-value="company.website_theme_onboarding_done" />
        </t>
    </template>

</odoo>
