//
// Issue tracker plugin (See Also bugtrack plugin)
-// tracker_list¤Çɽ¼¨¤·¤Ê¤¤¥Ú¡¼¥¸Ì¾(Àµµ¬É½¸½¤Ç)
-// 'SubMenu'¥Ú¡¼¥¸ ¤ª¤è¤Ó '/'¤ò´Þ¤à¥Ú¡¼¥¸¤ò½ü³°¤¹¤ë
+// tracker_listで表示しないページ名(正規表現で)
+// 'SubMenu'ページ および '/'を含むページを除外する
define('TRACKER_LIST_EXCLUDE_PATTERN','#^SubMenu$|/#');
-// À©¸Â¤·¤Ê¤¤¾ì¹ç¤Ï¤³¤Á¤é
+// 制限しない場合はこちら
//define('TRACKER_LIST_EXCLUDE_PATTERN','#(?!)#');
-// ¹àÌܤμè¤ê½Ð¤·¤Ë¼ºÇÔ¤·¤¿¥Ú¡¼¥¸¤ò°ìÍ÷¤Ëɽ¼¨¤¹¤ë
+// 項目の取り出しに失敗したページを一覧に表示する
define('TRACKER_LIST_SHOW_ERROR_PAGE',TRUE);
function plugin_tracker_convert()
'body'=>'page template ('.htmlsc($source).') is not exist.'
);
}
- // ¥Ú¡¼¥¸Ì¾¤ò·èÄê
+ // ページ名を決定
$base = $post['_base'];
$num = 0;
$name = (array_key_exists('_name',$post)) ? $post['_name'] : '';
$real = ++$num;
$page = "$base/$real";
}
- // ¥Ú¡¼¥¸¥Ç¡¼¥¿¤òÀ¸À®
+ // ページデータを生成
$postdata = plugin_tracker_get_source($source);
- // µ¬Äê¤Î¥Ç¡¼¥¿
+ // è¦\8få®\9aã\81®ã\83\87ã\83¼ã\82¿
$_post = array_merge($post,$_FILES);
$_post['_date'] = $now;
$_post['_page'] = $page;
return $fields[$field]->get_tag();
}
*/
-// ¥Õ¥£¡¼¥ë¥É¥ª¥Ö¥¸¥§¥¯¥È¤ò¹½ÃÛ¤¹¤ë
+// フィールドオブジェクトを構築する
function plugin_tracker_get_fields($base,$refer,&$config)
{
global $now,$_tracker_messages;
$fields = array();
- // ͽÌó¸ì
+ // 予約語
foreach (array(
- '_date'=>'text', // Åê¹ÆÆü»þ
- '_update'=>'date', // ºÇ½ª¹¹¿·
- '_past'=>'past', // ·Ð²á(passage)
- '_page'=>'page', // ¥Ú¡¼¥¸Ì¾
- '_name'=>'text', // »ØÄꤵ¤ì¤¿¥Ú¡¼¥¸Ì¾
- '_real'=>'real', // ¼ÂºÝ¤Î¥Ú¡¼¥¸Ì¾
- '_refer'=>'page', // »²¾È¸µ(¥Õ¥©¡¼¥à¤Î¤¢¤ë¥Ú¡¼¥¸)
- '_base'=>'page', // ´ð½à¥Ú¡¼¥¸
- '_submit'=>'submit' // Äɲåܥ¿¥ó
+ '_date'=>'text', // 投稿日時
+ '_update'=>'date', // 最終更新
+ '_past'=>'past', // 経過(passage)
+ '_page'=>'page', // ページ名
+ '_name'=>'text', // 指定されたページ名
+ '_real'=>'real', // 実際のページ名
+ '_refer'=>'page', // å\8f\82ç\85§å\85\83(ã\83\95ã\82©ã\83¼ã\83 ã\81®ã\81\82ã\82\8bã\83\9aã\83¼ã\82¸)
+ '_base'=>'page', // å\9fºæº\96ã\83\9aã\83¼ã\82¸
+ '_submit'=>'submit' // 追加ボタン
) as $field=>$class)
{
$class = 'Tracker_field_'.$class;
foreach ($config->get('fields') as $field)
{
- // 0=>¹àÌÜ̾ 1=>¸«½Ð¤· 2=>·Á¼° 3=>¥ª¥×¥·¥ç¥ó 4=>¥Ç¥Õ¥©¥ë¥ÈÃÍ
+ // 0=>項目名 1=>見出し 2=>形式 3=>オプション 4=>デフォルト値
$class = 'Tracker_field_'.$field[2];
if (!class_exists($class))
- { // ¥Ç¥Õ¥©¥ë¥È
+ { // デフォルト
$class = 'Tracker_field_text';
$field[2] = 'text';
$field[3] = '20';
}
return $fields;
}
-// ¥Õ¥£¡¼¥ë¥É¥¯¥é¥¹
+// ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\82¯ã\83©ã\82¹
class Tracker_field
{
var $name;
{
require_once(PLUGIN_DIR.'attach.inc.php');
$result = attach_upload($_FILES[$this->name],$this->page);
- if ($result['result']) // ¥¢¥Ã¥×¥í¡¼¥ÉÀ®¸ù
+ if ($result['result']) // アップロード成功
{
return parent::format_value($this->page.'/'.$_FILES[$this->name]['name']);
}
}
- // ¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤«¡¢¥¢¥Ã¥×¥í¡¼¥É¤Ë¼ºÇÔ
+ // ファイルが指定されていないか、アップロードに失敗
return parent::format_value('');
}
}
}
}
///////////////////////////////////////////////////////////////////////////
-// °ìÍ÷ɽ¼¨
+// 一覧表示
function plugin_tracker_list_convert()
{
global $vars;
return $list->toString($limit);
}
-// °ìÍ÷¥¯¥é¥¹
+// ä¸\80覧ã\82¯ã\83©ã\82¹
class Tracker_list
{
var $page;
$this->fields = plugin_tracker_get_fields($page,$refer,$config);
$pattern = join('',plugin_tracker_get_source($config->page.'/page'));
- // ¥Ö¥í¥Ã¥¯¥×¥é¥°¥¤¥ó¤ò¥Õ¥£¡¼¥ë¥É¤ËÃÖ´¹
- // #comment¤Ê¤É¤ÇÁ°¸å¤Ëʸ»úÎó¤ÎÁý¸º¤¬¤¢¤Ã¤¿¾ì¹ç¤Ë¡¢[_block_xxx]¤ËµÛ¤¤¹þ¤Þ¤»¤ë¤è¤¦¤Ë¤¹¤ë
+ // ブロックプラグインをフィールドに置換
+ // #commentなどで前後に文字列の増減があった場合に、[_block_xxx]に吸い込ませるようにする
$pattern = preg_replace('/^\#([^\(\s]+)(?:\((.*)\))?\s*$/m','[_block_$1]',$pattern);
- // ¥Ñ¥¿¡¼¥ó¤òÀ¸À®
+ // パターンを生成
$this->pattern = '';
$this->pattern_fields = array();
$pattern = preg_split('/\\\\\[(\w+)\\\\\]/',preg_quote($pattern,'/'),-1,PREG_SPLIT_DELIM_CAPTURE);
$this->pattern .= '(.*)';
}
}
- // ¥Ú¡¼¥¸¤ÎÎóµó¤È¼è¤ê¹þ¤ß
+ // ページの列挙と取り込み
$this->rows = array();
$pattern = "$page/";
$pattern_len = strlen($pattern);
{
static $moved = array();
- // ̵¸Â¥ë¡¼¥×ËÉ»ß
+ // 無限ループ防止
if (array_key_exists($name,$this->rows))
{
return;
}
$source = join('',preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/','$1$2',$source));
- // ¥Ç¥Õ¥©¥ë¥ÈÃÍ
+ // デフォルト値
$this->rows[$name] = array(
'_page' => "[[$page]]",
'_refer' => $this->page,
function plugin_tracker_get_source($page)
{
$source = get_source($page);
- // ¸«½Ð¤·¤Î¸ÇÍIDÉô¤òºï½ü
+ // 見出しの固有ID部を削除
$source = preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/m','$1$2',$source);
- // #freeze¤òºï½ü
+ // #freezeを削除
return preg_replace('/^#freeze\s*$/im', '', $source);
}
?>