* Remove all traces of mathjax from the atto equation editor - it is filter agnostic
* Add a M.core.event module for core events that can be published/subscribed to by plugins (loose coupling)
* Add a FILTER_CONTENT_UPDATED event so plugins can tell the filter system when nodes are added to the page
* Implement a listener for this event in the MathJax filter
* Fire this event from the equation editor and from the glossary filter
* Add a nolink tag to the mathjax filter, so equations will not be processed by the other filters
* Add a smarter throttle function to the equation editor preview updates (Y.throttle is dumb)
If MathJax is loaded by any means, the editor should use it instead of the filter. This prevents
slow ajax requests and gives much better rendering. MathJax could be loaded by the filter,
or it could just be done the old way by sticking the include in the page header.
The problem is that in IE, the browser implements color commands with font tags (<font color=...>).
We specifically strip font tags to avoid abuse when pasting from word (the world has seen enough of Tahoma).
This solution instead uses Rangy to set inline styles on the selection. This works in all browsers nicely.
I also updated the toggleInlineSelectionClass function to use the same rangy function. This solves problems with
whitespace squashing in ie.
Do not show the collapse button if:
* it's specified after the cut-off and would therefore be unusable; or
* the total number of groups matches the number of groups to display anyway.
This ensures that:
- Plugins are only used once,
- Group names are unique,
- Lines match: group = plugin[, plugin[, plugin ...]],
- There are some groups and plugins defined,
- The plugins used are installed.
Previously, we hardcoded a list of icons for Atto plugins. This is not
a good idea as it would be very quickly outdated, or incomplete. Now,
we proceed as we often do: if the image pix/icon exists in the plugin
it is displayed, else nothing is displayed.
Before the patch it was happening that the undo or redo buttons
were enabled even though clicking on them didn't produce anything.
This is partly because we were not storing the initial value, we
allowed for the stack to be empty, and we were using not clean
HTML.