ラムネグから一言:寝る前に読むとくだらなすぎて逆に寝れると好評なすごい適当なブログをこっちではじめてます.
dokuwikiで表をエクセルのように編集できるEditTableというプラグインがあります。
私の環境だけかもしれませんが、スマホで表を編集しようとしてもダブルタップしても入力ができず、また長押しして表に行列を追加しようとしてもうんともすんとも言いません。
これではスマホから表を編集するときに普通に地のwikiで編集しなくてはいけず不便ですよね。画面の小さなスマホだからこそEditTableのようなプラグインで編集したいはず。
ここではdokuwikiのEditTableプラグインをスマホからでも編集できるようにする方法を紹介しますね。
注意点
この方法はあえてEditTable製作者(というかその土台になっているhandsontable製作者さん)がモバイル向けに入れている処理を全て無効にすることで行います。
一応手持ちのスマホではレイアウト崩れなどなく動いていますが、スマホの種類(アンドロイド、アイフォン)や機種の古い新しいによってレイアウトが崩れたり、表をうまく編集できない状態になる可能性がありますので、そこだけ注意ください。
やり方
「dokuwiki/lib/plugins/edittable/lib/handsontable.full.js」の5,513、5,514行目の2行を以下に変更するだけ。
return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent)
);
↓↓↓↓↓
return false;
これでスマホでもパソコンと全く同じ操作感になります。
説明
以上で編集自体は終わっているのでここから下は時間のある方だけお読みください。
今回EditTableプラグインのプラグインプログラム自体を編集してます。で、EditTableプラグインはそのベース、というかほとんどの処理をhandsontableという別のライブラリで行っているんです。エクセルライクっぽく使える、というのもほぼほぼhandsontableの機能なんですね。
で、このhandsontableがEditTable自体にそのまま含まれてて、このhandsontableのプログラム内でやたら「モバイルだったら~」という条件分岐があるんです。
先ほど修正した1行は、この「モバイルだったら~」を判定している関数「isMobileBrowser()」の返り値をfalseに固定する、という事をしました。
これで、handsontableの各処理で「モバイルだったら~」が絶対にfalseになるので、パソコンと同じ処理しか走らなくなるんです。
まとめ
dokuwikiのEditTableプラグインがそのままだとスマホからだと使えないので、使えるようにする方法を紹介しました。
まとめると、プログラム内のモバイル判定を完全に切ることでパソコンと同じ編集感にすることが可能、というコトでした。
ただhandsontable製作者とすれば、なにかしらスマホだと気をつけなくちゃいけないことがあって、わざわざモバイルかどうかを判定していたはず。それを全部切る今回の修正はちょっと雑すぎる気もしますが、このEditTableプラグインに同梱されてるhandsontableがめちゃめちゃ前のバージョンのもので満足に使用方法などの資料がなく、また、handsontable部分だけを最新版に変えてみても全然動かなかったので、やむなくモバイル判定全切り、という手段をとっています。
とりあえずスマホでもパソコンと全く同じ使用感にあるだけなので大きな問題はないと思いますし、このhandsontableはjavascriptなのでwiki自体に影響が出る(例えばwikiの文章が消えるとか、wikiの機能が何かしら損なわれるとか)ことはないです。また何かあれば追記しますね。
【おしらせ、というか完全なる宣伝】
文体がもうぜんぜん適当すぎてあれだけどものすごい自由に書いてるブログ「檸檬だくだく」もよろしく.寝る前に読める恐ろしくくだらないやつです.
こんなにも一ミリも目を引かれないタイトルを取り扱ってます: ココア20g / ハイチュウとかってさ / なぜ米と小麦を食べようと思ったのかの謎 /

