OSDN Git Service

BugTrack/2420 AutoTicketLink - Improve regex and JSON encode
[pukiwiki/pukiwiki.git] / plugin / template.inc.php
index 498302e..971c46b 100644 (file)
@@ -12,16 +12,21 @@ define('MAX_LEN', 60);
 
 function plugin_template_action()
 {
-       global $script, $vars;
+       global $vars;
        global $_title_edit;
        global $_msg_template_start, $_msg_template_end, $_msg_template_page, $_msg_template_refer;
        global $_btn_template_create, $_title_template;
        global $_err_template_already, $_err_template_invalid, $_msg_template_force;
 
+       $script = get_base_uri();
        if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
-       if (! isset($vars['refer']) || ! is_page($vars['refer']))
+       if (! isset($vars['refer']) || ! is_page($vars['refer'])) {
+               if (isset($vars['action']) && $vars['action'] === 'list') {
+                       plugin_template_output_list();
+                       exit;
+               }
                return FALSE;
-
+       }
        $refer = $vars['refer'];
        // Ensure page is readable, or show Login UI and exit
        ensure_page_readable($refer);
@@ -94,3 +99,20 @@ EOD;
 
        return $retvar;
 }
+
+function plugin_template_output_list()
+{
+       $template_page_key = 'template_pages';
+       $empty_result = '{"' . $template_page_key . '":[]}';
+       header('Content-Type: application/json; charset=UTF-8');
+       // PHP 5.4+
+       $enabled = defined('JSON_UNESCAPED_UNICODE') && defined('PKWK_UTF8_ENABLE');
+       if (!$enabled) {
+               print($empty_result);
+               exit;
+       }
+       $template_pages = array_values(get_template_page_list());
+       $ar = array($template_page_key => $template_pages);
+       print(json_encode($ar, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
+       exit;
+}