Presentation discussing the methods used to customise IBM Connections 3.0.x (3.0.0 and 3.0.1 so far). Covers theme/UI and Profiles customisation options. Partially based on IBM documentation, the AD304 session at Lotusphere 2011 and mostly our own experience! Any questions, please contact us at collaborationmatters.com
2. Your Presenter
Stuart McIntyre
CTO, Collaboration Matters
Connections Specialist
Blogger/Podcaster/Design Partner/Speaker
Feel free to contact me:
blog.collaborationmatters.com
thisweekinlotus.com
ibmconnectionsblog.com
facebook.com/stuartmcintyre
quickrblog.com
twitter.com/stuartmcintyre
lotusliveblog.com linkedin.com/in/mcintyre
lotusphereblog.com stuart@collaborationmatters.com
3. This Session
Customising IBM Connections 3.0.x
The Aim: Demonstrate some of the key areas where Connections 3.0.x
can be customised
Topics:
Introduction to Connections customisation
Part 1: UI customisations (themes and skins)
Part 2: Profiles customisations (fields and labels)
What next?
Q&A
16. Introducing IBM Connections 3.0.0
Lotus Connections 3.0.0 was released in November 2010
3.0.0 delivered new look and feel, plus many new features and functions, including:
17. What’s New in Connections 3.0.0?
Global Navigation and Theme (including drop-down menus)
Home Page/News – improved news feed and integration of status updates, email digest
Communities – invitations, improved Files integration, Activities integration, sub-
communities, My Communities views
Forums – standalone service, tags, question/answer topics
Profiles – Do You Know, Things in Common, Social Path widgets, tabbed Profile format
Files – collections changed to folders including drag and drop
Wikis – improved use of real estate, drag and drop navigation, My Wikis views
Blogs – improved authoring including new editor and more consistent navigation and entries
lists
Linked Value – SharePoint/Communities integration, new portlets, status updates Lotus
Notes sidebar plug-in
18. Introducing IBM Connections 3.0.1
IBM Connections 3.0.1 was released in April 2011, delivering many of the features described
at Lotusphere 2011
No longer a ‘Lotus’ product
The new features include:
Ideation Blogs and Idea Graduation
Image and Video Galleries in Communities
Community Moderation
ECM Integration
User Interface and customisation process has not changed from 3.0.0
19. Areas for Customisation
Look and Feel
Logo
Header
Footer
Themes
Login Pages
Profiles
Changing which fields display & order
Changing editable fields
Changing field names
Adding extension fields
20. Key Resources
Lotus Connections Infocenter (now in Wiki)
Lotus Connections Wiki http://www-10.lotus.com/ldd/lcwiki.nsf
Luis Benitez blog http://www.lbenitez.com
Curious Mitch http://www.curiousmitch.com
The Connections Blog http://www.ibmconnectionsblog.com
developerWorks https://www.ibm.com/developerworks/lotus/products/connections/
23. CSS Theme File
CSS file affects the design (look and feel) but not
the layout or functionality of Connections UI
Controls all of the colours and background images
Allows Web Designer to make changes to
elements like link colours and background images
End result? A total change in how the design of
Connections looks
24. What’s Changed in 3.0.x
Customisation has been made simpler, and possibly easier for 3.0.x compared to 2.5
Ability to customise individual features or entire suite is built into the product
No longer necessary to move themes onto HTTP server to customise them
Number of restarts has been reduced too
25. The Directory Layout
Lotus Connections 3.0 consists of a number of different applications (Activities, Blogs,
Communities, etc.)
Each application has its own .ear file in the Connections deployment, with each .ear
containing the .war file for that application. All the .war files are in the directory:
<WASHome>/profiles/<Profile>/installedApps/<Cell>
e.g. <WASHome>/profiles/<Profile>/installedApps/<Cell>/Homepage.ear contains
homepage.ear file
26. The Directory Layout (cont.)
Each application's .war file then contains the files specific to that application:
During customisation we will copy files from these locations into a specific customisation
area for modification
27. Customisation Concepts
Connections 3.0.x has concept of common and specific customisations
Custom files are placed in a special shared customisation directory
Removing the file from this directory undoes the customisation
Modifications can be made to common, to specific features or to both
30. Overview of the Customisation
Process
Enable Customisation
Restart Connections server(s)
Find the file you want to change from the installed application
Copy the file into the customisation directory at the correct sub-directory
Make changes to the copied file
Restart the affected applications on your application server
31. Enabling Customisation
Two variables in WebSphere that significantly affect customisation:
CONNECTIONS_CUSTOMIZATION_DEBUG
(must be set to true to enable customisations to take effect, set back to false once
customisations complete)
CONNECTIONS_CUSTOMIZATION_PATH
(Connections 3.0.x uses a separate directory structure to hold files for customisations,
allowing us to make changes without fear of harming the server, also easier to upgrade/
migrate. Default is <connectionsinstall>/data/shared/customization/common/)
To view/set the variables, we log onto the WebSphere Application Server Console and
select Environment > WebSphere Variables
Do not change CONNECTIONS_CUSTOMIZATION_PATH but make a note as we will
need this for future use
32. Example 1: Changing Colours
Open the style sheet file for the default theme in a text editor, e.g. for Files:
<WASHome>profiles<Profile>installedApps<Cell>Files.earqkr.share.files.warnav
commonstylesdefaultThemedefaultTheme.css
Create a new, empty style sheet file in the common customisation directory:
<LotusConnectionsDir>datasharedcustomizationcommonnavcommonstyles
defaultThemecustom.css
Open custom.css file in a text editor
Locate rules for sections of the page with accent colours - title bar and left navigation –
in defaultTheme.css
Paste those rules in custom.css, and change the colours from light blue to red
Save changes
Tips:
defaultTheme.css contains most colour settings for the product
Use Firebug or Chrome Developer Tools to locate rules that should be changed
33. Example 1: Changing Colours (cont.)
Visit Lotus Connections in your web browser
)2-03/03")*4*+5"67*0.89
)2-03/03")*4*+5"67*0.89
Best to go direct to WAS server (rather than HTTP) to avoid caching:
! :/5/.";*.<5")*00=7./*05"/0">*<+"?=@"@+*?5=+
! :/5/.";*.<5")*00=7./*05"/0">*<+"?=@"@+*?5=+
e.g. http://connections.myorg.com:<port>/files
)4=-+">*<+"@+*?5=+"7-72=B
A A )4=-+">*<+"@+*?5=+"7-72=B
A 2..,CDDE5=+F=+GCE,*+.GDH/4=5
A 2..,CDDE5=+F=+GCE,*+.GDH/4=5
Clear your browser cache - very important!
Another tip:
If you are making extensive changes or sending CSS to an external party, it can be easier
J/,C"&H">*<"-+="K-L/03"=M.=05/F="72-03=5"*+"5=0N/03")OO".*"-0"=M.=+0-4",-+.>"
I I J/,C"&H">*<"-+="K-L/03"=M.=05/F="72-03=5"*+"5=0N/03")OO".*"-0"=M.=+0-4",-+.>"
-4.=+"N=H-<4.J2=K=8755"/05.=-N8
to alter defaultTheme.css instead of using additional custom css file
-4.=+"N=H-<4.J2=K=8755"/05.=-N8
!"#$%%"&'(")*+,*+-./*0
!"#$%%"&'(")*+,*+-./*0 %1 %1
34. Example 1: Changing Colours (cont.)
Get your web designers, communications department etc. on board
Start on paper!
For each of the colours in the colour chart, match to appropriate colour from
corporate guidelines/branding
Then edit CSS, and test in browser
Some images will need to be changed for colour match
Don’t forget that fonts and font sizes can be changed as well as colours
Recommend the user of Firebug/Chrome Developer Tools for ad-hoc testing and
dedicated CSS editing tools for larger changes
Something I’ve learnt:
Just because someone can edit CSS, it doesn’t make them a graphic designer!
35. Example 1: Changing Colours (cont.)
In addition to defaultTheme, there are four other themes shipped with the product:
goldTheme, greenTheme, metalTheme and redTheme
These can be used as templates for your own colour themes if a closer match than the
defaultTheme
36. Example 1: Changing Colours (cont.)
It is also possible to personalise the look and feel of individual communities and blogs,
including theme templates
Use same CSS templates as overall theme - create some to complement your overall
custom theme
37. Example 2: Adding Logo
It is best to keep to same size logo as existing IBM/Lotus Connections logo, but can use a
different size if additional modifications are completed to CSS file
Create a new logo image for the site
toolbar_logo.gif(306x66pixels)
Copy the image to the common customisation directory:
<LotusConnectionsDir>datasharedcustomizationcommonnavcommonstylesimages
toolbar_logo.gif
Verify that the image appears in your browser
Open http://connections.myorg.com:<port>/files/nav/common/styles/images/
toolbar_logo.gif
38. Example 2: Adding Logo (cont.)
Open defaultTheme.css in a text editor
Change the source URL for the logo in this file
Minor style changes to align the menus with the logo (if required)
Save changes
Visit Connections in your web browser
Clear your browser cache!
http://connections.myorg.com:<port>/files
Remember:
Any file you add to the common directory becomes available in all applications (but can
be overridden)
39. Example 3: Adding a Drop-down
Menu to the Header
Locate the header file
<WASHome>profiles<Profile>installedApps<Cell>Files.earqkr.share.files.warnav
templatesheader.jsp
Copy the header file to the common customization directory
<LotusConnectionsDir>datasharedcustomizationcommonnavtemplatesheader.jsp
Open the copied file in a text editor
Create a new “Intranet” menu drop-down by copying the “People” menu link
Add a “Support Forum” link in the upper-right
Move the logo element in the page
Save changes
40. Example 3: Adding a Drop-down
Menu to the Header (cont.)
Locate the header menu file
<WASHome>profiles<Profile>installedApps<Cell>Files.earqkr.share.files.warnav
templatesmenupeople.jsp
Copy the header file to the common customization directory with a new name
<LotusConnectionsDir>datasharedcustomizationcommonnavtemplatesmenu
intranet.jsp
Open the copied file in a text editor
Using the “People” menu as an example, create links pointing to intranet locations
Save changes
More tips:
Popup menus can use dynamic logic or Javascript – very flexible
Menu contents can be styled as desired
41. Example 3: Adding a Drop-down
Menu to the Header (cont.)
To test, visit Connections in your web browser
Clear your browser cache!
http://connections.myorg.com:<port>/files
42. Example 4: Customising the Login
Page
Locate the login Java Server Page (JSP) file
<WASHome>profiles<Profile>installedApps<Cell>Files.earqkr.share.files.warnav
templateslogin.jsp
Copy the style sheet file to the common customization directory
<LotusConnectionsDir>datasharedcustomizationcommonnavtemplateslogin.jsp
Open the copied file in a text editor
Remove IBM branding and add informational text
Add a very simple click-through agreement using JavaScript
Save changes
43. Example 4: Customising the Login
Page (cont.)
To test, visit Connections in your web browser
Clear your browser cache!
http://connections.myorg.com:<port>/files/login
44. Example 4: Customising the Login
Page (cont.)
Product text can be altered too
Locate the string resource file for the header and login pages
Unzip the JAR file to a temporary directory with a zip program
<WASHome>profiles<Profile>installedApps<Cell>Files.earlc.util.web-3.0.jar
In the temporary directory, find the file
comibmlconncorestringstemplates.properties
Create a new file in the string customization directory with the name
<LotusConnectionsDir>datasharedcustomizationstrings
com.ibm.lconn.core.strings.templates.properties
Open both the existing resource file and the new file in a text editor
Copy the entire line (or lines) you want to change from the old to the new file
Change text strings for the login page to match branding
Save changes
45. Example 4: Customising the Login
Page (cont.)
Restart the Connections server(s)
To test, visit Connections in your web browser
Clear your browser cache!
http://connections.myorg.com:<port>/files/login
46. Example 5: Modifying Getting Started
pages
Create a new HTML file in the common customization directory
<LotusConnectionsDir>datasharedcustomizationcommonnavgettingstartednew.html
Open the file in a text editor
Add informational text about guidelines for your users
Save changes
Change the first <step> in gettingstarted-config.xml (see Infocenter)
Securelink:${lcurl:homepage.secure}/nav/gettingstarted/new.html
Unsecurelink:${lcurl:homepage}/nav/gettingstarted/new.html
Restart Homepage application
47. Example 5: Modifying Getting Started
pages (cont.)
Visit Connections Homepage in your web browser
http://connections.myorg.com:<port>/homepage
48. Customisation Best Practice -
Creating
Only copy the files you need into the customisation directory
Reduce the number of files to manage
Makes it easier to know what has been changed
Keep track of the changes you make through documentation or comments
Put comments directly into JSP or CSS files to simplify merging
Extensive changes may be difficult to update from release to release
Use custom.css whenever possible, much easier to track style changes and handle migration
Back up frequently, and have a process for deploying customisations
Best to have a staging or test environment, it is easy to backup your old customisation
before copying over the new customisation
If the customisation directory is renamed or moved customisation will be disabled
May want to use a version control system for the customisation folder
When customisations are ready to deploy, always update the version stamp
This ensures that old versions of the site are removed from browser caches
49. Customisation Best Practice -
Maintaining
Occasionally IBM will change a that has been customised
Fixpacks and iFixes should document which files are being changed (in theory)
Applying any fixes:
1. Back up your customisation directory
2. Disable all customisation by renaming the customisation directory
3. Apply the iFix or fixpack
4. Test that your environment still is functional
5. Identify any files that have changed in the fixpack that you have customised
6. Compare each new file from IBM to your customised copy, and merge changes
7. Rename your customisation directory to the correct name
8. Test your customisation
Most changes to supported customisation files will be simple
50. Customisation Best Practice -
Debugging
Use customisation debug mode in test environments
Changes take effect immediately
If possible, avoid using debug mode on a (loaded) production server
Why don't I see my changes?
Check that the file is in the right location in the customisation directory (typically the
source of many problems!) and has the right name
Clear your browser cache
Restart the application (or server) if debug mode is off
Syntax error in file you changed? Check that there are no errors being output to the
page or to the logs
Printing the list of customised files
Enable WebSphere trace for “com.ibm.lconn.core.web.customization.*=all”
Restart the Connections application
trace.log will contain customisation debug information during application startup
51. Migrating Customisations from
Previous Versions
Style customisation
Some style rules have been changed, especially those that affect colour and borders
If you have added additional CSS files via the header, copy contents of those files into
<LotusConnectionsDir>datasharedcustomizationcommonnavcommonstyles
defaultThemecustom.css
If you have a complete visual override, may be best to port changes to the new format by
following the InfoCenter topic “Making extensive colour and style changes”
An example of the theme (using the new style rules) is located at
<WASHome>profiles<Profile>installedApps<Cell>Files.earqkr.share.files.warnav
commonstylesgen1Theme
Header and Footer
Because the header exposes new features in Connections 3.0.x, it is recommended that
changes are migrated on top of the new header
An example of the 2.5 header as a JSP is located at:
<WASHome>profiles<Profile>installedApps<Cell>Files.earqkr.share.files.warnav
templatesoriginalHeader.jsp
52. UI Customisation FAQ
More detail on a type of customisation?
This document is just great! Customizing IBM Lotus Connections 3.0
Can we customise other elements of the UI?
Yes, but support is limited outside of the types covered here. Change at your own risk,
and consult with Collaboration Matters or IBM support team first
Changes are more likely to be overridden by a fixpack or upgrade
Can the IBM support team answer customisation questions (via PMRs etc.)?
Yes, for directly supported customisation, and can provide info about what files need to
be changed for other parts of the application
Use recommended debugging steps – support team will ask you to work through them
54. Customising Profiles
The other principal area where most organisations customise Lotus Connections
(even for pilots) is Profiles
Common changes include:
Customising which fields are populated from LDAP
Changing field labels or field order
Enabling/disabling editing of fields
Adding custom fields
Adding additional profile types
There are many more expert topics (integration of data from other sources etc.), but
these are the basics
55. Customising Profiles population
Topic is well covered in the InfoCenter
Population Wizard has also made it more straightforward, however worth covering the
options
Recommend that one always uses manual process after initial population, to control
who gets added and how
Manual import can be scheduled using CRON or Windows Scheduler
56. Customising Profiles Population
(cont.)
Import is a two stage process (even if driven by Wizard), first collecting the relevant entries
from LDAP, then populating Profiles with specified information
Collection of names is driven by collect_dns script, according to settings specified in
profiles_tdi.properties
source_ldap_collect_dns_file=collect.dns
source_ldap_search_base=o=acme
source_ldap_search_filter=(&(uid=*)(objectclass=inetOrgPerson))
source_ldap_url=ldap://ldap.acme.com:389
source_ldap_use_ssl=false
source_ldap_user_login=cn=LDAPBind
source_ldap_user_password={encr}<encrypted password>
57. Customising Profiles Population
(cont.)
Names that reside within search base and match search filter are deposited in
collect.dns CN=Neil Burston,ou=it,o=acme
CN=Mitch Cohen,ou=it,o=acme
CN=Sharon Bellamy,ou=it,o=acme
CN=Stuart McIntyre,ou=it,o=acme
Some pilots have specified only selected users to be imported, hence manual editing
on collect.dns - not recommended!
Populate_from_dn_file is then run to load new users within collect.dns into Profiles,
acting upon settings in map_dbrepos_from_source.properties
58. Customising Profiles Population
(cont.)
map_dbrepos_from_source.properties specifies match between LDAP and Profiles
fields: alternateLastname=null
bldgId=null
blogUrl=null
Customise according to your org’s populated fields in LDAP calendarUrl=null
countryCode=c
Watch for field lengths and validation courtesyTitle=null
deptNumber=null
(see validate_dbrepos_fields.properties) description=description
...
Some field lengths are very restrictive, particularly Department (16 characters) and
Country (3 - for ISO codes) alternateLastname=64
blogUrl=256
Can be a good use for extended fields to replace default bldgId=64
attributes calendarUrl=256
courtesyTitle=64
deptNumber=16
description=1048576
...
59. Controlling attributes listed
Attribute listing and whether editable is controlled in profiles-config.xml, set by Profile
Type
Initially there is just the ‘default’ Profile Type
Order of attributes in configuration file controls order on screen
How many of you use ‘IP Telephony Number’? So how to stop it appearing?
61. Hiding a Profiles attribute
Connections now has the intelligence to hide fields when empty, but still appear in Edit
My Profile. So how to hide completely?
Edit profiles-config.xml, find the <profileLayout profileType="default"> stanza, and the
relevant attribute:
<editableAttribute showLabel="true" hideIfEmpty="true">ipTelephoneNumber</editableAttribute>
Simply comment out the entry:
<!-- <editableAttribute showLabel="true" hideIfEmpty="true">ipTelephoneNumber</editableAttribute> -->
Restart the WAS server
IP Telephony no longer appears to the user
62. Controlling editable attributes 1/2
A familiar request is to stop the Assistant attribute being editable by the end user, but for
that attribute to still appear in the profile
63. Controlling editable attributes 2/2
Again, edit profiles-config.xml, find the ‘default’ profile type definitions, and the appropriate
attribute:
<editableAttribute showLabel="true" hideIfEmpty="true" hcard="true" email="secretaryEmail" uid="secretaryUid"
userid="secretaryUserid" appendHtml="<br/>">secretaryName</editableAttribute>
To stop the attribute being editable, modify ‘editableAttribute’ to be ‘attribute’:
<attribute showLabel="true" hideIfEmpty="true" hcard="true" email="secretaryEmail" uid="secretaryUid"
userid="secretaryUserid" appendHtml="<br/>">secretaryName</attribute>
Assistant no longer appears
in the Edit My Profile screen
64. Controlling attribute labels 1/2
When profiles are displayed, some attributes are displayed with labels, others are not:
The secretary/assistant’s name is displayed with a
label, whilst the phone number and email address are
not
So, how to show the label for the Phone number?
65. Controlling attribute labels 2/2
Again, edit profiles-config.xml, find the ‘default’ profile type definitions, and the appropriate
attribute:
<attribute showLabel="false" hideIfEmpty="true" appendHtml="<br/>">telephoneNumber</attribute>
To make the default attribute label appear, change the showLabel value:
<attribute showLabel="true" hideIfEmpty="true" appendHtml="<br/>">telephoneNumber</attribute>
The label for the phone
number is now shown
66. Changing Profiles attribute labels
Default attribute labels (designed to be multi-lingual)
can be irrelevant or misunderstood in many
organisations, and thus need to be changed
Also, it is often it is easier to change labels than to
create new attributes from scratch
67. Changing Profiles attribute labels
Connections provides external resource bundle loader for adding and updating strings
to Profiles and Communities.
Mechanism used when performing the following tasks:
Adding custom extension attributes
Customizing the Profiles business card
Adding custom widgets to Communities and Profiles
Configuring the vCard export feature
Rather complex to get right!
Given the time available for this presentation, this will be in the slide deck shared
afterwards and will not be covered here
69. Adding new attributes
The concept of Extension Attributes is included in Profiles
Three step process:
Add new attribute to profiles-config.xml (in ExtensionAttributes stanza and again where
it should be displayed) - mandatory
Add label for attribute using Bundle file (optional)
Add to TDI import process (optional)
70. Adding a new attribute 1/2
First add to Extension Attribute stanza:
<profileExtensionAttributes>
<simpleAttribute extensionId="homeAddress" length="64" />
<xmlFileAttribute
extensionId="profileLinks"
...
</xmlFileAttribute>
</profileExtensionAttributes>
Then within the Profile Type(s) it should appear in:
<contactInformation>
...
<editableAttribute showLabel="true" hideIfEmpty="true" email="true">groupwareEmail</editableAttribute>
<!-- <editableAttribute showLabel="true" hideIfEmpty="true" link="true">calendarUrl</editableAttribute> -->
<!-- <editableAttribute showLabel="true" hideIfEmpty="true" link="true">freeBusyUrl</editableAttribute> -->
<editableAttribute showLabel="true" hideIfEmpty="true" blogUrl="true">blogUrl</editableAttribute>
<extensionAttribute showLabel="false" editable="true" extensionIdRef="homeAddress" />
</contactInformation>
Save and restart the WAS server
71. Adding a new attribute 2/2
New attribute will appear for editing and
display (if populated), but will not have
appropriate label
72. Adding label for new attribute
Attribute is now correctly labelled
73. Populating extension attributes
Steps so far will allow new attributes to be populated by the user
However, it is possible to populate via TDI too
Add to <TDISOL>/conf/LotusConnections-conf/tdi-profile-config.xml
<profileExtensionAttributes>
<simpleAttribute extensionId="homeAddress" length="64" userLabel="Home Address"
userTypeString="String" sourceKey="homeAddress"/>
<xmlFileAttribute extensionId="profileLinks" schemaFile="profile-links.xsd" indexBindingExpr="/linkroll/link/
@name | /linkroll/link/@url">
<indexFields>
<indexField fieldName="linkName" fieldExpr="/linkroll/link/@name" />
</indexFields>
</xmlFileAttribute>
</profileExtensionAttributes>
74. Troubleshooting
Many issues are caused by caching within the WAS server and HTTP server - always
restart WAS if editing XML, JAR or HTML files - CSS changes do not require restart
Most files within Connections/WAS are case-sensitive - check and double-check case
and syntax
Always use appropriate WSADMIN checkin/checkout procedures for XML
configuration files - saves a lot of pain with typos
It is worth investing in a pre-production/test system configured as live for testing
customisations first
76. What next?
Other areas where customisation may be desired:
Additional Profile Types (e.g. Active vs. Leavers, Students vs. Staff)
See CuriousMitch article at http://www.curiousmitch.com/CuriousMitch/mitch2.nsf/d6plinks/MCON-7LK2X2 and Infocenter http://
publib.boulder.ibm.com/infocenter/ltscnnct/v2r0/index.jsp?topic=/com.ibm.connections.25.help/
c_admin_profiles_add_profile_type.htmlc_admin_profiles_add_profile_type.html
Business Card
See Infocenter http://publib.boulder.ibm.com/infocenter/ltscnnct/v2r0/topic/com.ibm.connections.25.help/
c_admin_profiles_customize_biz_card_links.html
Search Results
See Infocenter http://publib.boulder.ibm.com/infocenter/ltscnnct/v2r0/topic/com.ibm.connections.25.help/
t_admin_profiles_customize_search_results.html
Notifications
See great developerWorks paper on Notifications http://www.ibm.com/developerworks/lotus/documentation/d-ls-lcnotifications/?
S_TACT=105AGX13&S_CMP=LP
77. Remember...
But in truth, social software
users do and the business
problems the tools address.
Jakob Nielsen, Usability Guru
78. My Takeaways
Lotus Connections supports (and
embraces) customisation
Many areas appropriate for customisation
- a never-ending feast!
Agree and document your scope and
priorities - stick to it!
Use appropriate change management,
versioning and testing processes
Have fun and make Connections work for
you and your organisation...
Image: http://www.slideshare.net/Niezette/100-pictures-for-powerpoint-presentations