ALPSLAB routeをwikiに貼り付ける
http://route.alpslab.jp/で地図上に簡単にルートを作り、共有することが出来るサービスが始まりました。
とりあえず地元のとあるルートを作ってみました。
http://route.alpslab.jp/watch.rb?id=d5a2305d295b4b1d965682a9ec069eeb
このルートをブログ等に貼り付けることも出来るそうです。
これがかなり面白いので、wikiにも貼り付けたいなと。
俺が所属していたサークルで最近wikiを使うようになったので、そこに貼り付けるようなpluginを作ってみました。Pukiwiki用のpluginです。
ソースコードは以下においておきます。
alpsroute.inc.php
<?php /* * ALPSLAB route Plugin for Pukiwiki * * 改造・再配布等は自由です * 2006/11/03 kappe * http://d.hatena.ne.jp/kappe1982/ * * Usage:書式 * #alpsroute(route id, [align]) * 引数 : 意味 : デフォルト * route id : ルートID : 必須 * align : 配置 : left * */ //***** 定数 **************** // // デフォルト設定 // 原則として変更の必要は無い // define("DEFWIDTH", 320); // 幅 define("DEFHEIGHT", 240); // 高さ define("DEFSRC", "http://route.alpslab.jp/fslide.swf"); // フラッシュのURL define("DEFAPPLICATION", "application/x-shockwave-flash"); // アプリケーションタイプ define("DEFALIGN", "left"); // alignの指定 //************************** // // インライン function plugin_alpsroute_inline() { $args = func_get_args(); array_pop($args); // インラインの場合引数の数+1になる array_push($args,"inline"); return call_user_func_array('plugin_alpsroute_convert', $args); } //**************************** // // コンバート // // function plugin_alpsroute_convert() { $argc = func_num_args(); if ($argc < 1) { return FALSE; } $argv = func_get_args(); if($argv[$argc-1] == "inline") { $binline = 1; array_pop($argv); } $id = htmlentities($argv[0], ENT_QUOTES); // パラメータ $width = DEFWIDTH; $height = DEFHEIGHT; $url = DEFSRC; $apptype = DEFAPPLICATION; $align = DEFALIGN; if ($argc > 1) $align = preg_replace('[\s]', '', htmlentities($argv[1], ENT_QUOTES)); // 出力タグ $rt = <<<EOD <object width="$width" height="$height"> <param name="movie" value="$url" /> <param name="flashvars" value="routeid=$id" /> <embed src="$url" width="$width" height="$height" type="$apptype" flashvars="routeid=$id" /> </object> EOD; if ($binline==1) return "$rt"; // インライン出力 else return "<div align='$align'>$rt</div>"; // ブロック出力 divで括る } ?>
どうにも正規表現が苦手です。ちゃんと勉強しないと。