Sidebar Plugin Installation Problem

Hello, I’d like to install some plug-ins but I can’t get the File - Application - Install option to appear. I have added “com.ibm.notes.branding/enable.update.ui=true” to the file “plugin_customization.ini” and restarted but still no option. My release details are as follows:

IBM Lotus Notes 8

Release 8.0.1

Revision 20080214.1630 (Release 8.0.1)

Standard Configuration

Any ideas?

Subject: The ability to install plugins is initially disabled in Notes 8 but there are 2 ways to enable it

One way is via a policy setting “Allow user initiated updates”.

The other way is to edit the file \framework\rcp\plugin_customization.ini to add this line:

com.ibm.notes.branding/enable.update.ui=true

You can then select File>Application>Install, then Search for new features, then Add Remote Location.

There is a lotusphere presentation on notes update sites here:

http://www-10.lotus.com/ldd/sandbox.nsf/ByDate/404b644224e898da8525729f0060277b?OpenDocument

Subject: Building mailfile URL

We have a welcome page with links to mailfile and calendar, a password-changing link ( which is just @URLOpen(“?changepassword”) ), and some other internal pages. For the mailfile links, there’s a checkbox (named ClassicStyle) to enable the old webmail interface, and the links themselves have this code:

tmppath := @ReplaceSubstring(@NameLookup([NoUpdate]; @UserName; “MailFile”); “\”; “/”);

MailFile := tmppath + @If(@UpperCase(@Right(tmppath;4))=“.NSF”;“”;“.nsf”);

@URLOpen(

MailFile +

@If(ClassicStyle = “1”;

“/MailFS?OpenFrameset&ui=webmail”;

“/iNotes/Mail/?OpenDocument&ui=inotes”

)

)

Subject: Domino Web Access Redirect (iwaredir) and DWA Lite

The notes.ini variable works if you don’t use iwaredir.nsf. If you do, then you have to update for form to get it to be forced to login.

The redirect db works if you enable the personal options; great, however, then each individual has to set that option.

So digging into the design a little, found there is some code behind the $$HTMLHead field in the AutoLogin form. There’s an IF else formula which correlates to the personal options, however, if that setting is going to be disabled anyway, just change this:

@If(DWAMode = “1”; “?Opendatabase&ui=dwa_lite”;“?OpenDatabase&ui=inotes”);

to this:

@If(DWAMode = “1”; “?Opendatabase&ui=dwa_lite”;“?OpenDatabase&ui=dwa_lite”);

Save and close and voila; it all works.

The only issue I have now, is that an error occurs when logging out of DWA. Not sure if I have to set something up. Looking into it now.

Message: initLogoutCleaner is not defined

Call Stack:

Sorry, not yet implemented

Date: Tue Aug 05 2008 12:07:25 GMT-0700 (PDT)

UserAgent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv: 1.9.0.1) Gecko/2008070206 Firefox/3.0.1

h_PageUnid: XXXXX:XXXXXXXXXXXXXXXXXXx

Subject: DWA 8.0.1 is not currently compatible with Firefox 3

Hence the error…

It’s not hideous though as it only appears during the logout.

MS Internet Exploder works without the error.

Subject: FF3

Using “IETab” addon in FF3 works well.

Subject: FF3.5 fixes everything!

Just installed Firefox 3.5, and all DWA errors went away!

Subject: Firefox 3.52 DOES NOT FIX everything

My mistake! Firefox 3.52 does not fix everything. Drat! Come on IBM! What is taking so long!?john3

Subject: Maybe it’s prohibited by a Desktop policy setting

See this posting

http://www.domblog.de/domblog.nsf/d6plinks/HKUZ-7BMFD4

Subject: That was it

Thanks Rupert

Subject: Documentation – Sidebar Contribution Design Pattern and Migrating a Sametime 7.5 plugin over to Notes 8

Sidebar Contribution Design Pattern

This document discusses the Notes 8 “shelfViews” programming model, and explicitly explains how to contribute a shelf view to the Notes 8 sidebar. There are basically two steps:

Create a view and add a contribution to the org.eclipse.ui.views extension point.

Contribute the view to the com.ibm.rcp.ui.shelfViews extension point to have it appear in the sidebar.

Following these descriptions, we compare the Notes 8 “shelfViews” programming model to the Sametime “miniApps” programming models, such that developers will know how to migrate a plugin from the Sametime client to the Notes 8 client.

The Notes 8 “shelfViews” Programming Model

Notes 8 makes use of the eclipse IViewPart interface to be able to tie each shelf view to the workbench. Each view part has a view site that connects the part to the workbench, allowing the view to register any global actions with the site’s action bars, including access to its own panel menu, a local toolbar, and the status line. The view can also register any context menus with the site, or register a selection provider to allow the workbench’s ISelectionService to include the part in its tracking. The workbench also provides other capabilities, such as saving the state of the view, or activating these shelf views upon accessibility.

When creating a view to be shown in a Notes 8 shelf view, the class should either implement the interface, org.eclipse.ui.IViewPart, or subclass the abstract class, org.eclipse.ui.part.ViewPart. Subclassing ViewPart is the suggested method, to save the developer from implementing the view from scratch. Subclasses of ViewPart must implement the following methods:

createPartControl(Composite parent) – to create the view’s controls

setFocus() – to receive focus

After creating the class, a contribution to the org.eclipse.ui.views extension point must be added to the plugin.xml file for the plugin, as seen in the following example:

<extension

point=“org.eclipse.ui.views”>

<view

    name="BuddyNote"

    icon="images/ST_Ext_Buddy_Note.png"

    class="com.ibm.collaboration.realtime.sample.buddynote.BuddyNoteMiniApp "

    id="com.ibm.collaboration.realtime.sample.buddynote.buddynoteminiapp">

</view>

Make sure the following attributes are specified:

The “name” attribute describes the String to be displayed in the titlebar.

The “id” attribute is the unique identifier of the view. This is also what is used to refer to the view when contributing to the shelfViews extension point.

The “class” attribute specifies what class is referenced in this extension

The “icon” attribute describes the icon to be displayed in the top left corner of the titlebar. The standard size is 16x16 pixels.

The view should be optimally viewed in a frame approximately 186 pixels wide. The view is also resizeable. Thus, make sure the content can be scrolled (if applicable), and any toolbars do not get cut off, or have chevrons pointing to more actions.

Contributing to the shelfViews extension point

In the plugin where the view is defined, add an extension to the com.ibm.rcp.ui.shelfViews extension point as demonstrated in the following example:

<extension

point=“org.eclipse.ui.views”>

<view

    name="BuddyNote"

    icon="images/ST_Ext_Buddy_Note.png"

    class="com.ibm.collaboration.realtime.sample.buddynote.BuddyNoteMiniApp "

    id="com.ibm.collaboration.realtime.sample.buddynote.buddynoteminiapp">

</view>

<extension

point=“com.ibm.rcp.ui.shelfViews”>

<shelfView

  id="buddynote"

  view="com.ibm.collaboration.realtime.sample.buddynote.buddynoteminiapp"

  region="MIDDLE"

  page="RIGHT"

  showTitle="true"/>

Note that the com.ibm.rcp.platform.shelfViews extension point has been deprecated.

The “id” attribute uniquely identifies the shelf view. Thus, if the same id is used more than once, only one of those views will be registered.

The “view” attribute corresponds to the “id” specified in the view contribution.

The “region” attribute is an optional means of describing what area of the sidebar the view should belong to. Possible values are “TOP,” “MIDDLE,” and “BOTTOM.” Items within the same placeholder region will be ordered based on when the view gets loaded. Thus, the contributor of the view cannot control the placing of views within the same placeholder region. If nothing is specified, the view will automatically be placed on the bottom.

The “page” attribute describes which sidebar the view should belong. For Notes 8, the value “RIGHT” should be specified such that the view appears in the sidebar on the right side of the client.

The “showTitle” attribute describes whether or not the titlebar should be shown. For Notes 8, a value of “true” should be specified such that all views in the sidebar have a titlebar and look uniform.

Notes 8 “shelfViews” vs. Sametime 7.5 “miniApps”

Similar to Notes 8’s use of eclipse’s IViewPart interface and ViewPart abstract class for its shelf views, Sametime 7.5 uses the abstract class, com.ibm.collaboration.realtime.miniapp.AbstractMiniApp, to create the views displayed in the Sametime client. The API for AbstractMiniApp and ViewPart are similar but have some important differences, as seen in the following selection of the API:

AbstractMiniApp API

Corresponding ViewPart API

public AbstractMiniApp();

public abstract Control createControl(Composite arg0);

public IWorkbenchPartSite getSite();

public abstract void init() throws Exception;

public Boolean isInitiallyVisible();

public void setSite(IWorkbenchPartSite site);

public ViewPart();

public abstract void createPartControl(Composite arg0);

public IViewSite getViewSite();

public void init(IViewSite site) throws PartInitException;

public void init(IViewSite site, IMemento memento) throws PartInitException;

public void setSite(IWorkbenchPartSite site);

As mentioned earlier, a ViewPart has a createPartControl(Composite) method in which the view’s controls are created. Similarly, an AbstractMiniApp has a corresponding method, createControl(Composite). Unlike the ViewPart, however, the AbstractMiniApp does not require a view site upon initialization. The ViewPart must have a view site in order to tie the part to the workbench, thus it is a parameter in the init methods. Since the Sametime views do not require that upon initialization, the Sametime views are rather independent parts of the Sametime workbench, and are not connected to workbench-related features, such as the action bars mentioned previously.

As a result of these differences, it will be somewhat seamless to migrate a Sametime mini app to Notes 8, but not necessarily vice versa. A mini app class has the basics needed to support a ViewPart, but a ViewPart may be supporting connections to workbench-related capabilities that will not be supported if placed in the Sametime client.

Steps for Migrating a Sametime 7.5 plugin over to Notes 8

  1. In the plugin.xml of the Sametime plugin, find the extension to the com.ibm.collaboration.realtime.imhub.miniApps extension point. Find the source code for the class specified in the “class” attribute. In the following example, this would be the TaskListMiniApp.java file located in the com.ibm.webahead.stplugins.tasklist.plugin package.

<extension

 point="com.ibm.collaboration.realtime.imhub.miniApps">

<miniApp

 class="com.ibm.webahead.stplugins.tasklist.plugin.TaskListMiniApp"

 displayName="TaskList"

 icon="images/Group.gif"

 id="TaskList"

 maxHeight="400"/>
  1. If the class extends org.eclipse.ui.part.ViewPart, no changes need to be made, and you may skip to step #4. If it extends com.ibm.collaboration.realtime.miniApp.AbstractMiniApp instead, replace AbstractMiniApp with ViewPart, and import the required methods. A createControl(Composite parent) method should already exist. Modify the newly added createPartControl(Composite parent) method to call createControl(parent).

  2. Go back to the plugin.xml file. Add an extension to the org.eclipse.ui.views extension point.

<extension

 point="org.eclipse.ui.views">

<view

 class="com.ibm.webahead.stplugins.tasklist.plugin.TaskListMiniApp"

 id="com.ibm.webahead.stplugins.tasklist.plugin.view"

 name="Task List"/>

Notice that the “class” attributes for both the miniApps extension point and views extension point are the same. The “name” attribute is the string that will be displayed in the titlebar of the panel. The “id” attribute is the unique identifier, and will be used to identify the view when contributing to the shelfViews extension point.

  1. Finally, add an extension to the com.ibm.rcp.ui.shelfViews extension point, detailed further in the section “Contributing to the shelfViews extension point” section.

Migrating a Sametime 7.5.1 plugin over to Notes 8

Sametime 7.5.1 plugins follow the Notes 8 shelfViews programming model. Thus, no further changes should have to be made and installing the plugin should be sufficient.

Installing new plugins in Notes 8

By default, the policy for enabling the display for the user-initiated updates application install menu is set to false (hidden). When set to true, the menu will be rendered visible. This can be updated using the Domino 8.0 desktop policy as described in the Beta 2 release notes.

In cases where Domino is not deployed, it is possible to manually enable this setting on the client. This can be done by updating the <notes_home>\framework\rcp\plugin_customization.ini file to include the following property: com.ibm.notes.branding/enable.update.ui=true.

The value specified in the plugin_customization.ini file acts as a default value when no policy has been set. If the Domino desktop policy sets the user-initiated updates preference, it can be locked-down and will override any existing value specified in the plugin_customization.ini file.

When the enable.update.ui preference is set to true, users will see the following Install and Application Management menu items shown in the screenshot below. Please note that the location of these menu items may change for the general release.

Subject: :wink:

Thanks, but all this is clear for me I have a built plugin but I do not know how to install it in Lotus Notes. The only way I found is to add one extra line “com.ibm.notes.branding/enable.update.ui=true” in the plugin customization ini file and than install it but it is to difficult for a regular customar. Isn’t there something easier?

Subject: Notes.ini

I have that set, but it only works if you access the mail file using the full URL - https://server/mail/file.nsf

If you use the Domino Web Access Redirect it adds ui=inotes when it redirects.

Subject: UIWorkspace and Uidocument is frontend (UI = User Interface = Front end)

(Backend would be e.g. Session.getcurrendatabase, going on with a search or a view or a documentcollection or get documentbyunid.

For your Problem: Refreshing a rich text fields context via script (other fields can’t contain attached files) while the document is open was traditionally impossible, got somewhat better version by version. I am not exactly sure where this is right now but I would not be surprised if you would find at the end of your code, simply closing and opening the document would be enough to have everything look fine.

In general, if you want to avoid issues here, I would do it when the document is closed (Backend classes). To get a sequence of code together to do this is usually tricky, but tends to work reliable, once you are thru.

Subject: Answer

To answer my own question…

The following article has a section called “Deploying your plug-in to the Lotus Notes V8 Client” which seems to explain everything.

The trick is to add the following to the plugin_customization.ini file:

com.ibm.notes.branding/enable.update.ui=true

This enables the File → Application → Install option which is the equivalent of the Find & Install option in Eclipse.

Frunobulax

Subject: Webmail is still around. sort-of…

The webmail template is no longer distributed on the server, but the webmail interface is still available from any DWA mail file if you use the URL http://www.server.com/mail/mail_file.nsf?OpenDatabase&ui=webmail

The DWA interface is “the wave of the future” so to speak, and will be the standard mail template & web-facing client moving forward.

Subject: Try a URL like this to open web lite

Replace yourdomain and yourmailfile with something familiar to you…404 page not found - bedpage.com

Subject: same problem when upgrading from 8.0 to 8.01

I’ve encountered the same problem. I upgraded from 8.0 to 8.01 and the install menu option disapeard (I dont know if it’s related to the actual upgrade or something else).

Anyone that knows how to enable it again?

(the com.ibm.notes.branding/enable.update.ui=true ini setting will not work anymore)

Fredrik