<?php namespace dokuwiki\Action; use dokuwiki\Ui\Editor; use dokuwiki\Action\Exception\ActionAbort; use dokuwiki\Ui; /** * Class Edit * * Handle editing * * @package dokuwiki\Action */ class Edit extends AbstractAction { /** @inheritdoc */ public function minimumPermission() { global $INFO; if ($INFO['exists']) { return AUTH_READ; // we check again below } else { return AUTH_CREATE; } } /** * @inheritdoc falls back to 'source' if page not writable */ public function checkPreconditions() { parent::checkPreconditions(); global $INFO; // no edit permission? view source if ($INFO['exists'] && !$INFO['writable']) { throw new ActionAbort('source'); } } /** @inheritdoc */ public function preProcess() { global $ID; global $INFO; global $TEXT; global $RANGE; global $PRE; global $SUF; global $REV; global $SUM; global $lang; global $DATE; if (!isset($TEXT)) { if ($INFO['exists']) { if ($RANGE) { [$PRE, $TEXT, $SUF] = rawWikiSlices($RANGE, $ID, $REV); } else { $TEXT = rawWiki($ID, $REV); } } else { $TEXT = pageTemplate($ID); } } //set summary default if (!$SUM) { if ($REV) { $SUM = sprintf($lang['restored'], dformat($REV)); } elseif (!$INFO['exists']) { $SUM = $lang['created']; } } // Use the date of the newest revision, not of the revision we edit // This is used for conflict detection if (!$DATE) $DATE = @filemtime(wikiFN($ID)); //check if locked by anyone - if not lock for my self $lockedby = checklock($ID); if ($lockedby) { throw new ActionAbort('locked'); } lock($ID); } /** @inheritdoc */ public function tplContent() { (new Editor())->show(); } }