Summary | DIMP preview errors in folders other than Inbox |
Queue | DIMP |
Queue Version | 1.1.2 |
Type | Bug |
State | Resolved |
Priority | 1. Low |
Owners | slusarz (at) horde (dot) org |
Requester | simon (at) simonandkate (dot) net |
Created | 05/13/2009 (5911 days ago) |
Due | |
Updated | 10/30/2009 (5741 days ago) |
Assigned | 05/14/2009 (5910 days ago) |
Resolved | 06/08/2009 (5885 days ago) |
Github Issue Link | |
Github Pull Request | |
Milestone | |
Patch | No |
this issue any more - we have the expected preview behaviour
in firefox 3.5.x
regards
Martin
change documentation...?
Just would like to know whether I will need to reapply the CVS change
that is noted in this ticket after I update Dimp to 1.1.3.
vp_row[UID][MAILBOX]. For subfolders these look like
'vp_row1234Lists/Horde', i.e. invalid HTML ID (cannot contain
forward-slash). This breaks Prototype in Selector.findElements, for
browsers that implement Selectors API.
correct fix - it does not assume that you have to do tweaking of DOM
IDs in the future, if any further changes are made to the CVS code.
mentioned below - I think there are other issues introduced when the
Selectors API is used. The CVS fix also includes a new compressed js
so you don't need to mess around with paths.
DIMP uses the compressed js by default (i.e. not the one in src/);
instructions for changing this are in dimp/docs/INSTALL.
does dimp uses the js/ViewPort.js (where I can't find the lines with
e.domid) or
does dimp use the js/src/ViewPort.js?
(do I have to compile it somehow after changing in the src)?
regards
Martin
what I think is the cause (annoyingly I only found this ticket
afterwards - otherwise I'd have just applied the fix from CVS!).
The message list ViewPort contains elements with DOM IDs of the form
vp_row[UID][MAILBOX]. For subfolders these look like
'vp_row1234Lists/Horde', i.e. invalid HTML ID (cannot contain
forward-slash). This breaks Prototype in Selector.findElements, for
browsers that implement Selectors API.
Replacing non-word characters (as is done elsewhere in DIMP) fixed it
for me, i.e:
--- ViewPort-old.js 2009-07-20 23:16:35.000000000 +0100
+++ ViewPort.js 2009-07-20 22:48:50.000000000 +0100
@@ -1253,7 +1253,7 @@
if (!Object.isUndefined(e)) {
// We can directly write the rownum to the original object
// since we will always rewrite when creating rows.
- e.domid = 'vp_row' + u;
+ e.domid = 'vp_row' +
u.replace(/_/g,'__').replace(/\W/g, '_');
e.rownum = this.uidlist.get(u);
e.vp_id = u;
return e;
I'd take a look at IMP 5 to see how this got fixed, but horde.org
seems broken at the moment...
Can anyone please explain to a non Javascript -Dom expert, how I could
get dimp work again with firefox3.5 clients
(we are suffering the same "other folder than inbox" issue)
Thank you!
regards
martin
CVS changes applied, and Dimp config set back to normal...
Dimp once again usable for me... :) Thanks Michael.
Assigned to Michael Slusarz
State ⇒ Resolved
installations. It indeed has something to do with the SelectorsAPI -
I'm not sure if it is broken in prototypejs or Webkit. Regardless,
the workaround is to tell prototypejs not to use the SelectorsAPI.
Seems to work for me.
Strange, especially since there isn't an issue in IMP 5. It must have
something to do with the other elements in the page also - somewhere
along the line, something changed in IMP 5 where this bug doesn't
manifest itself anymore. Since I'm not going to spend anymore time
tracking this down in DIMP 1.x, this solution will do.
http://cvs.horde.org/diff.php/dimp/js/DimpCore.js?rt=horde&r1=1.369.2.59&r2=1.369.2.60&ty=u
http://cvs.horde.org/diff.php/dimp/js/src/DimpCore.js?rt=horde&r1=1.369.2.61&r2=1.369.2.62&ty=u
State ⇒ Stalled
So you can't verify this in FF 3.5b4? Does it for me on multiple PCs
with FF 3.5b4...
fixed upstream (in either the browser or prototypejs) so there's
nothing we can do right now.
So you can't verify this in FF 3.5b4? Does it for me on multiple PCs
with FF 3.5b4...
So I guess this gets closed as not being a Horde / Dimp issue?
is broken - this is the line that isn't working properly (in
_addMouseEvents in DimpBase.js):
elt = $(p.id).down('div.msCheck')
It is the selector 'div.msCheck' that is broken on Chrome - it returns
an undefined value instead of a DOM element (a DIV element of class
'msCheck' does exist).
Simply put, this is not a Horde/IMP/DIMP issue.
3.0.10 on some different PCs and 3.0.5 on the same PC as 3.5 runs on,
and none of them do it. FF3.5 and Chrome both do have the problem.
prototypejs issue since that is the js library responsible for all
the fancy attribute matching.
and Chrome (WinXP).
Further analysis of the error message provided (Expected
identifier...) indicates this is an internal issue with firebug (it is
thrown by the xulrunner stuff) rather than anything that should/would
be affecting DIMP.
The unfortunate reality is, without a reliable way to reproduce and/or
patch, this bug will need to be closed especially since I can not
reproduce on anything resembling a stable browser (I do not yet
consider Chrome stable).
3.0.10 on some different PCs and 3.0.5 on the same PC as 3.5 runs on,
and none of them do it. FF3.5 and Chrome both do have the problem.
prototypejs issue since that is the js library responsible for all the
fancy attribute matching.
Warning: Expected identifier or string for value in attribute selector
but found '1'.
Source File: https://mail.simonandkate.net/horde/dimp/
Line: 0
Also, the older Firefox's don't do it. I tried 3.0.8, 3.0.9, and
3.0.10 on some different PCs and 3.0.5 on the same PC as 3.5 runs on,
and none of them do it. FF3.5 and Chrome both do have the problem.
the "elt" error is returned from the JS source file DimpBase.js.
(Worked that out by replacing each JS file one at a time with the
source one, changing the path so caching didn't work, and reloading
Dimp).
Will try and dig into the js and see if I can work out a way to find
out where it's spitting about the 'elt' variable without Firebug.
$this->applications['dimp'] = array(
'fileroot' => dirname(__FILE__) . '/../dimp',
'webroot' => $this->applications['horde']['webroot'] . '/dimp',
'name' => _("Dynamic Mail"),
'status' => 'notoolbar',
'target' => '_parent',
'jsuri' => $this->applications['horde']['webroot'] . '/dimp/js/src',
'jsfs' => '/usr/share/horde/dimp/js/src',
);
And Dimp loaded.
The error when going into any folder other than inbox is:
"onException: TypeError-elt is undefined"
**Note that Dimp troubleshooting instructions for this step are currently:
"Finally, you need to change ``horde/conf/registry.php`` to serve the
javascript files from the ``js/src/`` directory rather than the ``js/``
directory". That's about as useful as telling most people to fly to
the moon without at the very least an example of how to do it... :)
Can I submit a patch for the INSTALL file with some better instructions LOL?
(which nowhere in this bug have I claimed to be) a URI is a naming
structure like http://www.something. In that context I know fine what
a URI is - but thanks... :) Do I need to tell you everything else I
don't know? (joke...).
"$this->applications['horde']['webroot'] . '/dimp/js/src'" does not
look like what a non-developer would call a URI.
I'm trying here to help the Dimp community by debugging an error that
occurs in certain browsers on my install. To do that, all I need from
you guys (the developers) is what I put in registry.php to make Dimp
get its JS from source.
I followed Michael's advice to "Add something like this to the dimp
config in horde/config/registry.php:
'jsuri' => '/path/to/horde/js/src',
'jsfs' => dirname(__FILE__) . '/../js/src',"
Then something different from you, and now something different again.
Can someone please just tell me what I put in
/usr/share/horde/config/registry.php to make Dimp get its JS from src.
Currently I have:
$this->applications['dimp'] = array(
'fileroot' => dirname(__FILE__) . '/../dimp',
'webroot' => $this->applications['horde']['webroot'] . '/dimp',
'name' => _("Dynamic Mail"),
'status' => 'notoolbar',
'target' => '_parent',
'jsuri' => dirname(__FILE__) . '/../dimp/js/src',
'jsfs' => '/usr/share/horde/dimp/js/src',
);
With your last post, are you now telling me that I also need to change
the line that says:
'webroot' => $this->applications['horde']['webroot'] . '/dimp',
to
'webroot' => $this->applications['horde']['webroot'] . '/dimp/js/src' ?
Or change that INSTEAD of the others, or as well as some of them...?
As I said in Comment 4:
"Happy to do more JS troubleshooting if someone can help point me in
the right direction of how to actually do it as the tips in the
INSTALL file don't work for me..."
Summary ⇒ DIMP preview errors in folders other than Inboxou
Try:
$this->applications['horde']['webroot'] . '/dimp/js/src'
put there? :)
From what I read in registry.php jsuri should be a URI, jsfs should
be a filesystem path.
I have tried:
(on Michael's advice)
'jsuri' => '/usr/share/horde/dimp/js/src',
'jsfs' => dirname(__FILE__) . '/../dimp/js/src',
(on Jan's advice)
'jsuri' => dirname(__FILE__) . '/../dimp/js/src',
'jsfs' => dirname(__FILE__) . '/../dimp/js/src',
and finally just for the hell of it:
'jsuri' => dirname(__FILE__) . '/../dimp/js/src',
'jsfs' => '/usr/share/horde/dimp/js/src',
None of them work - Dimp just sits and says "loading..."
And yes, I have a /usr/share/horde/dimp/js/src directory.
$this->applications['dimp'] = array(
'fileroot' => dirname(__FILE__) . '/../dimp',
'webroot' => $this->applications['horde']['webroot'] . '/dimp',
'name' => _("Dynamic Mail"),
'status' => 'notoolbar',
'target' => '_parent',
'jsuri' => '/usr/share/horde/dimp/js/src',
'jsfs' => dirname(__FILE__) . '/../dimp/js/src',
);
No change - with the jsuri and jsfs lines in Dimp never loads.
Take them out and it loads fine, albeit still with the issue as noted
in this bug.
$this->applications['dimp'] = array(
'fileroot' => dirname(__FILE__) . '/../dimp',
'webroot' => $this->applications['horde']['webroot'] . '/dimp',
'name' => _("Dynamic Mail"),
'status' => 'notoolbar',
'target' => '_parent',
'jsuri' => '/usr/share/horde/js/src',
'jsfs' => dirname(__FILE__) . '/../js/src',
);
And now Dimp doesn't work at all LOL... Just sits there saying "Loading...."
are you?
'jsuri' => '/path/to/horde/js/src',
'jsfs' => dirname(__FILE__) . '/../js/src',
When navigating into any folder other than Inbox using Firefox the
following error pops up in a box:
"onException: TypeError-a is undefined"
In Chrome the error is:
"onException: TypeError-"
The Dimp troubleshooting guide says to:
"change ``horde/conf/registry.php`` to serve the
javascript files from the ``js/src/`` directory rather than the ``js/``
directory"
Assuming it is supposed to be horde/config/registry.php, there is no
setting for js path that I could see in the file... how do I make it
use the source js?
There is no Firebug for Firefox 3.5.
Happy to do more JS troubleshooting if someone can help point me in
the right direction of how to actually do it as the tips in the
INSTALL file don't work for me...
Interestingly I discovered it doesn't do it in IE7. I so rarely use it
these days... Firefox and Chrome do it though.
State ⇒ Feedback
Priority ⇒ 1. Low
State ⇒ Unconfirmed
Patch ⇒ No
Milestone ⇒
Queue ⇒ DIMP
Type ⇒ Bug
Summary ⇒ DIMP preview errors in folders other than Inbox
Firefox and Chrome, same behaviour.
In Dimp, the Inbox behaves correctly. I.e. open Dimp, the Inbox shows
preview of the first email item, and other items can be selected and
automatically the preview appears. Multiple items can be selected by
using the select box on the left of the emails.
However in other folders, upon opening the folder (Sent Items, Spam,
or user-created subfolders etc) the automatic preview of the first
item does not appear. The turning "loading" symbol appears. Clicking
on the first email previews it, but no other emails in the folder are
selectable or previewable. Double-clicking on another email opens it
in a new window, so Dimp can 'see' and read the other emails. The
'loading' spinning wheel doesn't appear to time out - I have left it
for about 15 minutes.
As I assume this is basic functionality that works for most people, I
must have something in my config / setup that Dimp doesn't like...