xref: /dokuwiki/inc/Ui/PageConflict.php (revision c29600d0904c807516924fcc91be645b0af2079a)
1f1dcc217SSatoshi Sahara<?php
2f1dcc217SSatoshi Sahara
3f1dcc217SSatoshi Saharanamespace dokuwiki\Ui;
4f1dcc217SSatoshi Sahara
5f1dcc217SSatoshi Saharause dokuwiki\Extension\Event;
6f1dcc217SSatoshi Saharause dokuwiki\Form\Form;
7f1dcc217SSatoshi Sahara
8f1dcc217SSatoshi Sahara/**
9f1dcc217SSatoshi Sahara * DokuWiki Page Conflict Interface
10f1dcc217SSatoshi Sahara *
11f1dcc217SSatoshi Sahara * @package dokuwiki\Ui
12f1dcc217SSatoshi Sahara */
13f1dcc217SSatoshi Saharaclass PageConflict extends Ui
14f1dcc217SSatoshi Sahara{
15f1dcc217SSatoshi Sahara    protected $text;
16f1dcc217SSatoshi Sahara    protected $summary;
17f1dcc217SSatoshi Sahara
18f1dcc217SSatoshi Sahara    /**
19f1dcc217SSatoshi Sahara     * PageConflict Ui constructor
20f1dcc217SSatoshi Sahara     *
21f1dcc217SSatoshi Sahara     * @param string $text     wiki text
22f1dcc217SSatoshi Sahara     * @param string $summary  edit summary
23f1dcc217SSatoshi Sahara    */
24f1dcc217SSatoshi Sahara    public function __construct($text = '', $summary = '')
25f1dcc217SSatoshi Sahara    {
26f1dcc217SSatoshi Sahara        $this->text    = $text;
27f1dcc217SSatoshi Sahara        $this->summary = $summary;
28f1dcc217SSatoshi Sahara    }
29f1dcc217SSatoshi Sahara
30f1dcc217SSatoshi Sahara    /**
31f1dcc217SSatoshi Sahara     * Show conflict form to ask whether save anyway or cancel the page edits
32f1dcc217SSatoshi Sahara     *
33f1dcc217SSatoshi Sahara     * @author   Andreas Gohr <andi@splitbrain.org>
34f1dcc217SSatoshi Sahara     *
35f1dcc217SSatoshi Sahara     * @triggers HTML_CONFLICTFORM_OUTPUT
36f1dcc217SSatoshi Sahara     * @return void
37f1dcc217SSatoshi Sahara     */
38f1dcc217SSatoshi Sahara    public function show()
39f1dcc217SSatoshi Sahara    {
40f1dcc217SSatoshi Sahara        global $ID;
41f1dcc217SSatoshi Sahara        global $lang;
42f1dcc217SSatoshi Sahara
43f1dcc217SSatoshi Sahara        // print intro
44f1dcc217SSatoshi Sahara        print p_locale_xhtml('conflict');
45f1dcc217SSatoshi Sahara
46f1dcc217SSatoshi Sahara        // create the form
47f1dcc217SSatoshi Sahara        $form = new Form(['id' => 'dw__editform']);
48f1dcc217SSatoshi Sahara        $form->addTagOpen('div')->addClass('no');
49f1dcc217SSatoshi Sahara        $form->setHiddenField('id', $ID);
50f1dcc217SSatoshi Sahara        $form->setHiddenField('wikitext', $this->text);
51f1dcc217SSatoshi Sahara        $form->setHiddenField('summary', $this->summary);
52f1dcc217SSatoshi Sahara
53f1dcc217SSatoshi Sahara        $form->addButton('do[save]', $lang['btn_save'] )->attrs(['type' => 'submit', 'accesskey' => 's']);
54f1dcc217SSatoshi Sahara        $form->addButton('do[cancel]', $lang['btn_cancel'] )->attrs(['type' => 'submit']);
55f1dcc217SSatoshi Sahara        $form->addTagClose('div');
56f1dcc217SSatoshi Sahara
57*c29600d0SSatoshi Sahara        // emit HTML_CONFLICTFORM_OUTPUT event
58*c29600d0SSatoshi Sahara        Event::createAndTrigger('HTML_CONFLICTFORM_OUTPUT', $form, null, false);
59*c29600d0SSatoshi Sahara        print $form->toHTML();
60f1dcc217SSatoshi Sahara
61f1dcc217SSatoshi Sahara        print '<br /><br /><br /><br />'.DOKU_LF;
62f1dcc217SSatoshi Sahara
63f1dcc217SSatoshi Sahara        (new Diff($this->text, false))->show();
64f1dcc217SSatoshi Sahara        print DOKU_LF;
65f1dcc217SSatoshi Sahara    }
66f1dcc217SSatoshi Sahara
67f1dcc217SSatoshi Sahara}
68