Query results for : Development
Improving the Mail Template in 12.0.x and 14.0 - Manage Return Receipts according to RFC 2298- 24 September 2024 - (0) Comments
Thomas Hampel
24 September 2024Just a short revisit of a previous blog post which I wrote 7 years ago based on a friendly request from a customer.
mail-template-9.0.1-feature-pack-9-manage-return-receipts-according-to-rfc-2298.htm
The code below is almost the same. It is just now avoiding to introduce a new variable named 'doc' and it is put at the beginning of the event to also cover situations where the document is opened in preview mode.
According to RFC 2298 http://www.ietf.org/rfc/rfc2298.txt it is recommended to show a dialog box where the recipient of a mail can decide weather or not a return receipt shall be sent back to the originator of the mail.
This behavior is not currently part of the Standard HCL Mail template.
To add this feature you have to modify the following design elements:
- Form “Memo”, Event "QueryOpenDocument", added the code shown below
- Form “Reply”, Event "QueryOpenDocument", added the code shown below
- Form “Reply With History”, Event "QueryOpenDocument", added the code shown below
Insert this code at the BEGINNING of the QueryOpenDocument event.
If Source.isNewDoc Then
'# don' t do anything, as this is a new document
Else
If Source.document.GetItemValue("ReturnReceipt")(0) = "1" And Source.document.HasItem ("DeliveredDate") Then
If Messagebox ("The sender of this message has asked to be notified when you read this message." & Chr(13) & "Do you wish to notify the sender?", 36, "Send Return Receipt?") = 7 Then
Call Source.document.ReplaceItemValue ("ReturnReceipt", "0")
Call Source.document.Save(True, False, True)
End If
End If
End If
For clarity, this is what the QueryOpen event looks like BEFORE the modification:
and AFTER the modification it looks like this:
New HCL Domino Marketplace - Get your apps & tools listed now!- 3 April 2024 - (0) Comments
Thomas Hampel
3 April 2024Good News Folks!
"It took forever, but now it's live" wrote the engineer (Thank You Scott) when he told me that our redesigned HCL Domino Marketplace submission form finally went live.
Based on input from our developer and partner community the team improved the functionality and the look and feel of the site.
The submission process has been revamped into a multi-stage form with improved structure, enabling the option to save submissions as drafts.
Submitting your products, solutions, or Domino templates is free of charge and now is even easier than ever.
Try yourself:
Simply follow these steps:
1. Start here: https://hclsofy.com/managecontent
2. Log in with your existing HCL ID / Partner credentials, or create a new account as needed.
3. Click on "Domino Submission"
4. Fill in the required information about your application.
Please note, there are two type of applications:
- Products, which are commercial Domino applications, addons, templates, etc.
- Templates, which are non-commercial templates you want to make available for download at no charge.
5. Upload any necessary screenshots, provide the metadata required
6. Hit submit, and you're done!
References:
- HCL Domino Marketplace
- Here you can find a more detailled description of each field and how to fill the form
- My Blog Submit your apps now.
HCL Domino Marketplace - submit your apps, products, solutions, and templates NOW- 19 December 2023 - (0) Comments
Thomas Hampel
19 December 2023Dear HCL Domino Community, Developers and Partners,
Earlier this year at the Collabsphere conference, we announced to be working on our brand-new HCL Domino application marketplace/appstore, and we want YOU to be a part of it!
We believe that your applications deserve a spotlight, and our new marketplace is the perfect platform for you to showcase your work to a wider audience.
Here are a few reasons why you should consider submitting your applications to our marketplace:
Increased Visibility:
The new Domino marketplace is designed to attract current and new customers, tech enthusiasts, and industry professionals.
By featuring your applications here, you'll get the exposure your work deserves.
Our courtesy to your HCL Domino investment
Having your application listed is free of charge.
All we need is some information about your app such as name, description, sreenshots.
Improving adoption
Even if your application or tool is a non-commercial asset you have developed, submitting it to the Domino marketplace will grow your user base and reputation.
Receive valuable feedback from users and improve your applications based on real-world usage. This iterative process can lead to enhancements and optimizations you might not have considered.
Submitting your application is easy!
Simply follow these steps:
1. Start here: https://hclsofy.com/managecontent
2. Log in with your existing HCL ID / Partner credentials, or create a new account as needed.
3. Click on "Domino Submission"
4. Fill in the required information about your application.
Please note, there are two type of applications:
- Products, which are commercial Domino applications, addons, templates, etc.
- Templates, which are non-commercial templates you want to make available for download at no charge.
5. Upload any necessary screenshots, provide the metadata required
6. Hit submit, and you're done!
Here you can find a more detailled description of each field and how to fill the form.
We can't wait to see the amazing applications you've developed and share them with the world.
If you have any questions or need assistance during the submission process, please let me know
Thank you for being a driving force in the world of the Domino technology!
Running HCL Domino Designer in your browser?- 20 September 2023 - (0) Comments
Thomas Hampel
20 September 2023Hot on the heels of our HCL Nomad for Web V1.0.9 Gold Release, we have deployed the next Pre-Release of HCL Nomad for web into our Sandbox Environment !
We have updated the environment and are inviting you to try out the latest version (V1.0.10.5384-3229).
This Pre-Release of V1.0.10 includes a VERY important new piece of functionality - HCL Domino Designer in your browser!
Yes, you read that correctly! You now have the ability to launch the HCL Domino Designer in your browser - just like you do with the HCL Nomad for Web client.
You will have the ability to make design changes to your HCL Domino applications without having the HCL Domino Designer client installed onto your computer!
Like the installable Domino Designer client, this browser based Designer allows to manage design elements like forms, @formulas...
...views, pages...
...LotusScript Agents and Script Libraries (including the LS Debugger)
and a lot more of what you expect from your well known Domino Designer.
Since it runs in the same context as Nomad, the same restrictions will apply - meaning there is no Java and so it wont be possible to build XPages or Java code with it.
Personal note:
A remarkable improvement compared to the classic Notes Client is the properties dialog which now is a sidebar and longer is a free floating window. Hope you like it as much as I do?
Interested in trying this new Designer yourself?
Just head over to the HCL Nomad Sandbox and create an account or log in to get started.
Within the Sandbox environment we have a number of Domino Sample Applications for you to use while in the HCL Nomad Sandbox.
In order to easily access these Sample Applications we have modified the Feedback Forum to now have the ability to add the Icons to your Workspace for you.
To access the Feedback Forum, follow these steps:
1. Log into the HCL Nomad Sandbox
2. From the "Recent Applications" page, click on "Open Application" in the top-right corner of the page
3. In the "Look in" field, select "NomadWeb/SandboxBeta" as the Domino server
4. Scroll through the list of applications until you locate "Nomad for Web Browsers Feedback" and double click on that entry
Once you have the Feedback Forum open, you will see a new entry on the left navigator titled "Deploy Sample Apps".
When you click on that option, five (5) Sample Applications will be added to your Workspace.
References:
.
Admin Client - custom icons for each domain?- 10 June 2023 - (0) Comments
Thomas Hampel
10 June 2023When you have to manage multiple Domains in your Admin client, finding the right domain
This example here is just showing two Domino Domains, but there are admins out there with 100+ domains to manage.
Maybe you want some custom icons then?
Those icons displayed on the left side are nothing else than an Outline stored in the bookmark.nsf application on your client.
Of course you could edit the design manually:
First you need to upload the preferred icon image as an image resource, then you can edit the Outline called "AdminBookmarkOrder"
to select the image of your choice
Even better if you can do this with a small script:
%REM
Created Jun 10, 2023 by Thomas Hampel
Description: Comments for Agent
%END REM
Option Public
Option Declare
Sub Initialize
Dim s As New NotesSession
Call SetAdminBookmarkImage ("INTERN", "HCL Domino_Color_Icon_32.png")
End Sub
%REM
Function AdminBookmark
Description: Comments for Function
%END REM
Function SetAdminBookmarkImage (DomainName As String, ImageName As String) As Boolean
Dim outline As NotesOutline
Dim oe As NotesOutlineEntry
SetAdminBookmarkImage = False
'# open Bookmarks.nsf locally
Dim db As New NotesDatabase ("", "bookmark.nsf")
If Not db.isopen Then
Print "Unable to open bookmark.nsf"
Exit function
End If
'# get Outline
Set outline = db.GetOutline("AdminBookmarkOrder")
Set oe = outline.GetFirst()
'# first Outline entry level (must) have label "($Admin)"
If oe.Label = "($Admin)" Then
'# step one level down
Set oe = outline.Getchild(oe)
'# loop all children
While Not oe Is Nothing
If (oe.Label = DomainName$) Then
'# set imageName
Print "Changing bookmark icon image of " & oe.label & " to " & ImageName$
oe.Imagestext = ImageName$
Call Outline.Save()
End If
Set oe = outline.Getnextsibling(oe)
Wend
End If
SetAdminBookmarkImage = true
End Function
The Bad News:
Your customizations will disappear when you refresh the list of servers.
Good news:
1. In Domino V14 you'll have Admin Central, a new Domino application to manage your environment, where each Domain will be one database icon on your workspace
2. After refreshing the list of servers you could just run the script again.
References:
AdminClientDomainBookmarkIcon.lss
Developers: New C API Toolkit 12.0 is available now- 2 September 2021 - (0) Comments
Thomas Hampel
2 September 2021Again: good news for developers and partners out there who work on plugins and extensions for Domino.
We just published the V12 version of the C API Toolkit for Domino and Notes:
Interesting side note: after 7 years without any new release, HCL published two major releases of the toolkit just in one year.
This new version provides a number of new API calls and -as promosed- provides the make files and MSVS project files developers were looking for.
You can find the new V12 C API Toolkit in the Domino V12 server product category on Flexnet Downloads
Reference:
Developers: New C API Toolkit 11.0.1 now available- 8 February 2021 - (0) Comments
Thomas Hampel
8 February 2021Good news for developers and partners out there who work on plugins and extensions for Domino.
We just published a new version of the C API Toolkit, actually the first new version since more than 7 years.
This is the first HCL shipment of the C API and it signals an ongoing commitment to revamp the C API delopment story,
it now supports building applications using the GUI environment for Visual Studio 2017.
However, as Ulrich Krause already highlighted in his blog it does contain just a very few new API calls yet, also make files were removed because they did not work anymore.
HCL's development team is working on a V12 version of the C API Toolkit that will be providing make files and MSVS project files again. This version 12 will be provided after Domino V12 has shipped.
You can find the current/updated C API Toolkit in the Domino server product category on Flexnet Downloads
Reference:
Improving the Mail Template 9.0.1FP9 - Manage Return Receipts according to RFC 2298- 19 September 2017 - (0) Comments
Thomas Hampel
19 September 2017According to RFC 2298 http://www.ietf.org/rfc/rfc2298.txt it is recommended to show a dialog box where the recipient of a mail can decide weather or not a return receipt shall be sent back to the originator of the mail. This behavior is not currently part of the Standard IBM Mail template.
To add this feature you have to modify the following design elements:
- Form “Memo”, Event "QueryOpenDocument", added the code shown below
- Form “Reply”, Event "QueryOpenDocument", added the code shown below
- Form “ReplyWithHistory”, Event "QueryOpenDocument", added the code shown below
Insert this code at the end of the QueryOpenDocument event.
Set doc = Source.document
If Source.isNewDoc Then
'# don' t do anything, as this is a new document
Else
If doc.GetItemValue("ReturnReceipt")(0) = "1" And doc.HasItem ("DeliveredDate") Then
If MessageBox ("The sender of this message has asked to be notified when you read this message." & Chr(13) & "Do you wish to notify the sender?", 36, "Send Return Receipt?") = 7 Then
Call doc.ReplaceItemValue ("ReturnReceipt", "0")
Call doc.Save(True, False, true)
End if
End If
End If
Reference:
http://www.ibm.com/developerworks/lotus/library/ls-BlockRetRec/index.html
Git Push Error : RPC failed; curl 56 SSLRead() return error -9806- 21 September 2016 - (0) Comments
Thomas Hampel
21 September 2016I am using Git for version control of software projects I am working on.
Recently I wanted to push the changes I've made to a Domino template my git client responded with the following error:
error: RPC failed; curl 56 SSLRead() return error -9806
fatal: The remote end hung up unexpectedly
To cut a long story short : this problem was caused by using HTTP(S) for pusing changes to the git server. After changing to SSH, everything worked fine again.
Root Cause for ’Type mismatch in method OP_UNARY’- 21 March 2016 - (0) Comments
Thomas Hampel
21 March 2016Quickly creating a mail with Buttons containing LotusScript can cause headaches.
It just takes a few lines of code for running into undocumented error messages here is a small example:
will result in:
Changing "if not ..." to "is ..." like shown here
will result in a slightly different error message "Type mismatch in method IfCoerceBool: Unknown found, Uknown expected"
Do you spot the problem???
What is the root cause?
The property "IsNewDoc" acutally is a property of NotesUIDocument but is not a valid property of the NotesDocument class.
For testing if a NotesDocument is a new document, use the property IsNewNote
When creating a new button within the body of a new mail, Option Declare is not enabled by default like it is in the Designer client, so the error was not detected when saving the source code.
with Option Declare enabled its easier to spot the problem...
Reminder:
- Option Declare is your friend
Mindoo FTP Server stopped running in Domino- 23 July 2015 - (2) Comments
Thomas Hampel
23 July 2015The Mindoo FTP Server project provides an FTP server wrapped into an XPages application. It is based on the Apache FtpServer which runs as OSGi plugin on the server side.
One day a customer reported the FTP server would no longer work. A quick check showed that port 21 does not respond any longer.
Restarting the HTTP task showed a JVM Exception
restart task http
...
17.07.2015 18:00:07 HTTP Server: Using Internet Site Configuration View
17.07.2015 18:00:12 JVM: Java Virtual Machine initialized.
17.07.2015 18:00:12 HTTP Server: Java Virtual Machine loaded
17.07.2015 18:00:16 XSP Command Manager initialized
17.07.2015 18:00:17 HTTP JVM: java.lang.reflect.InvocationTargetException
...
17.07.2015 18:00:07 HTTP Server: Using Internet Site Configuration View
17.07.2015 18:00:12 JVM: Java Virtual Machine initialized.
17.07.2015 18:00:12 HTTP Server: Java Virtual Machine loaded
17.07.2015 18:00:16 XSP Command Manager initialized
17.07.2015 18:00:17 HTTP JVM: java.lang.reflect.InvocationTargetException
Checking the OSGI bundles showed the required bundle is not even installed.
> tell http osgi diag com.mindoo.ftp
Cannot find bundle com.mindoo.ftp.
Analysis
Check the file [DominoData]\domino\workspace\logs\error-log-0.xml for any problems
the very first warning in this file showed that a plugin was not loaded because the signer does not have the required access rights
CLFAD0331W: NSF Based plugin contribution denied because signer CN=SignerName/OU=Unit2/OU=Unit1/O=OrgEU does not have required access: CN=SignerName/OU=Unit2/OU=Unit1/O=OrgEU:System\UpdateSiteServer.nsf
and further down in the same file:
CLFAD0334W: Feature com.mindoo.ftp_feature_1.0.0.201306221322 skipped
At the first access rights seemed to be ok, but when looking a little closer I have found the user name does not have access to the server any longer because the Organization was renamed from "OrgEU" to "Org"
Solution (Part1)
The signature which is being used here is not a signature of a design element, it is the content of the Eclipse Update site which still had the old signature referenced. So how are we going to fix this?
- Open the Eclipse UpdateSite and use "Actions\Sign All Content"
Remark: This will not sign any design elements - it will sign the documents in the application only.
- Restart the HTTP task
restart task http - Watching the server console
Running into another problem
Although the FTP Server was running again, it seems like there still was an issue with the XPages application.
Quickly looking into [DominoData]\domino\workspace\logs\error-log-0.xml showed a well known problem.
Solution (Part2)
Obviously someone did open the Application in Domino Designer without disabling the option to recompile xPages automatically.
So make sure this option is set to "Manually recompile Xpages"
and then open the Mindoo FTP Domino application in Domino Designer and hit "Project\Build Project" in your Designer client.
Testing results
- Opening the Mindoo FTP Application from a browser seems to work
- "tell http osgi mftp status" shows that our server is now running on port 21
- Opening an FTP connection from a remote client is working fine
Source Control in Domino Designer 8.5.3- 10 October 2012 - (0) Comments
Thomas Hampel
10 October 2012Trying to set up a new machine with Domino Designer 8.5.3 and Source Control (SVN) based on this Blog post from Niklas Heidloff unfortunately was not working as expected.
It seems like the Eclipse Update site for GEF which was refernced in his blog post was not available any longer.
> CWPPR0031: The requested provisioning operation(s) completed with partial success.
> Error parsing site stream. [The XML stream is not a valid default "site.xml" file. The root tag is not site.]
A quick search brought me to the an update site hosting the older versions recommended, adding it to the Application Locations fixed this small problem.
Although this is one way to make it work, the most simple way is to make use of a ready-built Update Site from OpenNTF, see this project
Basically you need to download & unzip this file to your loal disk, and point the application installer to this update site.
Happy coding!
Exporting Notes Documents- 2 October 2012 - (1) Comments
Thomas Hampel
2 October 2012A customer wanted to have all attachments of some selected Notes document exported to the file system and also wanted to keep an option for developers to access the metadata of the original Notes document.
Nothing easier than that, so I wrote this small script to get the job done.
First the entire document is exported into DXL, then all attachments are detached to the file system. Both parts are not rocket science, but some people might want to reuse the code.
To avoid name conflicts while detaching files a folder is created for each Notes document so all attachments of this Notes document will be stored in this subfolder.
Option Public
Option Declare
Dim gCounter&
Sub Initialize
Dim s As New NotesSession
Dim coll As NotesDocumentCollection
Dim BasePath$
BasePath$ = InputBox ("Export data to path...: ", "Export", "C:\")
'# add backslash at the end
If right (BasePath$,1) <> "\" Then BasePath$ = BasePath$ & "\"
Print "Using BasePath : " & BasePath$
Set coll = s.currentdatabase.Unprocesseddocuments
If coll Is Nothing Then
MessageBox "No documents selected"
Else
Print "Processing " & coll.count & " documents..."
Call ExportToDXL (coll, BasePath$)
Call ExportToFile (coll, BasePath$)
MessageBox "Export completed."
End If
End Sub
Function ExportToDXL (Coll As NotesDocumentCollection, BasePath As String)
Dim session As New NotesSession
Dim stream As NotesStream
Dim DXLfilename$
Dim doc As NotesDocument
Dim tdoc As NotesDocument
Dim exporter As NotesDXLExporter
If coll Is Nothing Then Exit function
Set doc = coll.getfirstdocument
While Not doc Is Nothing
Set tdoc = coll.getNextDocument (doc)
'# Open xml file named after current database
Set stream = session.CreateStream
DXLfilename$ = BasePath$ & doc.universalid & ".dxl"
If Not stream.Open(DXLfilename$) Then
MessageBox "Cannot open " & DXLfilename$,, "Error"
Exit Function
End If
'# kick off the exporter process
Set exporter = session.CreateDXLExporter
Call exporter.SetInput(doc)
Call exporter.SetOutput(stream)
Call exporter.Process
Set doc = tdoc
Wend
End Function
Function ExportToFile (coll As NotesDocumentCollection, BasePath As String)
On Error GoTo ErrH
Dim doc As NotesDocument
Dim tdoc As NotesDocument
Dim rtitem As variant
Dim targetpath$, fname$
Dim FieldList(0) As String
Dim oba As Variant
'# define which fields to scan for attachments
FieldList (0) = "Body"
If coll Is Nothing Then Exit Function
Set doc = coll.getfirstdocument
While Not doc Is Nothing
Set tdoc = coll.getNextDocument (doc)
If doc.Hasembedded Then
targetpath$ = BasePath$ & doc.universalid & "\"
If Dir$ (BasePath$ & doc.universalid, 16) = "" Then MkDir targetpath$
'# loop list of fields
ForAll f In FieldList
Set rtitem = doc.GetFirstItem(f)
If Not rtitem Is Nothing Then
If (rtitem.Type = RICHTEXT ) Then
'# make sure the field contains some objects and detach
If IsArray(rtitem.embeddedObjects) Then
ForAll o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
Fname$=o.Name
If FileExists (fname$) Then fname$ = CStr(gCounter&) & Fname$
Call o.ExtractFile(targetPath$ & Fname$)
gCounter& = gCounter& + 1
End If
End ForAll
End If
End If
End If
End ForAll
End If
Set doc = tdoc
Wend
continue:
Exit Function
errH:
Stop
Print "Error " & Err() & " in line " & Erl() & " - " & Error
Resume continue
End Function
Profile documents and Author rights in ACL- 30 July 2012 - (0) Comments
Thomas Hampel
30 July 2012What if a developer is using user specific profile documents to store some settings in a Domino application.
In this example users have Author access with the ability to create new documents and the ability to write public documents, no roles and no reader or author name fields are used in any document.
I'm wondering why users are not able to modify their own profile document by using the simple formula @Command([EditProfile]; "profile"; @Username)
Of course developers will refer to the Designer Help or this technote where IBM clearly states:
In order to edit profile documents, including your own profile, using @Command([EditProfile]), you must have at least Editor access or Author access in the ACL plus inclusion in an Author field.
so it sounds like the user name must be listed in an author name field in order to modify an existing userprofile.
Unfortunately in reality it seems to be working slightly different... see this example:
I've created a new form to be used as a profile document, the form contained only a single field
Additionally I've created a small agent with the following code:
Sub Initialize
Dim s As New NotesSession
Dim doc As NotesDocument
Dim ws As New NotesUIWorkspace
Set doc = s.currentdatabase.Getprofiledocument("profile", s.Effectiveusername)
'# allows to modify the field values in the backend
Call doc.Replaceitemvalue("Test", "test")
Call doc.Save(true, false)
'# allows to modify field values using the frontend
Call ws.Dialogbox("profile", true, true, false, false, false, false, "Test", doc, false, false, false)
Call doc.Save(True, False)
'# does NOT allow to modify the document
Call ws.Editprofile("profile", s.Effectiveusername)
End Sub
It seems like its possible to modify userprofile documents (which dont have an author name field) even when you dont have author access to the document itself.
To clarify: the application was put on a server and access rights were limited to Author.
I'm wondering if there's any good explanation for this behavior.
Update : The problem has been filed as SPR (Software Problem Report) # RGAU8WZE2X and the Customer Report, APAR # LO71028 was created.
Bug in DominoBlog template- 12 June 2012 - (0) Comments
Thomas Hampel
12 June 2012For some reason it wasnt possible to use embedded images within blog postings, looking at the HTML source of the resulting web page showed that some piece of HTML code was inserted when saving the document.
After some debugging, I figured out that it was caused by the scriptlibrary "DXNotesContentProcessing" where the function "autoCreateLinks" is the one to be looked at.
autoCreateLinks(strIn As String) As String
Function
If configdoc.config_createlinks(0)="Create Links" Then
'Search for text and replace with link
autoCreateLinks=strIn
Dim view As notesview
Dim docLink As NotesDocument
Set view=db.getview("vLinksDesc")
Set docLink=view.GetFirstDocument
Do Until docLink Is Nothing
If Instr(autoCreateLinks," "+docLink.linktext(0)+" ")>0 Then
autoCreateLinks=R5replaceSubstring(autoCreateLinks," "+docLink.linktext(0)+" ",{ <a href="}+docLink.link(0)+{" title="}+docLink.linktext(0)+{">}+docLink.linktext(0)+{</a> })
End If
Set docLink=view.GetNextDocument(docLink)
Loop
Else
autoCreateLinks=strIn
End If
End Function
This function is used to replace a piece of text with the URL configured for it. Its using the links from "Configuration\Links" to search for any entry where the field "Link Text" is matching the HTML string.
Bad luck if one created links like this one, where no link text is specified:
which causes the function above to search for the occurance of 2 spaces " ", which unfortunately is true for embedded images... actually they are located directly behind the tag.
Workaround
- Turn off "Auto Create Links from Link List" located in the configuration document of the blog under "Site Settings\Content Creation"
- Make sure that all links in "Configuration\Links" are created with a propper link text
What about a permanent fix?
Modify the form "Link" and add an input validation formula to the field "linktext" as shown below.
Creating PDF documents from within Notes/Domino- 3 December 2011 - (0) Comments
Thomas Hampel
3 December 2011How can PDF documents be rendered from within a Notes application?
Converting Notes documents into Adobe's PDF format can be a challanging task.
Many different software addon products for Lotus Notes/Domino are being sold to make this happen,
e.g. DominoPDF which is being used by some of my customers - but in fact you dont need anything else than a Java component inside of your application.
Simply by using the iText Library and a small piece of source code, you can add PDF conversion functions to your Domino application. Look at this video to see an example. The solution outlined here makes sense for embedding this functionality inside an application. For single computers instead, its most likely enough to look at FreePDF (english) a freeware PDF converter which installs itself as a printer device.
Delete Workstation ECL- 17 November 2011 - (0) Comments
Thomas Hampel
17 November 2011Recently I came across a situation where multiple workstations had a corrupted local ECL. The document itself was corrupted that it was not possible to edit nor refresh it automatically. The only chance was to rebuild the ECL completely by creating a new NAB, which of course is not what users want to do. With some little reverse engineering and the help of some friends, I've figured out how to use an (undocumented) Notes API call to delete the workstation ECL directly.
For those who want to do something similar, here is the sourcecode:
%REM
Agent DeleteECL
%END REM
Option Public
Option Declare
Const ERR_MASK = &H3fff
Const PKG_MASK = &H3f00
Const ERRNUM_MASK = &H00ff
Declare Function NSFDbOpen Lib "nnotes.dll" (ByVal PathName As String, rethDB As Long) As Integer
Declare Function NSFDbClose Lib "nnotes.dll" (ByVal hDB As Long) As Integer
Declare Function NSFDbDeleteECL Lib "nnotes.dll" (ByVal hDB As Long, ByVal UserName As String, ByVal UserNameLen As Integer, ByVal ECLType As Integer) As Integer
Declare Function OSLoadString Lib "nnotes.dll" (ByVal hModule As Long, ByVal stringCode As Integer, _
ByVal retBuffer As String, ByVal bufferLength As Integer) As Integer
Sub DeleteECL(Source As Button)
Dim rc%, build&, filename$
Dim hDB&
Dim s As New NotesSession
build& = s.NotesBuildVersion
If build& <= 190 Then filename$ = "desktop5.dsk" Else filename$ = "names.nsf"
Print "Using desktop file : " & filename$
rc% = NSFDbOpen (filename$, hDB&)
If rc% <> 0 Then
Print "Unable to open " & filename$
End
End If
rc% = NSFDbDeleteECL (hdb&, s.UserName, Len (s.UserName), 1)
If rc% = 0 Then
Print "Successfully deleted local Workstation-ECL in file " & filename$ & " for user " & s.UserName
Else
Print "Not successful, returncode = " & rc%
Print GetAPIError (rc%)
End If
rc% = NSFDbDeleteECL (hdb&, s.UserName, Len (s.UserName), 2)
If rc% = 0 Then
Print "Successfully deleted local Applet-ECL in file " & filename$ & " for user " & s.UserName
Else
Print "Not successful, returncode = " & rc%
Print GetAPIError (rc%)
End If
rc% = NSFDbDeleteECL (hdb&, s.UserName, Len (s.UserName), 3)
If rc% = 0 Then
Print "Successfully deleted local JavaScript-ECL in file " & filename$ & " for user " & s.UserName
Else
Print "Not successful, returncode = " & rc%
Print GetAPIError (rc%)
End If
rc% = NSFDbClose (hDB&)
End Sub
Function GetAPIError (errorCode As Integer) As String
'** this function translates Notes API error codes into their
'** corresponding error strings
Dim errorString As String*256
Dim returnErrorString As String
Dim resultStringLength As Long
Dim errorCodeTranslated As Integer
'** mask off the top 2 bits of the errorCode that was returned; this is
'** what the ERR macro in the API does
errorCodeTranslated = (errorCode And ERR_MASK)
'** get the error code translation using the OSLoadString API function
resultStringLength = OSLoadString(0, errorCodeTranslated, errorString, Len(errorString) - 1)
'** strip off the null-termination on the string before you return it
If (InStr(errorString, Chr(0)) > 0) Then
returnErrorString = Left$(errorString, InStr(errorString, Chr(0)) - 1)
Else
returnErrorString = errorString
End If
GetAPIError = returnErrorString
End Function
How to enable/disable advanced DB properties such as DAOS- 1 September 2011 - (2) Comments
Thomas Hampel
1 September 2011Is it possible to set / remove the DAOS - flag in the advanced DB properties via Script??
Up to now I thought its possible to do it in the same way as for all the other DB flags as shown in this technote.
https://www-304.ibm.com/support/docview.wss?rs=899&uid=swg21244071
But it looks like the DAOS flag isnt stored in there....
Well in fact they are stored in there... but they are only exposed with ODS51 and the flag is not written to the $Flags field but written to a $DAOS field.
$DAOS=1 means enabled
$DAOS=0 means disabled
One could set the flag by using the small script supplied in the technote above and referring to the $DAOS field instead, but wait there's a better option:
Just use an (undocumented) LotusScript method "GetOption" and "SetOption" of the NotesDatabase class.
Call NotesDatabase.SetOption(81,true) will enable DAOS
Option Public
Option Declare
Sub Initialize
'# Server name in canonical format, use "" for client:
Const Servername$ = ">>>your server name here<<<"
Dim db As NotesDatabase
Dim dbdir As New NotesDbDirectory(servername)
Set db = dbdir.GetFirstDatabase(DATABASE)
While Not db Is Nothing
'# Skip databases which you don't have access to
On Error 4060 GoTo Error4060
Call db.Open(servername, db.FilePath)
Call db.setoption(DBOPT_LZCOMPRESSION, True)
Call db.setoption(81, True) '# DAOS Enable
GetNextDb:
Set db = dbdir.GetNextDatabase()
Wend
Exit Sub
Error4060:
'# If the code reaches here then the agent does not have access rights to the db.
Print db.FilePath & " incorrect rights to access!"
Resume GetNextDb
End Sub
View Icons changed between Domino versions- 13 October 2010 - (0) Comments
Thomas Hampel
13 October 2010A customer asked me if the icons which are displayed in views have been changed between Domino 7.0 and 8.5.
In fact they did, see the difference yourself - when displaying icons in a view, Domino R6.5 and 7.0 are displaying those icons
starting with Domino 8.5. the icons have changed - in general they now display less colorful.
Extract file name and display in a view- 24 September 2010 - (0) Comments
Thomas Hampel
24 September 2010If you want to display the file name in a view, but you only have a field containing file and pathname, here is a small formula to get the file name only.
List:=@Explode(FilePath;"\\");
nrElm:=@Elements(List);
@Subset(List;-1)