AdminP Can Delete Readers Fields, Making Documents Visible To All

Deleting a user with the Administration Process (AdminP) can lead to restricted documents being made visible to all Notes users with ACL access to the database. When AdminP processes a ‘Delete in Reader/Author fields’ request, it will delete the user specified from any Readers fields in any databases that have the ACL property ‘Modify all Reader and Author fields’ selected on the Advanced tab. If a Readers field only contains a single entry (the user name being deleted), then the Readers field itself will be removed, making the document visible to all.

AdminP is functioning as designed. If the Readers field was not deleted, the document would not be accessible to anyone, including administrators with Manager access to the database.

The workaround for this situation is to eliminate the potential for this condition to exist. Do not add a single user to a Readers field. A group entry in a Readers field will prevent this. Even if all of the group members are deleted, the group entry is not, and the Readers field will be maintained. If it is acceptable that documents be made inaccessible to all and there is a business need to have a single user in a Readers field, then any second entry, even a dummy entry, added to the field will prevent the Readers field from being deleted by AdminP.

via Lotus Software KnowledgeBase Document# 1092787


!!HELP!! – RBOD problem fixed

When using !!HELP!!, sooner or later a red box will pop-up on your display.

After a lot of try and error it seems that I finally found a solution.

We use the following code to switch betwen the framesets

_defaultNewFrame := @UpperCase(@DbLookup( "" : "NoCache" ; "":"" ; "($LUConfig)" ; "AlwaysOpenNewNavigationFrame" ; 2;[FailSilent] ));
@If(_defaultnewFrame!="YES";
@Do(
@SetTargetFrame("_top");
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"));
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"))

@SetTargetFrame(“_top”) ( intoduced in Notes R5 ) obviously is responsible for the crash.

I tried to substitute @SetTargetFrame(“_top”); and found that @Command([CloseWindow]); ( introduced in R6 ) does the same job; with a little side effect ;-). The database has to be the last in the database switcher … This is logic; a workaround and to be serious, I dunno like workarounds. So, I had to find another solution.

For what ever reason I tried the following formula:

_defaultNewFrame := @UpperCase(@DbLookup( "" : "NoCache" ; "":"" ; "($LUConfig)" ; "AlwaysOpenNewNavigationFrame" ; 2;[FailSilent] ));
@If(_defaultnewFrame!="YES";
@Do(
@SetTargetFrame("_top");
@Command([CloseWindow]);
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"));
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"))

And what shall I say; this seems to be the solution. No RBODs anymore ­čśë

To avoid an RBOD when switching the language, you have to replace the existing code in the OUT-LANGUAGE outline with the code below

REM { find users language };
_defaultLang := _defaultLang := @UpperCase(@DbLookup( "" : "NoCache" ; "":"" ; "($LUConfig)" ; "LANGUAGE" ; 2 ));
_view:="($LULANG)";
_foundlanguages := @Unique(@DbColumn("Notes" : "NoCache"; "" : ""; _view; 1));
_userlanguage :=@If(@ClientType="Web";
@UpperCase(@LanguagePreference([Region]))[1];
@If(@Environment("HDLang")="";@UpperCase(@LanguagePreference([Content]));@Environment("HDLang")));
_language:=@If(@IsMember(_userlanguage;_foundlanguages);_userlanguage;_defaultlang);

REM { find label };
_key:="outDlgLang";
_label := @Implode(@DbLookup( "" : "NoCache" ; "":"" ; "($LULANGTYPE)" ;_language + "~outline";"typestring");";");
_val:=@Right(_LABEL; _key + "=");
REM { find all possible languages };
_LANGUAGE:="**": @Unique(@DbColumn("Notes" : "NoCache"; "" : ""; _view; 1));
REM {select a new language or delete the entry from notes.ini if "**" is selected};
_NEWLANG:=@Prompt([OkCancelCombo];
@Word(@Word(_val;";";1);"~";1);
@Word(@Word(_val;";";1);"~";2);
@Environment("HDLang"); _LANGUAGE);
REM { Set the environment variable };
@If(_NEWLANG = "**";@Environment("HDLang"; "");@Environment("HDLang"; @UpperCase(_NEWLANG)));
@SetTargetFrame("_top");
@Command([CloseWindow]);
@Command([OpenFrameset];"FS-MAIN")

Is this worth to tell IBM about ?

UPDATE:

According to Damien Katz there is possibly a bug in the frameset window title formula

“Stack traces from rip files are a little unreliable,
but the best I can tell is that its crashing in a frameset window title formula, but I can’t tell why.
Try removing that formula and see what happens. On second look, it could be any frameset formula, not necessary a window title one.”



How many times have you double clicked the right mouse button or pressed the ESCape key on your keyboard and expected the window of a non Notes application to close?

ICODEX ARC is a FREE tool which empowers Windows with this cool feature across all applications


Paste Information Application

Do you have bits of information that you reuse over and over again, and you’re frustrated by re-typing it each time? For example entering conference call numbers into calendar entries, sharing URLs, product information, maps to your home or office, pre-written response text to emails, etc?

Alan Lepofsky posted this great tip in his blog. You can even use it in the Lotus Notes Designer to paste you favorite code snippets into the designer pane.


TaskSwitchXP Pro 2.0

TaskSwitchXP “is an advanced task management utility that picks up where the standard Windows Alt+Tab switcher leaves off. It provides the same functionality, and adds visual styles to the dialog and also enhances it by displaying thumbnail preview of the application that will be switched to. TaskSwitchXP also has a powerful process and window management capability that allows you quickly to close/minimize applications and their groups. The unique capabilities of TaskSwitchXP make it useful for tracking down multitudinous windows, and provide insight into the way Windows and applications work”


Teamstudio Script Browser

Teamstudio Script Browser is a tool to help you use and navigate the LotusScript code stored within an IBM Lotus Notes database in a way that has never before been possible.

Navigating the various places where LotusScript can be defined is tedious and even confusing to even the most-seasoned Domino programmer. There is currently no way to easily navigate all the different ways that script can be linked together.

Itâ??s common to have LotusScript code be defined in different places within a Notes database. Seeing all the code and moving around in Designer to edit that code is not a simple task. You canâ??t see what LotusScript functions are calling other LotusScript functions without performing a database-wide search. Teamstudio Script Browser solves all these problems.

And the best of all … It’s freeware !!


Trigger Happy

“Trigger Happy” (formerly known as agent boost ) by Damien Katz let’s you register LotusScript agents to be triggered by low level Domino events. C Source-Code included. You’ll find the project here.


How To Integrate Open Office And Lotus Notes To Generate PDF …

And OoO Documents Using Lotus Notes Data And COM Automation

Justin Freeman posted this tip in his blog. The article includes a working sample, too

“This database is an example of how to integrate Open Office (OoO) with Lotus Notes using COM automation. It exports information from an Invoice document in a Notes database into a OoO Writer document. The Writer document is then formatted sincely into a printable invoice, then both a completed PDF and OoO version is re-attached to the Invoice document in Notes – all within a few seconds!”


Installierte Office Version ermitteln

Carlos J Hernandez. fragte auf OpenNTF nach einer M├Âglichkeit, die installierte Office Version auf dem Rechner eines Users zu ermitteln

” I am a Helpdesk Manager with some 3400 Notes users. How can I pull the MS Offices version information when a users created a ticket?”

Die einfachste M├Âglichkeit ist die Verwendung von @RegQueryValue ( ab Version 5.0.2 ). Der Hintergrund ist folgender:
Jede Office Version tr├Ągt einen versionsabh├Ąngigen Schl├╝ssel ( 8.0 / 9.0 / 10.0 ) in die Registry ein. Dies ist aber noch kein eindeutiges Kennzeichen, da bei einem Update der Officeversion der Vorg├Ąngerschl├╝ssel nicht automatisch entfernt wird. Daher mu├â? man noch weiter in die Tiefe gehen. Mit der WinAPI k├Ânnte man das Vorhandensein eines bestimmten Schl├╝ssels abfragen. Eindeutiges Merkmal f├╝r die installierte Office version ist der Schl├╝ssel “InstallRoot”. Dieser Schl├╝ssel ist nur in der installierten version vorhanden.
Mit @RegQueryValue l├Ąsst sich aber nicht das Vorhandensein eines Schl├╝ssels abfragen, sondern nur der Wert eines Schl├╝ssels auslesen. Daher begeben wir uns auf die unterste Ebene und ermitteln im Schl├╝ssel “InstallRoot” den Wert des Eintrags “Path”. Nur die installierte Version liefert hier einen g├╝ltigen Wert.

_retVal:=
@If(
@RegQueryValue("HKEY_LOCAL_MACHINE"; "Software\Microsoft\Office.0\Common\InstallRoot"; "Path")!="";"Office 97";
@RegQueryValue("HKEY_LOCAL_MACHINE"; "Software\Microsoft\Office.0\Common\InstallRoot"; "Path")!="";"Office 2000";
@RegQueryValue("HKEY_LOCAL_MACHINE"; "Software\Microsoft\Office.0\Common\InstallRoot"; "Path")!="";"Office XP";
"no Office installed");
@Prompt([Ok];" ";_retVal)

DOWNLOAD


Most Frequently Used Technotes for Lotus Domino Server

When creating a new copy of a database with File -> Database -> New Copy, there is an option to only copy the design and no documents from the source database.
When creating a new replica of a database with File -> Replication -> New Replica, there is no option like this. The replica stub that is created will not include any documents, but it will not allow administrators to make any modifications to the database design or the ACL.

Is it possible to create a replica of a database (not a replica-stub) without any documents. –> more


@Unique Not Generating a Unique Number in Web Applications

The @Function, @Unique, is designed to generate a random, unique number as text data type. When used in a computed field on a form, for example, you should get a new, unique number for each new document created with such a form. You notice, however, when @Unique is used in a Web Application form, the number is not always unique. Why is this happening?

In the case where @Unique is contained in a computed field in a web application, the reason for the non-unique number could be related to the browser cache settings. If the “Check for newer versions of stored pages” option in the IE browser is set to “Automatically”, the number generated may duplicate.

To work around the issue, do one of the following:

Change the “Check for newer version of stored pages” option in IE (found under Tools –> Internet Options –> General tab –> Setting button) to “Every visit to the page” to ensure that a new and unique number is generated by the IE browser. In this case, the Domino server is sending a new and unique number, but the browser was caching the previous value instead of retrieving the newly generated one.
Use a profile document to generate a random number. Then, use a web query open or web query save agent to obtain a unique key by accessing a profile document for sequential unique numbers

Lotus Software KnowledgeBase Document# 1191209