当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2014年2月27日木曜日

文書リンクをurlリンクに変更してみる

やっと暖かくなってきました。
それとともに花粉が飛散し始めているようです。家の中に持ち込まないように注意しましょう。

私も花粉症なので、注意しています。


ということで、今日もボタンをクリックしましょう。
にほんブログ村 IT技術ブログへ


では、本題です。
今日はノーツクライアントを利用していると、よく使う文書リンクについてです。
Web化(XPages化含む)するにあたって、既存の文書リンクをどうやってurlリンクへと変換させるかがポイントになってくるかと思います。

そんな時はこちらのサンプルを利用してみてください。
こちらは、"tstBody"というフィールドにある文書リンクの内容を解析して、urlリンクへと変換して"tstText"フィールドへと書き込むものです。

サンプルなので、文書を編集モードで開いた状態でないと使えません。
また、1文書に1つの文書リンクがあるという前提になっています(複数の文書リンクには対応していません)。
Sub Click( Source As Button )
 Dim uiws    As New NotesUIWorkspace
 Dim uidoc   As     NotesUIDocument
 Dim doc     As     NotesDocument
 Dim ritem   As     NotesRichTextItem
 Dim rnavi   As     NotesRichTextNavigator
 Dim rlink   As     NotesRichTextDoclink
 Dim srvName As     NotesName
 Dim httpUrl As     String
 
 Set uidoc = uiws.CurrentDocument
 Set doc   = uidoc.Document
 Set ritem = doc.GetFirstItem( "tstBody" )
 Set rnavi = ritem.CreateNavigator
 If rnavi.FindFirstElement( RTELEM_TYPE_DOCLINK ) = False Then
  Msgbox "リンクアイテムが見つかりませんでした。"
  Exit Sub
 End If
 Set rlink = rnavi.GetElement
 
 Set rnavi = ritem.CreateNavigator
 
 Msgbox _
 "サーバ名:"     & rlink.ServerHint     & Chr$(10) & _
 "DBレプリカID:" & rlink.DBReplicaID    & Chr$(10) & _
 "ビューUNID:"   & rlink.ViewUnID       & Chr$(10) & _
 "文書UNID:"     & rlink.DocUnID        & Chr$(10) & _
 "コメント:"     & rlink.DisplayComment & Chr$(10) & _
 "テキスト:"     & rlink.HotSpotText, _
 0, "文書リンクの情報"
 
 Set srvName = New NotesName( rlink.ServerHint )
 httpUrl = "http://" & srvName.Common & rlink.DBReplicaID & "/" & rlink.ViewUnID & "/" & rlink.DocUnID
 Call uidoc.FieldSetText( "tstText", httpUrl )
End Sub
最後のあたりは、少々強引ですが、一応urlリンクにはなります。
Web化するにあたって、DBリンクだと使いづらいな・・・という場合に利用してみてください。

もちろん、XPages化する際にも、この手法は利用できると思いますので、さらなるチャレンジをしてみてください。


上記はサンプルなので、そのままでは実用には耐えられませんので、注意してください。
改造は自由にやっていただいて良いですが、どうやったらできるの?とか、動かない!という話は承っておりませんので悪しからず。
(どうしてもというのであれば、お仕事としてお話を承りますよ)


では、今日はこの辺で。



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: