投稿

1月, 2018の投稿を表示しています

フォームのアクセス権をプログラムで制御する

イメージ
皆さん、こんにちは。
いつも冬になると寒いなぁと感じていますが、今年は特に寒さが厳しく感じますよね。
いつも2月が寒さのピークだと思っていますが、1月でこの寒さだと2月になったら・・・
考えるのも嫌になります。

さて、今日は前回(というか前日)の予告通り、
「フォームで文書を作成できるユーザー」の情報をLotusScriptで取得できないものかどうかを確認してみます。
Notes DBは前回作成したものを利用します。

1.なぜ確認するのか? まずは、なぜ確認する必要があるのかを考えてみます。
少なくともNotesクライアントで利用している場合、「フォームで文書を作成できるユーザー」の設定が行われていれば、自動で制御が行われて、文書が異常に作成されることはなさそうです。
ただし、バックエンドで文書を作成後、その文書を編集するという荒業があるので、確認はできた方が良さそうです。
また、最近はNotesクライアントでの利用ではなく、Webブラウザからの利用を推進する動きもありますので、Webブラウザでの動作についても確認する必要があるでしょう。


2.Web画面で実行するとどうなる? ということで、Webブラウザで実行するとどうなるかを確認してみましょう。
Webブラウザで動かすには、クラシックWeb(従来のWeb化の方法で、フォームやページを使って行うものですね)とXPagesを使う方法があります。

さきにクラシックWebで行ってみます。
クラシックWebの場合、Notesクライアント用に作成したNotes DBでも改修をしなくてもそこそこ動いてくれるのがいいところですね。
なので、ビューをそのままWebブラウザで表示して、@Command([Compose];"フォーム名")のアクションを実行してみました。

結果はこちら・・・

なんと、エラーになりました!
素晴らしい!ちゃんと「フォームで文書を作成できるユーザー」に設定されている内容を認識するようです。
ただ、エラーメッセージが分かりにくいですね。「アクセスが認証されていません。」だとログインそのものに失敗したのかな?とか変な心配をしてしまいそうです。
(ちなみに、設定されているユーザーの場合は、Webブラウザでも新規に文書が作成できました)
少なくとも、本来作成できてはいけない文書が作成される…

フォームのアクセス権について

イメージ
皆さん、こんにちは。
もうすぐ1月も終わろうというのに、気がかりなことがあります。
それは・・・
2018年度のIBM Championsの正式なアナウンスがまだされてない!ということです。

例年であれば、12月中には発表されるのですが、2018年度のIBM Championsの発表は翌年の1月になりますよ。という通知が来たので、「年越しかぁ、嫌だなぁ」と思っていました。
なかなか発表されないなぁ。と思っていたら、
2018年1月12日 17:10過ぎに、メールが届きました!!

わーい\(^o^)/ って、正式アナウンスは???
いつも、正式アナウンスがあってメールが来るじゃないか!?
ということで、正式アナウンスが行われる(はず)のブログ(IBM Champion Program News and Views)をチェックしてみました・・・

あれ???載ってない。どういうこと???

どうも、今回は全ブランドのIBM Championを一斉に発表しようとしているらしく、その作業に追われているようで、遅れている模様です。
うーん・・・全ブランドのIBM Championって何人くらいなんだろうか?ICS関連だけで百数十名ですから、600名近くになるのかな?それを一斉に発表って、そりゃぁ時間もかかるでしょう。

ということで、正式アナウンスはまだ(2018/01/27現在)ですが、そのうちされると思いますので、気長に待ちましょう。


さて、雑談はこれくらいにしておいて(長いな・・・)、本題に入りましょう。

今回はフォームのアクセス権について調べてみました。

1.アクセス権とは何? フォームのアクセス権について触れる前に、Notes文書のアクセス権について触れてみます。
IBM Notesでは文書のアクセス権というのはよく聞くと思います。
「読者フィールド」に設定してあるユーザーしか、その文書を読むことができない、また、「作成者フィールド」に設定してあるユーザーしか、その文書を編集することができない(ACLのレベルが"作成者"の場合のみ)というものですね。
ただし、正確に言うと若干違います。
「フィールド」はフォームに設定してあるものです。文書が持つものは「フィールド」ではなく、「アイテム」です。
文書をコピーして、別のNotes DBに貼り付けたとします。

JavaScriptによるイベントの確認

イメージ
新年、明けましておめでとうございます。


さて、ということで、どこかの誰かさんが「新年のブログまだですか?」とか言うので、書いてやろうじゃないか!と思ったので書いてやる次第です(笑)

内容は、昨日書いた
LotusScriptによるイベントの確認
に対して、JavaScriptによるフィールドイベントの確認についてです。

JavaScriptはNotesクライアントでも動きますが、LotusScriptで書いた方が楽ですから、
ここではWebクライアントおよびXPagesでの動作について書いていきます。

検証に使用するNotes DBも昨日と同じものを利用します。


1.クラシックWebの場合
クラシックWebでのフィールドイベントを設定する方法は、Notesクライアントとほぼ同じです。
フォームのフィールドを選択して、「OnChange」「OnBlur」イベントに記述するだけです。
「実行」の個所を"Web"、"JavaScript"にして、コードを記述すればOKです。
上の例は「fldText」というテキストフィールドの「onChange」イベントに記述しています。
コードの内容はWebブラウザのコンソールログにメッセージを表示するものです。
すでにNotesクライアント用のコードが記述してあるので、左側のところが上下の二色になっています。
同じように「onBlur」イベントにもコードを記述してみました。
設定自体は簡単ですね。

実行してみた結果がこちらです。
コンソールログへの表示なので、Webブラウザで「F12」キーを押してデバッグモードにしています。

画面下部の赤枠部分を見てください。
Notesクライアントの場合、OnBlurイベントが発生してからOnChangeイベントが発生していましたが、
WebではonChangeイベントが先に発生しています。
NotesクライアントをWeb化しようとする場合、ここでは注意が必要という事ですね。

では、XPagesの場合はどうでしょう?

2.XPagesの場合
XPagesの場合、フォームに設定・・・はできませんので、XPage画面を作成してその中で設定します。
下図のような画面を作成して、イベントにコードを記述してみました。

編集ボックスコントロールを配置して、そのonblurイベ…