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