これはDominoの標準機能であり、開発者が何もしなくても表示されるのですが、これは以下の2点で問題となることがあります。
- メッセージは自動的に表示され、開発者はメッセージをカスタマイズすることが出来ない。表示するのをやめることも標準機能では出来ない。
- メッセージが非常に大きく目立つ。
さて、今回に限った話ではありませんが、このように「Dominoが勝手にやってしまうことを制御する」ためには、主に2つのアプローチがあります。
- Dominoがそれを勝手に生成しないよう、極力工夫をする
- Dominoが生成してしまったものは仕方ないとし、生成されてしまったものの表示をいかにコントロールするかを工夫する
今 回の問題を含め、古典的アプローチとしては主に1番目の解決方法が行われていました。例えば、以下のLDD Todayの文書ではこの問題に対する解決策が提示されています。これは、「存在しなかったら、ビューを隠すようにする」というサーバーサイドでの工夫に なります。
「文書が見つかりません」というメッセージの置き換え
一方、サーバーサイドで出来ることには、やや限界があります。今回はこれでもよいですが、ビューを開くたびに、@Dbcolumn が動くのも、ちょっと気にかかります。
そこで登場するのが、クライアント側のテクノロジ(CSS、DHTML)です。
これを使って見事に解決した例が、以下の記事になります。(英語)
Using the DOM to replace "No documents found"
ここで、ポイントとなっているのは、この「文書が見つかりません」というのは、常に h2タグ に囲まれて生成されているということです。(h2タグというのは、見出し2レベルのタグであり、だから、文字サイズが大きい)
すなわち、このビューページの中で、h2 タグがこれしか存在しなければ、h2タグの中身を問答無用に書き換えてしまおうというアプローチです。(事実、よほどパススルーHTMLなどで直接指定しない限りは、h2タグは使われていないと思います)
最初のアプローチとしては、 h2 タグ部分を非表示スタイル指定してしまうという方法です。この方法は文字列を書き換えるのではなく、見えなくしてしまう方法です。非常に簡単です。
第二のアプローチとしては、JavaScriptのDOM機能を使って、h2タグの中身を上書きしてしまうという方法です(DHTMLともいいます)。この場合は、文字列までもがコントロール可能になります。
な かなか JavaScript でこのようなことを行うのは、まだメジャーではないけれど、Ajax全盛期において、少しずつ主流になってくると思います。なお、クライアントサイド側で の調整は、ブラウザ依存があったり、ユーザー側がCSSやJavaScriptをオフにすることで全て無効化されてしまうため注意が必要です。また、クラ イアント側でのアプローチも、Dominoが生成するHTMLに依存するため完璧なコントロールが出来るわけではないですが、少なくとも今回に関しては見 事に機能するという一例になります。
コードの詳細は、紹介した notestips.com のサイトにて記述がありますので、英語ではありますが是非読んでみて下さい。
0 件のコメント:
コメントを投稿