本文へジャンプ

ソフトウェア > Lotus > Lotus Developer Domain > 

Iris Today Archives

Open Server エージェント


Lotus Software
Iris Today Archivesの原文(US)
OpenServer URL コマンドに代わるエージェント・スクリプト

Open Server エージェントのコード全体を以下に示します。

Class DirList
   Public level As Integer
   Public prefix As String
   Public entries List As String
End Class

Sub Initialize
'
' あるシステムのデータベースが、OpenServer で公開されていません。
' ここでは、これらのデータベースをリスト・アップします。
' 修正したいときにはリストを修正できます。

   Dim hidden List As String
   hidden("admin4.nsf") = ""
   hidden("busytime.nsf") = ""
   hidden("setup.nsf") = ""
'
' サーバー上のデータベースのリストを作成します。
'
   Dim pathmap List As DirList
   Set session = New NotesSession
   Set dbdir = session.GetDbDirectory("")
   Set db = dbdir.GetFirstDatabase(DATABASE)
   While Not (db Is Nothing)
     filePath = db.FilePath

' このデータベースを公開するかどうか確認します。

     If (Iselement(hidden(filePath))) Then Goto NextDb

' Windowsのバックスラッシュ「 \ 」を、通常のスラッシュ「 / 」に変更します。

     While (Instr(filePath,"\") > 0)
       Mid(filePath,Instr(filePath,"\")) = "/"
     Wend

' (ファイル名の前に必ず)現状のサブディレクトリーのパス名をつけます。

     path = Strleftback(filePath,"/")

' パス名の前後にはスラッシュをつけて統一します。

     If path = "" Then path = "/" Else path = "/" & path & "/"
     If Not Iselement(pathmap(path)) Then

' ディレクトリー・リストにこのパスを追加します。

       Set pathmap(path) = New DirList
       Set subdir = pathmap(path)
       subdir.level = 0
       subdir.prefix = ""

' このパスが、どの深さのレベルにあるか調べます。

       segment = Instr(path,"/")
       While (segment > 0)
         subdir.level = subdir.level + 1
         If subdir.level > 1 Then subdir.prefix = subdir.prefix & ". . "
         segment = Instr(segment + 1,path,"/")
       Wend
     End If
     Set subdir = pathmap(path)

' このデータベースを表示するための名前を保存します。

     If (db.Title <> "") Then
       subdir.entries(db.FileName) = db.Title
     Else
       subdir.entries(db.FileName) = "(No title: " & db.FileName & ")"
     End If

NextDb:
     Set db = dbdir.GetNextDatabase
   Wend

'
' ソート順にディレクトリーのループ処理を実行し、HTML を生成します。
'
   Set server = New NotesName(session.CurrentDatabase.Server)
   Print "<h2>"; server.Abbreviated; "</h2><ul>"
   Do

' ソート順で最下位にあるパスのディレクトリー・リストを探します。

     lowest = ""
     Forall p In pathmap
       If lowest = "" Then
         lowest = Listtag(p)
       Elseif Listtag(p) < lowest Then
         lowest = Listtag(p)
       End If
     End Forall
     If lowest = "" Then Exit Do ' no entries left in list, so we're done
     Set subdir = pathmap(lowest)
     If subdir.level > 1 Then

' サブディレクトリー名の HTML を生成します。

       Print Mid(subdir.prefix,4);
       Print {<img src="/icons/afolder.gif" border=0>};
       Print Strright(lowest,"/",5,subdir.level - 1);{<br>}
     End If

' 現在処理中のパスについて、データベース・リストに載っている全エントリーの HTML を生成します。

     Forall e In subdir.entries
       Print subdir.prefix;
       Print {<img src="/icons/abook.gif" border=0><a href="};
       Print lowest;Listtag(e);{?OpenDatabase">};e;{</a><br>}
     End Forall

' 現在処理中のパスについての処理を終了し、リストから次のパスの処理を実行します。

     Erase pathmap(lowest)
   Loop

   Print "</ul>"
End Sub
 
上に戻る