-
Notifications
You must be signed in to change notification settings - Fork 0
/
ajax.php
57 lines (43 loc) · 1.33 KB
/
ajax.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
/**
* AJAX call handler for Dokutranslate plugin
* Based on built-in ACL plugin
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Martin Doucha <[email protected]>
* @author Andreas Gohr <[email protected]>
*/
//fix for Opera XMLHttpRequests
if(!count($_POST) && !empty($HTTP_RAW_POST_DATA)){
parse_str($HTTP_RAW_POST_DATA, $_POST);
}
if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../../');
require_once(DOKU_INC.'inc/init.php');
//close session
session_write_close();
if(!auth_isadmin()) die('for admins only');
if(!checkSecurityToken()) die('CRSF Attack');
$ID = getID();
$dokutranslate = plugin_load('admin','dokutranslate');
$dokutranslate->handle();
$ajax = $_REQUEST['ajax'];
header('Content-Type: text/html; charset=utf-8');
if($ajax == 'modform'){
$dokutranslate->_html_modform();
}elseif($ajax == 'tree'){
global $conf;
global $ID;
$dir = $conf['datadir'];
$ns = $_REQUEST['ns'];
if($ns == '*'){
$ns ='';
}
$ns = cleanID($ns);
$lvl = count(explode(':',$ns));
$ns = utf8_encodeFN(str_replace(':','/',$ns));
$data = $dokutranslate->_get_tree($ns,$ns);
foreach(array_keys($data) as $item){
$data[$item]['level'] = $lvl+1;
}
echo html_buildlist($data, 'dokutranslate', array($dokutranslate, '_html_list_acl'), array($dokutranslate, '_html_li_acl'));
}