Extension talk:FreeMind/ru

Версия для Mediawiki 1.18.1
Расширение FreeMind не работает с MediaWiki 1.18+ потому что Image class был удалён. Протестировано на Ubuntu 11.04 и MediaWiki 18.1. Этот код вставить в FreeMind.php: setHook("mm", "renderMindmap"); } // The callback function for converting the input text to HTML output function renderMindmap($input) {   // Default parameter values: $mm_height = "800"; $mm_type = "flash"; $mm_target = "embedded"; $mm_notitle = 0;

if (preg_match('/^\s*\[{2}\s*:\s*(\w.*)\]{2}\s*$/', $input, $matches)) { $mm_target = "link"; $input = $matches[1]; } else if (preg_match('/^\s*\[{2}\s*(\w.*)\]{2}\s*$/', $input, $matches)) { $mm_target = "embedded"; $input = $matches[1]; } else{ return MindmapHelp($input); }

$mm_title = ""; $mm_description = "";

$paramVector = explode("|", $input); $url = $paramVector[0]; $paramNumber = count($paramVector); for ($i = 1; $i < $paramNumber; $i++) { $param = trim($paramVector[$i]); if (preg_match('/^\s*[0-9]+p[xt]$/', $param)) { $mm_height = $param; }       else if (preg_match('/^(\w+)\s+(.*)$/', $param, $pair)) { if ("title" === $pair[1]) { $mm_title = $pair[2]; } else if ("parameters" === $pair[1]) { preg_match_all('/(\\w+?)\\s*=\\s*"(.+?)"/', $pair[2], $match, PREG_SET_ORDER); foreach ($match as $i) $params[$i[1]] = $i[2]; preg_match_all('/(\\w+?)\s*=\s*([^"\s]+?)/', $pair[2], $match, PREG_SET_ORDER);               foreach ($match as $i) $params[$i[1]] = $i[2];            } else {                if ($mm_description != "")                    $mm_description .= '|';                $mm_description .= $param;            }        } else {            if ("flash" === $param || "applet" === $param) {                $mm_type = $param;            } elseif ("notitle" === $param) {                $mm_notitle = 1;            } else {                $mm_description .= $param;            }        }    }

if ($mm_description === "") { $mm_description = $url; }

if($mm_notitle){ $mm_title = ""; } elseif ($mm_title === "") { $mm_title = $url; } $imageTitle = Title::makeTitleSafe("Image", $url); if($imageTitle == NULL){ return MindmapNotFoundError($url); } $file = wfLocalFile($imageTitle);

if($file->exists == NULL){ return MindmapNotFoundError($url); }   $url = $file->getViewURL(false);

global $wgServer, $wgScriptPath, $wgTitle, $wgUrlProtocols, $wgUser; static $flashContentCounter = 0; if ($mm_type === "flash") { $params['initLoadFile'] = $url; if (isset($params['openUrl'])) unset($params['openUrl']); if (! isset($params['startCollapsedToLevel'])) $params['startCollapsedToLevel'] = "5"; if (strcasecmp($mm_target, "embedded") == 0) { $flashContentCounter++; require_once("freemind/flashwindowFunction.php"); $output = getMindMapFlashOutput($mm_title, $params, $flashContentCounter, $mm_height, "$wgScriptPath/extensions/freemind/"); } else if (strcasecmp($mm_target, "link") == 0) { $ref = "$wgScriptPath/extensions/freemind/flashwindow.php?"; } else { $output = MindmapHelp($url); }   } else if ($mm_type === "applet") { $server = $_SERVER['SERVER_NAME']; $params['browsemode_initial_map'] = "http://$server$url"; if (isset($params['type'])) unset($params['type']); if (isset($params['scriptable'])) unset($params['scriptable']); if (isset($params['modes'])) unset($params['modes']); if (isset($params['initial_mode'])) unset($params['initial_mode']);

if (strcasecmp($mm_target, "embedded") == 0) { require_once("freemind/appletwindowFunction.php"); $output = getMindMapAppletOutput($mm_title, $params, $mm_height, "$wgScriptPath/extensions/freemind/"); } else if (strcasecmp($mm_target, "link") == 0) { $ref = "$wgScriptPath/extensions/freemind/appletwindow.php?"; } else { $output = MindmapHelp($url); }   } else { $output = MindmapHelp($url); }   if (! isset($output) && $mm_target === "link") { $params['mm_title'] = rawurlencode($mm_title); $params['mm_height'] = $mm_height; foreach ($params as $key => $value) { $ref .= "$key=$value&"; }       $ref = substr($ref, 0, -1); $output .= "$mm_description"; }   if ($mm_target == "embedded") $output = "$output"; return $output; }

function MindmapHelp($input) {   return ' Ebbedded Mind Map Syntax error in :  Syntax:       Examples:           '; }

function MindmapNotFoundError($input) {   return ' Error: Mind Map file  not found  '; } ?> I'm not an expert, so I don't know if the code is ok. Maybe one of the experts can have a look at the code.

--Günter Gratzer 16:35, 8 February 2012 (UTC)
 * Gunter - Very Senks!!!! It's Works on Ubuntu 11.04 + MW 18.1

1.18, bugs
Thanks that ALMOST works now. The Mindmap does not show, that was due to me using IIS, please see below, but the MM controls does.

I STILL get this error in php-errors.log:

[22-Feb-2012 16:57:55 UTC] PHP Notice: Undefined variable: mm_bgcolor .. in C:\inetpub\FSWiki181-ny\extensions\freemind\flashwindowFunction.php on line 13

--Asset (talk) 17:02, 22 February 2012 (UTC)

In IIS you need to specify the mimetype (whatever that is) as mm and application/xml

I don't have the problem with undefined variable. Maybe I have different flashwindowFunction.php. This is my code: <a href="'.$parameters['initLoadFile'].'">'.$mm_title.'</a> '; }	$output.=' <script type="text/javascript" src="'.$path.'flashobject.js"> ' .'<div id="flashcontent'.$flashContentCounter.'"> Flash plugin or Javascript are turned off. Activate both and reload to view the mindmap <script type="text/javascript"> // <![CDATA[ var fo = new FlashObject("'.$path.'visorFreemind.swf", "'.$path.'visorFreeMind", "100%", "'.$mm_height.'", 6, "'.$mm_bgcolor.'"); fo.addParam("quality", "high"); fo.addParam("bgcolor", "#ffffff"); ';	foreach ($parameters as $key => $value) $output.="fo.addVariable(\"$key\", \"$value\");\n"; $output.='fo.addVariable("openUrl", "_blank"); fo.write("flashcontent'.$flashContentCounter.'"); // ]]> ';	return $output; } ?> --Günter Gratzer 13:43, 27 February 2012 (UTC)