Adds a [+] link next to message links on the developerWorks forums to view them inline instead of having to open multiple pages.This used to be a Greasemonkey script designed to be used with the forums on the Notes.net/LDD/Lotus developerWorks site. ( http://www.lotus.com/ldd )
This has since been reworked into a Chrome extension.
If you have no idea what Greasemonkey used to be, start here:
Firefox users (the original):
http://greasemonkey.mozdev.org/
IE users (the copy):
http://www.daishar.com/blog/archives/2005/03/greasemonkey_fo.html
I've only tested this script with Firefox, so I have no idea how well it
does or doesn't work with IE.
===========================
The problem with the LDD forums is that you can't see the text of any of the
responses associated with a particular message. You get a list of links to the
responses at the bottom of the page, but you can only open a single message at
a time -- which is a huge pain if there are more than about 2 responses to a
message.
What this script does (thanks to the magic of Greasemonkey) is to add a little
[+] next to each response link at the bottom of the page. If you click on that
[+], it will open a <div> beneath the link that will get populated with the
message body for that particular response. Click it again, and the response
body disappears.
As of version 1.3 of the script, the [+] is added on any LDD page that has an
?OpenDocument link, not just a message. So the script works when you're viewing
a message, or the main view of a forum, or even a list of search results.
If none of this makes sense, just go to: http://www-10.lotus.com/ldd/nd6forum.nsf
and open a message that has several responses, and then try to read the responses
with and without this script enabled.
===========================
A few efficiencies I've added to this script:
1. None of the response messages are retrieved until you actually click the [+].
This means when you view a message that has a large number of responses, your
page will still load quickly (i.e. -- the browser won't be trying to get all
of the responses when the page opens). The text of the responses is only
retrieved when you click the [+].
2. If you click on a [+] to view a response message and then click it again to
make it disappear, it will remember what the message is. So if you click it
again to expand the response message before you refresh the page, you won't
have to make another round trip to the server in order to get the message
again -- it'll just come right up.
3. The responses are retrieved using asynchronous XML HTTP requests, which grab
the response doc, parse the message text, and insert it into a <div> (this
process is normally referred to as "Ajax" these days).
===========================
ISSUES:
1. I had to hardcode several things in here, because the LDD forums don't really
package up the messages in any kind of easily parsable way (say, with divs).
Some or all of this script could break tomorrow if the LDD folks decide to rename
some of their image files.
2. There's probably a much more elegant way of doing some or all of this using
regular expressions. I don't know how that way might work, and I don't really care.
This method seems to work, and it's easy to troubleshoot.
3. There may be a few links on the page that get the [+] appended to them that
get an "Error finding beginning of body" message when you try to expand them (like
the FAQ link). This is because the links don't actually point to messages, but other
pages that don't parse like a message will. I thought about adding some code that
explicitly ignores these kinds of links, but all of the exclusions would just
muddy up the code, and I'd probably have to keep adding new ones. So rather than
try to account for all the exceptions, I'm going to assume that my users are smart
enough not to worry about those sorts of things. (UPDATE: in version 1.4 I added the
ignoreList array to deal with at least some of these cases.)
===========================
HISTORY:
version 1.0 -- April 16, 2005
Initial release.
version 1.1 -- April 16, 2005
Fixed bug where the </table> tag I was using to determine the start of the body
block didn't exist when you were logged in, so you wouldn't get message text
if you were logged in.
version 1.2 -- April 17, 2005
Modified the script to make the display div block style "display: none;" when the
div was hidden, to get rid of the extra whitespace/linefeed that was appearing
between each of the response links.
version 1.3 -- April 19, 2005
Changed the script to run against any ?OpenDocument link, not just the response
links that were found at the bottom of a message. This way it will work not only
on message pages, but also on views and search results. Unfortunately, this also
puts a [+] next to some links that won't expand properly (like the forum FAQ links
at the right of the page). I thought about filtering those links out manually,
but it's probably better to have a few links that don't work right rather than
hardcoding several exceptions in this code (there's too much hardcoding as it is).
Also made a small change to account for a different separator graphic on the
ND7 forums, and made the [+] change to [-] when it's "expanded".
version 1.4 -- May 10, 2005
Added the ignoreList array (and relevant ignoreList processing), so we won't
process links that we know will not work. Thanks to Christopher Byrne
(http://controlscaddy.com) for the suggestion and an example of what to ignore.
version 1.5 -- August 14, 2005
Added the endOfBody array (and relevant processing) to account for multiple
possible endings of the body part of the forum message. The forums were slightly
redesigned in late July/early August, and they started using a different graphic
at the end of the body. With the new array, it'll be easier to add new end-of-body
conditions in the future.
version 1.6 -- December 3, 2005
LDDMonkey stopped working when Firefox got upgraded to 1.5. Kurt Higley
(http://www.higs.net) fixed it within a day! His changes included:
* expander.onclick = ... changed to expander.addEventListener('click', ...)
* calls to XMLHttpRequest changed to GM_xmlhttpRequest
* restructure getResponseText() function to split it out a little better
I made a few changes to the URL processing, but otherwise included the changes
as-is. Thanks Kurt!
I also added "https://*.lotus.com/ldd*" to the @include list for when you're
logged in to the forum, and made it possible for the script to try to reload
a response message if an earlier attempt never returned anything (which seems
to happen at times).
Tested with Firefox 1.0.7/Greasemonkey 0.5.1 and Firefox 1.5/Greasemonkey 0.6.4
version 1.7 -- July 18, 2006, Peter LaComb
1: At the end of getXMLText, just before inserting the body into the DIV I added this line:
bodyText = bodyText.replace(/<img\b(.*?)10x10.gif[^>]*>/g,"");
This removes all the annoying blank boxes that show up.
2: Updated so that when used in a view, it will retrieve the response list,
and allow you to expand the responses.
version 1.8 -- September 16, 2010, Lars Berntrop-Bos
Added 1.7 version history and formatted code. Submitted to Julian for publication on OpenNTF
===========================
This is version 1.8 of the lddresponse.user.js script
by Lars Berntrop-Bos ( http://www.nsftools.com )
June 3, 2014
You can do anything you'd like with this script, just don't hold me liable for
anything, and don't pretend like you wrote it yourself.
The latest release should always be available at the OpenNTF site, at:
http://www.OpenNTF.org/projects/pmt.nsf/ProjectLookup/LDDMonkey