'Pavel Vlasov', 'email' => 'Pavel.Vlasov@hammurapi.com', 'date' => '2010-04-06', 'name' => 'jDraw Plugin', 'desc' => 'Uses JGraphX diagram editor to draw diagrams - Based on draw plug-in.', 'url' => 'http://wiki.splitbrain.org/plugin:jdraw', ); } function getType() { return 'substition'; } function getSort() { return 303; } function connectTo($mode) { $this->Lexer->addSpecialPattern("{{jdraw>.+?}}",$mode,'plugin_jdraw'); } /** * Handle the match */ function handle($match, $state, $pos, &$handler) { return substr($match,8,-2); } /** * Create output */ function render($mode, &$renderer, $indata) { $name = $indata; global $conf; if($mode != 'xhtml') { return false; } //check name $name = strtolower($name); if (strlen($name)==0) { $renderer->doc.="---INVALID_DIAGRAM---"; return true; } $namespace=""; $lastColonPos = strripos($name,":"); if ($lastColonPos>0) { $namespace=substr($name, 0, $lastColonPos); $name = substr($name, $lastColonPos+1); } $namespace.=':'; $media_dir = $conf['mediadir'].'/'.str_replace(":","/",$namespace); if (! file_exists($media_dir)) { mkdir ($media_dir); chmod ($media_dir, 0777); } $image_file = $name.'.'.$this->getConf('image_format'); if (! is_readable($media_dir.$image_file)) { $image_file = $name.'.gif'; // for seamless migration from the previous version. } $types=getMimeTypes(); if (! $types['mxe']) { msg("jDraw plugin needs entry in mime.conf: \"mxe text/xml\"",-1); } $random = rand(0,100000); //to prevent JS errors if one diagram is on a page mupltiple times //base URL to fetch every file $fetchpath = DOKU_BASE."lib/exe/fetch.php?media=$namespace"; $image_id = "jdraw_image__$random"; $renderer->doc.=" [diagram] "; $auth = auth_quickaclcheck("{$namespace}*"); if ($auth >= AUTH_DELETE) { $appletQueryString="dokuBase=".bin2hex(DOKU_BASE); $appletQueryString.="&authtok=".auth_createToken(); $appletQueryString.="§ok=".getSecurityToken(); $appletQueryString.="&sessionName=".session_name(); $appletQueryString.="&sessionId=".session_id(); $appletQueryString.="&name=".bin2hex($indata); $appletQueryString.="&image_format=".$this->getConf("image_format"); $appletQueryString.="&palettes=".bin2hex($this->getConf("palettes")); //$appletQueryString.="&dokuCookie=".bin2hex(DOKU_COOKIE); //$appletQueryString.="&dokuCookieValue=".bin2hex($_COOKIE[DOKU_COOKIE]); if (! is_readable($media_dir.$name.".mxe")) { $appletQueryString.="&isNew=yes"; } $appletQueryString.="&rnd=".$random; // To prevent serving of cached page. $renderer->doc.="Edit
"; } return true; } }