Files:
* Consistently have one (1) new line at EOF
(.gitignore, *.css, *.sh)
JSHint:
* Separate the common (general Wikimedia code conventions) from
the local more stricter rules (nice work!).
Maintenance:
* Use simplified $IP definition where getenv is only called once.
Based on http://git.io/ve-mw-36fc3b59-makeStaticLoader
JavaScript:
* Use the same closure in all files:
- No need for "undefined".
- One linebreak between license header and start of closure
(sometimes there were 1 or 2 empty lines).
- ext.uls.ime.js: No need for "document" (redundant in general,
but especially as it wasn't used anywhere in this file).
- Use "$, mw" for all ext.* modules (one of them used "mw, $").
Change-Id: Iba5dab14bbc3fbfc9f8fe96dd2d95529587a69aa
* Do not load anything unless input field is focused
* Split the setup function to smaller functions
* Introduce $wgULSImeSelectors to allow configuration and avoid
duplication of selectors in two places.
Change-Id: If5a476e66681dde9f0b72f619d35ddf6255246ac
Code like $input.trigger( 'focus.ime' ); doesn't make any sense. Event
namespaces exist for binding and unbinding and are irrelevant when
triggering. However, there's a bug in the version of jQuery that we
use (1.8.3) that causes .trigger( 'focus.ime' ) to perform a native
focus and call natively bound focus handlers, but only call jQuery
event handlers bound to 'focus.ime', not handlers bound to 'focus'.
This bug is fixed in jQuery 1.9+. http://jsfiddle.net/WGy9h/3/
demonstrates this bug.
The way ULS broke VE with this went like this:
* VE initializes and creates two contentEditable divs, the
pasteTarget and the documentNode. It then focuses the documentNode.
* ULS loads jQuery.ime
* Once jQuery.ime loads, it first calls .trigger( 'focus.ime' ) on
the pasteTarget
* jQuery focuses the pasteTarget, which means a blur is emitted on the
documentNode
* In response to this blur event, VE disables the SurfaceObserver
* jQuery.ime then calls .trigger( 'focus.ime' ) on the documentNode
* jQuery focuses the documentNode, but does not call VE's focus handler
because it's bound to 'focus' rather than 'focus.ime'
* This means VE's SurfaceObserver is not reenabled
* If the user then focuses something else then focuses VE again, a
native focus event fires and the SurfaceObserver does get reenabled
Change-Id: I7c590599df4cf62418403bc1d1dccfc3c6db5fd3
upstream: http://github.com/wikimedia/jquery.ime
changes:
* Support for contenteditable, like the VisualEditor surfaces. This
support is very minimal now. Because of VE bugs on IME support, many
things are broken. But one-one keyboard mappings should work with less
issues. The UI of jquery.ime is not integrated with VE toolbar
* More input methods
- IPA-X-SAMPA by Amir
- Armenian keymaps by Aleksey Chalabyan
- Kurdish keymaps by Ghybu
- Кыргыз keymap by Amir
- Central Kurdish keyboards by Çalak
* A lot of input method bug fixes multiple contributors
* Minor UX fixes
Introduces Rangy library.
A module named rangy is defined in VisualEditor extension with more features of rangy.
Here we need only the core library. This module is loaded dynamically from
client when rangy is undefined. If VE is present rangy will be defined, the module
defined in VE will be used. ie, This get loaded only when VE is not present and
user trying to type in a contenteditable.
Bug: 49569
Bug: 50849
Bug: 50220
Change-Id: Iadad5a4e5972fbd1359847526d28e9dbbe00a7c4
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
Currently it is positioned relative to the ... menu item.
It caused weird positioning at some places.
Positioning it relative to the input field makes more sense.
lazyload option was removed from jquery.uls. Removing it from here.
Change-Id: I331051a38d7dfd97466601bfcc2facaf446d0db9
Initialize it only when first time user clicks on it
In a page like Special:Translate where lot of input fields
appearing, the previous approach was adding many language settings
div to the page.
Bug: 48211
Change-Id: If063df6782c6a51ac77ed5531dfa253c7f3ddbc4
Add the variable $wgULSNoImeSelectors to allow custom
disabling of IME in specific elements.
Add captcha input field id to the exclusion list.
Bug: 41675
Change-Id: Ib03a20c50a4f473e6a58638b85da16659268eb09
ULS was shown relative to input field position. That will not work
always. Show it in default position - center of screen.
Change-Id: I5fd9f10d955322abd2623ce8b88792b391553dcd
focus on input field and updating language(can be changed from settings,
selector etc) is already handled inside jquery.ime
But focus on the particular input field need to be triggered, without
consuming focus event with in the event handler
Change-Id: I0b3783542e23b194fe141b9aef692a855469ce62
* It can be a user preference using the ULS Input method settings
* It can be a mediaWiki configuration $wgULSIMEEnabled
Change-Id: Ic5fb4932d62ab18db5d3b10ca81c0f6bfe9fd29e