Function ExtractFiles (doc As NotesDocument , filePath As String , extract As Boolean) As String
'handle errors in case of abrupt termination
On Error Goto errorHandler
'declare all the objects and variables necessary for further manipulation
Dim rtitem As NotesRichTextItem
Dim allFileName As String
Dim attname As String
Dim path As String
Dim dirCreated As Boolean
Dim tempDoc As NotesDocument
Dim session As New NotesSession
Set tempDoc = New NotesDocument(session.CurrentDatabase)
Call doc.CopyAllItems(tempDoc)
Call tempDoc.Save(True,False)
allFileName =""
dirCreated = False
Set rtitem = tempDoc.GetFirstItem( "Body")
'Mantis Issue: 7106 Type Mismatch Error Logged in LNCNSFlog.txt File During Export of Message
'the following check will verify whether the document has en embedded object
If ( tempDoc.HasEmbedded ) Then ' code added by Rajesh Kumar
While Not rtitem Is Nothing
Forall eo In rtitem.EmbeddedObjects
If (eo.Type = EMBED_ATTACHMENT) Then
' If Name and Source are different, Name is a random name assigned by Domino...
If eo.Name <> eo.Source Then
' take advantage of the random Name & add extension of the Source...
Call LogWrite ("ExtractFileNames - --Name = " + eo.Name + " Source = " + eo.source)
allFileName = allFileName + "~~##~~" + eo.source + "||" + eo.Name
attname = eo.source + "-~~##~~-" + eo.Name
Else
' No random name was assigned, so it is safe to use Source...
allFileName = allFileName + "~~##~~" + eo.source
attname = eo.source
Call LogWrite ("ExtractFileNames - Extracting ------" + attname)
Call LogWrite ("ExtractFileNames - --Source Only= " + eo.Source)
End If
If (extract) Then
'if the directory is created then
If (Not dirCreated ) Then
path = filePath + Cstr(doc.NoteID)
Call LogWrite ("ExtractFileNames - The path is Extract File Names : "+ path)
'create a directory
Mkdir ( path )
'set the value to true
dirCreated = True
End If
Call LogWrite ("ExtractFileNames - Extracting to path : " + path + "\" + attname)
Call eo.ExtractFile( path + "\" + attname)
End If
End If
End Forall
'remove the current attachment
Call rtitem.Remove
'get the handle to the next document which is the first document ,since the previous doc is removed
Set rtitem = tempDoc.GetFirstItem( "Body")
Wend
Else
' code added by Rajesh Kumar
Call LogWrite ("ExtractFileNames - No Attachment found in the Document")
End If
ExtractFiles = allFileName
Call tempDoc.Remove ( True)
Call LogWrite ("ExtractFileNames - Exiting the function")
Exit Function
'log the error that resulted in abrupt termination
errorHandler:
Call LogWrite ("ExtractFileNames - Exiting the function Got error for doc :" & Cstr(doc.UniversalID) & " " & Error$ & " on line " & Cstr(Erl))
ExtractFiles = allFileName
If Not tempDoc Is Nothing Then
Call tempDoc.Remove ( True)
End If
Exit Function
End Function
Share your thoughts and find that its getting better every day. This work of mine helps me realize that.
Friday, March 25, 2011
Thursday, March 24, 2011
Implementing JQuery in XPages
In an attempt to implement jQuery in xpages, I just wanted to know if XPages work with jQuery. And I understood that it is possible and the following method helped me make it work
First, include the following script library to your XPage
http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.min.js
Then try using some jquery function on it and see it working. The following is an example that I got from w3schools,
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
</script>
<p>If you click on me, I will disappear.</p>
<p>Click me away!</p>
<p>Click me too!</p>
Then preview your page and you will be able to see it work
Hope this helps :)
First, include the following script library to your XPage
http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.min.js
Then try using some jquery function on it and see it working. The following is an example that I got from w3schools,
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
</script>
<p>If you click on me, I will disappear.</p>
<p>Click me away!</p>
<p>Click me too!</p>
Then preview your page and you will be able to see it work
Hope this helps :)
Labels:
jquery,
Lotus Notes,
XPages
Wednesday, March 23, 2011
Crash a Domino Server - an other SSJS did it
In addtion to what I have found previously - http://ozinisle.blogspot.com/2011/03/crash-domino-server-oops-ssjs-did-it.html, I happened to stumble upon an other code fragment that did it. I mean crashing my domino server.
This time its a more serious one to be aware of. Because the following line of code works perfectly until it breaks. So be care full.
viewHandle.getColumnValues(colNumber)
where, viewHandle is a NotesView object.
Hope this helps :)
This time its a more serious one to be aware of. Because the following line of code works perfectly until it breaks. So be care full.
viewHandle.getColumnValues(colNumber)
where, viewHandle is a NotesView object.
Hope this helps :)
Labels:
Bugs,
Crash Lotus Notes,
Lotus Notes,
Server Side Javascript,
XPages
Wednesday, March 16, 2011
@DbColumn - An other way in SSJS
In addition to my recent adventure on crashing a domino server, the following work around helped me fix the issue and it seems to be an elagant way to get the column values from a view column
var viewHandle:NotesView=database.getView(viewName)
return viewHandle.getColumnValues(colNumber-1)
var viewHandle:NotesView=database.getView(viewName)
return viewHandle.getColumnValues(colNumber-1)
Labels:
Lotus Notes,
Server Side Javascript,
XPages
Crash a Domino Server - oops SSJS did it
In an attempt to simulate @DbColumn using SSJS, i used a few lines of code which included the following,
doc.getColumnValues();
To my astonishment, I found that my domino server had crashed. Yes the server it self had crashed every time it read this code fragment.
I have coded a few lines in the past that crashed Lotus notes client/designer, but never had the opportunity to crash a server. And now it took me XPages to do it :)
Looking for a work around :(
doc.getColumnValues();
To my astonishment, I found that my domino server had crashed. Yes the server it self had crashed every time it read this code fragment.
I have coded a few lines in the past that crashed Lotus notes client/designer, but never had the opportunity to crash a server. And now it took me XPages to do it :)
Looking for a work around :(
Labels:
Bugs,
Crash Lotus Notes,
Lotus Notes,
Server Side Javascript,
XPages
Monday, March 14, 2011
Execute Client Scripts in the After Page Load event of XPage
In order to execute client side scripts in the after page load events of an XPage, one must use dojo to accomplish it. I think I know an other way to do this, but the one posted below seems simple and effective to me. All you got to do is add the following to your XPage and test it for your self
dojo.addOnLoad(yourJavascriptFunction)
Hope this helps :)
dojo.addOnLoad(yourJavascriptFunction)
Hope this helps :)
Wednesday, March 9, 2011
Triggering Client script from server side : Xpages
Triggering client script from server side on XPages saves developers in many scenarios.
I missed them so badly until I came to know about the "xp:onComplete" tag.
Associate this property to the event handler of any of the controls with partial refresh enabled and voila you are ready to go.
The following is a simple example on getting the property to work in xpages.
Ensure that the control does not have full update enabled cos, this method would work only when partial refresh is enabled
I missed them so badly until I came to know about the "xp:onComplete" tag.
Associate this property to the event handler of any of the controls with partial refresh enabled and voila you are ready to go.
The following is a simple example on getting the property to work in xpages.
Ensure that the control does not have full update enabled cos, this method would work only when partial refresh is enabled
Labels:
Javascript,
Lotus Notes,
Server Side Javascript,
XPages
Handling "java.lang.OutOfMemoryError" - notes.ini Keyword: JavaMaxHeapSize
Syntax: JavaMaxHeapSize=number of bytes
Example: JavaMaxHeapSize=67108864
Default value: 67108864 (64mb)
Description:
Specifies the maximum--not initial--size the Java heap can reach. The Java Virtual Machine (JVM) starts out at 16MB of heap space and most of it is uncommitted. If the JVM needs more heap than it currently has, it will expand the heap in increments but will not exceed the maximum. Exceptions such as "java.lang.OutOfMemoryError" indicate that a heap has reached its maximum size. You can specify the number of bytes directly or use the suffix "MB" to indicate megabytes, for example, specifying "64MB" is the same as specifying "67108864."
Resource obtained from : http://www.lntoolbox.com/en/notesini-reference/bycategory/serverconfiguration/14-Server_Configuration/1148-javamaxheapsize.html
Hope this helps :)
Example: JavaMaxHeapSize=67108864
Default value: 67108864 (64mb)
Description:
Specifies the maximum--not initial--size the Java heap can reach. The Java Virtual Machine (JVM) starts out at 16MB of heap space and most of it is uncommitted. If the JVM needs more heap than it currently has, it will expand the heap in increments but will not exceed the maximum. Exceptions such as "java.lang.OutOfMemoryError" indicate that a heap has reached its maximum size. You can specify the number of bytes directly or use the suffix "MB" to indicate megabytes, for example, specifying "64MB" is the same as specifying "67108864."
Resource obtained from : http://www.lntoolbox.com/en/notesini-reference/bycategory/serverconfiguration/14-Server_Configuration/1148-javamaxheapsize.html
Hope this helps :)
Empty Contents of an IFrame - Javascript
Following is one effective way that can help one to empty the contents of an iFrame.
window.frames['iFrameID'].location.href="about:blank";
Following are a few other methods that might work,
window.frames[['iFrameID'].location.href=" ";
window.frames[['iFrameID'].location.reload();
window.frames[['iFrameID'].document.close();
window.frames[['iFrameID'].document.body.innerHtml="";
hope this helps :)
window.frames['iFrameID'].location.href="about:blank";
Following are a few other methods that might work,
window.frames[['iFrameID'].location.href=" ";
window.frames[['iFrameID'].location.reload();
window.frames[['iFrameID'].document.close();
window.frames[['iFrameID'].document.body.innerHtml="";
hope this helps :)
Friday, March 4, 2011
Tuesday, March 1, 2011
Accessing parent from an iFrame
Accessing a the parent page which contains an iframe from with in the iFrame is as follows,
var parentDOMDoc=parent.document
again, access restrictions are applicable here i.e if the IFrame's document are not in the same domain as the parent frame, then you may be denied access to it's contents due to security features of most browsers.
var parentDOMDoc=parent.document
again, access restrictions are applicable here i.e if the IFrame's document are not in the same domain as the parent frame, then you may be denied access to it's contents due to security features of most browsers.
Accessing iframe contents using javascript
The following is a way to access the contents of an IFrame.
var ifrm = document.frames["myIFrame"].document.forms[0]
This should return the form element associated with the iframe. In most cases where the above code fails try using window.frames instead of document.frames and that would work.
On top of this if the IFrame's document is not in the same domain as the parent frame, then you may be denied access to it's contents due to security features of most browsers.
var ifrm = document.frames["myIFrame"].document.forms[0]
This should return the form element associated with the iframe. In most cases where the above code fails try using window.frames instead of document.frames and that would work.
On top of this if the IFrame's document is not in the same domain as the parent frame, then you may be denied access to it's contents due to security features of most browsers.
Subscribe to:
Posts (Atom)