Embed Shogiboard - my first mediawiki extension -
-
Upload
taisuke-yamada -
Category
Technology
-
view
1.244 -
download
0
description
Transcript of Embed Shogiboard - my first mediawiki extension -
@tyamadajp
EmbedShogiboard~ 将棋盤 for MediaWiki ~
Why MediaWiki?
いいWikiEngineは沢山あります。でもWikipediaに入る=世界中が使う…かも?
なんで将棋盤?
VSあから2010 清水女流王将
2010年 10月 11日、通常条件での対局で「公式に」プロ棋士の一角(女流)が崩れる
Wikipedia中の棋戦の扱い
チェスの棋譜 チェスの棋譜将棋の棋譜
勝敗だけじゃなく内容も残したい
チェスの充実ぶり凄すぎ…
作ってみた:将棋プラグイン
機能 :CSA形式等の表示・再生
MediaWiki Extensionの種類拡張タイプ できること
SpecialPage, Skin ページ全体を独自生成したり、デザインのカスタマイズができる
Tag WikiText の <mytag>...</mytag> を好きな HTML に置換できる
Magic words WikiText の {{#mymagic: … }} を好きな WikiText に置換できる
Macro WikiText の {{MYVAR}} を好きなテキストに置換できる
Hook ページ更新など MediaWiki の特定動作タイミングに連動して関数を呼ぶ
AJAX スキン内への JS 追加とあわせてコールハンドラ登録で AJAX をできる
今回はコレ
どう作る?MediaWiki Extension$wgExtensionFunctions[] = "efHelloInit";
function efHelloInit() { global $wgParser; $wgParser->setHook("hello", "efHelloRender");}
function efHelloRender($input, $args, $parser) { $parser->disableCache(); return "<p>hello!</p>";}世界で一番簡単なTag Extension。<hello>...</hello>を <p>hello!</p>に変換
$wgHoge? efHuga?
wg:(Media)Wiki Global (Variable)ef:Extension Function
1.歴史的理由から、グローバル変数で 設定情報や主要オブジェクトにアクセス
2.MediaWiki本体や他プラグインとの 干渉を防ぐため、名前付けルールなどが かなり整備されている。
最上位の変数・関数は wgMyExtHogeなど、拡張名を含めるコーディング規約
グローバルの嵐をやり過ごす変数名 用途
$wgExtensionCredits プラグインのクレジット情報の登録先
$wgExtensionFunctions プラグインの初期化関数の登録先
$wgExtensionMessagesFiles メッセージデータベースの登録用
$wgLang ユーザの言語設定
$wgContLang コンテンツの言語
$wgParser WikiText パーサ
$wgHooks フック処理の登録用
$wgServer ウェブサーバの絶対 URL (ベース URL )
$wgScriptPath インストール先の相対 URL
$wgArticlePath 記事リンク生成用の URL
$IP ウェブサーバ上のインストール先フォルダ
計418個あるが、よく使いそうなのは10個程度
EmbedShogiboardの中身
<kifu 再生設定 >棋譜データ</kifu>
<textarea id=hash>棋譜データ</kifu>
<iframe src=盤面 ?id=hash />
1.プラグインとしてはiframe/textareaを 吐き出しているだけ。コメント込みで63行。
2.iframe先はMediaWikiに依存しない 汎用の棋譜プレーヤにできるので潰しが効く
デモネットワークが取れない場合はごめんなさいでスキップします
ここでお知らせ
実は明日、 MediaWiki イベント開催!
WCJ2010 Tech Talk - MediaWiki Developers~開催内容~ ・ Hadoop による Wikipedia データの解析 ・ MediaWiki の内部クラスと応用研究 ・開発者コミュニティに参加するには ・ディスカッション
URL: http://atnd.org/events/9164Hash: #wcj2010
http://www.mediawiki.org/wiki/ Manual:Extensions Manual:Global_object_variables Manual:Configuration_settings Coding_convention
おしまい■ とにかく役に立つリファレンス
■ 参考にしたチェス版
MediaWiki 拡張、作ってみませんか?
■ 今回作った EmbedShogiboardhttps://github.com/tai/mediawiki-kifu
http://www.mediawiki.org/wiki/Extension:EmbedChessboard