'Bruno De Fraine', 'email' => 'bruno@defraine.net', 'date' => '2007-12-10', 'name' => 'vCard Plugin', 'desc' => 'creates a link to download a vCard file', 'url' => 'http://wiki.splitbrain.org/plugin:vcard', ); } function getType(){ return 'protected'; } function getPType() { return 'normal'; } function getSort(){ return 314; } function connectTo($mode) { // Only enter if we can lookahead to some exit pattern $this->Lexer->addEntryPattern('(?=.*?)',$mode,'plugin_vcard'); } function postConnect() { $this->Lexer->addExitPattern('','plugin_vcard'); } /** * Handle the match */ function handle($match, $state, $pos, &$handler){ switch($state) { case DOKU_LEXER_ENTER : $full_name = substr($match,7,-1); return array($state, $full_name); case DOKU_LEXER_UNMATCHED : return array($state, parse_vcard($match)); case DOKU_LEXER_EXIT : return array($state, NULL); default : die('Not supposed to happen 1'); } } /** * Create output */ function render($mode, &$renderer, $data) { global $conf; if($mode == 'xhtml'){ list($state, $custom_data) = $data; switch($state) { case DOKU_LEXER_ENTER : $this->full_name = $custom_data; return true; case DOKU_LEXER_UNMATCHED : $this->vcard = $custom_data; return true; case DOKU_LEXER_EXIT : if($this->full_name && $this->vcard) { $link = array(); $link['class'] = 'urlextern'; $link['style'] = 'background-image: url('.DOKU_BASE.'lib/plugins/vcard/vcf.gif)'; $link['pre'] = ''; $link['suf'] = ''; $link['more'] = 'rel="nofollow"'; $link['target'] = ''; $script = DOKU_URL.'lib/plugins/vcard/get_vcard.php?'; $script .= vcard_to_query_string($this->full_name,$this->vcard,$conf['plugin']['vcard']['secret']); $link['title'] = $this->full_name.' (vCard)'; $link['url'] = $script; $link['name'] = $renderer->_xmlEntities($this->full_name); $renderer->doc .= $renderer->_formatLink($link); $this->full_name = NULL; $this->vcard = NULL; return true; } else die('Not supposed to happen 2'); default : die('Not supposed to happen 3'); } } return false; } } //Setup VIM: ex: et ts=4 enc=utf-8 : ?>