1b370ebcdSSatoshi Sahara<?php 2b370ebcdSSatoshi Sahara 3b370ebcdSSatoshi Saharanamespace dokuwiki\Ui; 4b370ebcdSSatoshi Sahara 5b370ebcdSSatoshi Saharause dokuwiki\ChangeLog\PageChangeLog; 6b370ebcdSSatoshi Saharause dokuwiki\Form\Form; 7b370ebcdSSatoshi Sahara 8b370ebcdSSatoshi Sahara/** 9b370ebcdSSatoshi Sahara * DokuWiki PageRevisions Interface 10b370ebcdSSatoshi Sahara * 11b370ebcdSSatoshi Sahara * @package dokuwiki\Ui 12b370ebcdSSatoshi Sahara */ 13ae5d2354SSatoshi Saharaclass PageRevisions extends Revisions 14b370ebcdSSatoshi Sahara{ 15d9c75b22SSatoshi Sahara /* @var PageChangeLog */ 16d9c75b22SSatoshi Sahara protected $changelog; 17d9c75b22SSatoshi Sahara 18b370ebcdSSatoshi Sahara /** 19b370ebcdSSatoshi Sahara * PageRevisions Ui constructor 20b370ebcdSSatoshi Sahara * 21b370ebcdSSatoshi Sahara * @param string $id id of page 22b370ebcdSSatoshi Sahara */ 2392440599SSatoshi Sahara public function __construct($id = null) 24b370ebcdSSatoshi Sahara { 253244a325SSatoshi Sahara global $INFO; 2687922387SSatoshi Sahara if (!isset($id)) $id = $INFO['id']; 27ae5d2354SSatoshi Sahara parent::__construct($id); 28b370ebcdSSatoshi Sahara } 29b370ebcdSSatoshi Sahara 30e71e09a6SSatoshi Sahara /** @inheritdoc */ 31e71e09a6SSatoshi Sahara protected function setChangeLog() 32e71e09a6SSatoshi Sahara { 33e71e09a6SSatoshi Sahara $this->changelog = new PageChangeLog($this->id); 34e71e09a6SSatoshi Sahara } 35e71e09a6SSatoshi Sahara 36b370ebcdSSatoshi Sahara /** 37b370ebcdSSatoshi Sahara * Display list of old revisions of the page 38b370ebcdSSatoshi Sahara * 39b370ebcdSSatoshi Sahara * @author Andreas Gohr <andi@splitbrain.org> 40b370ebcdSSatoshi Sahara * @author Ben Coburn <btcoburn@silicodon.net> 41b370ebcdSSatoshi Sahara * @author Kate Arzamastseva <pshns@ukr.net> 42b370ebcdSSatoshi Sahara * @author Satoshi Sahara <sahara.satoshi@gmail.com> 43b370ebcdSSatoshi Sahara * 44b370ebcdSSatoshi Sahara * @param int $first skip the first n changelog lines 45b370ebcdSSatoshi Sahara * @return void 46b370ebcdSSatoshi Sahara */ 47b370ebcdSSatoshi Sahara public function show($first = 0) 48b370ebcdSSatoshi Sahara { 493c18288cSSatoshi Sahara global $lang, $REV; 50*ad088cbcSSatoshi Sahara $changelog =& $this->changelog; 51b370ebcdSSatoshi Sahara 52b370ebcdSSatoshi Sahara // get revisions, and set correct pagenation parameters (first, hasNext) 53b370ebcdSSatoshi Sahara if ($first === null) $first = 0; 54b370ebcdSSatoshi Sahara $hasNext = false; 55b370ebcdSSatoshi Sahara $revisions = $this->getRevisions($first, $hasNext); 56b370ebcdSSatoshi Sahara 57b370ebcdSSatoshi Sahara // print intro 58b370ebcdSSatoshi Sahara print p_locale_xhtml('revisions'); 59b370ebcdSSatoshi Sahara 60b370ebcdSSatoshi Sahara // create the form 61b370ebcdSSatoshi Sahara $form = new Form([ 62b370ebcdSSatoshi Sahara 'id' => 'page__revisions', 63b370ebcdSSatoshi Sahara 'class' => 'changes', 64b370ebcdSSatoshi Sahara ]); 65b370ebcdSSatoshi Sahara $form->addTagOpen('div')->addClass('no'); 66b370ebcdSSatoshi Sahara 67b370ebcdSSatoshi Sahara // start listing 68b370ebcdSSatoshi Sahara $form->addTagOpen('ul'); 69b370ebcdSSatoshi Sahara foreach ($revisions as $info) { 70b370ebcdSSatoshi Sahara $rev = $info['date']; 71b370ebcdSSatoshi Sahara $class = ($info['type'] === DOKU_CHANGE_TYPE_MINOR_EDIT) ? 'minor' : ''; 72b370ebcdSSatoshi Sahara $form->addTagOpen('li')->addClass($class); 73b370ebcdSSatoshi Sahara $form->addTagOpen('div')->addClass('li'); 74b370ebcdSSatoshi Sahara 753c18288cSSatoshi Sahara if (isset($info['current'])) { 763c18288cSSatoshi Sahara $form->addCheckbox('rev2[]')->val('current'); 773c18288cSSatoshi Sahara } elseif ($rev == $REV) { 783c18288cSSatoshi Sahara $form->addCheckbox('rev2[]')->val($rev)->attr('checked','checked'); 793c18288cSSatoshi Sahara } elseif (page_exists($this->id, $rev)) { 80b370ebcdSSatoshi Sahara $form->addCheckbox('rev2[]')->val($rev); 81b370ebcdSSatoshi Sahara } else { 82b370ebcdSSatoshi Sahara $form->addCheckbox('')->val($rev)->attr('disabled','disabled'); 83b370ebcdSSatoshi Sahara } 84b370ebcdSSatoshi Sahara $form->addHTML(' '); 85b370ebcdSSatoshi Sahara 86b370ebcdSSatoshi Sahara $objRevInfo = $this->getObjRevInfo($info); 87b370ebcdSSatoshi Sahara $html = implode(' ', [ 88b370ebcdSSatoshi Sahara $objRevInfo->editDate(), // edit date and time 89b370ebcdSSatoshi Sahara $objRevInfo->difflink(), // link to diffview icon 90b370ebcdSSatoshi Sahara $objRevInfo->itemName(), // name of page or media 91b370ebcdSSatoshi Sahara $objRevInfo->editSummary(), // edit summary 92b370ebcdSSatoshi Sahara $objRevInfo->editor(), // editor info 93b370ebcdSSatoshi Sahara $objRevInfo->sizechange(), // size change indicator 94b370ebcdSSatoshi Sahara $objRevInfo->currentIndicator(), // current indicator (only when k=1) 95b370ebcdSSatoshi Sahara ]); 96b370ebcdSSatoshi Sahara $form->addHTML($html); 97b370ebcdSSatoshi Sahara $form->addTagClose('div'); 98b370ebcdSSatoshi Sahara $form->addTagClose('li'); 99b370ebcdSSatoshi Sahara } 100b370ebcdSSatoshi Sahara $form->addTagClose('ul'); // end of revision list 101b370ebcdSSatoshi Sahara 102b370ebcdSSatoshi Sahara // show button for diff view 103b370ebcdSSatoshi Sahara $form->addButton('do[diff]', $lang['diff2'])->attr('type', 'submit'); 104b370ebcdSSatoshi Sahara 105b370ebcdSSatoshi Sahara $form->addTagClose('div'); // close div class=no 106b370ebcdSSatoshi Sahara 107b370ebcdSSatoshi Sahara print $form->toHTML('Revisions'); 108b370ebcdSSatoshi Sahara 109*ad088cbcSSatoshi Sahara // provide navigation for paginated revision list (of pages and/or media files) 110ae5d2354SSatoshi Sahara print $this->navigation($first, $hasNext, function ($n) { 111ae5d2354SSatoshi Sahara return array('do' => 'revisions', 'first' => $n); 112ae5d2354SSatoshi Sahara }); 113b370ebcdSSatoshi Sahara } 114b370ebcdSSatoshi Sahara} 115