 |
ソフトウェア > Lotus > Lotus Developer Domain >
Iris Today Archives
Open Server エージェント
 |
 |
 |
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 |
|
|
 |
|
|