Posts Tagged Dojo

Presentations from EntwicklerCamp 2012 available

I have experienced that IBM has some problems linking to their material that lies out in the open, but I hope this post does not cause the same kind of trouble. I also know the solution in case needed: contact the content publisher to remove the files…

Nevertheless Entwicklercamp sounds like a excellent technical conference and for those of you who have no problems with reading a bit of German (not all presentations are in German, by the way) here are some interesting presentations:

Track 0 – Session 1 - Eröffnungssession - Rudi Knegt (link)

Track 0 – Session 2 - Opening Session – Phil Riand (link)

Track 0 – Session 3 - Speeddemoing – Diverse (link)

Track 0 – Session 5 - Closing Session: Ein (grausamer Selbstversuch) – 5 Monate ohne Lotus Notes – Werner Motzet

“Ein (Arbeits-)Leben ohne Lotus Notes” / “Ein (grausamer Selbstversuch) – 4 Monate ohne Lotus Notes” (link)


Track 1 – Session 1 - XPages – 1 – Grundlagen – Ulrich Krause (link)

Track 1 – Session 2 - XPages: Practical Ideas for Converting Existing Notes Applications – Matthew Fyleman (link)

Track 1 – Session 3 - XPages – 3 – eXtension Library – Viagra für die XPages – Ulrich Krause (link)

Track 1 – Session 4 - XPages – 4 – IBM oneUI + MyTheme = myUI – Manfred Meise (link)

Track 1 – Session 5 - XPages – 5 – Wie mache ich meine XPages Applikationen ‘social’? – Niklas Heidloff (link)

Track 1 – Session 6 - XPages – 6 – XPages Extensibility API – going deep – René Winkelmeyer (link)

Track 1 – Session 7 - Zähme den Tiger – Java-Entwicklung in Notes und Domino – Bernd Hort (link)

Track 1 – Session 8 - XPages – 8 – Nutzung des Dojo Toolkits zur Optimierung bestehender Notes-Web-Anwendungen – Matthias Bierl (link)


Track 2 – Session 1 – Extending Lotus Notes – Widgets, Livetext, Plugins – Detlev Poettgen (link)

Track 2 – Session 3 - Agile Softwareentwicklung mit LotusNotes – Werner Motzet (link)

Track 2 – Session 4 - Ich weiß was du diesen Sommer tun wirst – Gregory Engels (link)

Track 2 – Session 5 - Erfolgreiches Projektmanagement mit agilen Methoden – Christian Habermueller (link)

Track 2 – Session 6 - Make the impossible possible with XPages – Frank van der Linden (link)

Track 2 – Session 7 - Connect your Lotus Notes app to the Activity Stream with XPages – Frank van der Linden (link)

Track 2 – Session 8 - Keine Angst vor großen Tieren – Peter Klett (link)


Track 3 – Session 1 - Rediscover the Power of LotusScript in Notes/Domino 8.5 – Rocky Oliver (link)

Track 3 – Session 2 - Die besten Open Source Projekte von OpenNTF – Niklas Heidloff (link)

Track 3 – Session 3 - Richtig(er) Kommunizieren! – Wie bringe ich meine Botschaft rüber? – Jürgen Kunert (link)

Track 3 – Session 4 - XPages und Domino App Dev Erweiterungen – Phil Riand und Niklas Heidloff (link)

Track 3 – Session 5 - Turbocharge Development in Notes/Domino 8.5 – with @Formulas! – Rocky Oliver (link)

Track 3 – Session 6 - Mobiler Zugriff auf Notes Daten – Matthias Schneider (link)

Track 3 – Session 7 - Es gibt keine Ausreden mehr – eGit im DDE : Versionskontrolle leicht gemacht – Holger Chudek (link)

Track 3 – Session 8 - Using the XPages Mobile Controls… and looking at alternatives – Rich Sharpe (link)


Track 4 – Session 1 - Security in Notes – Manfred Meise (link)

Track 4 – Session 2 - Workflow – Richtig analysieren, dokumentieren und schlüssig hinterfragen – Christian Habermueller (link)

Track 4 – Session 3 - Lotus Protector programmieren – Matthias Schneider (link)

Track 4 – Session 4 - WebServices unter Notes/Domino – Tim Pistor (link)

Track 4 – Session 5 - Hilfe, ich habe geerbt! – Bernhard Köhler (link)

Track 4 – Session 6 - NoSQL-Datenbanken – ein Überblick – Karsten Lehmann (link)

Track 4 – Session 7 - Notes und die Zeit – Bernhard Köhler (link)

Track 4 – Session 8 - Schnittstellendesign mit dem Tivoli Directory Integrator – Am Beispiel SAP – Andreas Artner (link)


In case you are a bit lazy or dont care about bandwidth: <here> you can find the presentations archived together by track…

There are also some hands-on sessions available:

Hands-On 1 - Javascript – die ersten Schritten – Manuel Nientit (link)

Hands-On 3 - XPages – the first Steps 1 – Howard Greenberg (link)

Hands-On 4 - XPages – the second steps 2 – Howard Greenberg (link)

Hands-On 5 - Signierung und Verteilung von Plugins für den Notes Client – Detlev Poettgen (link)

Hands-On 6 - LotusScript – so einfach geht es los – Peter Klett (link)

Hands-On 7 - Mobiler Zugriff auf Notes Daten – Matthias Schneider (link)

Hands-On 8 - XPages Extensibility API – first steps – René Winkelmeyer (link)

Btw, all links were collected from this source.

Comments (4)

Working with LinkedIn in XPages – People Search

Here is another example for accessing LinkedIn’s API’s in XPages. This example contains code for performing a people search within your network.

I will include the example later in the next release of LinkedIn controls.

<?xml version=”1.0″ encoding=”UTF-8″?>
<xp:view xmlns:xp=”http://www.ibm.com/xsp/core&#8221;
xmlns:xc=”http://www.ibm.com/xsp/custom&#8221; createForm=”false”>
<head>
<title>LinkedIn JavaScript API Sample Application</title>
<xc:ccLinkedInAPIKey key=”//your  domain key here”></xc:ccLinkedInAPIKey>
<script type=”IN/Login”></script>
<xp:scriptBlock id=”scriptBlock3″>
<xp:this.value><![CDATA[function PeopleSearch() {
// Call the PeopleSearch API with the viewer's keywords
// Ask for 4 fields to be returned: first name, last name, distance, and Profile URL
// Limit results to 10 and sort by distance
// On success, call displayPeopleSearch(); On failure, do nothing.
var keywords = dojo.byId("#{id:searchBox}").value;
IN.API.PeopleSearch()
.fields('firstName', 'lastName', 'distance', 'siteStandardProfileRequest')
.params({'keywords': keywords, 'count': 10, 'sort': 'distance'})
.result(displayPeopleSearch)
.error(function error(e) { /* do nothing */ }
);
}]]></xp:this.value>
</xp:scriptBlock>
<xp:scriptBlock id=”scriptBlock4″>
<xp:this.value><![CDATA[function displayPeopleSearch(peopleSearch) {
var div = document.getElementById("peopleSearchResults");
div.innerHTML = "<ul>";
// Loop through the people returned
var members = peopleSearch.people.values;
for (var member in members) {

// Look through result to make name and url.
var nameText = members[member].firstName + ” ” + members[member].lastName;
var url = members[member].siteStandardProfileRequest.url;

// Turn the number into English
var distance = members[member].distance;
var distanceText = ”;
switch (distance) {
case 0: // The viewer
distanceText = “you!”
break;
case 1: // Within three degrees
case 2: // Falling through
case 3: // Keep falling!
distanceText = “a connection ” + distance + ” degrees away.”;
break;
case 100: // Share a group, but nothing else
distanceText = “a fellow group member.”;
break;
case -1: // Out of netowrk
default: // Hope we never get this!
distanceText = “far, far, away.”;
}
div.innerHTML += “<li><a href=\”" + url + “\”>” + nameText +
“</a> is ” + distanceText + “</li>”
}
div.innerHTML += “</ul>”;
}]]></xp:this.value>
</xp:scriptBlock>

</head>

<h1>Find People on LinkedIn</h1>
<xp:inputText id=”searchBox” defaultValue=”xpages”></xp:inputText>
<xp:button value=”Search” id=”button1″>
<xp:eventHandler event=”onclick” submit=”false”>
<xp:this.script><![CDATA[
PeopleSearch();]]></xp:this.script>
</xp:eventHandler>
</xp:button>
<div id=”peopleSearchForm”></div>
<div id=”peopleSearchResults”></div>
</xp:view>

Custom control ccLinkedInAPIKey you can find in the LinkedIn controls project.

Without any styling your result could look something similar like this:

Leave a Comment

Working with LinkedIn in XPages – Presenting a User’s Network Stream

Here is another example for accessing LinkedIn’s API’s in XPages. This example contains code for a custom control that will present the users network stream:

<?xml version=”1.0″ encoding=”UTF-8″?>
<xp:view xmlns:xp=”http://www.ibm.com/xsp/core&#8221;
dojoParseOnLoad=”true”>
<xp:this.resources>
<xp:styleSheet href=”/stream.css”></xp:styleSheet>
</xp:this.resources>
<head>
<xp:scriptBlock id=”scriptBlock1″>
<xp:this.value><![CDATA[function loadData() {
// we pass field selectors as a single parameter (array of strings)
IN.API.NetworkUpdates()
.params({type:"SHAR"})
.result(function(result) {
var streamHTML = "";
for (var update in result.values) {
var thisupdate = result.values[update]

// Build each individual stream update item
person = thisupdate.updateContent.person
var thisHTML = “<div>”;

// Person’s picture, linked name, and status
thisHTML += “<div>” ;
thisHTML += “<img align=’left’ height=’50′ src=’” + person.pictureUrl + “‘></a>”;
thisHTML += “<a href=’” + person.publicProfileUrl + “‘>”;
thisHTML += “<span>” + person.firstName + ” ” + person.lastName + “</a></span>”;
thisHTML += “<p>” + person.currentShare.comment + “</p></div></div>”;

// Slap this onto the HTML we’re building
streamHTML += thisHTML;
}
dojo.byId(“stream”).innerHTML = streamHTML;
});
}]]></xp:this.value>
</xp:scriptBlock>
</head>
<body>
<div id=”stream”></div>
<script type=”IN/Login” data-onAuth=”loadData”></script>
</body>
</xp:view>

Also here remember to include the LinkedIn domain API key. The result could like something as this:

Applying some oneUI classes could improve the presentation… :-?

Comments (4)

Lotusphere – Day 1

Here is a summary of my experiences on day 1:

OGS

This or this as opener?

I guess I share similar feelings with others on this one. Although Notes Next looked pretty awesome in the demos! I just wonder if ‘older’ users can choose a ‘simple’ version in their preferences?

I kinda liked the theme choice even when it is not techie.

Rated: 6

 

AD101 IBM Lotus Domino Designer – Today and tomorrow

Most of the new features were already known and no big announcement for tomorrow so a bit ‘modest’ (the work done is nevertheless highly appreciated).

Rated: 6

 

AD110 Building XPages by the book

I visited this session in the hope to be able to go through the 800+ pages a bit more effective.

The book looks promising and I guess I have to read it from the beginning till the end.

Actually kinda cool to applause to Philippe Riand, chief architect of XPages!

Rated: 7

 

 

AD307 Application Development with the IBM Lotus Sametime SDK

The SameTime Proxy Toolkit on JavaScript and Dojo looks cool!

Rated: 7

 

 

AD111 Developing Mobile Apps for Webkit Browsers Using XPages

A quick go-through + demo of 2 excellent OpenNTF projects. I hope to be working on mobilizing apps in the near future.

Rated: 9

 

 

AD107 Microsoft Sharepoint Meets IBM Lotus Domino Development Deep Dive

When east meets west – There’s gonna be one hell of a mess – Or Love Is A Battlefield Of Wounded Hearts.

Rated: 9

 

 

Product Showcase Reception

A cold beer was exactly what I needed to flush away the hangover of the welcome reception yesterday.

Rated: 10

Comments (1)

Design @ IBM – Widget Gallery

I am not sure if anyone has mentioned the Widget Gallery on IBM’s Design site?

If you explore the widgets gallery you will find an excellent description of each (dojo) widget including demo’s, documentation, source code, enhancement and related widgets.

A recommendation!

Leave a Comment

Landing page … Google maps

Some time ago I asked if anyone has recommendations for a geotargeting service.

Since the service from Google is simple and free I implemented this one for a demo for a customer. Below you can find the code. For now I display a dojo dialog when there are visitors from Canada, United States and … Sweden (because I am located there). You could of course do a redirect automatically or store the user selection in a cookie for next time. You get the point.

<?xml version=”1.0″ encoding=”UTF-8″?>
<xp:view xmlns:xp=”http://www.ibm.com/xsp/core&#8221; dojoTheme=”true”
dojoParseOnLoad=”true”>
<xp:this.resources>
<xp:styleSheet href=”../resources/dojo.css”></xp:styleSheet>
<xp:styleSheet href=”../dijit/themes/tundra/tundra.css”></xp:styleSheet>
</xp:this.resources>
<script type=”text/javascript”
src=”http://www.google.com/jsapi?key=ACME_GOOGLE_MAPS_KEY”&gt;
</script>
<script type=”text/javascript”
src=”https://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js”&gt;
</script>
<script>
dojo.require(“dojo.parser”);
dojo.require(“dijit.Dialog”);
dojo.require(“dijit.form.TextBox”);
dojo.addOnLoad(checkPref);
function checkPref(){
var location_redirect = getCookie(“site_pref”);
if (location_redirect == “”){
showDialog();
}
else{
top.location.href = window.location = location_redirect;
}
}
function showDialog(){
var cl = google.loader.ClientLocation;
var ccode = cl.address.country_code;
if ((ccode == “CA”)||(ccode == “US”)||(ccode == “SE”)){
//document.getElementById(‘your_location’).innerHTML = “Your country code = ” + ccode;
var dlg = dijit.byId(‘dialog1′);
dlg.show();
}
}
function setCookie(c_name,value,expiredays){
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ “=” +escape(value)+
((expiredays==null) ? “” : “;expires=”+exdate.toUTCString());
}
function getCookie(c_name){
if (document.cookie.length>0){
c_start=document.cookie.indexOf(c_name + “=”);
if (c_start!=-1){
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(“;”,c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return “”;
}
function loadPreferences(){
var location_redirect = getCookie(“site_pref”);
top.location.href = location_redirect;
}
</script>
<div dojoType=”dijit.Dialog” id=”dialog1″ title=”Select country”
style=”display:none;width:600px;”>
<h1>
Welcome to
<b>ACME</b>
</h1>
<div id=”your_location”></div>
<table border=”0″ width=”100%”>
<tr>
<td colspan=”2″>Visit:</td>
</tr>
<tr>
<td>
<b>USA site</b> <a href=”http://www.acme.com/us&#8221; target=”_top”>(English)</a>
<b>USA site 2</b> <a href=”javascript:setCookie(‘site_pref’,'http://www.acme.com/us’,’1000′);loadPreferences();” target=”_top”>(English)</a>
</td>
<td>
<b>Global site</b> <a href=”http://www.acme.com/&#8221; target=”_top”>(English)</a>
<b>Global site2</b> <a href=”javascript:setCookie(‘site_pref’,'http://www.acme.com/’,’1000′);loadPreferences();” target=”_top”>(English)</a>
</td>
</tr>
</table>

<div id=”divider”
style=”border-top:dashed 1px grey;margin:10px 0 10px 0″>
</div>

<div style=”float:left;width:272px;”>
<table width=”100%”>
<tr>
<td>
<b>Americas</b>
<br />
Canada,
<a href=”http://www.acme.com/us&#8221;
target=”_top”>
English
</a>
<br />
Latin America regional site,
<a href=”http://www.acme.com/cl&#8221;
target=”_top”>
Español
</a>
</td>
</tr>
<tr>
<td>
<b>Asia Pacific</b>
<br />
Asia Pacific regional site,
<a href=”http://www.acme.com/sg&#8221;
target=”_top”>
English
</a>
<br />
Australia,
<a href=”http://www.acme.com/au&#8221;
target=”_top”>
English
</a>
<br />
中国(China),
<a href=”http://www.acme.com/cn&#8221;
target=”_top”>
中文
</a>
<br />
日本 (Japan),
<a href=”http://www.acme.com/jp&#8221;
target=”_top”>
日本語
</a>
<br />
남한 (South Korea),
<a href=”http://www.acme.com/kr&#8221;
target=”_top”>
한국어
</a>
</td>
</tr>
</table>
</div>

<div>
<table width=”300px;”>
<tr>
<td>
<b>Europe</b>
<br />
CIS,
<a href=”http://www.acme.com/ru&#8221;
target=”_top”>
Россия
</a>
<br />
Suomi (Finland),
<a href=”http://www.acme.com/fi&#8221;
target=”_top”>
Suomeksi
</a>
<br />
Norge (Norway),
<a href=”http://www.acme.com/no&#8221;
target=”_top”>
Norsk
</a>
<br />
Polska (Poland),
<a href=”http://www.acme.com/pl&#8221;
target=”_top”>
Polski
</a>
<br />
Sverige (Sweden),
<a href=”http://www.acme.com/se&#8221;
target=”_top”>
Svenska
</a>
<br />
United Kingdom &amp; Ireland,
<a href=”http://www.acme.com/uk&#8221;
target=”_top”>
English
</a>
</td>
</tr>
<tr>
<td>
<b>Middle East and Africa</b>
<br />
Africa regional site,
<a href=”http://www.acme.com/za&#8221;
target=”_top”>
English
</a>
</td>
</tr>
</table>
</div>
</div>

</xp:view>

Here an example how it will look like:

Leave a Comment

A Slidr for Bildr

For the next release of my Bildr app I would like to redo the startpage. Untill now I have not really focussed on it.

The current startscreen is using the Dojo Fisheye plugin but this requires user action before you start noticing it. Also it does not work well with the OneUI (baseline=bottom is I think is used for the content).

In a previous version I included a slider with some nice animation. For the upcoming version I am thinking about using Fancy Transitions, a jQuery based plugin. On this page you can see 2 nice examples of transitions.

So what do you think? Will it make the startpage too busy, or is it just a great opportunity to leave the page open and watch photo’s passing by?

Below you can see a sample screen:

Comments (1)

Adding Dojo Lightbox to an XPage

I saw that Niklas Heidloff added my little Bildr project to a presentation on YouTube so I was somehow forced to apply  some fixes.  Since most XPages projects on OpenNTF use the OneUI interface I thought it would be benefitial if I would apply the same UI to my project so this is what I am working on at the moment.

The subject of this post sounds a bit mis-leading because the first step to achieve this is not so hard to achieve. Just read it here in the XPages wiki from YouAtNotes.

Use dojox lightbox

The dojox package contains a lightbox to nicely show an photo.
Basic usage: include the dojox.image.Lightbox module in your XPage, set “dojoParseOnLoad” and “dojoTheme” to “true” and add HTML like this:

<a href="bigimage.jpg" dojoType="dojox.image.Lightbox"><img src="smallimage.jpg"></a>

with “bigimage.jpg” as the full sized version of your photo, and “smallimage.jpg” as the thumbnail.

Important: for whatever reason a CSS file is NOT automatically included, so the lightbox will not work as expected. You have to localize the “lightbox.css” and add it to your XPage manually.

My question is not how to apply the dojo module to an xpage but more: how to apply the lightbox stylesheet?

Comments (3)

Using the Dojo widgets XPages

The following URL on the Japanse version of developerWorks leads to a nice document that describes the opportunities about using Dojo widgets on XPages:


http://www.ibm.com/developerworks/jp/ysl/library/lotus/y-lot-dojoonxpages/

Since the document is in Japanese Google Translate is probably your friend:


http://translate.google.com/translate?js=y&prev=_t&hl=en&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fjp%2Fysl%2Flibrary%2Flotus%2Fy-lot-dojoonxpages%2F&sl=ja&tl=en

Uhm.. nice translation…

Btw, translation seems to work best with Chrome, as expected.

Using the Dojo widgets XPages

Comments (2)

Dojo and Notes – Presentation Entwicklercamp

One of the good things of growing up in The Netherlands is that is so centrally located in Europe and you are used of travelling through different countries and (forced) talking different languages quiet early (at least I was). Beside Dutch and the local dialect (Broabants) I can manage myself well in English, German, Swedish and some bits of  Spanish and French.

Entwicklercamp is a German technical Notes event with always a good quality agenda. I found out that Bernd Hort held a presentation about Dojo and Notes which can be a good introduction for newbies in Domino, Dojo and XPage development.

The presentation is in German, but you can always upload the file to Google Translate which seems to be capable of handling the presentation quiet well. You might wonder if a dutchie was involved?

Comments (2)

Older Posts »
Follow

Get every new post delivered to your Inbox.

Join 143 other followers