Hi all,
A few days ago I was fiddling around with my Labs instance [1], which serves as a development/testing/showcase area for social tools [2]. Somehow I ended up on Special:ViewPoll [3] and got curious as to why a JavaScript hover effect (mouseover/mouseout) didn't work on that page -- I was sure it used to work just fine not that long time ago. Without thinking that much about it, I clicked on the one and only poll listed on the page [4], and turns out the whole Poll: page is about as broken as it can be due to a JavaScript error.
After a while of debugging, consultation and more debugging, turned out that my local development setup had $wgResourceLoaderDebug = true; in its LocalSettings.php, which apparently hides some race conditions or something like that. The Labs instance tries to be a more faithful representation of a production wiki, and as such, it doesn't have this setting enabled and hence why the problem manifests there.
PollNY itself is a rather old extension, as most original social tools are (see the MW.org page [2] for details), and as such, it likely has some non-optimal code and it's also gone through plenty of iterations in the past. As a matter of fact, when porting PollNY to use ResourceLoader, it seems I myself made some suboptimal choices, such as bundling both CSS and JS into the same module and loading this module with 'position' => 'top'.
Anyway, after decoupling the main CSS into its own module (locally, haven't submitted this to git yet), tweaking the callers and whatnot, I was able to get the hover effects on Special:ViewPoll to work as intended. While this is definitely a step forward, the actual problem with pages in the Poll: namespace still persists.
PollNY has two JS files, LightBox.js and Poll.js. LightBox.js contains a lightbox implementation and technically it's not needed for stuff like the <pollembed> tag etc. and it should only be loaded on Poll: pages. Poll.js, on the other hand, is basically needed everywhere where there is PollNY; special pages, pages that embed a poll via the <pollembed> tag, Poll: pages...
Now, the actual issue is that no matter what I do, I get a "TypeError: 'LightBox' is not defined" on Poll: pages (such as [4]). In the git master version, this is due to the aforementioned race condition: line 466 of Poll.js tries to use mw.loader.load() to load the LightBox RL module if it's not already loaded, but in RL's production mode this fails, because, as I've been told by those with more intimate knowledge of ResourceLoader and its inner workings, mw.loader.load is asynchronous. I've tried mw.loader.using, but it doesn't seem to do anything as far as fixing the issue goes.
Please let me know if you're able to help me out with this; I've ran out of ideas.
[1] http://social-tools.wmflabs.org/ [2] https://www.mediawiki.org/wiki/Social_tools [3] http://social-tools.wmflabs.org/wiki/Special:ViewPoll [4] http://social-tools.wmflabs.org/wiki/Poll:How_is_the_weather_today%3F
Thanks and regards, -- Jack Phoenix MediaWiki developer