OSDN Git Service

BugTrack2/62: Do remove the whole design, 'Showing TrackBack-ping list by html'.
[pukiwiki/pukiwiki.git] / plugin / tracker.inc.php
index 5f6f7c3..4486024 100644 (file)
@@ -1,9 +1,8 @@
 <?php
-/////////////////////////////////////////////////
-// PukiWiki - Yet another WikiWikiWeb clone.
-//
-// $Id: tracker.inc.php,v 1.22 2004/08/21 12:57:57 henoheno Exp $
+// PukiWiki - Yet another WikiWikiWeb clone
+// $Id: tracker.inc.php,v 1.29 2005/03/02 13:31:05 henoheno Exp $
 //
+// Issue tracker plugin (See Also bugtrack plugin)
 
 // tracker_list¤Çɽ¼¨¤·¤Ê¤¤¥Ú¡¼¥¸Ì¾(Àµµ¬É½¸½¤Ç)
 // 'SubMenu'¥Ú¡¼¥¸ ¤ª¤è¤Ó '/'¤ò´Þ¤à¥Ú¡¼¥¸¤ò½ü³°¤¹¤ë
@@ -18,6 +17,8 @@ function plugin_tracker_convert()
 {
        global $script,$vars;
 
+       if (PKWK_READONLY) return ''; // Show nothing
+
        $base = $refer = $vars['page'];
 
        $config_name = 'default';
@@ -79,7 +80,9 @@ EOD;
 }
 function plugin_tracker_action()
 {
-       global $script,$post,$vars,$now;
+       global $post, $vars, $now;
+
+       if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
 
        $config_name = array_key_exists('_config',$post) ? $post['_config'] : '';
 
@@ -167,11 +170,12 @@ function plugin_tracker_action()
        }
 
        // Writing page data, without touch
-       page_write($page, join('', $postdata), TRUE);
+       page_write($page, join('', $postdata));
 
        $r_page = rawurlencode($page);
 
-       header("Location: $script?$r_page");
+       pkwk_headers_sent();
+       header('Location: ' . get_script_uri() . '?' . $r_page);
        exit;
 }
 /*
@@ -179,6 +183,8 @@ function plugin_tracker_inline()
 {
        global $vars;
 
+       if (PKWK_READONLY) return ''; // Show nothing
+
        $args = func_get_args();
        if (count($args) < 3)
        {
@@ -250,11 +256,14 @@ class Tracker_field
        var $config;
        var $data;
        var $sort_type = SORT_REGULAR;
+       var $id = 0;
 
        function Tracker_field($field,$page,$refer,&$config)
        {
                global $post;
+               static $id = 0;
 
+               $this->id = ++$id;
                $this->name = $field[0];
                $this->title = $field[1];
                $this->values = explode(',',$field[3]);
@@ -430,11 +439,16 @@ class Tracker_field_radio extends Tracker_field_format
        {
                $s_name = htmlspecialchars($this->name);
                $retval = '';
+               $id = 0;
                foreach ($this->config->get($this->name) as $option)
                {
                        $s_option = htmlspecialchars($option[0]);
                        $checked = trim($option[0]) == trim($this->default_value) ? ' checked="checked"' : '';
-                       $retval .= "<input type=\"radio\" name=\"$s_name\" value=\"$s_option\"$checked />$s_option\n";
+                       ++$id;
+                       $s_id = '_p_tracker_' . $s_name . '_' . $this->id . '_' . $id;
+                       $retval .= '<input type="radio" name="' .  $s_name . '" id="' . $s_id .
+                               '" value="' . $s_option . '"' . $checked . ' />' .
+                               '<label for="' . $s_id . '">' . $s_option . '</label>' . "\n";
                }
 
                return $retval;
@@ -490,12 +504,17 @@ class Tracker_field_checkbox extends Tracker_field_radio
                $s_name = htmlspecialchars($this->name);
                $defaults = array_flip(preg_split('/\s*,\s*/',$this->default_value,-1,PREG_SPLIT_NO_EMPTY));
                $retval = '';
+               $id = 0;
                foreach ($this->config->get($this->name) as $option)
                {
                        $s_option = htmlspecialchars($option[0]);
                        $checked = array_key_exists(trim($option[0]),$defaults) ?
                                ' checked="checked"' : '';
-                       $retval .= "<input type=\"checkbox\" name=\"{$s_name}[]\" value=\"$s_option\"$checked />$s_option\n";
+                       ++$id;
+                       $s_id = '_p_tracker_' . $s_name . '_' . $this->id . '_' . $id;
+                       $retval .= '<input type="checkbox" name="' . $s_name .
+                               '[]" id="' . $s_id . '" value="' . $s_option . '"' . $checked . ' />' .
+                               '<label for="' . $s_id . '">' . $s_option . '</label>' . "\n";
                }
 
                return $retval;
@@ -815,7 +834,7 @@ class Tracker_list
                $arrow = '';
                $order = $this->order;
 
-               if (array_key_exists($sort,$order))
+               if (is_array($order) && isset($order[$sort]))
                {
                        $index = array_flip(array_keys($order));
                        $pos = 1 + $index[$sort];
@@ -830,10 +849,9 @@ class Tracker_list
                $r_config = rawurlencode($this->config->config_name);
                $r_list = rawurlencode($this->list);
                $_order = array("$sort:$dir");
-               foreach ($order as $key=>$value)
-               {
-                       $_order[] = "$key:$value";
-               }
+               if (is_array($order))
+                       foreach ($order as $key=>$value)
+                               $_order[] = "$key:$value";
                $r_order = rawurlencode(join(';',$_order));
 
                return "[[$title$arrow>$script?plugin=tracker_list&refer=$r_page&config=$r_config&list=$r_list&order=$r_order]]";
@@ -895,6 +913,6 @@ function plugin_tracker_get_source($page)
        // ¸«½Ð¤·¤Î¸ÇÍ­IDÉô¤òºï½ü
        $source = preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/m','$1$2',$source);
        // #freeze¤òºï½ü
-       return preg_replace('/^#freeze\s*$/m','',$source);
+       return preg_replace('/^#freeze\s*$/im', '', $source);
 }
 ?>