2013-05-07 94 views
0
  1. 我需要在用戶刪除文件下載組件(bin圖標)中的附件時以某種方式捕獲事件。我想自動保存文檔或至少告訴他,該文檔已被修改,他必須保存它。 用戶刪除附件並關閉一個窗口,附件保持未刪除狀態。他認爲,用戶不知道附件已經消失,但是它從附件列表中消失。如何捕捉文件下載組件中的刪除和下載事件?

  2. 我需要以某種方式捕捉用戶下載文件時的事件。我希望它被添加到日誌中。 是這樣的:2014年1月1日12:33約翰尼·卡什下載四roses.pdf

任何解決方案? 謝謝,JiKra

回答

0

您可以指定自定義刪除留言與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點擊組件。

+0

是的,我瞭解寶int,但我不喜歡它。這太複雜,不可靠。 :-) – JiKra 2013-05-09 22:37:32

1

我一直在調查這件事,至今還沒有找到攔截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 - 但它會比我更好地介入。

+0

好吧,這似乎是合法的。我將嘗試使用自定義組件解決一些問題。 FileDownload控件是一個非常好的組件,但它有一個巨大的問題,但它不是更易於開發的控件。不管怎樣,謝謝。 – JiKra 2013-05-09 22:28:53

2

如果覆蓋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?