xref: /plugin/kanban/action.php (revision f4b18c92ed322afef4847ac5c154503a8bb2d449)
1*f4b18c92SGill B.<?php
2*f4b18c92SGill B.if(!defined('DOKU_INC')) die();
3*f4b18c92SGill B.
4*f4b18c92SGill B.class action_plugin_kanban extends DokuWiki_Action_Plugin {
5*f4b18c92SGill B.    public function register(Doku_Event_Handler $controller) {
6*f4b18c92SGill B.        $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'handle_ajax');
7*f4b18c92SGill B.    }
8*f4b18c92SGill B.
9*f4b18c92SGill B.
10*f4b18c92SGill B. public function handle_started(Doku_Event $event, $param) {
11*f4b18c92SGill B.        global $JSINFO;
12*f4b18c92SGill B.        global $INPUT;
13*f4b18c92SGill B.
14*f4b18c92SGill B.        // Get the logged-in username from the REMOTE_USER environment variable
15*f4b18c92SGill B.        $user = $INPUT->server->str('REMOTE_USER');
16*f4b18c92SGill B.        echo json_encode(['user' => $user]);
17*f4b18c92SGill B.        if($user) {
18*f4b18c92SGill B.            $JSINFO['user'] = $user;
19*f4b18c92SGill B.        }
20*f4b18c92SGill B.    }
21*f4b18c92SGill B.
22*f4b18c92SGill B.
23*f4b18c92SGill B.public function handle_ajax(Doku_Event $event, $param) {
24*f4b18c92SGill B.    if ($event->data !== 'kanban_save') return; // Must match call in JS
25*f4b18c92SGill B.    $event->preventDefault();
26*f4b18c92SGill B.    $event->stopPropagation();
27*f4b18c92SGill B.
28*f4b18c92SGill B.    global $INPUT, $conf;
29*f4b18c92SGill B.    $board  = $INPUT->str('board');
30*f4b18c92SGill B.    $cardId = $INPUT->str('card_id');
31*f4b18c92SGill B.
32*f4b18c92SGill B.    // Dynamically build the path in data/kanban/
33*f4b18c92SGill B.    $kanbanDir = '../' . '.' .$conf['savedir'] . '/kanban/' . $board . '/'; // added '../' . '.' . in the beginning path otherwise it writes to ./exe/data directory....annoying
34*f4b18c92SGill B.    if (!is_dir($kanbanDir)) io_makeFileDir($kanbanDir . 'placeholder.txt');
35*f4b18c92SGill B.
36*f4b18c92SGill B.	echo $kanbanDir; //debugging line
37*f4b18c92SGill B.
38*f4b18c92SGill B.    $file = $kanbanDir . $cardId . '.json';
39*f4b18c92SGill B.
40*f4b18c92SGill B.    $data = file_exists($file) ? json_decode(io_readFile($file), true) : ['id' => $cardId];
41*f4b18c92SGill B.
42*f4b18c92SGill B.
43*f4b18c92SGill B.    //$newNote = $currNote . ' | ' . $data['note'];
44*f4b18c92SGill B.    // Update fields sent by AJAX
45*f4b18c92SGill B.    if ($INPUT->has('column'))     $data['column'] = $INPUT->str('column');
46*f4b18c92SGill B.    if ($INPUT->has('name'))       $data['name']   = $INPUT->str('name');
47*f4b18c92SGill B.    if ($INPUT->has('importance')) $data['importance'] = $INPUT->str('importance');
48*f4b18c92SGill B.    if ($INPUT->has('desc'))       $data['desc']   = $INPUT->str('desc');
49*f4b18c92SGill B.	if ($INPUT->has('checked'))       $data['checked']   = $INPUT->str('checked');
50*f4b18c92SGill B.	if ($INPUT->has('note'))       $data['note']   = $INPUT->str('note');
51*f4b18c92SGill B.
52*f4b18c92SGill B.    io_saveFile($file, json_encode($data));
53*f4b18c92SGill B.    echo json_encode(['status' => 'success']);
54*f4b18c92SGill B.}
55*f4b18c92SGill B.
56*f4b18c92SGill B.}