🏗 Use json for the response to dw_locktimer

This commit is contained in:
Michael Große 2018-06-08 10:03:55 +02:00
parent f7d14abd12
commit b16fbc3f1d
No known key found for this signature in database
GPG Key ID: 7E31028FBFEACC79
2 changed files with 23 additions and 10 deletions

View File

@ -119,7 +119,6 @@ class Ajax {
* Andreas Gohr <andi@splitbrain.org>
*/
protected function call_lock() {
global $lang;
global $ID;
global $INFO;
global $INPUT;
@ -129,20 +128,29 @@ class Ajax {
$INFO = pageinfo();
$response = [
'errors' => [],
'lock' => '0',
'draft' => '',
];
if(!$INFO['writable']) {
echo 'Permission denied';
$response['errors'][] = 'Permission to write this page has been denied.';
echo json_encode($response);
return;
}
if(!checklock($ID)) {
lock($ID);
echo 1;
$response['lock'] = '1';
}
$draft = new Draft($ID, $INFO['client']);
if ($draft->saveDraft()) {
echo $draft->getDraftMessage();
$response['draft'] = $draft->getDraftMessage();
} else {
$response['errors'] = array_merge($response['errors'], $draft->getErrors());
}
echo json_encode($response);
}
/**

View File

@ -104,7 +104,7 @@ var dw_locktimer = {
var now = new Date(),
params = 'call=lock&id=' + dw_locktimer.pageid + '&';
// refresh every minute only
// refresh every half minute only
if(now.getTime() - dw_locktimer.lasttime.getTime() <= 30*1000) {
return;
}
@ -118,7 +118,7 @@ var dw_locktimer = {
DOKU_BASE + 'lib/exe/ajax.php',
params,
null,
'html'
'json'
).done(function dwLocktimerRefreshDoneHandler(data) {
dw_locktimer.callbacks.forEach(
function (callback) {
@ -133,11 +133,16 @@ var dw_locktimer = {
* Callback. Resets the warning timer
*/
refreshed: function(data){
var error = data.charAt(0);
data = data.substring(1);
if (data.errors.length) {
data.errors.forEach(function(error) {
jQuery('#draft__status').after(
jQuery('<div class="error"></div>').text(error)
);
})
}
jQuery('#draft__status').html(data);
if(error != '1') {
jQuery('#draft__status').html(data.draft);
if(data.lock !== '1') {
return; // locking failed
}
dw_locktimer.reset();