'Feature/Change Request', 'Documentation', 'Cookbook', 'CoreCandidate','PHP Compatibility', 'Other'); Markup('pitsform','inline','/\\(:pitsform:\\)/e',"Keep(PitsForm(\$pagename))"); Markup('pitslist','directives','/\\(:pitslist\\s*(.*?):\\)/e', "FmtPitsList('',\$pagename,array('q'=>PSS('$1')))"); Markup('pits2list','directives','/\\(:pits2list\\s*(.*?):\\)/e', "FmtPitsList2('',\$pagename,array('q'=>PSS('$1')))"); Markup('pits','directives', '/^(Summary|Created|Status|Category|From|Assigned|Version|OS|Priority):.*/', "<:block>
$0
"); ## PitsForm() generates the form for entering a new issue. Note that ## once an issue has been created, it's a normal wikipage and is edited ## according to the normal editing code (i.e., there's no form-based ## editing yet). function PitsForm($pagename) { global $PitsCategories; $out[] = "
Author:
Summary:
Category:
Priority: Low"; for($i=1;$i<=5;$i++) $out[] = " "; $out[] = "High
PmWiki Version:
OS/Webserver/
PHP Version:
Description:
"; return FmtPageName(implode('',$out),$pagename); } $HTMLStylesFmt[] = " .pitsfield { text-align:right; font-weight:bold; } table.pits th a { text-decoration:none; } table.pits th { background-color:#eeeeee; } dl.pits2 { font-size: 85%; color: #888888; clear:both;border-top: 1px solid #dddddd; } dl.pits2 dt { float:left; padding-right:0.5em; } dl.pits2 dd { margin-left: 8.5em; } dl.pits2 dd b { color: black; font-weight: normal; } dl.pits2 dd i { float: right; } "; include_once("$FarmD/scripts/author.php"); if ($action=='postpits') { Lock(2); foreach(ListPages('/^PITS\\.\\d/') as $i) $issue = max(@$issue,substr($i,5)); $pagename = sprintf("PITS.%05d",@$issue+1); $action = 'edit'; $_REQUEST['post'] = 1; $CreateTime = strftime('%Y-%m-%d %H:%M',$Now); $EditMessageFmt = "

Please review and make any edits to your issue below, then press 'Save'.

"; $_POST['csum'] = $_REQUEST['summary']; $vers = str_replace('pmwiki-', '', $_REQUEST['version']); $_POST['text'] = " Summary: {$_REQUEST['summary']} Created: $CreateTime Status: Open Category: ".implode(' ',(array)@$_REQUEST['category'])." From: [[~{$_REQUEST['author']}]] Assigned: Priority: {$_REQUEST['priority']} Version: {$vers} OS: {$_REQUEST['os']} Description: {$_REQUEST['description']}"; } ## FmtPitsList creates a table of PITS issues according to various ## criteria. function FmtPitsList($fmt,$pagename,$opt) { $opt = array_merge($opt,@$_REQUEST); $pitslist = ListPages('/^PITS\\.\\d+$/'); $out[] = FmtPageName("", $pagename); $terms = preg_split('/((?",$p['name'])); foreach(array('created','category','version','priority','status','summary', ) as $h) $out[] = @""; $out[] = ""; } $out[] = "
Issue# Created Category Version Priority Status Summary
\$Name{$p[$h]}
"; return implode('',$out); } ## This function creates specialized ordering functions needed to ## (more efficiently) perform sorts on arbitrary sets of criteria. function CreateOrderFunction($order) { $code = ''; foreach(preg_split('/[\\s,|]+/',strtolower($order),-1,PREG_SPLIT_NO_EMPTY) as $o) { if (substr($o,0,1)=='-') { $r='-'; $o=substr($o,1); } else $r=''; if (preg_match('/\\W/',$o)) continue; $code .= "\$c=strcasecmp(@\$x['$o'],@\$y['$o']); if (\$c!=0) return $r\$c;\n"; } $code .= "return 0;\n"; return create_function('$x,$y',$code); } ## FmtPitsList2 creates a table of PITS issues according to various ## criteria. function FmtPitsList2($fmt,$pagename,$opt) { global $AutoSuspendDaysInactive, $Now, $PITSCache; SDV($AutoSuspendDaysInactive, 180); $opt = array_merge($opt,@$_REQUEST); $pitslist = ListPages('/^PITS\\.\\d+$/'); $terms = preg_split('/((?
\$Name : {$p['category']}
",$p['name']) ."
{$p['status']} " ."{$p['priority2']} " ." {$p['summary']}
"); if(@$opt['count'] && $cnt>$opt['count']) break; } return implode('',$out); } function Priority2($x){ if(trim($x)=='') return '0.0 (0)'; // echo "$x"; preg_match_all("/([0-5x])/i", $x, $m, PREG_PATTERN_ORDER); $count = count($m[1]); $sum = array_sum($m[1]); if($count==0) return '0.0 (0)'; $avg = number_format(round($sum/$count, 1), 1); // $p100 = round($sum/$count*20).'%'; $pcount = '('.$count.')'; $xavg = $count<4 ? '0.0': $avg; // $xp100 = $count<4 ? '?%': $p100; return "$xavg $pcount"; }