{{imstatus>service id}}
===== Example =====
Look at the bottom of my [[http://walters-way.com|Web Site]].
===== Installation =====
I don't know how to make an install package yet, so just copy the code below into **plugins/imstatus/syntax.php**
===== Plugin Source =====
Here is the [[http://www.gnu.org/licenses/gpl.html|GPLed]] PHP source. ((I 'stole' the javadoc comments from Matthias Watermann HR plugin. It really helps to see how all this works together.)) Just copy and paste into your plugin directory.
, for replacements
* {{command>param paramn}}
* tildes for configuration like (compare ~~NOTOC~~ and ~~NOCACHE~~)
*/
/**
* Plugin IM Status: Displays your current IM Service status"
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Walter Torres
*/
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');
/**
* All DokuWiki plugins to extend the parser/rendering mechanism
* need to inherit from this class
*/
class syntax_plugin_imstatus extends DokuWiki_Syntax_Plugin {
/**
* Get an associative array with plugin info.
*
*
* The returned array holds the following fields:
*
* - author
- Author of the plugin
* - email
- Email address to contact the author
* - date
- Last modified date of the plugin in
* YYYY-MM-DD format
* - name
- Name of the plugin
* - desc
- Short description of the plugin (Text only)
* - url
- Website with more information on the plugin
* (eg. syntax description)
*
* @param none
* @return Array Information about this plugin class.
* @public
* @static
*/
function getInfo(){
return array(
'author' => 'Walter Torres',
'email' => 'walter@torres.ws',
'date' => '2008-01-12',
'name' => 'IM Status',
'desc' => 'Displays a given IM service ID current online status',
'url' => 'http://www.dokuwiki.org/plugin:imstatus',
);
}
/**
* Get the type of syntax this plugin defines.
*
* @param none
* @return String 'substition' (i.e. 'substitution').
* @public
* @static
*/
function getType(){
return 'substition';
}
/**
* What kind of syntax do we allow (optional)
*/
// function getAllowedTypes() {
// return array();
// }
/**
* Define how this plugin is handled regarding paragraphs.
*
*
* This method is important for correct XHTML nesting. It returns
* one of the following values:
*
*
* - normal
- The plugin can be used inside paragraphs.
* - block
- Open paragraphs need to be closed before
* plugin output.
* - stack
- Special case: Plugin wraps other paragraphs.
*
* @param none
* @return String 'block'.
* @public
* @static
*/
// function getPType(){
// return 'normal';
// }
/**
* Where to sort in?
*
* @param none
* @return Integer 6.
* @public
* @static
*/
function getSort(){
return 280;
}
/**
* Connect lookup pattern to lexer.
*
* @param $aMode String The desired rendermode.
* @return none
* @public
* @see render()
*/
function connectTo($mode) {
$this->Lexer->addSpecialPattern('\{\{imstatus>.+?\}\}',$mode,'plugin_imstatus');
}
// function postConnect() {
// $this->Lexer->addExitPattern('','plugin_test');
// }
/**
* Handler to prepare matched data for the rendering process.
*
*
* The $aState parameter gives the type of pattern
* which triggered the call to this method:
*
*
* - DOKU_LEXER_ENTER
* - a pattern set by addEntryPattern()
* - DOKU_LEXER_MATCHED
* - a pattern set by addPattern()
* - DOKU_LEXER_EXIT
* - a pattern set by addExitPattern()
* - DOKU_LEXER_SPECIAL
* - a pattern set by addSpecialPattern()
* - DOKU_LEXER_UNMATCHED
* - ordinary text encountered within the plugin's syntax mode
* which doesn't match any pattern.
*
* @param $aMatch String The text matched by the patterns.
* @param $aState Integer The lexer state for the match.
* @param $aPos Integer The character position of the matched text.
* @param $aHandler Object Reference to the Doku_Handler object.
* @return Integer The current lexer state for the match.
* @public
* @see render()
* @static
*/
function handle($match, $state, $pos, &$handler) {
$match = substr($match, 2, -2);
list($command, $match) = split('>', $match);
return split(' ', trim($match));
}
/**
* Handle the actual output creation.
*
*
* The method checks for the given $aFormat and returns
* FALSE when a format isn't supported. $aRenderer
* contains a reference to the renderer object which is currently
* handling the rendering. The contents of $aData is the
* return value of the handle() method.
*
* @param $aFormat String The output format to generate.
* @param $aRenderer Object A reference to the renderer object.
* @param $aData Array The data created by the handle()
* method.
* @return Boolean TRUE if rendered successfully, or
* FALSE otherwise.
* @public
* @see handle()
*/
function render($mode, &$renderer, $data) {
if($mode == 'xhtml'){
$l_srv = strtolower($data[0]);
$u_srv = strtoupper($data[0]);
$renderer->doc .= '';
return true;
}
return false;
}
}
//Setup VIM: ex: et ts=4 enc=utf-8 :
?>
==== Changes ====
===== See also =====
* [[plugin:icq|ICQ]]
===== Discussion =====
Hints, comments, suggestions ...
== To work ==
Hi, I change:
$renderer->doc .= '
To:
$renderer->doc .= '