Tag Archives: ibmcnx

Another new feature with IBM Connections 5.0 CR3

Within the fixlist of the new released CR3 of IBM Connections 5 there are several new configuration options mentioned. One of the interesting ones for me is the mobile update parameter AllowRemoveAccount. The default value is “false” and your Connections environment still works before, but what’s changed when you set this to true?

The official documentation is already uptodate and shows us:

When you set this option to true, accounts can be removed from a mobile device without requiring the user to login and without any authorization check. The user is asked to confirm the deletion of an account before it is removed.

So this helps me with my long list of Connections environments on my mobile clients. Until you set this to true you can only remove a profile, when you still can login to this system. I have several environments configured on my mobile which i can’t access anymore, because my user is disabled, or the system is only available within special wifi or network environments. So i’m not able to remove these accounts.

I will set this to true in all environments i have access to, to prevent this behavior.

Please beware of the additional infos in the online help:

If a user has existing accounts that they cannot access and that were created before this feature was available, those accounts cannot be deleted using the AllowRemoveAccount property.

Validation error

After checking out the mobile-config.xml (yes you should always use wsadmin to change config parameters), the parameter was not set in the file. So i added it and saved my change.

After checkIn i got a validation error, first i thought the order of parameters was wrong and so i checked the mobile-config.xsd. Even in the xsd the parameter wasn’t mentioned. So i checked <connections-root>/mobile/mobile/mobile/mobile-config/mobile-config.xsd|xml and there the parameter (and the other new ones) is available. I’m sure that the update was finished successfully without errors, so i checked two other systems (Windows and Linux) with CR3 and there was the same behavior, the new parameters were not copied to LotusConnections-config. After manually copying the xml and xsd i could set the values and after restarting of mobile the new feature was available.

When i enabled the feature the first time and i like the xml validation feature of checkIn and checkOut, so i used wsadmin to checkOut the mobile-config.xml

I haven’t checked if the new parameter useLeadingWildcardForGroupTypeahed with LotusConnections-config.xml works, but it isn’t available in the xsd too and i can’t found it in the complete connections-root directory. Will try the next days.

Using markdown with IBM Connections Blogs

I use markdown since years to create my articles or most of documentation stuff.

It’s really cool to edit the text files on all of my devices, synchronize them fast through various internet services and create HTML, PDF or even DOCX files out of this sources.

Until last week i converted the markdown sources with pandoc and pasted the html code to the different pages, where i need them. So i copy and paste it to IBM Connections, Evernote or WordPress. On WordPress i use a plugin now to render the markdown textes, but for IBM Connections i didn’t found a way.

So why not using the IBM Connections API to post html, or even convert the file on the fly and put the html automatically?

Posting to IBM Connections Blogs with Python

You can read a lot on the IBM Connections API in the [official documentation](http://www-10.lotus.com/ldd/lcwiki.nsf/xpAPIViewer.xsp?lookupName=IBM Connections 5.0 API Documentation#action=openDocument&res_title=IBM_Connections_API_overview_ic50&content=apicontent), i’m not a developer so i need normally practical examples to use this.

How to connect to IBM Connections REST API with Python?

First we need the URL to connect to the Blogs API:

url = 'https://greenhouse.lotus.com/blogs/stoeps/api/entries'

In this case “stoeps” is the blog handle, the blog where i want to add my post. You find the blog handle when you open the blog through your browser and check the url:

getBlogHandle

Now we need to authenticate, Connections API can be used with basic authentication, so we create a base64 encoded string of username and password:

import base64
encodedstring = base64.encodestring('christoph.stoettner@stoeps.de'+":"+'myCoolPassword')[:1]
auth = "Basic %s" % encodedstring

To post we have to use a XML File or XML String, which contains a title and body of our post, the REST service needs a Content-type of application/atom+xml:

xml = '''<?xml version="1.0" encoding="UTF-8"?>
      <entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:snx="http://www.ibm.com/xmlns/prod/sn">
        <title type="text">That's the title</title>
        <content type="html"><![CDATA[<p>and some text for the body.</p>]]></content>
      </entry>'''

Now let’s connect to the REST service with urllib2 and post the xml string.

import urllib2
request = urllib2.Request( url )
request.add_data( xml ) # add_data changes Method to POST
request.add_header( 'Content-type', 'application/atom+xml' )
request.add_header( 'Authorization', auth )

response = urllib2.urlopen( request )

# let's check return code
if response.code = 201:
    print 'Post successfully created'

Some more

We have seen that we can post a xml with title and body. There are more possible ways to get a html string for our post.

I changed the xml variable to fill two variables with title and body.

postTitle = 'A cool API post to blogs'
postBody = '''<p>This is the body of our Blogs post, we can use html tags here</p>
              <h2>Fill text to show more content</h2>
              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In commodo posuere ante, ut faucibus enim sagittis ut. Fusce scelerisque arcu quis mattis fringilla. Pellentesque a est enim. Nam congue sem eget augue porttitor semper. Fusce luctus sit amet ligula sit amet viverra. Cras pulvinar arcu eget velit volutpat, in condimentum nunc luctus. Vivamus vestibulum ante et nisl venenatis consequat. Aliquam ut augue nec lectus sodales eleifend eleifend nec orci.</p>'''
xml = '''<?xml version="1.0" encoding="UTF-8"?>
          <entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:snx="http://www.ibm.com/xmlns/prod/sn">
            <title type="text">' + postTitle + '</title>
            <content type="html"><![CDATA[' + postBody + ']]></content>
          </entry>'''

You see you can add html code to the variable postBody. You can read from a html file with:

postBody = open('post.html').read()

Or you can convert a markdown file to html:

import markdown2
markdownFile = 'post.md'
postBody = markdown2.markdown_path( markdownFile )

In my script here i added a function to read the first line of the markdown to set it as title and i added a function to find images integrated in the article, upload them to stoeps/api/media and replace the img src= tag.

So this post is completely written in markdown and i posted it through python to Greenhouse. Here is the link to the post.

IBM Connections 5.0 CR3 is available – new feature

Julius Schwarzweller wrote a blog post with a collection of links to CR3 for IBM Connections 5.0 this week. A official update document with new features is missing.

I installed it today (without CCM) and the first new feature i found is “sharing folders” with Communities:

22-07-_2015_21-57-33

As shown in the screenshot only public folders can be added to community files widget.

From files application you can still share a folder with people, groups and communities (but then the folder will be public available too):

22-07-_2015_22-12-05

IBM ConnectED 2015 – short review, presentation and addon

Last week i was at ConnectED 2015 in Orlando. I enjoyed the event very much, mainly because i met great old and new friends. The Lotus community is one of the best i’ve ever met, or i ever was part of.

After coming home i found out that i have a flu and the headache and need of sleep is not age dependent. So the visits to kimonos and dolphin bar are a little bit shorter than last year, but i enjoyed them nevertheless.

I did a session during ConnectED 2015, see the last version of slides here:

Today i read in Anderl Artners Blog, that he provides some Assembly Lines for TDI/SDI, which can help you with SPNEGO and mailintegration. Thanks for that!

Announcement plugin for IBM Connections

Last week i searched a way to send all Connections users an information on important updates, which should be configurable and uses cookies to hide it for a specific time.

First i had a look at the Greenhouse Announcement Widget which is used within Greenhouse.

2014-12-19_16-46-41

Quite nice, but i had problems with IE 9 users and the popup appears on each page you open within Connections. So i tried something other.

After some searching i found a script of Ollie Phillips which is originally used to inform users about Cookie usage on the site. Ollie published the cookiesDirective.js under the MIT License. When you find the announcement slider useful, please buy him a beer.

I took the script and put it to a osgi bundle and added some configuration parameters.

Selection_20141219_16:43:43_001

If you want to test it, announcement-osgi, please use the updated archive! Download link see last point in this post!

Installation

Unarchive the package and copy de.stoeps.announcement_1.0.0.jar to your Connections customization folder/provision/webresources and the folder de (and all content below) to customization/javascript.

The text which is shown within the slider can be edited within customization/javascript/de/stoeps/announcement/popup.txt. You can use html code and links within this text file. So you can add links to additional informations.

Background color backgroundColor: '#CACACA', button text (buttonTextPre & buttonTextPost) and opacity (set backgroundOpacity: '99' to show a solid color) is configured in customization/javascript/de/stoeps/announcement/initialize.js

The announcement can be disabled with announcementEnabled: 'false'.

cookieLiveTime: 2 set the cookie to 2 days, so your users get the announcement again after 2 days and must confirm with the button.

After installation and after changes in initialize.js you must restart Common Application.

Update

Klaus and Rainer mentioned problems with german language within the browsers. So i renamed the plugin from de.stoeps to org.scripting101.

Please use the following archive to install the announcement osgi plugin!

announcement-osgi-1.0.1

Installation and customization is nearly the same, only the path within customization/javascript changes from de/stoeps to org/scripting101!

Thanks for testing guys.