すごく久しぶりなDekiWikiネタです。
社内の情報を集めようとすると、Google Spreadsheetなどを貼り付けたくなります。
また、自社開発ツールなどを埋め込むにも、認証トークンを付けたiframeにしてしまうのがとてもお手軽です。
しかし、HTMLエディタでiframeを書いても、エスケープされてしまうことがあります。
DekiWikiでは、iframeの貼り付けは「UNSAFE CONTENT」と見なされ、権限が必要になっているようです。

ここにチェックを入れる
このように、役割管理のところで該当するユーザの役割に「UNSAFECONTENT」を追加すればOKです。
なお、ADMINが付与されていると、UNSAFECONTENTのオン・オフに関係なく貼り付けできます。
高機能ですね。
社内のサーバを仮想化したのに伴い、社内wikiとして使っているdekiwikiも環境移行しました。
dekiwikiは優れたツールですが、移行やバージョンアップはいまいち考えられていない感もありますね。
次のような手順で移行しました。
・新サーバで、aptitudeから普通にdekiwikiをインストール(この際、DBパスワードなどを同じにしておく)
・旧サーバのmysqlデータを、新サーバにコピー
・/var/www/dekiwiki/attachments 以下を、新サーバにコピー
これで一通りは使えるようになります。
インストール後はコントロールパネルからキャッシュの再構築が必要です。
ついでにmonoをバージョンアップしたせいか、動作が劇的に速くなりました。古いmonoはCPUをずっと食い散らかしていたので、何かバグがあったのでしょう。
しかし、新wikiでは以下の問題が発生しました。
・検索すると画面が真っ白になる
・コントロールパネル「削除済みファイル」を開くと画面が真っ白になる
これは2つの問題が複合していました。
まず削除済みファイルの件ですが、attachmentsの中身のコピーが不完全で、エラーになっていたようです。
ファイルのインデックスはmysqlに保存されるため、インデックスが存在してファイル実体が無い場合、エラーになってしまいます。
/var/log/dekiwiki/deki-api.log に表示されるエラーを参考にしながら、完全なコピーを実施します。万が一ファイルを無くしてしまっていたら、とりあえず同名ダミーファイルでもおいておけば良いかもしれません。
次に検索が出来ない件ですが、PHPのメモリ不足でした。
php.iniでmemory_limit を16MBから64MBにしたら、無事検索できるようになりました。ページやファイル数が多くなっているため、結構メモリを食うのですね。
PHPエラーを出力する設定にしないと気づかないので注意が必要です。
すごく久しぶりなMindTouch Dekiのネタです。
BPSの社内Wikiでは、最近更新されたページの他に 最近投稿されたコメントを表示して、活発な議論を促すことにしました。
以下のDekiScriptで実現できます。
<ul style="padding-left:30px;">
foreach (var c in wiki.getsearch('type:comment', 10, '-date')) {
<li>
web.link(c.page.uri, c.page.title);
web.html(' <span style="color:#999999">(' .. c.author.name .. ')');
web.html('<br />');
web.text(c.text);
</li>
}
</ul>
注意点として、バージョンが最新版(9.08)なら動作しますが、9.02などの旧バージョンでは動作しないことがあります。
リリースノートに書いてありますが、getSearch() が空を返すバグがあり、9.08で修正されたようです。
http://developer.mindtouch.com/Deki/Release/Minneopa_(9.08)
簡単なDekiScriptですが、リファレンスにSearchQueryの”type:comment”は載っていないので、少し時間がかかってしまいました。
ドキュメントの更新が追いついていないみたいですね。
久しぶりのMindTouch Deki Wiki TIPSです。
Dekiでは各ページにファイルを添付でき、添付ファイルも検索対象になるため、とても便利です。
しかし、ページ数が増えてくると全添付ファイル一覧を見たくなることもあると思います。
今回は、Wiki内の全添付ファイルを一覧する方法を紹介します。かなり強引なDekiScriptなのですが・・・
まず、テンプレートに新しいページを作り、以下の内容をDekiScriptフォーマットで記述します。
ページ名はShowFilesとして保存しておきます。
<ul>
var pages = [ ];
foreach (var a in xml.select(wiki.tree("/"), "//a"))
{
var text = xml.text(a, '.', null, true);
var id = string.match(text, 'pageid="([0-9]+)"');
var p = wiki.getpage(num.int(id));
let pages ..= [ p ];
}
foreach (var p in pages) {
foreach (var f in p.files) {
<li>
web.link(f.uri, f.name);
web.html('<span style="color:#999999;"> (' .. num.floor( f.size / 1000) .. 'KB)</span>');
if (f.description) {
web.text(f.description);
}
web.html('<br />');
web.html('<span style="color:#999999;">' .. f.page.path .. web.link(f.page.uri, 'goto this page') .. '</span>');
if (f.ThumbUri) {
web.html("<br /><img src=" .. f.ThumbUri .. " />");
}
</li>
}
}
</ul>
あとは、任意のページで
{{ ShowFiles(); }}
と書けばOKです。
ちなみに、トップページに添付したものだけは出てきませんが、これは手抜きです^^
最近、社内用のドキュメント整理用にMindTouch Deki Wikiを導入しました。
全員で編集していくので、とっつきやすさ等を重視して選びました。
有償のエンタープライズ版はデスクトップコネクタ等が使えるようで、少し魅力的でしたが、まずは無償版を使ってみることにしました。
自社サーバにインストールして運用しています。
さて、このDekiWiki、コントロールパネルからタイムゾーンを設定する場所が見つかりません。
ユーザ個人の設定は、ツール→マイプリファレンス から可能ですが、サイトデフォルトがGMTになっているのは不便です。
これを変更するには、/var/www/dekiwiki/LocalSettings.php に以下の行を追加します。
$wgDefaultTimezone = “+09:00″;
DekiWikiは良くできているのに、まだ日本語の情報が少ないのが難点ですね。
このブログでも積極的に情報を発信していこうと思います。