[opencms-dev] second version of tree.js (Firefox 3.5 script errors in Explorer view)

Christian Steinert christian_steinert at web.de
Thu Jul 9 13:05:50 CEST 2009


Sorry - my first version of the tree code introduced a bug, due to a 
missing null/undefined check.

This version fixes that.

If there should still be issues, then please let me know
Christian

> Dear all, dear Achim
>
> I have fixed various issues with the javascript code that displays the 
> Explorer tree, to make it work properly with Firefox 3.5.
>
> The updated file is attached. It should work at least with Opencms 
> 7.0.x and 7.5.x.
> You have to upload it to the folder 
> /system/workplace/resources/commons/ of your opencms installation and 
> then publish it.
>
> As noted before, I won't have time to look into other Firefox 3.5 
> issues. If further bugs come up for tree.js, I would be willing to 
> take another look but if there are still problems in other areas, then 
> it would be great, if others could also help to fix them. Alkacon is 
> doing a lot, but they can't be expected to always do everything by 
> themselves.
>
> ____________
>
> Things that were changed (none of these changes should negatively 
> affect other browsers):
>
> - The tree does not seem to hang/freeze anymore after a rewrite of 
> function getNodeIdByName. Before, the logic had been a bit complicated 
> and the conditions for terminating this functions, were in my opinion 
> a bit dubious before when not finding a tree node.
>
> - All access to tree nodes (previously done directly through direct 
> array access in the form tree.nodes[ nodeId ]) is now handled by a new 
> function getNodeById.
> It seems that at least part of the tree problems in Firefox was, that 
> tree nodes are usually using numbers as IDs but sometimes, strings 
> that contain numbers are used for accessing them. Maybe, Firefox 3.5 
> is a little stricter in such situations, as soon as the JIT is 
> enabled, since the JIT will try to impose type information onto 
> javascript variables. The new getNodeById function will sanitize input 
> and find tree nodes anyway, even if the node index was passed in as a 
> String and not a number. All future read access of tree nodes should 
> also be done through this function.
>
> - lots of cleanup:
> * sanitized all checks for null/undefined - if(foo != null) was 
> changed to if(foo); if(foo==null) was changed to if(!foo), both of 
> which are much safer
> * changed string concatenation so that "+" is at the end of the 
> previous line, which is not as nice to read, but a lot safer 
> (javascript will automatically insert semicolons in various 
> situations, and therefore, it matters a lot, where line breaks are)
> * where possible, changed comparisons to use === instead of == which 
> is faster and safer. Note that this is not alway possible, because 
> node ids can sometimes be numbers and sometimes be strings
> * added various missing variable declarations where they had been 
> forgotten (undeclared variables are implicitly global in Javascript, 
> which can lead to nasty bugs)
> * re-ordered functions so that they are always defined before their 
> first caller, as advised by jslint.
> * fixed all remaining jslint errors
>
> Comments are welcome.
>
> Kind Regards
> Christian
>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: tree.js
Type: application/javascript
Size: 23470 bytes
Desc: not available
URL: <https://webmail.opencms.org/pipermail/opencms-dev/attachments/20090709/6c91e8b2/attachment.js>


More information about the opencms-dev mailing list