123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- namespace dokuwiki\Ui;
- use dokuwiki\ChangeLog\PageChangeLog;
- use dokuwiki\ChangeLog\RevisionInfo;
- use dokuwiki\Form\Form;
- /**
- * DokuWiki PageRevisions Interface
- *
- * @package dokuwiki\Ui
- */
- class PageRevisions extends Revisions
- {
- /* @var PageChangeLog */
- protected $changelog;
- /**
- * PageRevisions Ui constructor
- *
- * @param string $id id of page
- */
- public function __construct($id = null)
- {
- global $INFO;
- if (!isset($id)) $id = $INFO['id'];
- parent::__construct($id);
- }
- /** @inheritdoc */
- protected function setChangeLog()
- {
- $this->changelog = new PageChangeLog($this->id);
- }
- /**
- * Display list of old revisions of the page
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @author Ben Coburn <btcoburn@silicodon.net>
- * @author Kate Arzamastseva <pshns@ukr.net>
- * @author Satoshi Sahara <sahara.satoshi@gmail.com>
- *
- * @param int $first skip the first n changelog lines
- * @return void
- */
- public function show($first = -1)
- {
- global $lang, $REV;
- $changelog =& $this->changelog;
- // get revisions, and set correct pagination parameters (first, hasNext)
- if ($first === null) $first = -1;
- $hasNext = false;
- $revisions = $this->getRevisions($first, $hasNext);
- // print intro
- print p_locale_xhtml('revisions');
- // create the form
- $form = new Form([
- 'id' => 'page__revisions',
- 'class' => 'changes',
- ]);
- $form->addTagOpen('div')->addClass('no');
- // start listing
- $form->addTagOpen('ul');
- foreach ($revisions as $info) {
- $rev = $info['date'];
- $info['media'] = false;
- $RevInfo = new RevisionInfo($info);
- $RevInfo->isCurrent($changelog->isCurrentRevision($rev));
- $class = ($RevInfo->val('type') === DOKU_CHANGE_TYPE_MINOR_EDIT) ? 'minor' : '';
- $form->addTagOpen('li')->addClass($class);
- $form->addTagOpen('div')->addClass('li');
- if ($RevInfo->isCurrent()) {
- $form->addCheckbox('rev2[]')->val($rev);
- } elseif ($rev == $REV) {
- $form->addCheckbox('rev2[]')->val($rev)->attr('checked','checked');
- } elseif (page_exists($this->id, $rev)) {
- $form->addCheckbox('rev2[]')->val($rev);
- } else {
- $form->addCheckbox('')->val($rev)->attr('disabled','disabled');
- }
- $form->addHTML(' ');
- $html = implode(' ', [
- $RevInfo->showEditDate(true), // edit date and time
- $RevInfo->showIconCompareWithCurrent(), // link to diff view icon
- $RevInfo->showFileName(), // name of page or media
- $RevInfo->showEditSummary(), // edit summary
- $RevInfo->showEditor(), // editor info
- $RevInfo->showSizechange(), // size change indicator
- $RevInfo->showCurrentIndicator(), // current indicator (only when k=1)
- ]);
- $form->addHTML($html);
- $form->addTagClose('div');
- $form->addTagClose('li');
- }
- $form->addTagClose('ul'); // end of revision list
- // show button for diff view
- $form->addButton('do[diff]', $lang['diff2'])->attr('type', 'submit');
- $form->addTagClose('div'); // close div class=no
- print $form->toHTML('Revisions');
- // provide navigation for paginated revision list (of pages and/or media files)
- print $this->navigation($first, $hasNext, function ($n) {
- return array('do' => 'revisions', 'first' => $n);
- });
- }
- }
|