Hi,
I've tried to make a freemind filter. I've used mediafilter as "template" as I'm very new to php. The idea is to have similar behavior as with mp3 and other media files. So freemind maps could get uploaded and simply used in web pages.
Unfortunatly code does not work. So I ask anyone to look at the code and give me some instructions.
Hi Janko,
I just discovered this thread
I had a quick look at your code, and after changing function mediaplugin_filter($courseid, $text) to function freemind_filter($courseid, $text), it worked about just fine
Since I'm not much of a programmer, I haven't managed to adjust the size of the java applet area. Even though your code sets width and height to 100%, the applet comes up rather small. I hardcoded it to 800x600 px to make it usable, but this definitely needs to be changed.
Thanks for sharing your code -- very useful for me
Markus
I just discovered this thread

I had a quick look at your code, and after changing function mediaplugin_filter($courseid, $text) to function freemind_filter($courseid, $text), it worked about just fine

Thanks for sharing your code -- very useful for me

Markus
Adding to my previous posting: When you add width:100% to .generalbox in your theme's layout.css, the mindmap does use the full width
I have no idea, however, how to increase the height of a mindmap without hardcoding it into filter/freemind/filter.php, so I set it to 500px for the moment, which should look acceptable on 1280x1024 and 1024x768. Also, in line 24, I changed to <br /> -- otherwise IE would cut off the right margin of the mindmap. Hope this helps.
Markus

Markus
Hello Brecht,
Thanks for your interest
Attached is a screenshot of a mindmap (my students' associations with the term "research") that I created with Freemind. I uploaded the .mm file to my course, created a new resource ("compose a new web page"), and simply added a link from the web page resource to the .mm file. With the Freemind filter enabled, the mindmap is automatically rendered on the screen using a java applet. By clicking on the nodes you can fold/unfold the branches.
Cheers,
Markus
Thanks for your interest

Cheers,
Markus
See this one, a beaty of simplicity/elegance: http://xebece.sourceforge.net/screenshots
I love freemind! I can't wait to get this applet working on my site!
Some demos I made for my students of freemind:
http://video.google.com/videosearch?q=dennis+daniels+freemind
Some demos I made for my students of freemind:
http://video.google.com/videosearch?q=dennis+daniels+freemind
This sounds very cool, and I'm interested in the notion of using Freemind mindmaps to provide an alternative navigation around Moodle sites.
I wonder if it might be possible to adapt the filter to use the flash browser for freemind maps, which might get round some of the issues that seem to be associated with Java here?
The flash browsers described here, and here's an example for Using Moodle.
This an attempt to embed it using the flash filter, but it doesn't seem to work!
I wonder if it might be possible to adapt the filter to use the flash browser for freemind maps, which might get round some of the issues that seem to be associated with Java here?
The flash browsers described here, and here's an example for Using Moodle.
This an attempt to embed it using the flash filter, but it doesn't seem to work!
Interesting; I hadn't tested it in IE (not much point these days
). It seems to be a difference between the way <object> and <embed> are handled, I think. I've played around with my blog copy, but the one I gave the address for above uses the bundled javascript to load the flash. As you'll have gathered Flash has been something of a mystery to me, but I tend to prefer it to java as it seems more commonly installed on my pupils' home computers, and the load times are significantly quicker, which would be important for a navigation system I think.

Hi Julian,
Thanks for looking into it. I've not got round to playing with filter yet. By the sound of it, the issue is about passing the parameters to tell it which map to load - there's a javascript loader which comes with the download package, or it's possible to pass the starting map parameter as part of a <param> or <embed> tag. The latter seems to be a more reliable method, from my limited testing:
<embed src="http://stiveshaslemere.com/mgb/UsingMoodle/visorFreemind.swf" width="450" height="450" FlashVars="initLoadFile=http://stiveshaslemere.com/mgb/UsingMoodle/index.mm">
Thanks for looking into it. I've not got round to playing with filter yet. By the sound of it, the issue is about passing the parameters to tell it which map to load - there's a javascript loader which comes with the download package, or it's possible to pass the starting map parameter as part of a <param> or <embed> tag. The latter seems to be a more reliable method, from my limited testing:
<embed src="http://stiveshaslemere.com/mgb/UsingMoodle/visorFreemind.swf" width="450" height="450" FlashVars="initLoadFile=http://stiveshaslemere.com/mgb/UsingMoodle/index.mm">
Dear Antonio,
I have made a flash version of filer.php. I just modified the code a bit and it works so far. Take a look.
------------
function freemind_filter($courseid, $text) {
global $CFG;
// 1 2 4 4
// pre basename inner post
$pattern = '(.+)<a .*href=\"(.+)\.mm.*>(.*)</a>(.*)';
$match = ereg($pattern,$text,$regs);
if($match){
$pre = $regs[1];
$basename = $regs[2];
$discarded = $regs[3];
$post = $regs[4];
// print "<br/>in freemind_filter, matching text = <![CDATA[" . $text . "]]>";
// print "<br/>in freemind_filter, pre = " . $pre;
// print "<br/>in freemind_filter, basename = " . $basename;
// print "<br/>in freemind_filter, discarded = " . $discarded;
// print "<br/>in freemind_filter, post = " . $post;
//
$width = '100%';
$height = '100%';
//
// See if a width parameter has been specified
//
$pattern = 'width=([0-9]+)';
$match = ereg($pattern,$text,$regs);
if($match){
$width=$regs[1];
// print "<br/>width = " . $width;
}
//
// See if a height parameter has been specified
//
$pattern = 'height=([0-9]+)';
$match = ereg($pattern,$text,$regs);
if($match){
$height=$regs[1];
// print "<br/>height = " . $height;
}
$text = $pre.'<object type="application/x-shockwave-flash"data="'. $CFG->wwwroot . '/filter/freemind/visorFreemind.swf" width="XXXXXX" height="YYYYYY">';
$text .='<param name="movie" value="'. $CFG->wwwroot . 'filter/freemind/visorFreemind.swf" />';
$text .='<param name="quality" value="high" />';
$text .='<param name="flashvars" value="initLoadFile='.'ZZZZZZ.mm&openUrl=_blank&startCollapsedToLevel=3&maxNodeWidth=200&mainNodeShape=elipse&justMap=false&defaultToolTipWordWrap=200&offsetX=left&offsetY=top&buttonsPos=top&min_alpha_buttons=20&max_alpha_buttons=100&scaleTooltips=false&bgcolor=0xF8FBFC" />';
$text .='</object>'. $post;
//
// Finally, make all replacements
//
$search = array();
$search[0] = "/XXXXXX/";
$search[1] = "/YYYYYY/";
$search[2] = "/ZZZZZZ/";
$replace = array();
$replace[0] = $width;
$replace[1] = $height;
$replace[2] = $basename;
$text = preg_replace($search, $replace, $text);
}
return $text;
}
--------
I have made a flash version of filer.php. I just modified the code a bit and it works so far. Take a look.
------------
function freemind_filter($courseid, $text) {
global $CFG;
// 1 2 4 4
// pre basename inner post
$pattern = '(.+)<a .*href=\"(.+)\.mm.*>(.*)</a>(.*)';
$match = ereg($pattern,$text,$regs);
if($match){
$pre = $regs[1];
$basename = $regs[2];
$discarded = $regs[3];
$post = $regs[4];
// print "<br/>in freemind_filter, matching text = <![CDATA[" . $text . "]]>";
// print "<br/>in freemind_filter, pre = " . $pre;
// print "<br/>in freemind_filter, basename = " . $basename;
// print "<br/>in freemind_filter, discarded = " . $discarded;
// print "<br/>in freemind_filter, post = " . $post;
//
$width = '100%';
$height = '100%';
//
// See if a width parameter has been specified
//
$pattern = 'width=([0-9]+)';
$match = ereg($pattern,$text,$regs);
if($match){
$width=$regs[1];
// print "<br/>width = " . $width;
}
//
// See if a height parameter has been specified
//
$pattern = 'height=([0-9]+)';
$match = ereg($pattern,$text,$regs);
if($match){
$height=$regs[1];
// print "<br/>height = " . $height;
}
$text = $pre.'<object type="application/x-shockwave-flash"data="'. $CFG->wwwroot . '/filter/freemind/visorFreemind.swf" width="XXXXXX" height="YYYYYY">';
$text .='<param name="movie" value="'. $CFG->wwwroot . 'filter/freemind/visorFreemind.swf" />';
$text .='<param name="quality" value="high" />';
$text .='<param name="flashvars" value="initLoadFile='.'ZZZZZZ.mm&openUrl=_blank&startCollapsedToLevel=3&maxNodeWidth=200&mainNodeShape=elipse&justMap=false&defaultToolTipWordWrap=200&offsetX=left&offsetY=top&buttonsPos=top&min_alpha_buttons=20&max_alpha_buttons=100&scaleTooltips=false&bgcolor=0xF8FBFC" />';
$text .='</object>'. $post;
//
// Finally, make all replacements
//
$search = array();
$search[0] = "/XXXXXX/";
$search[1] = "/YYYYYY/";
$search[2] = "/ZZZZZZ/";
$replace = array();
$replace[0] = $width;
$replace[1] = $height;
$replace[2] = $basename;
$text = preg_replace($search, $replace, $text);
}
return $text;
}
--------
This little Flash tool is obviously not nearly as robust or useful as Freemind or Cmap, but it is free, simple, and it just works - http://dmc.umn.edu/activities/mindmap/
Play with it. You may decide to download it and put it on your server.
Thank you to the U of M Digital Media Center for this cool resource.
Now, how might Ulrike and I use this in our upcoming exchange? Hmmmm....
-- Art
Play with it. You may decide to download it and put it on your server.
Thank you to the U of M Digital Media Center for this cool resource.
Now, how might Ulrike and I use this in our upcoming exchange? Hmmmm....
-- Art
There's a new freemind filter in the Modules and Plugins database. You can read about it in this discussion.