In I59dfcfb25c, for logging events when page is navigating away, we
used callbacks with mw.hook. That is wrong approach. If event logging
is disabled those callbacks will never called: it broke language change
and all use cases which navigates away from current page.
Event logging should not interfere with any ULS functionality. If ULS
functionality depends on callbacks from event logging, it is wrong.
In this patch, we give a small time window to make sure event logging is
fired, but we won't wait for its success or failure.
If eventlogging is disabled, this time window does not exist.
Change-Id: I0b7d9d8b9d1d01b99422010596ebfa80b2589d04
Separating event logging out of ULS functionality. Event logging
is now loosely coupled with ULS. ULS core modules can emit an event
whenever EventLogging is required. The eventlogger module will act
on the event if configured.
Change-Id: I59dfcfb25c1acb85376b56239f2355ee7c4aff1e
Our logEvent wrapper now returns jQuery.Promise too.
Added timeout out parameter to our logEvent wrapper. Unlike
GettingStarted, I didn't create separate logUnlessTimeout
function.
Chrome apparently emulates enter on links as a click, so
this catches enters, left and middle clicks, but not if
the link is opened via right click menu. Might not catch
enter in all browsers.
Change-Id: I4b0eb56e7c7d6e56f8fd99d536f9b60b94a2e09e
In Iddef0805ab a custom message store was introduced for ULS, but
there were updates in jquery.i18n that allows us to use default
message store again.
(see https://github.com/wikimedia/jquery.i18n/pull/40)
Change-Id: I86cb7a44efa83e5811824cd1104c6be11b1e2925
Instead of using the whole jquery.i18n code, use only required parts
that are not customized in MW ULS. For this define a new RL module
ext.uls.i18n.
Also refactor MW message store for jquery.i18n.
Change-Id: Idda9fe505428ade409d937314d7216ebb4232c36
This patch provides a workaround for bug 50746. It modifies mw.uls.eventLog so
that it does not directly attempt to log events but instead adds them to a
$.Callbacks('memory once') queue. If EventLogging is not enabled, the Callbacks
object never fires. If EventLogging is enabled, it is requested via
mw.loader.using, but only after $(document).ready. This prevents ResourceLoader
from attempting to inject it via document.write. The mw.loader.using callback
sets the schema defaults and calls .fire on the Callbacks object, causing the
EventLogging event queue to be processed. Tested on Opera 12 and Chrome 30 on
OS X.
Bug: 50746
Change-Id: I89cf06990ee85e70698149b4812d7900218e4fb4
This change introduces a new configuration variable, $wgULSEventLogging. When
set to true, ULS will register an EventLogging schema module for
<http://meta.wikimedia.org/wiki/Schema:UniversalLanguageSelector>,
making it possible to log events using `mw.uls.logEvent`. When false, the
schema module is not loaded, and `mw.uls.logEvent` is a no-op.
Change-Id: I7139e67cc2f830a6b4b3c8ff1fc72dfcdec9a699
* Since there is an API to load the i18n json files, avoid sending
list of localizations to client. Previously this list was used to
avoid 404s for json files. Now API takes care of it. Remove the
caching for this list too.
* Preload the i18n files on document ready. This avoids delay in
initializing IME or ULS window after fetch i18n from server.
* ApiULSLocalization can serve messages for all namespaces known if
namespace parameter is not set
Bug: 50391
Change-Id: I6b848da35f57353790bf460983cdf19a11bb238a
For position=sidebar, the dummy "in other languages" section is
visible in the same manner as it is to browsers without JavaScript.
Bug: 49028
Change-Id: I931a2e904b37c754f63bfe5feb2d98bfe6c2747b
IE8 and IE9 does not support ajax with CORS. So make sure they
load json files from same domain.
See http://bugs.jquery.com/ticket/8283
Bug: 45958
Change-Id: I8442a5efbd4ca7db0f0a407ff94772ea8e213b29
Unlike freegeoip it also works with https
Also moved the getCountryCode function to init, as it should be
available regardless of whether we load the optional geoclient
module.
Bug: 40965
Change-Id: Ia18130890d09f86a93b5b61f7da7c48fcfa480c7
ULS is disabled for anonymous users on WMF projects. But to provide
rest of the features - apis, language database, language selection for
many use cases, we need to provide a minimal ULS. RL module
ext.uls.init does that job now.
For using ULS as interface language selection tool, new RL module
ext.uls.interface is introduced. That will add UI language selection,
webfonts, ime features, if enabled.
Change-Id: I796a7c9cce0de42bf8aa06b26e383e0075dbe1dd
The 'als' is used in a non-standard way in MediaWiki -
it may be used to represent the Allemanic language,
the standard code of which is 'gsw', while 'als'
is ISO 639 3 refers to Tosk Albanian, which is
not currently used in any way in MediaWiki.
This local fix adds a redirect for it.
Also add a test to check that it works correctly.
Change-Id: Id904cab129eb58f8b96ce493e77d21da7c44ea8b
Settings text on the main ULS view can grow longer for some languages running out of space.
This change does the following to avoid that:
* Removes setting section explanations and shows them as a tooltip on hover.
* Adjusts style for adjusting space between setting sections.
* Keyboard image has been adjusted to match the display settings image.
Change-Id: I42ec5cb35b3d4df977a6eff28ad55891f4135356
* Update jquery.i18n - if messageLocationResolver returns false for
a locale, no server hit will be attempted
* Refactor i18n preparation code to a new method
* Use the ULS RL hooks to find out to which locales it is localized,
pass that list to js to avoid hitting server.
* Also avoid directory scanning in each request by putting
the locale list in cache
Fixes Bug 41454
Change-Id: I0c923b35db01b884e2dd55873dd5fb7384434645