<odoo>
    <template id="alerts" inherit_id="runbot_merge.alerts">
        <xpath expr="//div[@id='alerts']">
            <t t-set="fpcron" t-value="env(user=1).ref('forwardport.port_forward')"/>
            <div t-if="not fpcron.active" class="alert alert-warning col-12" role="alert">
                Forward-port is disabled, merged pull requests will not be forward-ported.
            </div>
        </xpath>
        <!-- key block (hopefully) -->
        <xpath expr="//div[@id='alerts']" position="inside">
            <t t-if="env['runbot_merge.pull_requests'].check_access_rights('read', False)">
                <t t-set="outstanding" t-value="env['runbot_merge.pull_requests'].search_count([
                    ('source_id', '!=', False),
                    ('state', 'not in', ['merged', 'closed']),
                    ('source_id.merge_date', '&lt;', datetime.datetime.now() - relativedelta(days=3)),
                ])"/>
                <div t-if="outstanding != 0" class="alert col-md-12 alert-warning mb-0">
                    <a href="/forwardport/outstanding">
                        <t t-esc="outstanding"/> outstanding forward-ports
                    </a>
                </div>
            </t>
        </xpath>
    </template>

    <template id="pr_background">
        <t t-if="p.state == 'merged'">bg-success</t>
        <t t-elif="p.state == 'closed'">bg-light</t>
        <t t-elif="p.state == 'error'">bg-danger</t>
        <t t-else="">bg-warning</t>
    </template>

    <record id="forwardport.outstanding_fp" model="website.page">
        <field name="name">Outstanding forward ports</field>
        <field name="type">qweb</field>
        <field name="url">/forwardport/outstanding</field>
        <field name="website_indexed" eval="False"/>
        <field name="is_published">True</field>
        <field name="key">forwardport.outstanding_fp</field>
        <field name="arch" type="xml">
            <t name="Outstanding forward ports" t-name="forwardport.outstanding_fp">
                <t t-call="website.layout">
                    <t t-set="hof" t-value="env['runbot_merge.pull_requests']._hall_of_shame()"/>
                    <div id="wrap" class="oe_structure oe_empty"><div class="container-fluid">
                        <ul class="alert bg-light list-inline">
                            <span t-foreach="hof.reviewers" t-as="count" class="list-inline-item">
                                <a t-attf-href="?reviewer={{count[0].id}}"
                                   t-field="count[0].display_name"
                                   t-att-title="count[1]"
                                />
                            </span>
                        </ul>
                        <h1>List of pull requests with outstanding forward ports</h1>
                        <t t-set="reviewer" t-value="env['res.partner'].browse(int(request.params.get('reviewer') or 0))"/>
                        <form method="get" action="" id="reset-filter"/>
                        <h2 t-if="reviewer" class="text-muted">
                            merged by <span t-field="reviewer.display_name" t-attf-title="@{{reviewer.github_login}}"/>
                            <button form="reset-filter" type="submit"
                                    name="reviewer" value=""
                                    title="See All" class="btn fa fa-times"/>
                        </h2>
                        <dl><t t-foreach="hof.outstanding" t-as="x">
                            <t t-set="source" t-value="x[0]"/>
                            <t t-if="not reviewer or source.reviewed_by == reviewer">
                                <dt>
                                    <a t-att-href="source.url"><span t-field="source.display_name"/></a>
                                    by <span t-field="source.author.display_name"
                                             t-attf-title="@{{source.author.github_login}}"/>
                                    merged <span t-field="source.merge_date"
                                                 t-options="{'widget': 'relative'}"
                                                 t-att-title="source.merge_date"/>
                                    <t t-if="not reviewer">
                                        by <span t-field="source.reviewed_by.display_name"
                                                 t-attf-title="@{{source.reviewed_by.github_login}}"/>
                                    </t>
                                </dt>
                                <dd>
                                    Outstanding forward-ports:
                                    <ul>
                                        <li t-foreach="x.prs" t-as="p">
                                            <a t-att-href="p.url"><span t-field="p.display_name"/></a>
                                            (<span t-field="p.state"/>)
                                            targeting <span t-field="p.target.name"/>
                                        </li>
                                    </ul>
                                </dd>
                            </t>
                        </t></dl>
                    </div></div>
                </t>
            </t>
        </field>
    </record>

    <template id="view_pull_request" inherit_id="runbot_merge.view_pull_request">
        <xpath expr="//dl[hasclass('runbot-merge-fields')]" position="inside">
            <t t-if="pr.state == 'merged'">
                <dt>merged</dt>
                <dd>
                    <span t-field="pr.merge_date" t-options="{'widget': 'relative'}"
                          t-att-title="pr.merge_date"/>
                    by <span t-field="pr.reviewed_by.display_name"
                             t-attf-title="@{{pr.reviewed_by.github_login}}"/>
                </dd>
            </t>
            <t t-if="pr.source_id">
                <dt>forward-port of</dt>
                <dd>
                    <a t-att-href="pr.source_id.url">
                        <span t-field="pr.source_id.display_name"/>
                    </a>
                    <span t-if="not pr.parent_id"
                          class="badge text-bg-danger user-select-none"
                          title="A detached PR behaves like a non-forward-port, it has to be approved via the mergebot, this is usually caused by the forward-port having been in conflict or updated.">
                        DETACHED (<span t-out="pr.detach_reason" style="white-space: pre-wrap;"/>)
                    </span>
                </dd>
            </t>
            <t t-if="pr.forwardport_ids">
                <dt>forward-ports</dt>
                <dd><ul>
                    <t t-foreach="pr.forwardport_ids" t-as="p">
                        <t t-set="bgsignal"><t t-call="forwardport.pr_background"/></t>
                        <li t-att-class="bgsignal">
                            <a t-att-href="p.url"><span t-field="p.display_name"/></a>
                            targeting <span t-field="p.target.name"/>
                        </li>
                    </t>
                </ul></dd>
            </t>
        </xpath>
    </template>

    <record model="ir.ui.view" id="project">
        <field name="name">Show forwardport project fields</field>
        <field name="inherit_id" ref="runbot_merge.runbot_merge_form_project"/>
        <field name="model">runbot_merge.project</field>
        <field name="arch" type="xml">
            <xpath expr="//sheet/group[2]" position="after">
                <group string="Forwardport Configuration">
                    <group>
                        <field string="Token" name="fp_github_token"/>
                    </group>
                    <group>
                        <field string="Bot Name" name="fp_github_name"/>
                        <field string="Bot Email" name="fp_github_email"/>
                    </group>
                </group>
            </xpath>
            <xpath expr="//field[@name='repo_ids']/tree" position="inside">
                <field string="FP remote" name="fp_remote_target"
                       help="Repository where forward port branches will be created"
                />
            </xpath>

            <xpath expr="//field[@name='branch_ids']/tree" position="inside">
                <field name="fp_target" string="FP to"
                       help="This branch will be forward-ported to (from lower ones)"
                />
            </xpath>
        </field>
    </record>

    <record model="ir.ui.view" id="repository">
        <field name="name">Show forwardport repository fields</field>
        <field name="inherit_id" ref="runbot_merge.form_repository"/>
        <field name="model">runbot_merge.repository</field>
        <field name="arch" type="xml">
            <field name="branch_filter" position="after">
                <field string="FP remote" name="fp_remote_target"
                       help="Repository where forward port branches will be created"/>
            </field>
        </field>
    </record>

    <record model="ir.ui.view" id="pr">
        <field name="name">Show forwardport PR fields</field>
        <field name="inherit_id" ref="runbot_merge.runbot_merge_form_prs"/>
        <field name="model">runbot_merge.pull_requests</field>
        <field name="arch" type="xml">
            <xpath expr="//field[@name='state']" position="after">
                <field name="merge_date" attrs="{'invisible': [('state', '!=', 'merged')]}"/>
            </xpath>
            <xpath expr="//sheet/group[2]" position="after">
                <separator string="Forward Port" attrs="{'invisible': [('source_id', '=', False)]}"/>
                <group attrs="{'invisible': [('source_id', '!=', False)]}">
                    <group>
                        <field string="Policy" name="fw_policy"/>
                    </group>
                </group>
                <group attrs="{'invisible': [('source_id', '=', False)]}">
                    <group>
                        <field string="Original PR" name="source_id"/>
                    </group>
                    <group attrs="{'invisible': [('parent_id', '=', False)]}">
                        <field name="parent_id"/>
                    </group>
                    <group colspan="4" attrs="{'invisible': [('parent_id', '!=', False)]}">
                        <field string="Detached because" name="detach_reason" readonly="1"/>
                    </group>
                    <group>
                        <field string="Forward ported up to" name="limit_id"/>
                    </group>
                </group>
            </xpath>
        </field>
    </record>

</odoo>