• Anonymous
  • Login
  • Register
LotusScript Gold Collection



This is not a complete application, but a toolkit of reusable LotusScript libraries that can be included in your applications. There may also be any required supporting design elements (subform used in dialog, etc), and sample code to show how the functions in the script libraries are invoked.

Included in the latest release (1.3):

[*] CAPIWrapper: supports calls to various popular Notes C API functions without worrying about what OS you're running on.

[*] NotesGroupManager: makes it easy to scan and manage group memberships in public and private address books, including groups with subgroups.

[*] AttachmentAdder: adds file attachments (and images) to documents and rich text items.

[*] ReportGenerator: a tool to make it easier to create rich-text reports (including tables), which also tries to intelligently maximize the extent to which line breaks are used as opposed to paragraph breaks, so that there are fewer paragraphs (which is more efficient).

[*] StringDiff: a tool for comparing two pieces of text and generating a list of the differences and the same parts. This can be used for tools that summarize differences between replication conflict documents, for instance, or for automatically assigning credit for wiki articles by comparing the amount of text contributed by different authors.

[*] StringDiffMB: StringDiff with the addition of moved block detection.

[*] RTDataTable: supports configuring applications based on data stored in a table in a rich text item. So for instance, you might have a product catalog in tabular form, and store it all in one document (or multiple documents if there's some logical division). The data could either be extracted "live" at runtime using LotusScript, or copies stored in an easier-to-manage form when the document is saved, so that they can be retrieved with lookups. The idea is that the user has an easy-to-edit table in which they can copy, paste, reorder rows, change column widths and even reorder columns or add "comment" columns which aren't part of the official data, and have this free-form data drive processes in the code.

[*] TempFileManager: Creates a temporary folder for your temporary files, creates the files on demand, and cleans up when you're all done.

[*] FileResource: Supports reading and writing file data from file-based design elements such as image, stylesheet, xpage, ... This code will work for current versions, but may need changes once the DXL team adds direct support for representing XPages in descriptive notation. Watch this space.

[*] ObjectList and ObjectListLite: generic linked-list classes to keep large, ordered collections of objects of any type. No sorting function is included.

[*] EmbeddedImage: lets you work with inline (imported or pasted) images in a document or design element.

[*] RTDataTable: A tool to read configuration data from a rich-text table.

[*] DOMUtils library contains various functions you frequently need when working with NotesDOMxxx classes; things like, read the text element which is a child of this node.

[*] UIHelper contains some functions for UI-based operations; for instance, there's one to present a Save File dialog that remembers the filepath the user last used from the current application, and puts them in that folder initially.

[*] DesignUtils has functions handy when manipulating design elements programmatically; most notably, setting the selection on a NotesNoteCollection to retrieve all of a specified type of design element.

[*] DebugStrLC: a fancier version of the DebugStr function which has been published elsewhere, to produce text descriptions of complex LC LSX objects for debugging purposes.

[*] DECSDatabase: a class for creating an LCConnection based on the connection information in a connection document in the DECS/LEI Administration database -- including layering on a metaconnector.

[*] The 'LC LSX \ Replicate Pirates' agent is an example of one-way key-based synchronization of records between two data sources. This is intended as a better-performing substitute for the practice of deleting all the documents in a Notes database, and then recreating a set of nearly identical documents from some outside data source.

The following are planned for future releases:

[*] OptionalMessage: Support for messageboxes that include a checkbox the user can tick to avoid being shown that message again. The system keeps track for each user which messages they have asked to not see anymore.

[*] ClassicDataStructures: The classic data structures: Stack, Queue, Prioritized Queue, a Tree or two, and sorted and unsorted collections, designed for use with any content type or easily subclassed for better datatype control.

[*] SendKey: (Windows-only, uses OS functions) Send keystroke sequences to the operating system, detect whether Ctrl or other keys are depressed. If there are implementations for other OS we would like to add them, along with automated detection of which OS you're on.

[*] Newsletter: Similar to the builtin NotesNewsletter class but allowing more control, this class lets you build up reports to send to users by email, including doclinks and data arranged in tables.

[*] ProgressBar: A base class and a couple of variations for reporting progress to users during long-running agents. Includes support for automatically disabling the progress bar when in debug mode.

[*] UniqueKey: Code to test whether the user is entering a unique value in a field, or a combination of fields (i.e. the combined value must be unique), as part of a form validation.

We are also open to adding libraries from other contributors (please!), which will be carefully vetted, tested and code reviewed.

The target version is Notes 8.5 or later, but most of this stuff should also work in earlier versions.