FreeMindFlashBrowserでマインドマップを見てもらう

FreeMindをつかっていても、普通の人に配布しようとするとなかなかハードルは高いはず。FreeMindFlashBrowserをつかえばFlashとしてブラウザでみせることができてとても便利。けど、毎回swfとjsと一緒に配布するのも面倒、ということでphp化してみる。


まずは、アップロード用のHTML、ファイル名は適当。

<html><body>
<form enctype="multipart/form-data" action="upload.php" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>
</body></html>

次に、アップロード受付のupload.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>MINDMAPS</title>
<script type="text/javascript" src="flashobject.js"></script>
<style type="text/css">
  html {
    height: 100%;
    overflow: hidden;
  }
  #flashcontent {
    height: 100%;
  }
  /* end hide */
  body {
    height: 100%;
    margin: 0;
    padding: 0;
    background-color: #9999ff;
  }
</style>
</head>
<body>
<?php
$filename = $_FILES['userfile']['name'];
echo "$filename<p>";
?>
  <div id="flashcontent">
     Flash plugin or Javascript are turned off.
     Activate both  and reload to view the mindmap
  </div>
  
  <script type="text/javascript">
    // <![CDATA[
    var fo = new FlashObject("visorFreemind.swf", "visorFreeMind", "100%", "100%", 6, "#9999ff");
    fo.addParam("quality", "high");
    fo.addParam("bgcolor", "#ffffff");
    fo.addVariable("openUrl", "_blank");
<?php
// 4.1.0より前のPHPでは$FILESの代わりに$HTTP_POST_FILESを使用すること
$uploadfile = '.\\tmp.mm';
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
echo "    fo.addVariable(\"initLoadFile\", \"" . "tmp.mm" . "\");";
?> 
    fo.addVariable("startCollapsedToLevel","5");
    fo.write("flashcontent");
    // ]]>
  </script>
</body>
</html>

上記2つを同じディレクトリに置く。


適当なマインドマップファイルをアップすると、upload.phpをおいたディレクトリにtmp.mmというファイル名で保存され、ブラウザでマインドマップを表示することができる。