"Lotus Domino附件开发--BS显示附件"
在Lotus Domino开发中,BS(Browser Side,浏览器端)显示附件是一个常见的需求,特别是在构建基于Web的应用程序时。本文将探讨如何在Lotus Domino中实现这一功能,主要关注如何在浏览器端展示文档的附件,并提供删除附件的选项。
首先,我们需要理解Lotus Domino文档中的附件是如何存储的。在Lotus Domino数据库中,附件是存储在文档的特定字段 `$FILE` 下的。每个附件都有一个唯一的名称,可以通过`@AttachmentNames` 函数获取当前文档的所有附件名。
为了在网页上显示附件,我们可以利用HTML和JavaScript来实现。以下是一个简单的示例,展示了如何在表格中动态创建附件链接:
```html
<table id="attachinfo"></table>
```
在JavaScript部分,我们可以使用jQuery库来操作DOM,如下所示:
```javascript
$(document).ready(function() {
var table_clone = $("table:has(img[alt])").clone();
$("table:has(img[alt])").css({"display": "none"});
$("#attachinfo").append(table_clone);
});
```
这段代码会在页面加载完成后,找到包含`img[alt]`属性的表格并复制,然后将其添加到`#attachinfo`元素中,隐藏原始表格,以便在浏览器侧显示附件信息。
接下来,我们考虑如何生成附件的链接。以下代码展示了如何创建一个链接,用户点击后可以在新窗口中打开附件:
```javascript
thisDb := @ReplaceSubstring(@ReplaceSubstring(@Subset(@DbName ;-1); "" ; "+"); "\\"; "/");
@If(@Attachments!=0; "[<a href=\"/" + thisDb + "/0/" + @Text(@DocumentUniqueID) + "/$FILE/" + @AttachmentNames + "\" target=\"_blank\">" + @AttachmentNames + "</a>]"; "")
```
这里,`thisDb`变量用于获取数据库的URL友好的路径,`@Attachments`函数检查当前文档是否有附件,如果有,则生成一个链接。
此外,我们还需要提供一个选项让用户能够删除附件。这可以通过创建一个复选框和链接来实现:
```javascript
thisDb := @ReplaceSubstring(@ReplaceSubstring(@Subset(@DbName ;-1); "" ; "+"); "\\"; "/");
@If(@Attachments!=0; "[<INPUT TYPE=checkbox NAME=\"%%Detach.1\" VALUE=\"" + @AttachmentNames + "\">" + "<a href=\"/" + thisDb + "/0/" + @Text(@DocumentUniqueID) + "/$FILE/" + @AttachmentNames + "\" target=\"_blank\">" + @AttachmentNames + "</a>]" ; "")
```
在这个例子中,添加了一个复选框,其名称以`%%Detach`开头,这是Lotus Domino Web表单处理中用于删除附件的标准命名约定。
当用户提交表单时,可以检查哪些附件被选中并执行删除操作。但请注意,实际的删除操作需要在服务器端进行,因为涉及到数据库的修改。在服务器端的LotusScript或Java代码中,你需要解析请求参数,根据选定的附件名来删除相应的文件。
最后,如果需要在删除附件时同时更新文档,可以使用`@Detach`函数。但是,这个操作需要谨慎,因为它会永久性地从文档中移除附件,且不会保存历史记录。在执行`@Detach`之前,确保已经正确处理了用户的选择,并且提供了确认删除的提示。
通过结合Lotus Domino的公式语言、JavaScript和HTML,我们可以创建一个BS显示附件的系统,允许用户查看和管理文档的附件。在实际应用中,可能还需要考虑附件的预览、下载、权限控制等更多复杂功能。