92 lines
2.1 KiB
PHP
92 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace dokuwiki\Action;
|
|
|
|
use dokuwiki\Action\Exception\ActionAbort;
|
|
|
|
/**
|
|
* 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) {
|
|
list($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() {
|
|
html_edit();
|
|
}
|
|
|
|
}
|