* TITLE: A test task
* PRIORITY: High
* ESTIMATE: 4h
* PROGRESS: 10%
* ASSIGNED: Sherri
* DESCRIPTION: Some stuff for you. You can have newlines in this part. Description must be the last item.
*
*/
if (!defined('DOKU_INC')) {
define('DOKU_INC', realpath(dirname(__FILE__).'/../../').'/');
}
if (!defined('DOKU_PLUGIN')) {
define('DOKU_PLUGIN', DOKU_INC.'lib/plugins/');
}
require_once(DOKU_PLUGIN.'syntax.php');
class syntax_plugin_avtaskbox extends DokuWiki_Syntax_Plugin
{
/**
* return some info
*/
public function getInfo()
{
return array(
'author' => 'Sherri Wheeler',
'email' => 'Use my website: http://syntaxseed.com',
'date' => '2022-08-08',
'name' => 'AV Task Box',
'desc' => 'Creates task/user story table boxes.',
'url' => 'https://www.dokuwiki.org/plugin:avtaskbox',
);
}
/**
* What kind of syntax are we?
*/
public function getType()
{
return 'substition';
}
/**
* Where to sort in?
*/
public function getSort()
{
return 999;
}
/**
* Connect pattern to lexer
*/
public function connectTo($mode)
{
$this->Lexer->addEntryPattern('\', $mode, 'plugin_avtaskbox');
}
public function postConnect()
{
$this->Lexer->addExitPattern('\', 'plugin_avtaskbox');
}
/**
* Handle the match
*/
public function handle($match, $state, $pos, Doku_Handler $handler)
{
switch ($state) {
case DOKU_LEXER_ENTER:
return array($state, '');
case DOKU_LEXER_MATCHED:
break;
case DOKU_LEXER_UNMATCHED:
$resultStr = '
';
$progbar = '';
preg_match('/^Title:(.*?)$/isxm', $match, $matches);
$title = (!empty($matches[1]) && strlen(trim($matches[1]))>0) ? trim($matches[1]) : ' ';
preg_match('/^Priority:(.*?)$/isxm', $match, $matches);
$priority =(!empty($matches[1]) && strlen(trim($matches[1]))>0) ? 'Priority: '.trim($matches[1]) : ' ';
preg_match('/^Estimate:(.*?)$/isxm', $match, $matches);
$estimate = (!empty($matches[1]) && strlen(trim($matches[1]))>0) ? ' of '.trim($matches[1]) : ' ';
preg_match('/^Assigned:(.*?)$/isxm', $match, $matches);
$assigned = (!empty($matches[1]) && strlen(trim($matches[1]))>0) ? '('.trim($matches[1]).')' : ' ';
preg_match('/^Progress:(.*?)$/isxm', $match, $matches);
$progress = (!empty($matches[1]) && strlen(trim($matches[1]))>0) ? intval(preg_replace('[^0-9]', '', $matches[1])) : '0';
preg_match('/Description:(.*)/isx', $match, $matches);
$description = (!empty($matches[1]) && strlen(trim($matches[1]))>0) ? trim($matches[1]) : ' ';
if ($progress<0) {
$progress=0;
}
if ($progress>100) {
$progress=100;
}
$sizeLeft = 100-$progress;
$path = rtrim(dirname($_SERVER['PHP_SELF']), "/");
$blankImagePath = preg_replace('/doku\.php$/', '', $path) . 'lib/images/blank.gif';
$progbar .= '' . ($progress <= 0 ? '' : '') . ($progress >= 100 ? '' : '') . '';
$resultStr .= ''.$title.''.$assigned.' |
';
$resultStr .= ''.nl2br($description).' |
';
$resultStr .= '('.$progress.'%'.$estimate.') '.$progbar.''.$priority.' |
';
$resultStr .= '
';
$match = $resultStr;
return array($state, $match);
case DOKU_LEXER_EXIT:
return array($state, '');
case DOKU_LEXER_SPECIAL:
break;
}
return array();
}
/**
* Create output
*/
public function render($mode, Doku_Renderer $renderer, $data)
{
if ($mode == 'xhtml') {
list($state, $match) = $data;
switch ($state) {
case DOKU_LEXER_ENTER:
$renderer->doc .= "";
break;
case DOKU_LEXER_MATCHED:
break;
case DOKU_LEXER_UNMATCHED:
$renderer->doc .= $match; break;
case DOKU_LEXER_EXIT:
$renderer->doc .= "";
break;
case DOKU_LEXER_SPECIAL:
break;
}
return true;
}
return false;
}
}