Wednesday, June 30, 2010

Lazy Admins and Notes Apps -' feed them to the wood chipper'

I am frustrated. I get emails like this all the time.

Hi

Mark,

Our Lotus Notes administrators block access to posting a new database on email server, such as the ITANA DB mentioned in your product write up....

I am using eProductivity template v2... and trying to get To Dos onto my iPhone.

Is there some way to run this locally or change mail template to include ITANA so I can update my iPhone?

Any other suggestions?

It reminds me of a video I watched yesterday. I did not create the video and have no idea who did.

Warning Language alert!



Friday, June 18, 2010

XPages Challenges with multiple data sources on one page, a UI example

I have a new project to write an expense report application. The requirements are a little different than normal, the users do not want dialog boxes for entries and they dont want to leave the page.

So i created an Xpage that is the expense form, it has the usual header information that this company likes. Then it has a data table to show the entries for each expense item. And it also has a form to enter new items in. Inside the data table is another form to edit that line item. This approach might look better in a grid format(excel style), but i have too little horizontal space for all my info. And of you course you could set edit mode to onclick of the row. This vertical style formatting of this app is because it will also be viewed for approval on iPhones.



Since the main expense form is open and in edit mode(document1 datasource) i leave all the settings for it alone.

For the form(document3 datasource) that actually enters new data in, i have to make some changes. In the properties of the panel that holds the data source for document3, i need to change the scope for the data to "request". That way after i save that document it sets that data source to a new document ready to be saved.




For the inside the data table edit form, i have to change some things as well. This datasource(document2), has to have the property "ignore request parameter", in the all properties panel under the datasource, set to true.



Why, i am not too sure, this data source is set to a document computed to edit document, with a computed docid, which is set by the button to edit that line item in the datatable. It all works now, it was just a little tedious finding out how to make it that way.

Tuesday, June 1, 2010

SQL Lite replication engine for HTML5(iPhone & Domino Data)

I have been working on ITANA to give it the ability to edit and add and delete records while offline. To do this i am using SQL lite as the data store for the iPhone or HTML5 enabled device. Then i "Replicate" it to the notes server via xhr requests.

Please help me with my logic, does this outline work? Am i missing something? What might be better?

Sql lite Replication engine


1. Get all documents from notes db and unids

2. For each notes doc check if local record exist

3. If local record exists check the last updated time of local record
and notes doc, if server doc is newer update local record, if the
local record is newer update the server record.

Check the delete status on the local record, if set to delete, delete
the server record and remove the local record.

4. If local record does not exist create one

5. Get all local records and unids.

6. Check if they exist on server, if local record has unid = new doc,
create doc on server and update the local record with real unid, else
delete the local record because it has been deleted on the server.

Monday, May 31, 2010

Thankful for freedom

I am truly blessed, on this day i remember all who have served our great Country in the cause of liberty and freedom. From their sacrifices we are given freedom here on Earth, so that we might have life, liberty and the pursuit of happiness.

My Lord and Savior shed his blood and gave His life, so that who ever believes in Him shall not perish but have eternal life, and that we may be free from the bondage of sin forever.

So it is up to us as free men and women, to honor these sacrifices with our lives- how we choose to live each day is our testament to what we have been given.

Let us make them proud.

Tuesday, May 18, 2010

HTML 5 Cache Manifest and dynamic data (Xpages)

So cache manifest files are a very useful tool. With dynamic data though they are a little tough to work with.

For example:

You want to cache some images and script libraries local, as well as css, and some other files. It does this great, but it will also cache the html generated by the xpage the first time it was opened.

The problem: the view information changes, and every time you open the xpage you get the initial html and wrong view information.

The first thing you need to do is set a partial refresh on the view info after load. But that is only half the battle, as maybe you have preferences for a theme, and the preference comes from a profile document. So the theme will not change.

The solution: Update the cache-manifest file which will make the page re-cache itself.

So how do you do this for every time a page is refreshed?

Well Notes makes it easy - you make a notes page. On the page properties tell it content type = text/cache-manifest. Name it something like my.manifest. Then on the version line of the manifest you enter in computed text set to @now. You will always have a new manifest that you can use to update your local cache with.


Tuesday, May 4, 2010

Domino 8.5.2 & Cache Manifest, not just for offline use

Over on Niklas Heidlhoff's blog is an example of how to use a cache-manifest file and how to make an offline app with X-Pages. This is great news for mobile developers.

But what if you don't want or need the app to be offline? What advantages do you get with a cache manifest?

Speed!

Lets say you have a mobile app(or any Xpages app), it has some rather large style sheets, script libraries, and images. This is all static content, simply cache this content locally then the application is local and only connects to the server when it gets or posts information to the Notes database.

I have added many images and features to ITANA for an upcoming release. Knowing that the cache manifest would be supported in version 8.5.2, i use allot more images and css than i had previously.

Before I added the cache manifest file, it would take about 20 seconds to open this Xpages app from my iPhone, now it takes less than 5, and part of that is the iPhone opening a new Safari instance!

And here is an example cache manifest to show how to leave network connectivity in place for everything but your resources that you keep local.

CACHE MANIFEST

#version: 0.0.15

tasks4.css
tasks4.js
trashcan.png
uinext.js
ajax-loader.gif
runbuild2.png
attach.png
spinningwheel.js
spinningwheel.css
sw-alpha.png
sw-button-cancel.png
sw-button-done.png
sw-header.png
sw-slot-border.png
tasks.js
iscroll.js
home.png
wood.png
zengarden.jpg
checkbox.png
newwindow.png
cal.png
category.png

#local dojo resources
/domjs/dojo-1.4.1/dojo/dojo.js
/domjava/xsp/theme/webstandard/xsp.css
/domjava/xsp/theme/webstandard/xspLTR.css
/domjava/xsp/theme/webstandard/xspSF.css
/xsp/.ibmxspres/domino/ckeditor/contents.css
/xsp/.ibmxspres/domino/ckeditor/skins/lotus/icons.png
/xsp/.ibmxspres/domino/ckeditor/skins/lotus/images/arrowdown.gif
/xsp/.ibmxspres/domino/ckeditor/skins/lotus/images/toolbar_start.gif
/xsp/.ibmxspres/domino/ckeditor/skins/lotus/images/toolbarSprite3.png
/xsp/.ibmxspres/domino/ckeditor/skins/lotus/images/toolbarSprite.png
/domjs/dojo-1.4.1/dijit/themes/dijit.css
/domjs/dojo-1.4.1/dijit/themes/tundra/Common.css
/domjs/dojo-1.4.1/dijit/themes/tundra/layout/ContentPane.css
/domjs/dojo-1.4.1/dijit/themes/tundra/layout/TabContainer.css
/domjs/dojo-1.4.1/dijit/themes/tundra/layout/AccordionContainer.css
/domjs/dojo-1.4.1/dijit/themes/tundra/layout/SplitContainer.css
/domjs/dojo-1.4.1/dijit/themes/tundra/layout/BorderContainer.css
/domjs/dojo-1.4.1/dijit/themes/tundra/form/Common.css
/domjs/dojo-1.4.1/dijit/themes/tundra/form/Button.css
/domjs/dojo-1.4.1/dijit/themes/tundra/form/CheckBox.css
/domjs/dojo-1.4.1/dijit/themes/tundra/form/RadioButton.css
/domjs/dojo-1.4.1/dijit/themes/tundra/form/Slider.css
/domjs/dojo-1.4.1/dijit/themes/tundra/Tree.css
/domjs/dojo-1.4.1/dijit/themes/tundra/ProgressBar.css
/domjs/dojo-1.4.1/dijit/themes/tundra/TitlePane.css
/domjs/dojo-1.4.1/dijit/themes/tundra/Calendar.css
/domjs/dojo-1.4.1/dijit/themes/tundra/TimePicker.css
/domjs/dojo-1.4.1/dijit/themes/tundra/Editor.css
/domjs/dojo-1.4.1/dijit/themes/tundra/Dialog.css
/domjs/dojo-1.4.1/dijit/themes/tundra/images/titleBar.png
/domjs/dojo-1.4.1/dijit/themes/tundra/images/spriteArrows.png
/domjava/xsp/theme/webstandard/xspFF.css
/domjava/xsp/theme/webstandard/xsp.css
/domjs/dojo-1.4.1/dijit/themes/tundra/tundra.css
/domjs/dojo-1.4.1/dijit/themes/tundra/images/accordionItemHover.gif
/domjs/dojo-1.4.1/dojo/io/iframe.js
/domjs/dojo-1.4.1/ibm/domino/widget/layout/DominoRichText.js
/domjs/dojo-1.4.1/ibm/xsp/widget/layout/RichText.js
/domjs/dojo-1.4.1/ibm/xsp/widget/layout/nls/RichText_en-us.js
/domjs/dojo-1.4.1/ibm/domino/widget/layout/nls/DominoRichText_en-us.js
/domjs/dojo-1.4.1/ibm/xsp/widget/layout/xspClientDojo.js
/domjs/dojo-1.4.1/ibm/domino/widget/layout/css/domino-default.css
/domjs/dojo-1.4.1/ibm/xsp/widget/layout/nls/xspClientDojo_en-us.js

NETWORK:
#a whitelist of paths request can be made to for more dojo and other resources not listed above
/xsp/.ibmxspres/
/domjs/dojo-1.4.1/
/domjava/xsp/


Tuesday, April 27, 2010

Make Lotus Notes a killer app in your company!

Most of us know, Lotus Notes is more than just email, contacts, and calendaring. It is the added value of custom applications and third party solutions that really make Lotus Notes a very powerful and effective tool.

A very easy way to add a great deal of value to Lotus Notes is eProductivity. Everyone wants to be more productive, everyone wants there employees to be more productive. So when David Allen, one of the world's leading authorities on personal and organizational productivity is giving a free seminar, and showing how you can use his methods in Lotus Notes, it is something you can not pass up. Learn how you can make Lotus Notes an indispensable application in your company.


Here is more information about this event



On April 28th, GTD® creator, David Allen, and eProductivity™ creator, Eric Mack, will present a highly-anticipated Webinar:

"Getting Things Done with IBM Lotus Notes"

Do you want to go home at the end of the day with an empty inbox? Would you like to tackle your week with the confidence of knowing you’re being as productive as you can possibly be?

On April 28th, David and Eric will show you how. Register Now

David's book, “Getting Things Done - The Art of Stress-Free Productivity,” and his GTD methodology have revolutionized the way millions of working men and women tackle their work. His system turns achieving control over commitments into a daily reality.

Many people don't know that for the past 17 years, David has used Lotus Notes as his personal organization system. In that time, he and Eric have identified best practices for using Lotus Notes to get things done.

Sign up for this special event and let David and Eric share with you the secrets of "Getting Things Done with Lotus Notes". If you use Lotus Notes - with or without eProductivity - this is the event for you.

The cost is free but space is limited, so don't wait to sign up!

Webinar attendees will receive an eProductivity Reference application bundled with many great GTD resources from David's library.

Webinar Details
Date: April 28, 2010
Time: 10:00AM - 11:30AM PST
Cost: Free



Please share the webinar information with any Lotus Notes users who would appreciate having more time & less stress!

P.S. The Twitter hashtag for this event is #GTDLN. Happy tweeting!



This webinar is sponsored by ICA.Com, Inc., creators of eProductivity, the ultimate productivity software for IBM Lotus Notes.

eProductivity™ is a trademark of ICA.COM, Inc. "GTD®" and "Getting Things Done®" are trademarks or registered
trademarks of The David Allen Company. All other trademarks or registered trademarks are the property of their owners.