我需要在用戶刪除文件下載組件(bin圖標)中的附件時以某種方式捕獲事件。我想自動保存文檔或至少告訴他,該文檔已被修改,他必須保存它。 用戶刪除附件並關閉一個窗口,附件保持未刪除狀態。他認爲,用戶不知道附件已經消失,但是它從附件列表中消失。如何捕捉文件下載組件中的刪除和下載事件?
我需要以某種方式捕捉用戶下載文件時的事件。我希望它被添加到日誌中。 是這樣的:2014年1月1日12:33約翰尼·卡什下載四roses.pdf
任何解決方案? 謝謝,JiKra
我需要在用戶刪除文件下載組件(bin圖標)中的附件時以某種方式捕獲事件。我想自動保存文檔或至少告訴他,該文檔已被修改,他必須保存它。 用戶刪除附件並關閉一個窗口,附件保持未刪除狀態。他認爲,用戶不知道附件已經消失,但是它從附件列表中消失。如何捕捉文件下載組件中的刪除和下載事件?
我需要以某種方式捕捉用戶下載文件時的事件。我希望它被添加到日誌中。 是這樣的:2014年1月1日12:33約翰尼·卡什下載四roses.pdf
任何解決方案? 謝謝,JiKra
您可以指定自定義刪除留言與deleteMessage
propertie組件 的或我不知道這是否是一個好主意,但它總比沒有好:
到你的頁面添加一些CSJS到一個事件添加到元素在頁面上:
dojo.connect(dojo.byId('The Client side id of the bin icon'), "onclick", function(evt){
//window.alert("hallo");
...
});
我tryed這一點,它與警報(「你好」)的Funktion工作,所以你也可以添加的Funktion至極觸發SSJS事件,這樣就可以節省你的文件。 唯一的問題是要找出圖像的客戶端ID .. maby嘗試添加一個特殊的類到刪除圖標的列中,並在您的代碼中搜索,或通過AllProperties中的rowAttrs
proptertie點擊組件。
我一直在調查這件事,至今還沒有找到攔截fileDownload控件本身的任何方法。但是,如果我已經理解你要做什麼,我有類似的需要告訴用戶附件已被刪除,但實際上並未刪除 - 所以我欺騙了我自己的下載控件。基本上,我使用一個bean攔截文件上傳(Mark Leusnik wrote a post about how to do this with SSJS here),然後將其保存到它自己的保存文檔中。我使用標準重複控件列出鏈接到主要記錄的所有保存文檔,並顯示文件鏈接(See Stephan Wissel's post about XPages File Attachment URLs)。 「刪除」鏈接只是簡單地調用一個標記保存文檔的函數,以便它不顯示在重複控件中。這使我可以捕獲用戶名和日期,並能夠恢復「已刪除」文件。
我還沒有實現跟蹤下載的方式,但我可能採取了類似的方法 - 讓「下載」鏈接調用一個函數來跟蹤下載請求,然後將文件附件的url返回給瀏覽器位置欄。
我確定有一種實際與下載控件本身進行交互的方式,它是一個實例com.ibm.xsp.component.xp.XspFileDownload - 但它會比我更好地介入。
好吧,這似乎是合法的。我將嘗試使用自定義組件解決一些問題。 FileDownload控件是一個非常好的組件,但它有一個巨大的問題,但它不是更易於開發的控件。不管怎樣,謝謝。 – JiKra 2013-05-09 22:28:53
如果覆蓋fileNameHrefValue屬性並將用戶重定向到記錄文件訪問權的下載XPage,則可以跟蹤提交的下載文件。所生成的URL的
<xp:fileDownload
rows="30"
id="fileDownload1"
displayLastModified="false"
value="#{document1.Body}"
allowDelete="true">
<xp:this.fileNameHrefValue>
<![CDATA[#{javascript:
var fName = this.getFileId();
var docUNID = document1.getDocument().getUniversalID();
var path = "http://www.example.com/yourdb.nsf/download.xsp";
path + "?documentId=" + docUNID + "&fileName=" + fName & "&fieldName=Body";
}]]>
</xp:this.fileNameHrefValue>
</xp:fileDownload>
參數fieldName的必須在fileDownloadComponent被綁定到字段匹配。
的download.xsp然後只需要做另一個重定向:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoDocument var="documentFile"></xp:dominoDocument>
<xp:dominoDocument
var="documentLog"
ignoreRequestParams="true">
</xp:dominoDocument>
</xp:this.data>
<xp:this.beforeRenderResponse>
<![CDATA[#{javascript:
var dbPath = documentFile.getParentDatabase().getFilePath();
var url = "http://www.example.com/";
url += dbPath;
url += "/xsp/.ibmmodres/domino/OpenAttachment/";
url += dbPath + "/";
url += documentFile.getDocument().getUniversalID();
url += "/" + param.get("fieldName") + "/";
url += param.get("fileName");
facesContext.getExternalContext().redirect(url);
facesContext.responseComplete();
documentLog.setValue("User", session.getUserName());
documentLog.setValue("FileName", param.get("fileName"));
documentLog.save();
}]]>
</xp:this.beforeRenderResponse>
</xp:view>
編輯:
在這裏你可以找到一種方法來操縱filedownload控制的刪除功能:
Auto-save doc after delete of attachment in File Download control?
是的,我瞭解寶int,但我不喜歡它。這太複雜,不可靠。 :-) – JiKra 2013-05-09 22:37:32