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