Thursday, 27 July 2017

Using jQuery-Confirm a Multipurpose Plugin for Alert, Confirm and Dialog with Extended Features in XPages


In my continuous search for modern plugins for my XPages applications I came across jquery-confirm, a good alternative for iziToast (see my previous blog post Using iziToast an Elegant, Responsive, Flexible and Lightweight Notification Plugin in XPages). jquery-confirm is a multipurpose plugin for alert, confirm and dialogs with Extended features. jquery-confirm is easy to use, highly flexible and provides a great set of features like, Auto-close, Ajax-loading, Themes, Animations and more. This plugin is actively developed.
In order to use jquery-confirm, the JavaScript and CSS file(s) need to be included on the XPage / Custom Control. The latest version can be downloaded from GitHub: jquery-confirm.
Below are some examples how jquery-confirm can be used in an XPages application. In the examples I use a simple button to display the notifications.

Adding the JS and CSS files
The JavaScript and CSS files must be added to the WebContent Folder in the Package Explorer.
In this example a Folder confirm has been added in the WebContent Folder.
Next the JavaScript and CSS files, jquery-confirm.js and jquery-confirm.css must be included on the XPage or Custom Control. In this example I add the files to an XPage.

<script type="text/javascript" src="confirm/js/jquery-confirm.js"></script>
<link rel="stylesheet" href="confirm/css/jquery-confirm.css" />

jquery-confirm Plugin initialization
jquery-confirm can be initialized using a simple script. In the example below I used use a button with CSJS.

<xp:button id="button1" value="Error" styleClass="btn-warning" rendered="false">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[$.confirm({
title: 'Error!',
content: 'Error during submit.',
type: 'red',
icon: 'fa fa-warning',
closeIcon: true,
closeIconClass: 'fa fa-close',
draggable: true,
typeAnimated: true,
animationSpeed: 2000, // 2 seconds
buttons: {
tryAgain: {
text: 'Try again',
btnClass: 'btn-red',
action: function(){
}
},
close: function () {
}}
});]]></xp:this.script>
</xp:eventHandler>
</xp:button>

It is also possible to use the the great XSnippet by Mark Roden, x$ jQuery selector for XPages, to initialize the plugin and include it on the XPage. The XSnippet can be added to the Script Libraries. See also the blog post by Csaba Kiss, x$ selector problem with JQuery 3.
The script itself can be made up as follows. The name of the id in the script must correspond with the id of the Button.

<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:button2}" ).bind("click",function(){$.confirm({
title: 'Success!',
content: 'Document has been saved.',
type: 'green',
icon: 'fa fa-check-square-o',
closeIcon: true,
closeIconClass: 'fa fa-close',
draggable: true,
typeAnimated: true,
animationSpeed: 2000 // 2 seconds  
});
});
});
]]></xp:this.value>
</xp:scriptBlock>

Final Result
The final result are modern responsive notifications.


Code XPage
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:this.resources>
<xp:script src="/jQuerySelector.js" clientSide="true"></xp:script>
</xp:this.resources>
<script type="text/javascript" src="confirm/js/jquery-confirm.js"></script>
<link rel="stylesheet" href="confirm/css/jquery-confirm.css" />
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:button2}" ).bind("click",function(){$.confirm({
title: 'Success!',
content: 'Document has been saved.',
type: 'green',
icon: 'fa fa-check-square-o',
closeIcon: true,
closeIconClass: 'fa fa-close',
draggable: true,
typeAnimated: true,
animationSpeed: 2000 // 2 seconds  
});
});
});
]]></xp:this.value>
</xp:scriptBlock>
<xc:ccLayout>
<xp:this.facets>
<xp:panel xp:key="facetMiddle">
<h4>jQuery-Confirm</h4>
<h5>A multipurpose plugin for alert, confirm and dialog, with Extended features.</h5>
<xp:br></xp:br>
<xp:button id="button1" value="Error" styleClass="btn-warning" rendered="true">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[$.confirm({
title: 'Error!',
content: 'Error during submit document.',
type: 'red',
icon: 'fa fa-warning',
closeIcon: true,
closeIconClass: 'fa fa-close',
draggable: true,
typeAnimated: true,
animationSpeed: 2000, // 2 seconds
buttons: {
tryAgain: {
text: 'Try again',
btnClass: 'btn-red',
action: function(){
}
},
close: function () {
}
}
});]]></xp:this.script>
</xp:eventHandler>
</xp:button>
<xp:button value="Confirm" id="button2" styleClass="btn-success"></xp:button>
<xp:br></xp:br>
</xp:panel>
</xp:this.facets>
</xc:ccLayout>
</xp:view>

For more information: jquery-confirm documentation

Friday, 21 July 2017

Using iziToast an Elegant, Responsive, Flexible and Lightweight Notification Plugin in XPages


After the implementation of iziModal in a new XPages application, see my previous blog post 'Using iziModal An Elegant, Responsive, Flexible and Lightweight Modal Plugin in XPages', I also chose a modern notification plugin for this XPages application, IziToast. iziToast is an legant, responsive, flexible and lightweight notification plugin with no dependencies. All modern browsers are supported (Tested in Chrome, Firefox, Opera, Safari, IE10+ and Edge). In order to use iziToast, the JavaScript and CSS file(s) need to be included on the XPage / Custom Control. The latest version can be downloaded from GitHub: iziToast.
Below are some examples how iziTaost can be used in an XPages application. In the examples I use a simple button to display the notifications.

Adding the JS and CSS files
The JavaScript and CSS files must be added to the WebContent Folder in the Package Explorer.
In this example a Folder izitoast has been added in the WebContent Folder.
Next the JavaScript and CSS files, iziToast.js and iziToast.css must be included on the XPage or Custom Control. In this example I add the files to an XPage.

<script type="text/javascript" src="izitoast/js/iziToast.js"></script>
<link rel="stylesheet" href="izitoast/css/iziToast.css" />

AMD Loader Fix
For iziToast in XPages there is a need for an AMD Loader Fix. Reason: newer jQuery plugins try to use its AMD loader, but that doesn't play well with the Dojo implementation in XPages.
In this case, I modified the javaScript file iziToast and replaced 'define.amd' with 'false'.
Note: There are other solutions for the AMD Fix. For more information about thes solution see my blog post Bootstrap Plugins in XPages Part VI - jQuery and JavaScript AMD (Asynchronous Module Definition) Fixes (2).

iziToast Plugin initialization
iziToast can be initialized using a simple script. In the example below I used use a button with CSJS.

<xp:button id="button1" value="iziToast Warning" styleClass="btn-warning">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[iziToast.warning({
title: 'Warning',
position: 'center', // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, center
drag: true,
timeout: 10000,
balloon: false,
close: false,
transitionOut: 'fadeOutUp',
message: 'FirstName is a mandatory field.'
});]]></xp:this.script>
</xp:eventHandler>
</xp:button>

It is also possible to use the the great XSnippet by Mark Roden, x$ jQuery selector for XPages, to initialize the plugin and include it on the XPage. The XSnippet can be added to the Script Libraries. See also the blog post by Csaba Kiss, x$ selector problem with JQuery 3.
The script itself can be made up as follows. The name of the id in the script must correspond with the id of the Button.

<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:button4}" ).bind("click",function(){iziToast.info({
title: 'Info',
drag: true,
position: 'center',
timeout: 10000,
balloon: false,
close: false,
transitionOut: 'fadeOutUp',
message: 'FirstName is a mandatory field.!'
});
});
});
]]></xp:this.value>
</xp:scriptBlock>

Final Result
The final result are modern responsive Notifications.



Code XPage
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:this.resources>
<xp:styleSheet href="/microlight.css"></xp:styleSheet>
<xp:script src="/JQueryXSnippet.js" clientSide="true"></xp:script>
</xp:this.resources>
<script type="text/javascript" src="izitoast/js/iziToast.js"></script>
<link rel="stylesheet" href="izitoast/css/iziToast.css" />
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:button4}" ).bind("click",function(){iziToast.info({
title: 'Info',
drag: true,
position: 'center',
timeout: 10000,
balloon: false,
close: false,
transitionOut: 'fadeOutUp',
message: 'FirstName is a mandatory field.!'
});
});
});
]]></xp:this.value>
</xp:scriptBlock>
<xc:ccLayout>
<xp:this.facets>
<xp:panel xp:key="facetMiddle">
<xp:panel>
<xp:br></xp:br>
<xp:button id="button1" value="iziToast Warning" styleClass="btn-warning">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[iziToast.warning({
title: 'Warning',
position: 'center', // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, center
drag: true,
timeout: 10000,
balloon: false,
close: false,
transitionOut: 'fadeOutUp',
message: 'FirstName is a mandatory field.'
});]]></xp:this.script>
</xp:eventHandler></xp:button>
<xp:button id="button2" value="iziToast Error" styleClass="btn-danger">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[iziToast.error({
title: 'Error',
position: 'center', // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, center
transitionIn: 'flipInX',
transitionOut: 'flipOutX',
timeout: 10000,
message: 'FirstName is a mandatory field.'
});]]></xp:this.script>
</xp:eventHandler></xp:button>
<xp:button id="button3" value="iziToast Success" styleClass="btn-success">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[iziToast.success({
title: 'Success',
position: 'center', // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, center
timeout: 10000,
message: 'Document has been saved!'
});]]></xp:this.script>
</xp:eventHandler></xp:button>
<xp:button id="button4" value="x$ jQuery Selector" styleClass="btn-info"></xp:button>
<xp:br></xp:br>
</xp:panel>
</xp:panel>
</xp:this.facets>
</xc:ccLayout>
</xp:view>

More information: iziToast documentation

Thursday, 20 July 2017

IBM Notes Domino 9.0.1 Feature Pack 9 Preliminary Release Notice


Beginning with 9.0.1 FP8, fix packs have been renamed to feature packs. To ensure quality, these feature packs still have a high focus on addressing high impacting defects. Where possible, these features are optionally enabled to minimize risk. The same packaging, architecture and install kits used in previous fix packs remain in use for feature packs.

Notes®/Domino® 9.0.1 Feature Pack 9 addresses defects in the Client, Server, and the Domino OpenSocial component. All Feature Packs are language independent and may be applied on any language version of Notes®/Domino® 9.0.1.

New Features in IBM Domino® 9.0.1 Social Edition Feature Pack 9
The documentation in Knowledgebase will be updated with these new features to coincide with the ship date of 9.0.1 FP9.

Enhancement Request To Be Able To Increase The Amgr Queue Beyond 100 (SPR #RSTNA4SL7C APARID: LO87242)
The Agent Manager's Eligible queue is now able to change from the lowest value possible at 100, to 255 which is the highest value possible via an INI AMGRMaxQueue.

Databases and views can be opened more quickly in databases that are enabled for transaction logging
It takes less time to open databases and views that are at ODS 52 or higher and enabled for transaction logging. Previously, performance for opening databases or views could be slow in frequently updated databases. This improvement is due to the implementation of less contention with update operations.

Restricting the use of mail rules to forward messages to external domains (SPR #JPAR9NEACX APARID: LO81771)
You can control the extent to which users can use the Send copy to mail rule to automatically forward received messages to external domains that are not recognized by the mail server. This feature does not affect any forwarding rules that are specified in a user's Person document or any other type of mail server
forwarding or re-direction.

Enabling and managing inline view indexing
A view index is an internal filing system that Notes® uses to build the list of documents to display in a database view or folder. By default, view indexes are updated on a server at scheduled intervals. To update a view index immediately after documents change instead, administrators can enable inline view indexing. When you enable inline view indexing, a critical view is always kept up-to-date for your users.

New Features in IBM® Notes® 9.0.1 Social Edition Feature Pack 9

Delegated mail files are refreshed automatically (SPR #RGAU829D4G APARID: LO48407)
If you have delegate access to another user's mail file, that mail file is refreshed automatically in your Notes® client. To enable this feature, upgrade to the Mail9.ntf template provided with the FP9 Client. No notes.ini setting is required for this feature.

Support for recall of messages created with Memo stationary (SPR #JLEN9C9E3G APARID: LO77349)
When message recall is configured on the server, messages created using Memo stationery can now be recalled. To enable this feature, upgrade to the Mail9.ntf template provided with FP9.

High resolution support for the Notes® Client
The Notes® client on Windows correctly scales text and icons when high resolution monitors or custom DPI settings are used.

Improved name lookup in Notes®
Searching by <last name first name> through typeahead or in the ambiguous name dialog, returns the same results as searching by <first name last name>. For example, searching for don smith or smith don returns the same results, including variants such as Donald, Donovan, Smithfield. To enable this feature, upgrade to the pernames.ntf template provided with 9.0.1 FP9 and add the notes.ini setting AllowWildcardLookup=1 to the Notes® 9.0.1 FP9 client.

Improved support for Notes® addressing with mobile directory catalogs (SPR #SAPLAK8ANL)
The list of names that is shown when using typeahead to search a mobile directory catalog is now sorted according to the directory catalog configuration. Names in local contacts follow this list. In addition, the Search Directory for <characters> option is available at the end of the list to facilitate server lookup. To enable this feature, add the notes.ini setting $TypeAheadShowDircatFirst = 1 to the Notes® 9.0.1 FP9 client.

9.0.1 Feature Pack 9 Preliminary Fix List descriptions

Domino Server
  • SKAIALJE9N (LO92113) - Fixed an IBM Domino server IMAP EXAMINE command stack buffer overflow (CVE-2017-1274) 
  • DWON9PYRHZ(LO82415) - Support the OS Name mapping with Notes Federated Login
  • HJLO6QPA5Y (LO17235) - Fixed an issue where names were corrupted for attachments with DBCS filenames
  • JSMNAD4LHH (LO90028) - Fixed an issue where Calendar invites sent to Gmail are not formatted correctly. The gmail user has no option to accept or decline the meeting invite.
  • AHSU7YRD7D (LO86096) - Fixed an issue with registering users with certain Chinese, Korean, and Japanese characters
  • +TPON949L2M (LO73648) - Fixed an issue where encoded phrases may have embedded delimiters after decoding -- e.g., the comma (',') in Ziffle, Fred <fred.ziffle@zifflemail.com> causes an error for Notes. Fix is to unconditionally quote the decoded phrase: "Ziffle, Fred" <fred.ziffle@zifflemail.com>
  • GHAN9TLRHL (LO83964) - Added a Domino Server Console Command Line to list unencrypted databases only, using 'show dir -unenconly'
  • JSHY4P5LGR (LO30803) - Added a Domino Server Console Command Line to list encrypted databases only, using 'show dir -enconly'
  • +KRAU9MXN4N (LO81626) - Fixed a potential Sync Manager crash when Full Text Index is enabled
  • RPAI9Y8G4N (LO88628) - Corrected an excessive logging of mismatched roll over certifier certificates during authentication
  • +RSTNA6HKZY (LO87774) - Fixed an issue where using '-ftindays' with dbmt is not causing the Full Text Index to be rebuilt
  • SWAS96DSGG (LO84996) - Fixed concurrency issues between NIF & NSF on high usage shared databases. To realize this fix, databases must be ODS52 and Transaction logged.
  • SAZR8MKH9Q (LO64631) - Add the ability to control SMTP the visible host name (EHLO param, greeting response, Received headers and Reporting-MTA in DSNs...) by these 2 controlled INI's SMTPDisplayHostName and SMTPDisplayDomainName
  • TOCL9CKHN2 (LO77505) - Enhance error message to have a better DB identification to be included in DbUpdateAllUnreadTables error message "Error on Update All unread tables - 459h: Unable to extend an ID table - insufficient memory"

Notes Client
  • +SODY98YHSS (LO75939) - Fixed Client Crashes Due To Low Memory Conditions in the Domparser.Process() Command
  • +TSAOA9KHCQ (LO88835) - We now ensure that the behavior for the error "Too many recipients. Recipient addresses must total less than 2MB." is now same for encrypted and non encrypted mails
  • CSYL9P8N6V (LO82077) - Fixed an issue where users are unable to import an *.ics file while the Notes Client running
  • DAGL9X6JNU (LO85212) - Fixed a Notes Client crash in Asyncreceivepoll where the session goes away and the session block is freed which causes the crash
  • FBAIALRD3W (LO92166) - Fix an issue where mail attachments are garbled when downloading mail via IMAP where the attachment was compressed by LZ1 format, but was marked as Huffman encoding
  • GTONAGLGBT (LO91138) - Fixed an issue where pasting Cyrillic characters from Microsoft Word into Notes gives garbled characters (INI needs to be set to enable this fix = EnableUnicodeCopyPasteFromWord=1)
  • JABA9U9KWK (LO84063) - Fixed an issue where rescheduling a repeating meeting to Google users takes minutes
  • JCUS975RGX (LO87001) - Allow attachments to be found by searching for their file name
  • +JMEAAL7J7V (LO92034) - Fixed an issue where a local group no longer expands
  • KJEG9QLRHX (LO82689) - Fixed random Notes Client crashes on Citrix
  • AHSU7YRD7D (LO86096) - Fixed an issue with registering users with certain Chinese, Korean, and Japanese characters
  • DHUSAJYL62 (LO91713) - Fixed a crash opening a message with a large PNG file
  • YGAO979JLD (LO75110) - Fixed Notes Client crashes on reply when spell check is enabled
  • YGAOAFXNKC (LO90922) - Fixed an issue with MIME mail where the attachment cannot be opened after replying/forwarding
  • JJOEAEGKEX (LO90458) - Fixed a Notes Client crash caused by Notesrichtextnavigator Begininsert in a document that contains Chinese characters
  • RGAUA4SHWE (LO87236) - Fixed a Domino Designer crash when the option "Use Binary Dxl For Source Control Operations" is unchecked
  • JKEY9SLK37 (LO83393) - Added support for federating custom views based on $Calendar view from a Notes application/teamroom calendar. Also fixed the issue where calendar entries were not populated in Entries and Notices view causing them not to sync to Traveler. 

iNotes
  • FLIIA5FDJQ (LO87504) - Fixed an HTTP crash on Lockhandle where the fullName field was not found during NAMELookup (where a da.nsf points to an LDAP server with no fullName attribute)
  • +JJCMAKV3DT (LO91925) - Fixed an issue where "Starts With" Window is not showing when pressing any letter or number key in a view/folder
  • NNUZAG5A57 (LO91159) - Fixed an issue where the link was not created saving an attachment to Files
  • +TSAOACN68C (LO89880) - Fixed an issue where iNotes users are unable to open an archive if the local archive exceeds 4GB
  • DSAS9WWUXB (LO85135) - iNotes - Fixed a problem where an existing attachment is not removed when trying to remove and attach the same filename on the forwarding/replying message if a Forms85.nsf is used on a 9.0.x server.
  • +MLEYAJ4J3M (LO91444) - Fixed an issue where you are not able to see the "Required" list of invitees when a draft meeting is created in Notes and edited in iNotes

Mail Template (mail9.ntf)
*These SPR's require FP9 Client and Server in addition to the template
  • LMAN8JKJF5 (LO78153) - Fixed an issue where a delegated reader can't open the mailfile when a mail policy has just been applied
  • BPAL9LSDEE - Delegate with editor access is getting an error in preferences with the field "Prohibit access to folders for users with..."
  • JLEN9C9E3G (LO77349) - Added the ability to recall messages that are created from stationary
  • PANNABJLFZ (LO89528) - Fixed an issue where "find a room" displays an empty list for some users when the primary home mail server is not available
  • +SDOY7JXF87 (LO34305) - New notices were not showing up correctly in the New Notices miniview when policy is set to Display unprocessed meeting notices in the New Notices MiniView
  • MBOAADMB6X (LO90180) - Fixed a delivery failure report when using the "Reply To All " for external meeting invitations
  • MJHAAJMFUR (LO91618) - Fixed an issue where emails cannot display the Reply and Forward icons when emails are auto forwarded by a mail rule
  • HPUTA3QEUF (LO87753) - Fixed an iCal issue where comments to Outlook users are overwritten when the same user is removed from 2 instances
  • +*TSAOAAGJ7R (LO89162) - Fixed an issue where the Group Name on the Sendto Field of a Notes mail is removed

Local Mail Address Book Template (pernames.ntf)
  • SAPLAK8ANL - Support for improved namelookup for mobile directory

XPages
  • MDOYAKFPE2 - Fixed an XPages issue where dropping an iNotes calendar, the control icons do not display the correct hover help text
  • BRMD9AZLRJ (LO76784) - Fix a Client hang when trying to add data source to an Xpage
  • LHEYAKALAH (LO92632) - Fixed form validation not working on an XPage
  • +LHEYAKBJSQ (LO91943) - Fixed an issue where SSJS editor stops working in an NSF with a managed bean
  • RGAU9UKP8T (LO84209) - Fixed a Domino Designer freeze issue while developing Xpages
  • TSAO8D4JQ9 (LO57700) Fixed an Xpages issue where the value of content-length in the HTTP response headers are incorrect

More info: 9.0.1 Feature Pack 9 Preliminary Fix List descriptions

Wednesday, 19 July 2017

Using Vex - Beautiful Functional Dialogs in Vanilla JavaScript in XPages


In my continuous search for modern plugins for my XPages applications I came across Vex.
Vex is a modern dialog library which is highly configurable, easily stylable, and gets out of the way. Vex is tiny (5.5kb minified and gzipped), has a clear and simple API, works on mobile devices, and can be customized to match your style in seconds.

Features
Drop-in replacement for alert, confirm, and prompt
Easily configurable animations which are smooth as butter
Lightweight with no external dependencies
Looks and behaves great on mobile devices
Open multiple dialogs at once and close them individually or all at once
UMD support

One of the simplest ways to use vex is to call vex.dialog.alert, vex.dialog.confirm, or vex.dialog.prompt.
Vex has support for plugins that can extend and modify the behavior of vex. Plugins are a great way to extend the functionality of Vex while keeping the dependencies lightweight. In the examples below I use vex-dialog, a plugin for vex that contains dropin replacements for alert, confirm, and prompt.
In order to use Vex, the JavaScript and CSS file(s) need to be included on the XPage / Custom Control. The latest version can be downloaded from GitHub: vex and vex-dialog.

Adding the JS and CSS files
The JavaScript and CSS files must be added to the WebContent Folder in the Package Explorer.
In this example the Folders vex and vexdialog have been added in the WebContent Folder.
Next the JavaScript and CSS files, vex.combined.js, vex.dialog.js, vex.css and vex-theme-os.css must be included on the XPage or Custom Control. In this example I add the files to an XPage. I also added a theme, vex-theme-os using classname to overwrite the default theme.

<script type="text/javascript" src="vex/js/vex.combined.js"></script>
<script type="text/javascript" src="vexdialog/vex.dialog.js"></script>
<script>vex.defaultOptions.className = 'vex-theme-os'</script>
<script type="text/javascript" src="enable_amd.js" clientSide="true"></script>
<link rel="stylesheet" href="vex/css/vex.css" />
<link rel="stylesheet" href="vex/css/vex-theme-os.css" />

AMD Loader Fix
For Vex in XPages there is a need for an AMD Loader Fix. Reason: newer jQuery plugins try to use its AMD loader, but that doesn't play well with the Dojo implementation in XPages. In the example below I use two javascript libraries, disable_amd.js and enable_amd.js, a solution provided by Mark Leussink. You can add these scripts to in the Script Libraries of the XPages application.

disable_amd.js
if (typeof define === 'function' && define.amd) {if(define.amd.vendor =='dojotoolkit.org'){define._amd = define.amd;delete define.amd;}}

enable_amd.js
if (typeof define === 'function' && define._amd) {define.amd = define._amd; delete define._amd;}

The first one is loaded before the js files, the second one after the js files.

<script type="text/javascript" src="disable_amd.js" clientSide="true"></script>
<script type="text/javascript" src="vex/js/vex.combined.js"></script>
<script type="text/javascript" src="vexdialog/vex.dialog.js"></script>
<script type="text/javascript" src="enable_amd.js" clientSide="true"></script>
<script>vex.defaultOptions.className = 'vex-theme-os'</script>
<link rel="stylesheet" href="vex/css/vex.css" />
<link rel="stylesheet" href="vex/css/vex-theme-os.css" />

Note: There are other solutions for the AMD Fix. For more information about thes solution see my blog post Bootstrap Plugins in XPages Part VI - jQuery and JavaScript AMD (Asynchronous Module Definition) Fixes (2).

Vex Plugin initialization
Vex can be initialized using a simple script. In the example below I used use a button for a vex-dialog-confirm (CSJS).

<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[vex.dialog.confirm({
message: 'Are you absolutely sure you want to delete this document?',
callback: function (value) {
if (value) {
console.log('The document has been deleted.')
} else {
console.log('Abort delete document.')
}
}
})]]></xp:this.script>
</xp:eventHandler>
</xp:button>

It is also possible to use the the great XSnippet by Mark Roden, x$ jQuery selector for XPages, to initialize the plugin and include it on the XPage. The XSnippet can be added to the Script Libraries. See also the blog post by Csaba Kiss, x$ selector problem with JQuery 3.
The script itself can be made up as follows. The name of the id in the script must correspond with the id of the Button.

<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:button2}" ).bind("click",function(){vex.dialog.confirm({
message: 'Are you absolutely sure you want to delete this document?',
callback: function (value) {
if (value) {
console.log('The document has been deleted.')
} else {
console.log('Abort delete document.')
};
}
});
});
});
]]></xp:this.value>
</xp:scriptBlock>

Final Result
The final result is a modern responsive Modal.


Code XPage
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"><script type="text/javascript" src="disable_amd.js" clientSide="true"></script>
<script type="text/javascript" src="vex/js/vex.combined.js"></script>
<script type="text/javascript" src="vexdialog/vex.dialog.js"></script>
<script>vex.defaultOptions.className = 'vex-theme-os'</script>
<script type="text/javascript" src="enable_amd.js" clientSide="true"></script>
<link rel="stylesheet" href="vex/css/vex.css" />
<link rel="stylesheet" href="vex/css/vex-theme-os.css" />
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:button2}" ).bind("click",function(){vex.dialog.confirm({
message: 'Are you absolutely sure you want to delete this document?',
callback: function (value) {
if (value) {
console.log('The document has been deleted.')
} else {
console.log('Abort delete document.')
};
}
});
});
});
]]></xp:this.value>
</xp:scriptBlock>
<xc:ccLayout><xp:this.facets>
<xp:panel xp:key="facetMiddle">
<xp:br></xp:br>
<xp:button value="Delete document CSJS" id="button1">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[vex.dialog.confirm({
 message: 'Are you absolutely sure you want to delete this document?',
 callback: function (value) {
 if (value) {
 console.log('The document has been deleted.')
 } else {
 console.log('Abort delete document.')
 }
 }
})]]></xp:this.script>
</xp:eventHandler>
</xp:button>
<xp:button value="Delete Document x$ jQuery selector" id="button2"></xp:button>
</xp:panel>
</xp:this.facets>
</xc:ccLayout>
</xp:view>

More information: Vex Documentation

Friday, 7 July 2017

Using iziModal An Elegant, Responsive, Flexible and Lightweight Modal Plugin in XPages

In my search for modern plugins for my XPages applications I came across iziModal. iziModal is an elegant, responsive, flexible and lightweight Modal Plugin. In order to use iziModal, the JavaScript and CSS file(s) need to be included on the XPage / Custom Control. The latest version can be downloaded from GitHub: iziModal.
Below a basic example how iziModal can be used in an XPages application.

Adding the JS and CSS files
The JavaScript and CSS files must be added to the WebContent Folder in the Package Explorer.
In this example the Folders izimodal has been added in the WebContent Folder.
Next the JavaScript and CSS files, iziModal.js and izimodal.css must be included on the XPage or Custom Control. In this example I add the files to an XPage.

<script type="text/javascript" src="izimodal/js/iziModal.js"></script>
<link rel="stylesheet" href="izimodal/css/iziModal.css" />

AMD Loader Fix
Finally, the JavaScript file iziModal.js need to be adjusted. Reason: newer jQuery plugins try to use its AMD loader, but that doesn't play well with the Dojo implementation in XPages. The source code of the library can be adjusted in a very simple way with just a slight modification.

1. Go to the WebContent Folder and select the iziModal JavaScript file
2. Select Open With - Client/Server JS Editor


3. Removed define.amd and replace it with false


4. Save the JavaScript file iziModal.js

Note: There are other solutions for the AMD Fix. For more information about thes solution see my blog post Bootstrap Plugins in XPages Part VI - jQuery and JavaScript AMD (Asynchronous Module Definition) Fixes (2).

Modal Plugin initialization
The iziModal Plugin can be initialized using a simple script. In the example below I used some options.

<script>
$(document).on('click', '.trigger', function (event) {
event.preventDefault();
$('#modal').iziModal('open');
});
$("#modal").iziModal({  // Set here modal trigger ID
title: 'Your message has been sent successfully',
subtitle: 'This message will be closed after 10 seconds',
overlayClose: true,
closeOnEscape: true,
bodyOverflow: false,
focusInput: true,
autoOpen: false,
fullscreen: true,
openFullscreen: false,
timeout: 10000, //Set a time, in miliseconds, to close automaticaly the modal
timeoutProgressbar: true, //Set here to 'true' if your enabled a timeout.
timeoutProgressbarColor: '#4183D7',
transitionInModal: 'transitionIn',
transitionOutModal: 'transitionOut',
transitionInOverlay: 'fadeIn',
transitionOutOverlay: 'fadeOut',
});
</script>

Final Result
The final result is a responsive Modal with some additional options in the initial setup.


Code XPage
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom">
<link rel="stylesheet" href="izimodal/css/iziModal.css" />
<script type="text/javascript" src="izimodal/js/iziModal.js"></script>
<xp:this.resources>
<xp:styleSheet href="/izimodal.css"></xp:styleSheet>
</xp:this.resources>
<xc:ccLayout><xp:this.facets>
<xp:panel xp:key="facetMiddle">
<xp:br></xp:br>
<button class="trigger btn btn-default">Open Modal</button>
<div id="modal">
<div id="header">  
<div id="icon">
<i class="fa fa-thumbs-up" aria-hidden="true"></i>
</div>
<p>Alert Modal in XPages.<br />
An Elegant, Responsive, Flexible and Lightweight Modal Plugin</p>
</div>    
</div>
<xp:br></xp:br>
<button class="triggerdefault btn btn-default">Open Modal 2</button>
<div id="modal-default" >
<div class="iziModal-header" style="background: rgb(136, 160, 185); padding-right: 78px;">
<i class="iziModal-header-icon icon-home"></i>
<h2 class="iziModal-header-title">Modern Models in XPages - iziModal</h2>
<p class="iziModal-header-subtitle">Elegant, responsive, flexible and lightweight modal plugin with jQuery.</p>
<div class="iziModal-header-buttons"><a href="javascript:void(0)" class="iziModal-button iziModal-button-close" data-izimodal-close=""></a>
<a href="javascript:void(0)" class="iziModal-button iziModal-button-fullscreen" data-izimodal-fullscreen=""></a></div></div>
<div class="iziModal-wrap" style="height: auto;">
<div class="iziModal-content" style="padding-left: 20px;">
<p>You have several possibilities to use the easy Modal, with options, and also data-attributes.<br />
An Elegant, Responsive, Flexible and Lightweight Modal Plugin</p>
</div>
</div>
</div>
<xp:br></xp:br>
<button class="triggeriframe btn btn-default">Open Modal 3</button>
<div id="modal-vimeo"
class="modais"
data-izimodal-transitionin="fadeInUp"
data-izimodal-title="Vimeo"
data-iziModal-subtitle="Model iFrame"
data-izimodal-iframeURL="https://player.vimeo.com/video/22439234?autoplay=1">
</div>
</xp:panel>
</xp:this.facets>
</xc:ccLayout>
<script>
$(document).on('click', '.trigger', function (event) {
event.preventDefault();
$('#modal').iziModal('open');
});
$("#modal").iziModal({  // Set here modal trigger ID
title: 'Your message has been sent successfully',
subtitle: 'This message will be closed after 10 seconds',
overlayClose: true,
closeOnEscape: true,
bodyOverflow: false,
focusInput: true,
autoOpen: false,
fullscreen: true,
openFullscreen: false,
timeout: 10000, //Set a time, in miliseconds, to close automaticaly the modal
timeoutProgressbar: true, //Set here to 'true' if your enabled a timeout.
timeoutProgressbarColor: '#4183D7',
transitionInModal: 'transitionIn',
transitionOutModal: 'transitionOut',
transitionInOverlay: 'fadeIn',
transitionOutOverlay: 'fadeOut',
});
</script>
<script>
$(document).on('click', '.triggerdefault', function (event) {
event.preventDefault();
$('#modal-default').iziModal('open');
});
$("#modal-default").iziModal({  // Set here modal trigger ID
autoOpen: false,
});
</script>
<script>
$(document).on('click', '.triggeriframe', function (event) {
event.preventDefault();
$('#modal-vimeo').iziModal('open');
});
$("#modal-vimeo").iziModal({  // Set here modal trigger ID
history: false,
iframe : true,
fullscreen: true,
headerColor: '#000000',
loop: true
});
</script>
</xp:view>

More information and documentation: jQuery IZIMODAL v1.5.0

Thursday, 6 July 2017

IBM Sametime 9.0.1 FP1 Available for Download on IBM Fix Central

IBM Sametime 9.0.1 FP1 release is available. All customers are recommended to upgrade to this release. Update IBM Sametime V9.0 and V9.0.1 servers to Feature Pack 1 by downloading packages provided here in Fix Central and installing with the Update option. You can also use these 9.0.1 FP1 builds for a fresh install of servers and clients.
It resolves a number of issues. Form more details: IBM Sametime 9.0.1 FP1 release - June 2017
Read the documentation on how to upgrade to 9.0.1 FP1 here: IBM Sametime V9.0.1 FP1 documentation
Download Sametime 9.0.1 FP1 package from Fix Central: IBM Sametime 9.0.1. FP1


Friday, 23 June 2017

Using Selectize for List Boxes and Combo Boxes in XPages

Selectize is the hybrid of a textbox and <select> box. It's jQuery based and it has autocomplete and native-feeling keyboard navigation; useful for tagging, contact lists, etc. It clocks in at around 7kb (gzipped). The goal is to provide a solid & usable user-experience with a clean and powerful API. Selectize is a lot like Chosen, Select2, and Tags Input but with a few advantages.
In order to use Selectize, the JavaScript and CSS file(s) need to be included on the XPage / Custom Control. The latest version can be downloaded from GitHub: Selectize.
Below a basic example how Selectize can be used in an XPages application. In the example below I also included Sifter, a library for textually searching arrays and hashes of objects by property (or multiple properties) designed specifically for autocomplete and Microplugin, a lightweight plugin / dependency system for libraries.

Adding the JS and CSS files
The JavaScript and CSS files must be added to the WebContent Folder in the Package Explorer.
In this example the Folders selectize, sifter and microplugin have been added in the WebContent Folder.


Next the JavaScript and CSS files, sifter/sifter.js, microplugin.js, selectize.js and selectize.bootstrap3.css, must be included on the XPage or Custom Control. In this example I add the files to an XPage.

<script type="text/javascript" src="sifter/sifter.js"></script>
<script type="text/javascript" src="microplugin/microplugin.js"></script>
<link rel="stylesheet" href="selectize/css/selectize.bootstrap3.css" />
<script type="text/javascript" src="selectize/js/selectize.js"></script>

Adding the x$ jQuery selector for XPages
Furthermore I recommend to use the the great XSnippet by Mark Roden, x$ jQuery selector for XPages, to initialize the plugin. The XSnippet can be added to the Script Libraries. See also the blog post by Csaba Kiss, x$ selector problem with JQuery 3.
The script itself can be made up as follows. In this example I use a few standard options.

</xp:scriptBlock>
<xp:scriptBlock id="scriptBlock2">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:listBox1}" ).selectize({
create: true,
sortField: 'text',
placeholder: "Select a product",
plugins: ['remove_button']
});
})
]]></xp:this.value>
</xp:scriptBlock>

AMD Loader Fix
Finally, all JavaScript files needs to be adjusted. Reason: newer jQuery plugins try to use its AMD loader, but that doesn't play well with the Dojo implementation in XPages. The source code of the library can be adjusted in a very simple way with just a slight modification.

1. Go to the WebContent Folder and select the specific JavaScript file
2. Select Open With - Client/Server JS Editor



3. Removed define.amd and replace it with false


4. Save the JavaScript file bootstrap-dialog.js

Note: There are other solutions for the AMD Fix. For more information about thes solution see my blog post Bootstrap Plugins in XPages Part VI - jQuery and JavaScript AMD (Asynchronous Module Definition) Fixes (2).

Final Result
The final result is a responsive Select Box with some additional options in the initial setup.


Code XPage
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom">
<script type="text/javascript" src="sifter/sifter.js"></script>
<script type="text/javascript" src="microplugin/microplugin.js"></script>
<link rel="stylesheet" href="selectize/css/selectize.bootstrap3.css" />
<script type="text/javascript" src="selectize/js/selectize.js"></script>
<xp:this.resources>
<xp:script src="/JQueryXSnippet.js" clientSide="true"></xp:script>
</xp:this.resources>
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:comboBox1}" ).selectize({
create: true,
sortField: 'text',
placeholder: "Select a key"
});
})
]]></xp:this.value>
</xp:scriptBlock>
<xp:scriptBlock id="scriptBlock2">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:listBox1}" ).selectize({
create: true,
sortField: 'text',
placeholder: "Select a product",
plugins: ['remove_button']
});
})
]]></xp:this.value>
</xp:scriptBlock>
<xc:ccLayout><xp:this.facets>
<xp:panel xp:key="facetMiddle">
<xp:br></xp:br>
<xp:comboBox id="comboBox1">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:var arr = new Array(""); 
var res = @DbColumn("C1257C43:002CD36F", "($ChooseDepartment)", 1)
var list = arr.concat(res);
return list;
}]]></xp:this.value>
</xp:selectItems>
</xp:comboBox>
<xp:br></xp:br>
<xp:listBox id="listBox1" multiple="true">
<xp:selectItem itemLabel=""
itemValue=""></xp:selectItem>
<xp:selectItem itemLabel="Notes Client"
itemValue="Notes Client"></xp:selectItem>
<xp:selectItem itemLabel="Notes Designer"
itemValue="Notes Designer"></xp:selectItem>
<xp:selectItem itemLabel="Notes Administrator"
itemValue="Notes Administrator"></xp:selectItem>
</xp:listBox>
<xp:br></xp:br>
</xp:panel>
</xp:this.facets>
</xc:ccLayout>
</xp:view>

For more information: Documentation Selectize

Thursday, 22 June 2017

Using SweetModal in XPages: Alert, Confirm, Prompt and Modal- Only Better!

One of the requirements for a new XPages Project constisted of a lightweight and powerful Confirm, Alert, Prompt and Modal functionality. In my search I came across SweetModal, a lightweight and powerful jQuey Plugin.
In order to use SweetModal, the JavaScript and CSS file(s) need to be included on the XPage / Custom Control. The latest version can be downloaded from GitHub: SweetModal. Below a basic example how SweetModal can be used in an XPages application.

Adding the JS and CSS files
The JavaScript and CSS files must be added to the WebContent Folder in the Package Explorer.
In this example a Folder flatpickr has been added in the WebContent Folder.
Next the JavaScript and CSS files, jquery.sweet-modal.js and jquery.sweet-modal.css, must be included on the XPage or Custom Control. In this example I add the files to an XPage.

<link rel="stylesheet" href="sweetmodal/dev/jquery.sweet-modal.css" />
<script type="text/javascript" src="sweetmodal/dev/jquery.sweet-modal.js"></script>

Adding the x$ jQuery selector for XPages
Furthermore I recommend to use the the great XSnippet by Mark Roden, x$ jQuery selector for XPages, to initialize the plugin. The XSnippet can be added to the Script Libraries. See also the blog post by Csaba Kiss, x$ selector problem with JQuery 3.
The script itself can be made up as follows. In this example I use a few standard options.

<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:button1}" ).bind("click",function(){$.sweetModal({
content: 'Dialog Message including Theme Dark and a Button.',
title: 'Dialog Message',
icon: $.sweetModal.ICON_ERROR,
theme: $.sweetModal.THEME_DARK,
buttons: [
{
label: 'Close Dialog',
classes: 'redB'
}
]
});
});
});
]]></xp:this.value>
</xp:scriptBlock>

Another possibility for example is to add the script in the OnClick Event of a Button (CSJS). For more information see the XPage Example Code below.

Final Result
The final result is a responsive Alert, Confirm, Prompt and Modal functionality with some additional options in the initial setup.


Code XPage
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom">
<link rel="stylesheet" href="sweetmodal/dev/jquery.sweet-modal.css" />
<script type="text/javascript" src="sweetmodal/dev/jquery.sweet-modal.js"></script>
<xp:this.resources>
<xp:script src="/JQueryXSnippet.js" clientSide="true"></xp:script>
</xp:this.resources>
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:button1}" ).bind("click",function(){$.sweetModal({
content: 'Dialog Message including Theme Dark and a Button.',
title: 'Dialog Message',
icon: $.sweetModal.ICON_ERROR,
theme: $.sweetModal.THEME_DARK,
buttons: [
{
label: 'Close Dialog',
classes: 'redB'
}
]
});
});
});
]]></xp:this.value>
</xp:scriptBlock>
<xc:ccLayout><xp:this.facets>
<xp:panel xp:key="facetMiddle">
<xp:br></xp:br>
<xp:button id="button1" value="Sweet Modal">
</xp:button>
<xp:br></xp:br>
<xp:button id="button2" value="Dialog Tabs">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[$.sweetModal({
theme: $.sweetModal.THEME_DARK,
title: {
tab1: {
label: 'Message'
},
tab2: {
label: 'Detailed Info'
}
},
content: {
tab1: 'Sweet Modal Dialog',
tab2: 'TABBED WITH BUTTONS'
},
buttons: {
someOtherAction: {
label: 'Action 2',
classes: 'orangeB',
action: function() {
return $.sweetModal('You clicked Action 2!');
}
},
someAction: {
label: 'Action 1',
classes: '',
action: function() {
return $.sweetModal('You clicked Action 1!');
}
}
}
});]]></xp:this.script>
</xp:eventHandler></xp:button>
</xp:panel>
</xp:this.facets>
</xc:ccLayout>
</xp:view>

For more information: Documentation SweetModal

Wednesday, 21 June 2017

Using flatpickr a Lightweight and Powerful Datetime Picker in XPages

One of the requirements for a new XPages Project constisted of a lightweight and powerful Datetime Picker functionality. In my search I came across flatpickr, a lightweight and powerful Datetime Picker. Lean, UX-driven, and extensible, yet it doesn’t depend on any libraries. There’s minimal UI but many themes. Rich, exposed APIs and event system make it suitable for any environment.
In order to use flatpickr, the JavaScript and CSS file(s) need to be included on the XPage / Custom Control. The latest version can be downloaded from GitHub: flatpickr. Below a basic example how flatpickr can be used in an XPages application.

Adding the JS and CSS files
The JavaScript and CSS files must be added to the WebContent Folder in the Package Explorer.
In this example a Folder flatpickr has been added in the WebContent Folder.
Next the JavaScript and CSS files, flatpickr.js and flatpickr.css, must be included on the XPage or Custom Control. In this example I add the files to an XPage.

<link rel="stylesheet" href="flatpickr/flatpickr.css" />
<script type="text/javascript" src="flatpickr/flatpickr.js"></script>

Adding the x$ jQuery selector for XPages
Furthermore I recommend to use the the great XSnippet by Mark Roden, x$ jQuery selector for XPages, to initialize the plugin. The XSnippet can be added to the Script Libraries. See also the blog post by Csaba Kiss, x$ selector problem with JQuery 3.
The script itself can be made up as follows. In this example I use a few standard options.

<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:inputText1}" ).flatpickr({
dateFormat: 'd-m-Y',
placeholder: 'Select Date..',
locale: {
firstDayOfWeek: 1 // start week on Monday
}
});
})
]]></xp:this.value>
</xp:scriptBlock>

Final Result
The final result is a responsive DateTime Picker functionality with some additional options in the initial setup.



Code XPage
 <?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom">
<link rel="stylesheet" href="flatpickr/flatpickr.css" />
<script type="text/javascript" src="flatpickr/flatpickr.js"></script>
<xp:this.resources>
<xp:script src="/JQueryXSnippet.js" clientSide="true"></xp:script>
</xp:this.resources>
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
$(document).ready(
function() {
x$( "#{id:inputText1}" ).flatpickr({
dateFormat: 'd-m-Y',
placeholder: 'Select Date..',
locale: {
firstDayOfWeek: 1 // start week on Monday
}
});
})
]]></xp:this.value>
</xp:scriptBlock>
<xc:ccLayout><xp:this.facets>
<xp:panel xp:key="facetMiddle">
<div class="col-md-7"><h3>Flatpickr</h3>
<h5>flatpickr is a lightweight and powerful datetime picker. Lean, UX-driven, and extensible, yet it doesn’t depend on any libraries. There’s minimal UI but many themes. Rich, exposed APIs and event system make it suitable for any environment.</h5></div>
<div class="col-md-7">
<xp:inputText id="inputText1">
<xp:this.attrs>
<xp:attr name="placeholder" value="Select Date..."></xp:attr>
</xp:this.attrs>
</xp:inputText>    
</div>
</xp:panel>
</xp:this.facets>
</xc:ccLayout>
</xp:view>

For more information: flatpickr introduction

Tuesday, 20 June 2017

Replay IBM Notes Domino XPages Webinar - SmartNSF - 100% Smart - and in Color!

On June 13 th a very interesting webinar was organized by T.L.C.C and Team Studio, SmartNSF - 100% Smart - and in Color! by Christian Guedeman and Martin Jinoch. For those who missed this webinar below the content, slides and video.

Content
SmartNSF is one piece of the IBM Domino application modernization puzzle! Learn how you can turn a simple Domino database (NSF) to a smart microservice within minutes. If you are new to the world of REST APIs, Microservices, OpenApi Specification and YAML don't worry! Christian and Martin will provide you an introduction to the modern paradigm of the microservice world. We will explore how your "old" skills on @Formulas, Agents and LotusScript fit into the new world of SmartNSF. SmartNSF also brings great value to XPages, Java and SSJS Gurus. And, last but not least, learn how all this fits into IBM's REST API Strategy and get inspired with what can be done with SmartNSF in your business. Will there be a demo? For sure!


Tuesday, 6 June 2017

ApplicationInsights Quick Start Series

Starting April 11, 2017, customers who are current on IBM Software Subscription and Support (S&S) for Domino Enterprise Server, Utility Server, or Dual Entitlement with Applications will be entitled to panagenda ApplicationInsights at no cost. See this blog post for important details pertaining to this offering.



ApplicationInsights is an offering from panagenda that allows customers to get a detailed analysis of their application landscape in IBM Domino. ApplicationInsights provides key analysis to help Domino customers understand usage and complexity of their applications to allow them to better determine the correct strategy to move forward with regarding those applications.
Usage Analysis: ApplicationInsights provides you with clear insights into the use of your application landscape. Find out how and whether an application is used: Is it accessed as read or write, and how often do specific departments and sites use certain application?
Code Assessment: The perfect overview of the complexity of the entire application environment for you or your developers. How many lines of code are relevant, which programming language is strongly represented, and how do complexity and dependencies affect your application strategy?
Application Strategies: ApplicationInsights is your key to strategy optimization. By linking usage and application design information, you have the perfect foundation for your project: Minimize operating costs and calculate risks and expenses into minute detail.
Below the Quick Start Series that I came accross last weekend for ApplicationInsights.

ApplicationInsights Quick Start Series 1 - Getting Started



ApplicationInsights Quick Start Series 2 - Usage Analytics



ApplicationInsights Quick Start Series 3 - Design Insights

Monday, 5 June 2017

XPages Webinar: SmartNSF - 100% Smart - and in Color!

On Tuesday, June 13th (my Birthday) a very interesting webinar will be organized by T.L.C.C and Team Studio, SmartNSF - 100% Smart - and in color! by Christian Guedeman and Martin Jinoch. The registration for this webinar is available on the T.L.C.C website.


Content Webinar
SmartNSF is one piece of the IBM Domino application modernization puzzle! Learn how you can turn a simple Domino database (NSF) to a smart microservice within minutes. If you are new to the world of REST APIs, Microservices, OpenApi Specification and YAML don't worry! Christian and Martin will provide you an introduction to the modern paradigm of the microservice world. We will explore how your "old" skills on @Formulas, Agents and LotusScript fit into the new world of SmartNSF. SmartNSF also brings great value to XPages, Java and SSJS Gurus. And, last but not least, learn how all this fits into IBM's REST API Strategy and get inspired with what can be done with SmartNSF in your business. Will there be a demo? For sure!

For more information: XPages Webinar Series with TLCC and Teamstudio.

Missed a Webinar? Look here for the recorded webinars.
Below a recording of the Webinar Back from the Dead: When Bad Code Kills a Good Server.

Domino and XPages Applications You Can Only Dream Of


Great 'new' development products, tools and techniques continue to further develop and evolve within the IBM Notes Domino and XPages world. Some are free to use for others has to be paid. ClevaDesk is one of these amazing products which continues to evolve.
ClevaDesk system expands IBM Notes Domino capabilities and gives it new life. There is no need to think about migrating to other technologies.
ClevaDesk is a flexible IT-system with a set of business applications, a Designer to build IT-systems without programming and a platform for migration of IBM Notes applications to the web browser.
Forget about Notes Domino limitations – no more limits with ClevaDesk!
Furthermore ClevaDesk offers new opportunities for existing IBM Notes Applications.

So, are you seeking a system for rapid development of business applications? Or maybe you looking for tool to modernize your Domino applications?
ClevaDesk provides powerful designer to build applications you can only dream of.
Development of webapplications will takes hours not days.
More than 100 pre built elements and business logic will save your time and of course your money.

You can build beautiful applications with complicated business logic, portals with charts and reports, simple achieves or data storage apps. Integrate them with anything you need. Every element can be customized according your wishes.

The application below was built to analyze the work of departments in the company and effectiveness of each manager. It took only three hours to build and start it!
No changes will be made to the design of IBM Lotus Notes / Domino NSF!
You need only web browser to create applications and work with them. ClevaDesk has no limits, just your imagination.


Visit the ClevaDesk website for more information: www.clevadesk.com

Webinar Replay: Unlocking the Power of IBM Connections 6

On Wednesday, May 3 a very interesting webinar was organized by Maarga Systems, Unlocking the Power of IBM Connections 6.0. For those who missed this webinar below the content and the video.

Content
IBM has recently released the newest version of their Enterprise Collaboration Software – IBM Connections 6.0 that will bring new capabilities to Enterprise Social Networks for a simpler collaboration across the workforce and employee onboarding experience. IBM Connections 6.0 has new functionality across the board from Communities, to Files, Search, Onboarding as well as the brand-new IBM Connections Homepage – Orient Me.
In this webinar titled Unlocking the Power of IBM Connections 6.0, you
will learn:
What is new in Connections
Orient Me
Enhanced Onboarding
‘Modern’ Communities
‘Better-than-ever’ Files
Deployment methodology
Challenges in deployment and how to overcome them
Best practices
End user adoption

Presented by:
Raja Balaji MP, Solution Architect (Enterprise Collaboration), Maarga Systems and
Sam David, Associate Consultant (End User Adoption), Maarga Systems

Tuesday, 9 May 2017

Replay IBM Notes Domino XPages Webinar - Back from the Dead: When Bad Code Kills a Good Server

On May 2 a very interesting webinar was organized by T.L.C.C and Team Studio, Back from the Dead: When Bad Code Kills a Good Server by Bill Malchisky Jr. and Serdar Basegmez. For those who missed this webinar below the content, slides and video.

Content
It's Friday and a new customer calls. Their mission critical app is taking :05 to open documents and the users are quite concerned. Where do you start when handed a 20-year-old application you have never seen, on a server you barely know? Join two IBM Champions as they dissect a complex Domino performance problem from both the administration and development side to provide a complete customer solution. This session includes best practices around problem-solving techniques and a checklist you can use internally to quickly solve problems you encounter.


Sunday, 7 May 2017

IBM Domino 9.0.1.Feature Pack 8 Interim Fix 3 Available for Download on IBM Fix Central


IBM Domino 9.0.1.Feature Pack 8 Interim Fix 3 is available for wownload on IBM Fix Central. Fix List updates in progress. Note: Domino 9.0.1 FP8 IF3 is a pre-req for Verse On-Premises 1.0.1.


Download link: Interim Fix 3 for Domino 9.0.1 Feature Pack 8

Friday, 21 April 2017

IBM Domino 9.0.1.Feature Pack 8 Interim Fix 2 Available for Download on IBM Fix Central


IBM Domino 9.0.1.Feature Pack 8 Interim Fix 2 is available for wownload on IBM Fix Central.
A vulnerability in the IBM Domino server IMAP EXAMINE command potentially could be exploited by an authenticated user resulting in a stack buffer overflow. This could allow a remote attacker to execute code with the privileges of the Domino server. Current 64-bit platforms leverage ASLR (Address Space Layout Randomization) which dramatically reduces the probability of rogue code execution. Conversely, Windows 32-bit Domino servers, while not common, are at greater risk to this attack.

DESCRIPTION: IBM Domino is vulnerable to a stack based overflow in the IMAP service that could allow an authenticated attacker to execute arbitrary code by specifying a large mailbox name.
For more information: Security Bulletin: IBM Domino server IMAP EXAMINE command stack buffer overflow (CVE-2017-1274)