Commit graph

88 commits

Author SHA1 Message Date
Bartosz Dziewoński 036b7c28a3 Use jQuery.textSelection API for compat with CodeMirror extension
We were already using it for almost all interactions with the editing
area, except for this code which restores the selection after closing
a dialog.

Bug: T254612
Change-Id: I26d22d9c5d64fe8c861405e65cd4464c349aeac9
2020-06-08 18:45:14 +00:00
bkudiess-msft 44e82ec089 Restores focus after dialog closes
Bug: T253595
Change-Id: I125d6c00239091cb3028818e3b72c212babf10b3
2020-05-28 12:23:14 +00:00
jenkins-bot b38a83c670 Merge "Extend comment on overqualified selector from code example" 2020-05-12 19:22:53 +00:00
Volker E b51d815435 Extend comment on overqualified selector from code example
Change-Id: Ic5d91d862f1ec2e986be3b0a2b95c0427dc7eda3
2020-05-11 22:49:24 -07:00
Timo Tijhof 0f24c10873 jquery.wikiEditor: change autoIcon() to no longer append version string
Remove use of mw.loader.getVersion, which I'm planning to remove
from the public API. The only valid use case I found of it (not
in WMF repos) is to check if a module exists, for which one can
use mw.loader.getState() already.

The code path here handles with the 'icon' property of a
WikiEditor "toolbar group tool". In other words, the buttons
you can click in the toolbar to open a dialog or insert markup.

I found two ways to reach this code path:

* For the built-in tools and icons that are part of WikiEditor.
  These are all based on OOUI now and no longer use inline styles
  with background-image etc., they are class-based instead, with
  the URLs and language variants handled server-side by RL.

* For user scripts that register a custom tool and icon.
  To try this, copy snippets to the console on an edit page from
  <https://meta.wikimedia.org/wiki/User:Krinkle/Scripts/InsertWikiEditorButton>

  These pass urls as the 'icon' property and thus don't satisfy
  the hasOwn condition in this code. And even if they did, there'd
  be no reason for the module version to be helpful to the thumbnail
  url the user would have passed.

This line of code has existed with the mw.loader.getVersion() call
since the repository's very first commit in 2010 (9d278e8dee).

The worst that can happen is if there are stil some internal icons
hitting this path, they'll be cached for 1 hour instead of 7 days
(per /w/static.php rules in production). For third parties, there
would be no difference and such static paths have no caching by
default either way (outside WMF).

Change-Id: I6ec29abde0085d04b662b56b5ebcc2bd7fa267f8
2020-04-07 20:55:01 +01:00
jenkins-bot e94ad450bd Merge "Avoid href="#" on <a> elements" 2020-01-25 16:25:07 +00:00
Fomafix 3def0a39fc Use document.body instead of 'body' as jQuery selector
Change-Id: I05737b760a4875a58101a520d18cd21528175410
2019-12-16 11:36:27 +01:00
Fomafix f5c89bd673 Avoid href="#" on <a> elements
An <a href="#"> element
* shows a status line with a URL on hover and
* opens a new tab on middle click.

For still supporting keyboard navigation the replacement uses
* tabindex="0" to have the normal tab order and
* .on( 'keydown' ) to catch the Enter key.

The image example in the help does not need a link or a keyboard
navigation.

Change-Id: I6d75f75871bb29bdd878451f282f2055ed3f4f5c
2019-11-06 18:13:14 +01:00
Ed Sanders 85ac5f2e07 build: Update linters
Change-Id: Idcac2a782781a86dabd91f30a41adac1ea94ef16
2019-10-29 22:16:13 +00:00
Ed Sanders 2112538387 build: Update linters
Change-Id: I3a50982ee652c4c1c9b357c793e07cccf014e261
2019-10-07 16:52:10 +01:00
jenkins-bot c36ba4893e Merge "Allow data URLs for toolbar icons" 2019-09-08 11:54:45 +00:00
Roan Kattouw d23d096281 Convert ext.wikiEditor module to packageFiles
This allows us to bundle the wgWikiEditorMagicWords and
mw.msg.wikiEditor(?!) config vars that were previously exported globally
in the startup module.

This code is old and crufty, so this is a somewhat minimal conversion:
* Use require() for jquery.wikiEditor.{dialogs,toolbar}.config.js,
  and for jquery.wikiEditor.{dialogs,toolbar}.js
* Don't attempt to convert jquery.wikiEditor.js to something
  require-based, instead just run it and let it set the $.wikiEditor and
  $.fn.wikiEditor globals
* Consolidate ext.wikiEditor.{dialogs,toolbars}.js into
   ext.wikiEditor.js

Bug: T222828
Change-Id: Ia75d685cbde786e8fceb6db36f2436b2beea1499
2019-08-05 22:24:56 +00:00
Alexander Jones 05a6e4e6a6 Allow data URLs for toolbar icons
The autoIcon function now immediately returns the icon URL if it
begins with "data:".

Bug: T27223
Change-Id: Ib62f1f50f612ddae9b5f8fb4a6b59863a6da3c98
2019-08-04 19:30:55 -05:00
Ed Sanders f9f01cf6b7 build: Update eslint-config-wikimedia 0.10.1
Change-Id: I71b5c0a1b499865b56ef6957427cae7c97609d73
2019-02-06 01:26:47 +00:00
Ed Sanders 583ad04b87 build: Update eslint-config-wikimedia to 0.10.0
Change-Id: I5fea8a1d6c91ea69c3490101ea38ce4626bd7e11
2019-01-08 23:32:56 +00:00
Ed Sanders c19397ffbc Update eslint-config-wikimedia to 0.9.0
Change-Id: Ie60321d33b786a9f56fbf0df26571be7c0a29de8
2018-11-27 17:36:31 +00:00
Derk-Jan Hartman 0161e37e6e Modules: Protect against loading modules twice
Bug: T189029
Change-Id: Ie0dff9c1dfa8e3a0927f2915a9a237dff739289a
2018-11-14 20:24:15 +00:00
Ed Sanders 4fa41179e8 Remove obsolete aliases from closures
Bug: T208951
Change-Id: I0b2993912de221e810414e46708c19be163922f6
2018-11-12 22:28:40 +00:00
James D. Forrester e75284e528
Fork autoMsg() with escaped autoSafeMsg(), replace where appropriate
The only use of raw HTML messages is in the help panel, which is the only user
of `layout: 'table'`, so we can replace all other callers.

Bug: T154891
Change-Id: I2df3ec8c05d4daaa094378354566356a822c081f
2018-10-12 01:27:52 -07:00
jenkins-bot ac1db705fa Merge "Remove dummy isSupported function, deprecated in REL1_31" 2018-04-18 10:32:20 +00:00
Ed Sanders 72e48c26e0 Convert remaining tools to OOUI
Replaces the insert and advanced-insert groups, which
are currently multi-colour icons.

Drops the button-sprite + offset mode, according to
mwgrep there are no other users of this.

Bug: T191031
Bug: T143508
Change-Id: I7032f98908a591ea5c9d3dbbb7616e2c10bbfc80
2018-04-11 15:50:23 +01:00
Jforrester 436a0aa1fa Remove dummy isSupported function, deprecated in REL1_31
This reverts commit a92c99cd45.

Change-Id: I2567fbf5a41efb1242b690dd23e4b59b166c0251
2018-01-18 18:19:46 +00:00
Ed Sanders a92c99cd45 Restore isSupported as deprecated dummy function
Bug: T185143
Change-Id: I0be5d09390b70ee581262b4ba6421f5f51f2e696
2018-01-18 11:24:10 +00:00
Ed Sanders 17cf175e78 Save/restore selection in all browsers
Previously this wasn't required due to an iFrame mode.

Change-Id: Ib89af27d5ab6b9b1b05046b32b05ce368ff47a5f
2018-01-02 21:46:31 +00:00
Ed Sanders 84926bbd33 Remove browser compatibility checks
WikiEditor works in all browsers that MW supports,
and should do going forward.

Change-Id: I189516917d805dff3819e742a9fd8ad96a161159
2018-01-02 21:44:59 +00:00
James D. Forrester be36244c70 Radically simplify this extension now there's only one config option
On or off. Pick your apples.

Change-Id: I7677f0b597c33f236192aea1aaa347a36216fbb7
2018-01-02 21:25:16 +00:00
Ed Sanders ca87c9020e Remove rest of partially-removed IE hack
Bug: T123219
Change-Id: I3b900116ce2dc44338451c07ecdc419bad82014b
2017-10-12 16:02:48 +01:00
Ed Sanders d400102c38 Remove IE8 hacks
Change-Id: I23e33e3498487bedcc50d95e2162175e940882c4
2017-05-22 11:50:04 +02:00
Ed Sanders 1b0bd60ee8 build: Update eslint to 0.4.0 and make pass
Change-Id: Ib0ac14fb53479eb964a5d51066661b4771b1f72e
2017-05-04 22:38:47 +00:00
Fomafix 25d64833dd Remove workarounds for IE8
Since MediaWiki 1.27 JavaScript is disabled on Internet Explorer 8.

Bug: T123219
Change-Id: If8e36d5cf39531ca9c599131847f612d17c31166
2017-04-26 18:28:25 +02:00
Fomafix 24ee938095 Replace deprecated jQuery.isArray with Array.isArray
jQuery.isArray was deprecated in jQuery 3.2.0. [1]

Array.isArray is part of ES5 and MediaWiki 1.29+ which ensures that
JavaScript is only used when the browser supports ES5. (T128115)

Performed using:
find . -type f -name \*.js -exec sed -i -e 's/\$\.isArray/Array.isArray/g' {} \;

[1] https://blog.jquery.com/2017/03/16/jquery-3-2-0-is-out/
[2] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray#Browser_compatibility

Change-Id: Ia1a118fefb23761fe297647442f0a598a9488968
2017-04-26 16:04:51 +00:00
Ed Sanders 7eed707a48 Replace jshint/jscs with eslint/stylelint
Change-Id: Ife5e782bd5513e0496e384655b9b203de5c841a5
2016-11-21 21:02:38 +00:00
Ramunas Geciauskas ddda9c0c13 Fix spelling mistakes and clarify code comments
No functional changes

Change-Id: I395f97640931d7902cb468d62187d6d8fd10c0b7
2016-03-31 10:28:32 -04:00
Timo Tijhof f583469ece Use mw.Message#text() instead of plain() in wikiEditor.autoMsg()
* Follows-up 6a73d06 by removing the hardcoded SITENAME regex.
* Follows-up 1b797b7f6a which introduced this regression in the first
  place. This is exactly the reason why mw.msg() defaults to format
  'text' instead of 'plain' without transformations.

Change-Id: I7f1b877710fb6baa45b83054d1e30a24979b37b4
2015-12-25 21:33:47 +01:00
Fomafix de74cc81f5 Use mw. instead of mediaWiki. in code
Change-Id: Ib7905bbbb8954cf8e268acac45e00ceba959b00b
2015-12-13 12:44:49 +00:00
paladox bdb67f719c build: Test JS code with jshint and jscs via npm
Change-Id: I039bc4c17fbba3c74a5050066b20af05434ca482
2015-11-18 12:06:36 +00:00
Fomafix a27f478bf5 Remove unused parameter lang from $.wikiEditor.auto* functions
Change-Id: I71680155b668b6e87be909d2b765f9cbed064bbf
2015-06-22 07:08:54 +00:00
Fomafix edbee613fc Support fallback languages for icons
Use mw.language.getFallbackLanguageChain() to get the
fallback language chain. This chain currently always contains 'en'
as last element. Remove the last element to prevent a fallback to 'en'.

Reimplement autoIconOrOffset to correctly prefer sprite before icon.

Bug: T87247
Change-Id: I452dd45d20ea4dd542d63274b7aad0272e20ea12
2015-06-21 15:42:18 +00:00
Alex Monk 596a790d00 Try to unbreak WikiEditor modules
Some very weird issues going on involving multiple wikiEditor instances being
set up on the same textarea element. It's probably a race condition of some
sort and I'm hoping that restoring the modules like this will fix it.

Bug: T93384
Change-Id: I44c9c013993220ab709893d239614552d7b25d46
2015-04-07 19:51:58 +01:00
Alex Monk 2b914eeddf Don't try to do event logging if we don't have a stats ID
I found that pages like:
https://pl.wikipedia.org/w/index.php?title=Wikipedia:Strona_g%C5%82%C3%B3wna&action=edit
which load WE dynamically don't have this.

Change-Id: Ib3952f4efbf265dbb0d1e25b2059e1be934565a7
2015-03-20 01:26:31 +00:00
Alex Monk bf15f72dc7 Try to prevent crazy EventLogging entries with no session ID etc.
Seems to be causing errors on view (!) on plwiki, and I would not expect this
to work on non-wikitext pages.

Bug: T93242
Change-Id: I0336a85a2ab4bef1d20086382012047688ffa909
2015-03-19 21:29:57 +00:00
Alex Monk 4d54fa4471 Only do client-side instrumentation on action=edit/action=submit
So we don't break the tests

Bug: T93119
Change-Id: Ib0545f581fd2a845b893a046ab7aa7161e27180e
2015-03-18 23:59:24 +00:00
Fomafix 83c079ceb6 Reuse variable profile instead of $.client.profile()
Change-Id: I66543bd0838b062bea08ca4b5f4fded41ff835cc
2015-03-14 18:01:58 +00:00
Fomafix d16dfb0ad5 Style code
* Fix errors and warnings from phpcs.
* Add commas at end of lines for arrays in PHP.
* Add space between // and comment.
* Add space between ) and {.
* Use tabs instead of spaces for indenting.
* Break lines in PHP with more than 100 characters.
* Remove double spaces and spaces at end of line.
* Remove spaces before comma.
* Fix some typos.

Change-Id: I9c014bdfa9832fa6a20d0190fe2fc668983d0fb9
2015-03-14 15:49:04 +00:00
Alex Monk 74da530f2d Schema:Edit instrumentation
Depends on Ib8612626

Bug: T88027
Change-Id: I67f1000d23cb257df29d5d4be8ae85764458e6c1
2015-03-10 14:56:45 +01:00
Brion Vibber ab2c7e3ce6 Skip an old IE 8 bug workaround in WikiEditor on IE 11/Spartan
An early version of WikiEditor added a workaround for a reported
bug with IE 8 where textarea scroll and selection state was lost
when the contents were modified.

This doesn't seem to be needed on modern versions of IE such as 11
and above and the newer 'Edge' HTML engine mode in Windows 10.

Actually, I can't reproduce it in Windows 7 or XP with IE 8 either
from the original bugs, but just in case it's needed on some particular
version that we don't know about I've only added a check for modern
IEs, which is already in use on other old-IE workarounds in the
module.

Bug: T88875
Change-Id: I25b667a8d8378c417441adee5d97571c71a1c8c7
2015-02-19 21:01:21 +00:00
Matthew Flaschen 736b94f827 Update autoMsg doc for plain call
* Reflect that we're now calling mw.message( ... ).plain()
* Remove vague statement about "may eventually become a wrapper for
  some kind of core MW functionality."

Change-Id: Ibe743162c1f72bb3977ec16e2ba4b023a66e3907
2015-02-14 22:32:35 -05:00
Fomafix 78bdeffcc6 Use "obj.hasOwnProperty( prop )" instead of "prop in obj"
'constructor' in {}; // true
Object.prototype.hasOwnProperty( {}, 'constructor' ); // false

Bug: T86643
Change-Id: I4356608956d722dc086e6876a53fdd93435c6f0a
2015-02-05 13:34:03 +01:00
Fomafix 790a1af231 Fix whitespaces in JavaScript
* Use a singe space as whitespace.
* Remove space before colon when not used as ternary operator

Change-Id: I6391bbcf10d26fadf82686d7ff226b773868415c
2015-01-14 07:14:44 +00:00
Fomafix bfe2fc6c4e Workaround for a scrolling bug in IE8 on resize
Bug: T63910
Change-Id: I6dacc1ed2f2fdf4ea615a477b711dc78667bae68
2014-12-06 12:40:50 +00:00