Commit graph

876 commits

Author SHA1 Message Date
jenkins-bot 1e4ef48393 Merge "Use OOUI 'classes' property instead of .addClass()" 2021-09-13 11:46:19 +00:00
Thiemo Kreuz e62b3fecbb Optimize .selectPartById() to fire less events
There is no point in firing this event when noting changed.
This should reduce flickering and some of the issues described
in I97d77f4.

Change-Id: I7c387889a4a33dac5053cec11a0641d358020b56
2021-09-13 13:42:20 +02:00
jenkins-bot 844606d573 Merge "Fix space bar on top-level template parts loosing focus" 2021-09-13 11:03:20 +00:00
Thiemo Kreuz 6cb287c225 Fix space bar on top-level template parts loosing focus
As a reminder (not part of this patch): Pressing enter on the name of
a template should select it, and jump to the content area on the right.
Pressing space (that's what this patch is about) should select as well,
but not move the focus.

The best way to test the behavior is with a multi-part template.

Bug: T285323
Bug: T289043
Change-Id: I97d77f43b231696f92ba6758a6b8feac34e02e6d
2021-09-13 10:34:28 +02:00
Thiemo Kreuz aa556e3ef8 Update and fix all @param config and @cfg documentation
I tried to review all of them. Some of the changes I did:
* Make sure the `config` parameter is not marked as optional
  when it is not.
* Make sure default values are mentioned.
* List individual `@cfg` options when it makes sense.

Note I don't list all options a class could accept (e.g. via all
its parent classes and mixins). That's too much. Instead I checked
how a class is actually used and list only these options.

Even then I don't list everything, e.g. unspecific options
like "classes" that can be used pretty much everywhere.

Change-Id: Idf4fbe1dc3608ace277df9e385f2f140df3a2f50
2021-09-12 12:35:27 +00:00
Thiemo Kreuz 338a800837 Merge "templateParameterClick" and "choose" events
We don't need to distinguish between these any more. Both are
"active", i.e. both focus the widget on the right side of the
dialog. Sometimes the "choose" event is fired to actually add
or remove a parameter. Sometimes it's fired, but the state of
the parameter doesn't change (for whatever reason, i.e.
because the parameter name was clicked instead of the
checkbox). There is nothing to do in this case, except for the
focus change.

Change-Id: I3c7c0c81a075ccff76eda0a4fb2aa1ac7be3cec5
2021-09-11 17:47:08 +00:00
Thiemo Kreuz 1493aa7a35 Split focus handling from add/remove parameter events
* The template model fires an "add" event. Listeners don't
  automatically steal the focus any more.
* Instead there is a separate "focusTemplateParameterById" event
  fired from all relevant places that add a parameter.
* The "remove" doesn't steal the focus any more.

Bug: T285323
Change-Id: I93f17727524bfbcf6f11647a6c2441781337c4cc
2021-09-11 17:47:02 +00:00
Thiemo Kreuz cdc168d32a Use OOUI 'classes' property instead of .addClass()
The 'classes' property is a OOUI interface. Personally, I like
this code style better.

However. It appears like the code style in this codebase is
somewhat mixed. It looks like the top-level .$element always
uses .addClass(), while other code uses the 'classes' property.
Should we unify this?

Change-Id: I9ecd75e22d00f06ffd707f766dc9e8d748ff9a37
2021-09-11 17:41:45 +00:00
Thiemo Kreuz 22757fa901 Fix and test page name splitting code in template dialog
In JavaScript .split() behaves different, compared to PHP. In
PHP the last element contains the rest of the string. In
JavaScript the rest of the string is discarded. The limit acts
as if the array is truncated. That's why we can reduce the
number in

  'foo/bar'.split( '/', 1 )[ 0 ]

to 1, as we are only interested in the element "foo".

The same code in the other class is currently not covered by a
test. But changing it accordingly should be obviously fine now.

Change-Id: I20c27d480ddb1799df9eb1e5bc119b724e80653d
2021-09-11 17:40:39 +00:00
Thiemo Kreuz ec526ea64f Make "templateParameterClick" event similar to "choose"
The original idea was to make the interface as narrow as
possible. However, it turns out it's better to model the
"templateParameterClick" event more closely after the "choose"
event.

This is split off to make reviewing the following patches
easier.

Change-Id: I271f576c6cd756cecfc6cb1fd64810f8da5c3575
2021-09-10 17:19:19 +02:00
Thiemo Kreuz 30d4096aeb Remove invisible tab target from template dialog sidebar
The list of parameters should remove itself from the list of
possible tab navigation targets when it's empty.

Note there is no way to remove elements from the parameter
list. That's why we don't care about "remove" or "clear"
actions.

Change-Id: I8b1215117e0ddc94f787d173e9bea6f7567d9671
2021-09-10 06:42:22 +00:00
Thiemo Kreuz 3ee7a1f1ed Do not pass Message object to …DismissibleMessageWidget
I wanted to change this for quite a while now. It was discussed
again in Iff1d2c0.

Change-Id: Iaaac9bf91d9b11557ab068d2c719084c46b3ecb2
2021-09-03 15:21:36 +00:00
jenkins-bot 836ab09a79 Merge "Rename and document select/focus events in template dialog" 2021-09-03 09:38:21 +00:00
jenkins-bot 7eb5b5a1ef Merge "Cleanups and optimizations related to .parseDom()" 2021-09-02 20:03:09 +00:00
Thiemo Kreuz 36bd65dda7 Cleanups and optimizations related to .parseDom()
E.g. avoid calling the rather expensive method multiple times
in a row, if only 1 of the results is needed.

Change-Id: Iff1d2c0892367e927303f6f45d3231e04c045cab
2021-09-02 18:29:09 +00:00
jenkins-bot 7848b1a071 Merge "Fix inconsistent keyboard :focus styles in template outline" 2021-09-02 13:04:17 +00:00
jenkins-bot 7c304dc444 Merge "Highlight first template parameter when using tab to navigate" 2021-09-02 10:18:22 +00:00
jenkins-bot abdbf57f84 Merge "Fix click/enter on template parameters not focusing the input" 2021-09-02 10:11:49 +00:00
jenkins-bot c8e00fb98a Merge "Highlight corresponding template parameter in new sidebar" 2021-09-02 10:10:13 +00:00
Thiemo Kreuz 06cf00f4c6 Rename and document select/focus events in template dialog
I tried hard to come up with the best possible names. Some of the
criteria I used:
* Longer and more unique is better. This makes it much easier to
  e.g. search for the event name.
* The term "part" should only be used for top-level parts. While
  template parameters have a unique id, they are not a subclass
  of …TransclusionPartModel and therefor not "parts".
* BookletLayout manages "pages" via "page names".
  * The page names of top-level parts are identical with the part
    id, see ve.ui.MWTemplateDialog.getPageFromPart.
  * The page names of parameters are identical with the parameter
    model id, see ve.ui.MWTemplateDialog.onAddParameter.

Some code knows parameter ids, but not what pages are. Other code
knows page names, but not what parameters are. The transition
currently happens in the …OutlineContainerWidget. We might want
to move this point up to the …TemplateDialog. But I would argue
this is good enough for now and can be changed later, if needed.

Bug: T285323
Change-Id: Iab2805b3203988db400b67c8d00e48905fdc53dc
2021-09-01 16:23:59 +00:00
Thiemo Kreuz fc0b419540 Highlight first template parameter when using tab to navigate
I tried to memorize the cursor position in the list of
parameters. This way you could leave the list with tab, and
return to the original position with shift+tab. Unfortunately
this is not how the SelectWidget works. The moment the
highlight is gone it's gone. There is nothing that remembers
a position. We could introduce code to do this. But I feel
like this is a lot of effort for not much benefit. Also not
listed as a requirement anywhere, at the moment.

Bug: T285323
Change-Id: I8d44ba4539ec4b5535bc031accfeacd87e1886eb
2021-09-01 14:05:01 +00:00
Thiemo Kreuz 7a8ad64cbd Fix click/enter on template parameters not focusing the input
This got lost in patch I20dbd2b.

Both events come from the same sidebar class. The difference
between the two is:
* selectPart is when the button representing a top-level part
  is clicked.
* focusPart is when a parameter name is clicked while the
  parameter is already checked.

Yes, this is confusing at the moment. Following patches will
rename, merge and split a lot of these events to be much more
self-explaining.

Bug: T285323
Change-Id: I0c6b53c93c712ff5e47c1beb5199d590cba7ab1a
2021-09-01 16:01:17 +02:00
Thiemo Kreuz b7efea5559 Remove unused event listener from …ParameterSelectWidget
We forgot to remove this in I319896a. The individual
…TransclusionOutlineParameterWidgets don't fire this event any
more. Instead this is done by the …SelectWidget.

Bug: T285323
Change-Id: I2c29e45127464785ffdc32d73b52188fcbefb7bf
2021-09-01 11:58:36 +00:00
Thiemo Kreuz b0ddcb0010 Highlight corresponding template parameter in new sidebar
Note there are currently two different code paths utilizing two
different events. The existing event handler actually changes
the selection of the top-level part in the sidebar (the
corresponding template name turns blue). The new event handler
highlights a parameter (it turns gray). This is currently
intentional (partly because of a bug in OOUI). I will try to
merge these code paths, if possible.

Please test, and if it works fine from the user's perspective,
please merge it as it is for now.

Bug: T285323
Bug: T289043
Change-Id: I8fafee68b8b7ff225c7b3c327f483f3426d8129c
2021-09-01 11:15:37 +02:00
jenkins-bot 3b5064318c Merge "Connect focus event from BookletLayout to new sidebar" 2021-09-01 08:47:07 +00:00
WMDE-Fisch 099d6bad87 Use ve.targetLinksToNewWindow in MWDismissibleMessageWidget
Change-Id: I71a2c933e4af0dac4a083ce34820fa2994fc388d
2021-08-31 15:06:20 +02:00
jenkins-bot 9d0c480529 Merge "Narrow selector for links when adding _blank" 2021-08-31 12:42:36 +00:00
WMDE-Fisch 99cee2be11 Narrow selector for links when adding _blank
Change-Id: Ia05117759c81fff6f35256931d0894c0b8051fe6
2021-08-31 13:08:25 +02:00
Thiemo Kreuz c32a6d794a Fix inconsistent keyboard :focus styles in template outline
This fixes a few style issues:
* The buttons that represent top-level elements have a proper
  2px focus rectangle again. Back to the OOUI default.
* The list of parameters does have a 1px focus rectangle all
  around. Intentionally thin because there is a 2nd level of
  keyboard navigation (via cursor keys) in this element.
* All these focus rectangles look the same in Firefox. Before,
  it was a thin dotted line on the parameter list.
* Parameters with long names don't wrap on a 2nd line any more.
  I believe this was working before but got lost in I92e8fd2.

Bug: T285323
Change-Id: I0229b6395a64a9903335bf96349af70fb20ad047
2021-08-31 12:30:24 +02:00
Thiemo Kreuz b84251080a Rename …OutlineItem CSS class to match widget class name
Bug: T285323
Change-Id: Ib307a23adb4712f253610b5029483ea8c049b7ce
2021-08-31 12:16:10 +02:00
Thiemo Kreuz 99558f9076 Connect focus event from BookletLayout to new sidebar
This makes sure the corresponding top-leve part is selected in
the list on the left when navigating the main area on the
right.

Bug: T289043
Change-Id: Id1b398e1786c4099d5b14fe88dd21a106269096b
2021-08-30 17:00:52 +02:00
Thiemo Kreuz 0ba7480901 More complete top-level part selection support in new sidebar
This comes with a few significant changes:
* A whole bunch of places in the code that focus and highlight
  an element in the old sidebar consider the new sidebar now.
* Same when e.g. the toolbar at the bottom needs to know which
  part is selected. This is read from the new sidebar now.
* To make this possible I had to merge the small helper class
  we introduced in I7bc73cc back into the dialog.

It's helpful to understand how the event flow works:
* You click a template name. This does nothing (does not select
  the element). It only triggers an event.
* The event is catched by the outer container that manages
  all parts. From there all elements are unselected, and one
  selected. This call is internal and should not trigger
  another event.

Bug: T285323
Bug: T288827
Bug: T289043
Change-Id: I4a2d2b83cf2691423d4b0e6f4487228fa3c7b56d
2021-08-27 19:16:00 +02:00
Thiemo Kreuz 544bd5688c Allow selecting top-level parts in the new sidebar
This is mostly, if not exclusively visual, at the moment. The
actual state is still managed by the old sidebar.

I made the element OptionWidgets for convenience. This gives us
all the functionality we need (primarily setSelected and
isSelected), without to much clutter. However, I didn't made
the container a SelectWidget. This comes with to much stuff we
don't need at this level, e.g. cursor key navigation.

Bug: T285323
Bug: T289043
Change-Id: I20dbd2ba23ceaa9125947b25e037c0bb3c91a471
2021-08-27 18:22:37 +02:00
jenkins-bot c1ce1e3d4b Merge "Move small code snippets into …OutlineParameterSelectWidget" 2021-08-27 11:36:53 +00:00
jenkins-bot f2b94e10b6 Merge "More test cases for MWTransclusionOutlineContainerWidget" 2021-08-27 10:00:04 +00:00
Thiemo Kreuz 7aeff4bfd3 Move small code snippets into …OutlineParameterSelectWidget
Most notably:
* Move some code snippets from the outer …TemplateWidget to
  the inner …SelectWidget, without introducing new
  dependencies.
* Move all knowledge about the item class
  …OutlineParameterWidget class into …SelectWidget.
* Some more self-documenting method names for event handlers.
* Avoid the somewhat ambiguous variable name "checkbox" in
  favor of "item". That's how it's named in the upstream OOUI
  …SelectWidget.

This is extracted from the following patch Ibd94c39. The
difference is that the following patch adds a new dependency:
The …SelectWidget gets to know the template model. This patch
here contains all changes that are possible without this new
dependency.

Bug: T288827
Change-Id: I187f313c84424b28005d9276cb1356029f9ebb75
2021-08-26 17:30:03 +02:00
Thiemo Kreuz 0bd9e587b3 Basic cursor key support in new template dialog sidebar
Bug: T285323
Depends-On: I47effe05427cfabfcf534920edee79521eaa033f
Change-Id: I319896a20a71b18655ebb93663d47e656a1a67a6
2021-08-26 12:48:49 +00:00
Thiemo Kreuz 9392282bf2 More test cases for MWTransclusionOutlineContainerWidget
This also fixes a mistake in the class where we forgot to
disconnect event handlers when an element is removed from
the list. This doesn't have much of a consequence, as the
event flow is only in one direction, from the destroyed
element up. This is not possible any more.

Bug: T289560
Change-Id: I0bcc1d68c50b8cbdb033ef6692b34e2fc94e8d85
2021-08-24 15:46:46 +00:00
jenkins-bot e803c20007 Merge "Rename …ParameterCheckboxLayout now that it's an actual Widget" 2021-08-23 14:46:09 +00:00
Thiemo Kreuz 5fcc862eb1 Remove dependency from new sidebar to the BookletLayout
This replaces I8cf9ecd.

Significant changes:
* The …OutlineContainerWidget doesn't need to know the
  BookletLayout any more. The only remaining resason to have
  this dependency was some focus management. This is now done
  via an event.
* Renamed an existing event to match the new one. The two
  really mean and do the exact same, even if they are
  triggered from two different places.
* Simplified some existing code.
* Updated documentation.

Bug: T288827
Change-Id: Ifcf2cadabf7fa4b8ecb72e3937003fab3b00d9bb
2021-08-20 10:07:03 +02:00
Thiemo Kreuz 4f9426d61a Rename …ParameterCheckboxLayout now that it's an actual Widget
This is a direct follow-up for Idc5e048.

Bug: T285323
Change-Id: Ia03d594386a9a59a4819bf78c7d2edcd465dfd52
2021-08-20 09:56:40 +02:00
jenkins-bot eaeaf7240a Merge "Rename custom outline widget events to not conflict" 2021-08-19 13:49:29 +00:00
jenkins-bot 834d7fee77 Merge "Rename conflicting .setSelected() method in outline widget" 2021-08-19 13:46:24 +00:00
jenkins-bot 2326468533 Merge "Remove unused code from ve.ui.MWTransclusionOutlinePartWidget" 2021-08-19 13:43:26 +00:00
Thiemo Kreuz 095c891040 Remove unused code from ve.ui.MWTransclusionOutlinePartWidget
* getPartId() is unused.
* Use this.data instead of a custom this.partId.
* No need to store this.header as a property.
* Rename the event to "headerClick". That's enough when the
  event comes from a widget that does have the word "part" in
  it's name.

Bug: T274544
Bug: T288827
Change-Id: I8c70425403c6cd6a19e3a1cacb2b085e5c8b2e46
2021-08-19 11:03:44 +00:00
Thiemo Kreuz 3365c0fd66 Rename custom outline widget events to not conflict
The base widgets we are going to use (notably OO.ui.OptionWidget
and OO.ui.SelectWidget) also have events, and some of them use
the same names. Such conflicts are really hard to track down.

This is meant to be temporary. The goal is to use the events
from the base classes and get rid of the custom ones, if
possible.

Bug: T285323
Change-Id: I0f103a5bbb8fb800e57009e3bf709f00a651fdda
2021-08-19 09:55:11 +00:00
Thiemo Kreuz 68712e979b Rename conflicting .setSelected() method in outline widget
The problem here is that the OO.ui.OptionWidget base class
(changed in the previous patch) also contains a .setSelected()
method, but with slightly different behavior. This results
in crazy behavior when I try to make the outer widget an
OO.ui.SelectWidget.

Renaming the method to be a custom, private helper method
avoids this problem.

The plan is to actually use the default setSelected()
behavior and get rid of the helper method. This will be done
in later patches.

Bug: T285323
Change-Id: I84e752f20a4d07007fd4e61989f9b34983410950
2021-08-19 09:54:55 +00:00
jenkins-bot 68cfd5da16 Merge "Remove addParameter button from new sidebar" 2021-08-18 09:34:26 +00:00
Thiemo Kreuz 220c98ab44 Make template parameter checkbox widget an OptionWidget
The plan is to change the outer …TemplateWidget (which contains
a list of template parameter checkboxes) into a SelectWidget.
But this requires the elements in the list to be a subclass of
OptionWidget.

Note this change does not have any effect, as of this patch. But
this makes the following patches smaller and easier to follow.

Additionally:
* The OptionWidget class is already a LabelElement. No need to
  initialize this twice. This happens via the parent constructor
  now.
* Remove CSS that is not needed any more after Idc5e048. This is
  not a FieldLayout any more.
* Update some related code documentation.

Bug: T285323
Change-Id: I92e8fd2bbece9e6c55083cdfe6ed7ad16a64d688
2021-08-18 11:11:41 +02:00
WMDE-Fisch 891814d12c Remove addParameter button from new sidebar
Bug: T272487
Change-Id: Ie790a056f16727a89199f9737862281e0ac455a3
2021-08-18 09:22:43 +02:00
jenkins-bot d417d3709b Merge "Use the "wikitext" for content in transclusions" 2021-08-17 13:32:37 +00:00
Thiemo Kreuz 7503b323b1 Stop re-creating template parameter pages over and over again
This is what actually happens:
* We call `addParameter()`.
* This triggers an `add` event.
* This calls an `MWTemplateDialog.onAddParameter` event handler.
* This code doesn't check if a parameter already exists (because
  it shouldn't). It detroys the page in the content pane on the
  right and recreates it from scratch.

The only reason we do this is to focus the input field on the
right. This patch introduces a dedicated event to do this.

Bug: T288827
Change-Id: I47effe05427cfabfcf534920edee79521eaa033f
2021-08-17 13:34:41 +02:00
WMDE-Fisch 199d9536d1 Use the "wikitext" for content in transclusions
Bug: T272482
Change-Id: Ibe68b49c25b4f0d88483c22e0e4b8462d935a45b
2021-08-17 13:06:49 +02:00
Thiemo Kreuz 88ebae9b0f Remove unused properties from template part widget classes
It doesn't look like we are going to need these.

Bug: T288827
Change-Id: I0bcc1aea85ce589db814a1bed12226d47728d7e9
2021-08-16 14:52:54 +02:00
jenkins-bot 5c9bfe6a33 Merge "Make checkbox element in the sidebar an actual widget" 2021-08-16 12:36:40 +00:00
jenkins-bot c3ff9df19e Merge "Basic keyboard navigation in the new template dialog sidebar" 2021-08-16 12:36:37 +00:00
jenkins-bot ddfde5f3b6 Merge "Remove duplicate class property from checkbox layout" 2021-08-16 11:56:16 +00:00
jenkins-bot eb0e2cd507 Merge "Change filterParameter(s) event to work with a list" 2021-08-16 11:10:09 +00:00
jenkins-bot 41c286c68c Merge "Rename ambiguous "add button" click handlers" 2021-08-16 11:01:36 +00:00
Thiemo Kreuz d1f87646df Make checkbox element in the sidebar an actual widget
This should not have any effect on how the thing looks and
behaves.
* All elements in the sidebar should be reachable with the tab
  key, including disabled elements.
* Enter jumps to the corresponding paremeter in the content
  area on the right. But enter doesn't change the checkbox
  state.
* Space canges the checkbox.

The class will be renamed in the next patch.

Bug: T285323
Change-Id: Idc5e04828ece0ba77a65e4c839cd3ffccc3b6733
2021-08-11 09:12:00 +02:00
Thiemo Kreuz 0bbcb436c1 Change filterParameter(s) event to work with a list
As discussed in Ia44da16. This change avoids possibly hundreds
of events (when a template does have hundreds of parameters),
and replaces them with a single one.

Bug: T288202
Change-Id: Ic819e8c93e872b653c238f396f1f327b6a8759d2
2021-08-11 08:06:22 +02:00
Thiemo Kreuz f32a062e3f Basic keyboard navigation in the new template dialog sidebar
There is still a lot to do, but this implements some basic
behavior that was missing before.

* You can now use the tab key to navigate all checkboxes,
  including disabled ones (required parameters).
* Enter key now works on both the checkbox as well as when
  the entire line is highlighted. Enter forces the checkbox
  to be checked and moves the focus to the content area.
* Mouse clicks now work on the entire line. Before, only the
  text label was clickable.

Open issues (not to be resolved in this patch):
* Clicking the text label and the empty space after the text
  label does different things. Probably shouldn't.
* Should a click on the label check the checkbox?
* Space key should probably not move the focus to the content
  area.
* Focus rectangle is different on disabled rows. Is this ok?
* Background color when a line is focussed is missing.

Change-Id: I22ccd1bea92e4f098d4b25a9e38cddde5c103423
2021-08-09 18:38:28 +02:00
Thiemo Kreuz 984a3a1ebf Remove duplicate class property from checkbox layout
The checkbox is the first parameter in the parent constructor.
The parent is the FieldLayout class. The checkbox becomes the
this.fieldWidget in the parent class. Just use this instead of
storing a duplicate reference.

Bug: T274543
Change-Id: I4ae7d467334f88f2be93a62660145a025089401f
2021-08-09 18:31:30 +02:00
Thiemo Kreuz 2ce7bb0213 Split long ve.ui.MWTransclusionOutlineTemplateWidget methods
This direct follow-up is meant to resolve the change request
from I1b0480a.

Bug: T274551
Change-Id: Iee4bab0b9807e6d36435d31bf8ec879d13d9ad3b
2021-08-09 10:40:53 +00:00
Thiemo Kreuz 6446cf950f Fix off-by-1 error when deprecated parameters are hidden
This is a direct follow-up to I6ebd020.

Steps to reproduce the bug:
* Make sure you have a template with a deprecated parameter.
  The position doesn't matter.
* Add the template. The deprecated parameter is hidden.
* Add an undocumented parameter, e.g. "b". This is added to the
  end, as it should.
* Add an undocumented parameter "a". This should appear before
  "b", but doesn't. The reason is because the invisible
  deprecated parameter is in the list that is used to calculate
  the index, shifting it by 1 (or more when there are more
  hidden parameters).

This patch includes a few closely related changes:
* We can loop the list of checkboxes directly instead of
  indirectly via the list of parameter names.
* I made it so that an active filter only resets if it would
  hide the new parameter. The original problem we had to solve
  was that the new parameter would always be visible, even if
  it doesn't match the filter. This awkward mismatch is still
  guaranteed to not happen.

Bug: T274551
Change-Id: I1b0480ae836cc19b77b159d3fb30ff32e8c59df4
2021-08-06 12:24:49 +00:00
Thiemo Kreuz 3e5a2d6c82 Filter right content side of the template dialog as well
I came up with a new event to do this. This event is triggered
individually for each parameter. An alternative is a single
event that gets a list of visible parameters. Is this better?
What do you think?

Bug: T288202
Change-Id: Ia44da16917c28171a01aef0f1c613dcd5d3266ba
2021-08-05 14:36:10 +02:00
Thiemo Kreuz f37814ba61 Rename ambiguous "add button" click handlers
Change-Id: I25fd1430443feffcc3fb17115dc4129890063c48
2021-08-05 10:51:26 +02:00
Thiemo Kreuz 5e2a898459 Don't offer deprecated parameters when they aren't used
This affects only the new sidebar. Deprecated parameters don't
get a checkbox, except they are used already. "Used" includes
parameters that are present, but empty.

Bug: T274551
Change-Id: I6ebd020d02650c19060345d13495373acab363df
2021-08-04 16:34:54 +02:00
jenkins-bot 98aeab538b Merge "MWInternalLinkAnnotationWidget: show disambiguation pages last" 2021-07-28 03:00:52 +00:00
MusikAnimal 4fbab29e22 MWInternalLinkAnnotationWidget: show disambiguation pages last
Disambiguation pages are rarely the page users intend to link to,
especially with newbies. By moving the disambig page(s) as the last
result, the user is more likely to pick the page they actually intended
to link to.

Bug: T285510
Depends-On: I2b8545f6dd4849629037f81f48a540748e60da83
Change-Id: Id55a19e7665d8f88559c471de36e5447fb2babb0
2021-07-27 18:36:50 -04:00
Andrew Kostka ef33a908a0 Dynamically set the visibility of the sidebar search
With this users can also filter undocumented parameters
that they added to an empty starting template.

Bug: T272481
Change-Id: I99adb38b0ae4d4ade91fcb506f10c0222b9bb5e8
2021-07-20 13:11:08 +02:00
Andrew Kostka 6cec42f8dc Don't reset the sidebar search field if the search widget is undefined
Bug: T286987
Change-Id: I66116ea08d4682e179e9eb70d117454194e3517d
2021-07-20 12:08:00 +02:00
Andrew Kostka d44bc19d20 Adjust the styling for the template parameter search
Bug: T272481
Change-Id: Ie1c6b95cf32640401cb2a17bcda656a40a22e9b4
2021-07-16 18:03:48 +02:00
jenkins-bot 317b78782e Merge "Make it possible to reuse existing transclusion outlines" 2021-07-16 14:25:24 +00:00
jenkins-bot 4cb9b05668 Merge "fix order of sidebar elements" 2021-07-16 14:15:16 +00:00
Svantje Lilienthal 2f4e73d6ed fix order of sidebar elements
Bug: T272481
Change-Id: Ifd925bd6e8b972fd5d4e851c3a39a91aeac97d43
2021-07-16 15:10:56 +02:00
Thiemo Kreuz 5c6d2212da Make it possible to reuse existing transclusion outlines
Note that this patch alone probably does not make that much
sense. The code executed is pretty much the same. The only
difference is that the empty (!) …ContainerWidget is kept
and re-filled with what might be a completely different
template.

This is not much of a difference to before when the
container was recreated.

This change will make more sense when the container has to
manage more state, e.g. focus states. This state will
survive then.

Change-Id: Ic336d10a595e3e222741a3dc57c1d54639166b7a
2021-07-16 14:43:31 +02:00
Thiemo Kreuz 434c11f6de Fix incomplete template dialog event handling in new sidebar
Notably:
* Don't require the model in the new sidebar via dependency
  injection, but connect the event handlers later. This is
  relevant because we currently create the new sidebar in the
  wrong spot. Removing the hard dependency allows us to split
  the code and utilize initialize() and getSetupProcess()
  correctly. This will be done in a following patch.
* The change event now includes the new position. This makes
  it very easy to add this missing feature to the new sidebar.

Also:
* Stop triggering change events when nothing changed. These
  events are expensive. They bubble all the way up to the
  TransclusionModel, and to all linked
  onTransclusionModelChange() handlers.
* Update event documentation to make this more visible.

Bug: T274544
Change-Id: Iafe29f18a6fed14d9c3124c9756aa840886afbbc
2021-07-16 11:29:26 +00:00
Thiemo Kreuz 1164f67f40 Tweaks and cleanups to template parameter search
Notably:
* Include parameter aliases, labels and descriptions in the
  search.
* Don't use a possibly outdated search index, but live data.
* Clear filter when a new checkbox is added.

Bug: T272481
Change-Id: Ie90a803af6178a8bb6de370a0f8e079800d9f8a2
2021-07-16 12:11:13 +02:00
Svantje Lilienthal 066c663864 Add parameter search to sidebar of VE TemplateDialog
Bug: T272481
Change-Id: If044e5d134f1b24f939c4786949e6ca34fb79e1e
2021-07-16 09:48:29 +00:00
Thiemo Kreuz 766b220f5a Finishing touches to new template editor sidebar
In detail:
* Allow clicks on all elements in the new sidebar. This should
  focus the corresponding element on the right.
* Make all elements in the new sidebar tabbable.
* Fix MWTransclusionOutlineTemplateWidget.createCheckbox() to
  not need a temporary param object any more.
* Rewrite more code in MWTransclusionOutlineTemplateWidget to
  be shorter and easier to read.
* Fix MWTemplateModel.addParameter() to not do way to much
  stuff when a parameter already exists.
* Update code documentation.
* Use more specific, less ambiguous variable and method names.

Bug: T274544
Change-Id: Iaf6f7d1b0f7bf0e9b03eb86d01f3eceadece6fe4
2021-07-15 08:40:35 +00:00
Thiemo Kreuz ff9f8a9e2d Focus template editor elements on click in the new sidebar
Clicks on the left side now focus elements on the right
side.

This patch also simplifies the …ContainerWidget constructor.
The config parameter should only be used for "OOUI things"
that are needed by subclasses and mixins. But the parameters
we have here are not "UI things".

Passing them as config passes them to classes where we don't
know what they do with it. What probably happens is that
some class keeps a reference to the entire config object,
which doesn't have a benefit and possibly blocks garbage
collection.

Bug: T274544
Change-Id: I0c0e4a1ba59dcb43141338ffe939c9c6783e000d
2021-07-15 08:40:28 +00:00
Thiemo Kreuz 198c5dba77 Make button to add undocumented template parameter work
Thanks to the widget now being an actual ButtonElement.

Bug: T274544
Change-Id: I1b0ef28b0aa115a027a07f3ae53c583598483e96
2021-07-15 08:40:20 +00:00
Thiemo Kreuz eb1f1e28a3 Make new template editor sidebar items actual ButtonElements
Actually reusing this OOUI mixin gives us a lot of well
developed functionality we need anyway. Most notably proper
event management, e.g. click events.

The number of CSS properties we need to override is managable,
I would argue. Let's see:
* Our buttons are not inline-elements, but should use the full
  width.
* No focus-border left and right for the same reason.
* We want much more inner padding.
* We want a stronger hover effect.
* We need to fine-tune the position of the icon. This is
  because of the inner padding.
* Need to get rid of a negative margin that's only relevant
  for inline-buttons.

I currently feel like the benefits are worth living with
slightly more brittle code. Note that we can undo this change
any time because all this is well encapsulated in this new
class.

Bug: T274544
Change-Id: I33f275a958964d49e803e56bf74a6fa961093da1
2021-07-14 13:31:40 +02:00
Thiemo Kreuz 170ca9d58a Reuse generic button widget for elements in the new sidebar
This introduces another generic "button-like" class that can
be reused in multiple places in the new sidebar. The main
change in this patch is the "add more information" button
which is now an instance of this new class as well.

This patch also simplifies over-complicated setup code in
related widgets.

Bug: T274544
Change-Id: I0cfe7675d02fdd5c5dc8d9198bb3f4aec9abf397
2021-07-13 17:23:27 +00:00
Thiemo Kreuz 31904688df Update new sidebar when moving template parts up/down
The new sidebar now updates accordingly when elements are
moved around.

Bug: T274544
Change-Id: Ic6bc3484c54523aa4edc6b48a843c47059569061
2021-07-13 10:18:20 +02:00
Thiemo Kreuz 226e2657ef More robust debug container for new template editor sitebar
Before, the new sidebar was hacked in a place where it confused
the BookletLayout logic. This became visible when using the
up/down buttons to move elements in the sidebar.

This new container wraps the new and the old sidebar. It also
uses a temporary color to make it easier to see where one ends
and the other starts.

Bug: T274544
Change-Id: I4e5b40b1d1556886fc85cff9e926a02e4888f032
2021-07-13 09:11:57 +02:00
jenkins-bot 5bd9eff8ea Merge "Full add/delete support for all 3 types in template sidebar" 2021-07-12 14:04:32 +00:00
jenkins-bot f92d85604c Merge "Add template outline widgets for all content types" 2021-07-12 10:52:19 +00:00
Thiemo Kreuz 5edf7dac18 Full add/delete support for all 3 types in template sidebar
From now on you can remove and add all 3 types of content from
the new sidebar.

Bug: T274544
Change-Id: If1e04ff503d72cbe9ea07c8036c9e3a0547cc0d0
2021-07-12 10:15:14 +00:00
jenkins-bot af8c144091 Merge "Move template outline item header into the base class" 2021-07-12 09:24:38 +00:00
Thiemo Kreuz a1384f34f3 Add template outline widgets for all content types
The two new widgets are pretty trivial now, thanks to the base
class.

Note there is still no code to delete the widgets. That's also
why you will always see a placeholder widget at the top. This
will be fixed with the next patches.

This patch also renames most of the "…TemplateOutline…" classes
to "…TransclusionOutline…" The reason is that these widgets are
not for a single template, but part of the container widget for
a more complex transclusion (i.e. a sequence of multiple
templates and wikitext snippets).

Bug: T274544
Change-Id: If4219b0b8ad4d1969ab1ec5ec4db0728811bab35
2021-07-12 09:19:06 +02:00
Thiemo Kreuz 2854be165e Move template outline item header into the base class
The icon and the name of the template are now created by the
base class. This is meant to be reused for other elements
that are not templates.

Bug: T274544
Change-Id: I76bbc0e8c0420e9c6357d093d5f5e1651a0c2719
2021-07-12 09:17:30 +02:00
Thiemo Kreuz fae6118071 Document and use mw.Api parameter defaults
Reasoning:
* format=json must be the default. Nothing else makes sense in
  the context of this code. This should not be a surprise.
* formatversion=2 is only a default when the custom
  getContentApi() is used, but not when mw.Api is used. One
  might argue that it's safer to always specify formatversion=2.
  However, this is not done in other places in this codebase.
  It should never be done or always.
* I find it confusing when the action=… is missing. Let's not
  rely on this default.

Change-Id: I6ca29f76bffc0849103c5bcff4aaf28fcaaa4c52
2021-07-12 09:13:59 +02:00
jenkins-bot 1569ab0a28 Merge "Remove empty container widgets that don't do anything" 2021-07-09 16:14:25 +00:00
jenkins-bot 0f1bef39b4 Merge "Abstract base class for top-level items in template editor" 2021-07-09 16:09:42 +00:00
jenkins-bot 48f711cd5c Merge "Rename CSS classes in new template dialog sidebar code" 2021-07-09 16:09:40 +00:00
Thiemo Kreuz 4018439348 Remove empty container widgets that don't do anything
This code doesn't do anything but adding an empty <div> to
something that is already a <div>. It doesn't even have a
class name, i.e. it's not referenced from anywhere. We can
add such containers back any time when it turns out we
actually need them.

Bug: T274544
Change-Id: I62546cc7939364db31f37b9de0c035974554544b
2021-07-09 15:57:11 +02:00
Thiemo Kreuz cfe2dadc93 Abstract base class for top-level items in template editor
This base class will be used to style the 3 types of top-level
items in the sidebar the same way, without the need to
duplicate code or styles.

Bug: T274544
Change-Id: I1a62ff610728d7150dea1717316ef20f6882783a
2021-07-09 15:48:08 +02:00
Thiemo Kreuz 1849924eff Rename CSS classes in new template dialog sidebar code
This matches the existing naming scheme better. I also plan to
re-use this class for other types that are not templates.
That's why the name is the more generic "transclusion" now.

This patch also removes a `padding: 2px` that's not that
helpful. We will need paddings later, but need to choose them
much more carfully.

Bug: T274544
Change-Id: I6f0f630da2230b023b3fb065e5ad86d8211bb7b3
2021-07-09 15:29:29 +02:00
Thiemo Kreuz 12dca65912 Delete last template search result, not a random one
Because the API uses a generator, the search results are ordered
alphabetically. The actual search result ranking is in a .index
field. This code accidentially deleted the alphabetically lowest
template instead of the least relevant one.

Change-Id: I79de024feb569e9f06bedab908a6509a4d4fa99b
2021-07-08 15:33:42 +02:00
Thiemo Kreuz ba1718ea11 Always add 1 prefixsearch match when searching for templates
We do this additional prefixsearch anyway. What we did before
was ignoring the result when it was not a 100% exact match.
Instead we can always add this 1 prefixsearch result when it
was not already part of the CirrusSearch result set.

This won't happen often. Usually the 1st prefixsearch result
was already part of the CirrusSearch result set anyway. But
if it wasn't, that's a serious issue for expert users that
expect the search to behave similar to the suggester at the
top of the MediaWiki interface (which is also a prefixsearch).

Change-Id: I959d2b058a3d64596a8cfbe5476ab351e40f8760
2021-07-08 11:15:34 +02:00
jenkins-bot 5c738aa74f Merge "Fixes and updates to template related JSDoc tags" 2021-07-08 08:24:44 +00:00
jenkins-bot c0b7783fc3 Merge "Change style for adding an "Unknown field" in the parameter search" 2021-07-08 08:20:59 +00:00
Svantje Lilienthal ee98622076 Change style for adding an "Unknown field" in the parameter search
Bug: T286236
Change-Id: Ibb3df034c9b423dd4130d8242bd7bf0dc742ee2f
2021-07-08 09:20:25 +02:00
Thiemo Kreuz d68e110e67 Fixes and updates to template related JSDoc tags
Some details:
* The config is not optional in these cases.
* This patch continues to remove some comments that don't add
  any information but just repeat what the code already says.

Change-Id: I5c27cd01ad80709bb583256821d65c6b65b74b05
2021-07-08 06:36:56 +00:00
Thiemo Kreuz f04feb043f Remove duplicate code from ve.ui.MWParameterSearchWidget
Introduced in 2 separate patches by the same author. This
patch removes the line that was introduced last.

Change-Id: I77575f7afe0f9276c7b54ee44d828e7ccb87c978
2021-07-07 09:34:50 +02:00
jenkins-bot a19bc2960f Merge "Keep undocumented parameters in the sidebar when unchecked" 2021-07-05 09:06:32 +00:00
jenkins-bot 8718ac8ece Merge "Fix parameter ordering when using aliases" 2021-07-05 08:33:01 +00:00
Andrew Kostka a867469b7b Keep undocumented parameters in the sidebar when unchecked
Bug: T274550
Change-Id: I010006cdbe5ce5cb79cc4248840d74cb992ff834
2021-07-05 10:17:55 +02:00
Andrew Kostka 6af13f0d42 Fix parameter ordering when using aliases
If a known parameter is present using one of it's aliases, then
only the aliased name should be shown to the user. This patch,
therefore, resolves the issue of the same parameter being added
to the sidebar twice.

When adding a parameter that is aliased, it will receive the same
position as the non-aliased parameter it is replacing.

Bug: T274545
Change-Id: If4e58c941fd0f0e690d3603935f5a5d3f9938163
2021-07-05 08:14:42 +00:00
Thiemo Kreuz 6757a1bfa9 Character = is not allowed in template parameter names
It's allowed in values, but not in parameter names. The moment
a parameter name contains an `=` the parameter name will be cut
off at this point, and what's behind the `=` will become part
of the value.

You can test this on any live wiki. Open VisualEditor. Edit any
template. Add a parameter with a name like `a=` and some value.
Switch to wikitext mode and back. Edit the template. The `=` is
now part of the value.

Bug: T98065
Change-Id: I5e00e8fac987471243605816b041d3638927ac3b
2021-07-04 14:03:21 +02:00
Thiemo Kreuz fecded9f70 Fix parameter search being to relaxed on unknown params
When what you type is a partial match, you can't add it as an
unknown parameter, even if that would be the correct action. The
reason for this unexpected edge-case is a mistake in the code
where a variable called "exactMatch" is set when a *partial*
"nameMatch" was found.

Bug: T285940
Change-Id: I6d12e2d7251a19d7d5f8be544c3c32a3ac14fcf0
2021-07-01 20:09:51 +02:00
Thiemo Kreuz 99523b855c Use and document the term "known parameter" in template code
The so called "spec" class keeps track of parameters that have
been used before, no matter if documented via TemplateData or
not. Removed parameters are still "known" (i.e. have been seen
before).

This feature allows to easily find previously used parameters
names when an undocumented parameter was removed and the user
tries to add it again.

Bug: T285483
Change-Id: Ia1555eea87cd99e7a3f386f4279ec5a80fb98a79
2021-07-01 12:03:38 +00:00
Thiemo Kreuz db531ddba5 Add missing search result limitation to template search
Bug: T274903
Change-Id: If57d28f7796d69825a25fa9b67bcd5c127c9e3b7
2021-07-01 09:33:52 +02:00
jenkins-bot f9cb2e3519 Merge "Don't create a checkbox for ve.ui.MWParameterPlaceholderPage" 2021-06-30 14:31:59 +00:00
jenkins-bot 0e3bf54e3f Merge "Add documentation to ve.ui.MWTemplateOutlineTemplateWidget" 2021-06-30 14:31:57 +00:00
jenkins-bot 217793ebd1 Merge "Use the parameter's label in the sidebar" 2021-06-30 14:31:55 +00:00
Thiemo Kreuz bc4aeed86e Avoid the term "canonical order" in template related docs
While the term "canonical" is not wrong, I find it still
somewhat ambiguous.

1. "Canonical" could mean different things. E.g. is the order
of parameters as they appear in the article's wikitext the
"canonical" one? It's possible to argue like this, esp. if a
template doesn't have TemplateData documentation. In this case
the only order known is the one from the wikitext.

2. "Canonical" sounds like the parameters must be reordered.
But this should never happen. Not having dirty diffs is more
important than having the parameters in a specific order.

Bug: T285483
Change-Id: I23658d37fea50b727667677ac6a49066673b2135
2021-06-30 09:38:28 +02:00
Andrew Kostka 0c141e2581 Add documentation to ve.ui.MWTemplateOutlineTemplateWidget
Change-Id: Ibc0b39fd417fa7eef5cf1cd52b9769c6514ce85d
2021-06-29 21:50:41 +02:00
Andrew Kostka 30917c8ba3 Don't create a checkbox for ve.ui.MWParameterPlaceholderPage
Change-Id: Ia02e86e026e618a4ace31306fe50f003c49080ae
2021-06-29 21:21:19 +02:00
Andrew Kostka 526a49672e Use the parameter's label in the sidebar
Change-Id: Ic2c00f51088d67453bb50ff0fa15f22c9fbd8e56
2021-06-29 20:44:17 +02:00
jenkins-bot 802be178e3 Merge "Extract MWTemplateTitleInputWidget.addExactMatch into a method" 2021-06-29 13:47:03 +00:00
Thiemo Kreuz (WMDE) e6d3828429 Revert "Extract "show all" to placeholder class"
This reverts commit 950a5300dc.

Reason for revert: This broke several workflows. The reason is
that MWParameterPlaceholderPage & MWParameterSearchWidget both
hold references to the MWTemplateModel. This model is not
always the same. The dialog might be the same when a template
is edited multiple times. But the model might be a new one.
From this point on the MWParameterSearchWidget pulls data from
an outdated model.

Bug: T284636
Bug: T285571
Change-Id: I7b9ea8cab8f17705ec8020f07e3732da6ba0e73c
2021-06-28 14:04:12 +02:00
Thiemo Kreuz b3bede3ba0 Extract MWTemplateTitleInputWidget.addExactMatch into a method
Same as in TemplateWizard, see I128bc00.

Bug: T274903
Change-Id: I8693b85625a8640e44c213300d7c6862430bec47
2021-06-25 17:07:32 +02:00
jenkins-bot ec2c42932d Merge "Label for each template in sidebar" 2021-06-24 12:34:52 +00:00
jenkins-bot acc41f5ed6 Merge "Wiring for adding and removing parameters" 2021-06-24 10:55:46 +00:00
Adam Wight cc95ed8ef3 Label for each template in sidebar
Bug: T274545
Change-Id: I1731373a63f96eda0e43fe042746eaed40bfe6fb
2021-06-24 12:50:05 +02:00
jenkins-bot f1534d9e51 Merge ""Add more information" should be a button instead of a checkbox" 2021-06-24 10:39:05 +00:00
Andrew Kostka 5e2cd392c7 Wiring for adding and removing parameters
Bug: T274545
Change-Id: I0514a93f4313914a654e5f24cf78950cb4893409
2021-06-24 12:31:43 +02:00
Andrew Kostka 47c7d4939f "Add more information" should be a button instead of a checkbox
Bug: T274545
Bug: T272487
Change-Id: Icc4d461d763290b0bc07ec8dbaa98c625fc9e068
2021-06-24 09:55:17 +00:00
jenkins-bot f06856b2d9 Merge "Remove extraneous ve.ui.MWTemplateOutlineCheckboxListWidget.js" 2021-06-24 09:37:34 +00:00
jenkins-bot 118ae98a2a Merge "Wire model changes into new template sidebar" 2021-06-24 09:31:46 +00:00
Andrew Kostka 6a890c31bd Remove extraneous ve.ui.MWTemplateOutlineCheckboxListWidget.js
Bug: T274545
Change-Id: I327ee06aff19fd2d3841e4e4a2d09a24c47e4d89
2021-06-24 11:12:12 +02:00
Adam Wight 64c5b093cc Wire model changes into new template sidebar
Only partially wired.

Bug: T274545
Change-Id: I961ffbdd82829b18c08a7c33759a05427103fa8b
2021-06-24 11:09:39 +02:00
jenkins-bot 2cbb32302f Merge "Inline many var declarations in the code below" 2021-06-23 09:24:05 +00:00
Thiemo Kreuz 4367235dcc Inline many var declarations in the code below
This makes the code more readable and easier to reason about.
The ESLint rule responsible for this code style was removed
just recently.

Notes:
* I focus on classes that are relevant for what the WMDE team
  does right now.
* I merge multiple `var` keywords only when the variables are
  strongly connected.
* Caching the length in a for loop makes the code hard to
  read, but not really faster when it's a trivial property
  access anyway.

Bug: T284895
Change-Id: I621fed61d894a83dc95f58129bbe679d82b0f5f5
2021-06-23 09:02:24 +00:00
WMDE-Fisch c4f59132ae Only add asterisk after word characters in improved template search
This will avoid that the search breaks in edge cases where symbols
are used.

Including a fallback for ES5 browsers. The fallback should cover
almost all cases. Worst case would be not adding the asterisk even
though it might be valid.

Bug: T284554
Change-Id: Ie4aee0b77492b7a73bc251a8723a206dbd641600
2021-06-21 21:07:28 +02:00
WMDE-Fisch 407ff95597 Rename OutlineParameterCheckboxWidget to OutlineParameterCheckboxLayout
This not really just a checkbox widget anymore it inherits from
FieldLayout and became something more in that direction.

Let's use a mixture of these things to make it a bit clearer.

See also comment in Ie81b84be288553343017c4aaf8691c4e266995f5

Change-Id: Iff1746a8e5e94b56eb6c27465405aaf6b74c2310
2021-06-21 09:08:54 +02:00
WMDE-Fisch 0e04315c66 Add missing newline in JSDoc
Change-Id: I88f5814e3691f4787a04ac8c882a4c836d786bd7
2021-06-18 14:13:31 +02:00
Adam Wight 988cda65dd Template dialog checkbox list
Introduces new widgets forming the backbone of the experimental
template dialog sidebar.

FIXME: `text-overflow: ellipsis` is not working yet, the container
styles need adjustment.

Bug: T274543
Change-Id: Ie81b84be288553343017c4aaf8691c4e266995f5
2021-06-17 08:47:47 +00:00
Thiemo Kreuz d9596c7f20 Add tooltip to "dismissible message" close button
Bug: T284742
Change-Id: Ibf0cb23c44d440e7a986bc85120f4ea0f844d999
2021-06-17 07:57:10 +02:00
jenkins-bot 6d101fb9d7 Merge "Extract "show all" to placeholder class" 2021-06-16 12:25:55 +00:00
jenkins-bot ab47e5ff9a Merge "Small code cleanups for the MWDismissibleMessageWidget" 2021-06-16 11:11:47 +00:00
jenkins-bot 2a74f10909 Merge "Dismissible feedback message for the template search" 2021-06-16 11:02:50 +00:00
Thiemo Kreuz feb902aba0 Small code cleanups for the MWDismissibleMessageWidget
* Re-focus the input field after closing the message.
* Store only the message key. That's all that's needed.
* Avoid a class property that's not needed.
* Use the config object instead of calling .setLabel() manually.

Bug: T284742
Change-Id: If8e8bb6460fa5aea8ddd46c2e27b5f08b7772896
2021-06-16 10:32:08 +02:00
Andrew Kostka 13d1c4d2ac Dismissible feedback message for the template search
Bug: T284742
Change-Id: I5dc32521b899c3c9d35d1bf77d346384e4cc87e6
2021-06-16 10:03:04 +02:00
Adam Wight 950a5300dc Extract "show all" to placeholder class
We can skip all the up and down message passing by persisting the
parameter placeholders for each template dialog.  If the parameter
list is expanded then the placeholder is deleted, on being created
again it will still have state.

To test: create a transclusion with two templates, each having many
parameters.  "Add more information" to add parameters, expand the
list by clicking "Show <num> more fields", then delete the parameter
placeholder using the trash cans.  Try different permutations to fool
the cache or collide with another template.

This is preparation for other template sidebar dialog work.

Bug: T284636
Change-Id: I23bdd38b173114c2a9afafc7465c4beb92d25869
2021-06-14 18:09:26 +02:00
Thiemo Kreuz c2017f74b2 Remove @param/@return docs that literally repeat the code
These don't add any knowledge but make the code harder to read
and maintain, and are an additional source of errors.

Change-Id: Ied57741a3f985e355adfddb4e75378d5c497faa9
2021-06-14 15:44:51 +02:00
jenkins-bot c29dc420e0 Merge "Fix object vs. array initialization in template search" 2021-06-14 13:25:30 +00:00
Thiemo Kreuz b81c18a017 Fix and update documentation in template dialog related code
Some of this was copy-pasted but forgotten.

Change-Id: I08c48e8e0a4cf17ec0888e4ce85427f4da825776
2021-06-07 23:47:23 +00:00
jenkins-bot df5238cd11 Merge "Fix duplication bug in MWTemplateTitleInputWidget" 2021-06-04 10:50:39 +00:00
Thiemo Kreuz e97e325ac6 Guarantee exact match when searching for a template
When the existing search results don't contain an exact match
(see previous patch), perform an additional search for the
title. This uses OpenSearch. This is recommended in multiple
places and also used in the quick search field at the top of
MediaWiki.

Again, I came to the conclusion that an isolated unit test
would be complicated and not test much anyway. Better test
on-wiki.

Bug: T274903
Change-Id: Ib575248e089ff66814400202d224deff6369c772
2021-05-31 08:31:49 +00:00
Thiemo Kreuz 1a37edc53f Move exact matches to the top in template search
This code detects a few edge-cases:

1. When some search results are exact matches, make sure they
are always at the very top.

2. When the prefixsearch API is used, e.g. as a fallback,
redirects show up as a separate metadata structure outside of
the pages array. Consider these and stop if there is already
an exact match.

3. CirrusSearch returns redirects as part of the pages array.
When there is an exact match, make these redirects separate
options and add them to the top.

All of this is case-insensitive, on purpose. In case two
templates with different capitalization exist, we rely on
the backend to return both. The code introduced here is fine
with this.

Notes:
* This doesn't guarantee an exact match is always there. This
  requires an additional HTTP request and is done in the next
  patch.
* I tried to write unit tests for this, but gave up. The setup
  is complicated. An isolated unit test would not test much
  anyway. Better test this on-wiki.

Bug: T274903
Change-Id: I64e1b5633e7b878a4d0d23d66229ca87e69d0045
2021-05-31 09:54:39 +02:00
Thiemo Kreuz 621bca1df4 Show redirects as part of description in template search
These are the most minimal (and therefor most stable,
hopefully) hacks I could come up with so far.

Bug: T274903
Change-Id: I28ba414dd34aad756e29400eb656f0942291a923
2021-05-27 12:40:51 +02:00
jenkins-bot d06554c81e Merge "Ensure correct classes are added to surfaces" 2021-05-25 19:33:17 +00:00
jenkins-bot 539dc5ddba Merge "Remove unused 'inTargetWidget' config" 2021-05-24 21:11:53 +00:00
jenkins-bot 028658a4e1 Merge "Remove/fix a few small pieces of unused code" 2021-05-24 13:23:53 +00:00
Ed Sanders a71dd4f797 Ensure correct classes are added to surfaces
* Create getSurfaceClasses method.
* Pass surfaceClasses to target widgets.

This ensures that the 'content' class is passed to mobile
target widgets, and the 'mw-body-content' class is added
in a less hacky way.

Change-Id: Ibce6d1a1d0fda63cca354761f1b91f808858e95b
2021-05-23 20:04:28 +01:00
Thiemo Kreuz 8f045a7155 Remove/fix a few small pieces of unused code
I found these thanks to PHPStorm.

Change-Id: Ieb30a95debb58d3a454ac3c6f0546e5dbbe77ed4
2021-05-21 11:43:45 +00:00
Thiemo Kreuz b15455ec3d Fix duplication bug in MWTemplateTitleInputWidget
Template names sometimes show up twice when searching for a
template in the "Add a template" dialog.

This is a bit hard to test. The code responsible for this
is not in a single place. The feature is in the upstream
TitleWidget class. It's not broken. It makes sense to
provide e.g. "foo" and "Foo" as two separate options when
the user typed "foo", but the page is named "Foo". Both are
valid, and the feature allows the user to pick either.

But the VE widget does it's own normalization. Both entries
are normalized to "Foo". Both do the same. The additional
one is pointless.

You can try this on the actual enwiki: Open VE, insert a
template, search for "Template:nHLE".

Change-Id: I65e706c4d131a2f8c605d7979a02ea56f831bf03
2021-05-21 11:43:31 +00:00
Thiemo Kreuz b7043d6f24 Fix object vs. array initialization in template search
The "redirects" part in a prefixsearch query is always an
array, no matter if formatversion 1 or 2 is used.

The "pages" part is an object with formatversion 1, and an
array with formatversion 2.

As of now this always uses formatversion 1. This is
hard-coded in the upstream TitleWidget class.

Change-Id: I8cde8e104f8a288015da745db41016f6639b453b
2021-05-21 11:24:48 +02:00
Thiemo Kreuz 333cadd5d4 Add star to template search term only when it's possible
Discussed in T274903#7077957. Note this might not be the
"perfect" solution. We are still experimenting, and this is
all hidden behind a feature flag. This is the change with the
most minimal impact. Actively trimming the input is another
solution, but with a bigger impact we might want to discuss
first.

Bug: T274903
Change-Id: I2ed06c04bb96c7b61bd7e87ad001e639ea6d06a2
2021-05-11 16:31:42 +00:00
Thiemo Kreuz 6e08a27fc7 Use standard search API when searching for templates
Bug: T274903
Change-Id: I7de8f6cc55ab678ed741ae5ebbaad608b9a9b0db
2021-04-30 12:52:45 +00:00
Ed Sanders bc846108d1 Remove unused 'inTargetWidget' config
Change-Id: I7708acbe1592460973e4017b594299b6d31dc328
2021-04-29 15:48:17 +01:00
Lucas Werkmeister b6a4e76d42 MWEditSummaryWidget: Don’t query for title
As far as I can tell, the code only uses the comment, nothing else.
Omitting the title probably won’t make the underlying database query any
cheaper, but it should at least save some network traffic.

Change-Id: Ideb66ce3a24fb4f42fe8fc22ba0e93d05724d8b6
2021-03-13 13:48:21 +01:00
Lucas Werkmeister 9d7ddcf066 MWEditSummaryWidget: Handle suppressed comments
Bug: T277368
Change-Id: I76887672a0e8b3a2047d1b1b47724f1ee513db23
2021-03-13 13:48:20 +01:00
Thiemo Kreuz d43f13f4f8 Reduce deep indention in MWTemplateTitleInputWidget
Change-Id: Ie1bd279753dba3b96b694660977b9f44f6f0834e
2021-03-02 14:34:41 +00:00
Ed Sanders 443eaded40 Move newline-stripping filter into MWEditSummaryWidget
Edit summaries should always strip newlines, wherever
this widget is used.

Change-Id: I37177771fef831037067d6244fb27cba5e06528b
2021-01-16 16:16:49 +00:00
Ed Sanders 3cde92d60e AceEditorWidget: Fix toggleLineNumbers
Change-Id: I1a48e4351b2249b1ccf0af5c9b2fadd9a97d5f04
2021-01-03 00:23:08 +00:00
Arlo Breault 2402f430b4 Preserve inline media tag name in galleries across edits
Follow up to I37799076852fa6f062c9d85bcebb15998fb44a80

Hat tip to Bartosz for pointing this out.

Change-Id: Ic2968240a015bac2f831203e586535d2f9574963
2020-12-16 17:28:51 -05:00
WMDE-Fisch 094a9aa044 Replace deprecated doNotIgnoreMissingTitles
This parameter name was deprecated and replaced in 1.31. See also
Ie5fe2097cda45968bb080643d3afcac0b2868a6c

Change-Id: Ie9d6c70d3dfe3954504d3d698c122dceede7603d
2020-12-15 12:52:55 +01:00
Ed Sanders 5c84f0cd88 Rewrite EducationPopup so it isn't a mixin
Reference images are moved to Cite and used by Citoid.

Bug: T170919
Bug: T171292
Depends-On: I02041246dda1b3d3ad1bcc0b014fa022e8259b62
Change-Id: Id97659ed1fa64a1223a8957fefaf2a149edd0e9c
2020-09-24 21:33:50 +01:00
Thiemo Kreuz 5e2b7506b6 Reduce duplication/clutter in MWParameterResultWidget
The MWParameterSearchWidget that shows a list of all available
template parameters displays the (human-readable) label and
description of each parameter (both given via <templatedata>), as
well as the parameter's internal name and aliases, if there are
any.

This turns out to be non-helpful in the majority of situations:
* When there is no <templatedata> yet, there are no labels.
  Instead, the names are used as labels, which means they are
  *all* identical and everything is shown twice.
* The same happens when manually adding an "unknown field". Simply
  start typing, and you can add parameters with any name. What you
  type is shown twice (actually 3 times, 1 time in the input
  field, 2 times in the result widget).
* Many template parameters are already nice, human-readable. Even
  if <templatedata> exists and specifies labels, these labels are
  often identical to the names. There is no need to come up with
  something else if the name is already good enough. (Exception:
  Localizations, but these are rare.)

Furthermore, this is a *search* result widget. The pretty much
only reason the names and aliases are shown is because the user
can search for them, and needs to understand why a parameter was
found. This still works fine.

For comparison, when a parameter is required you will *never* see
it's name, because the parameter is always there, and never shows
up as a search result.

Change-Id: I6b1dca1c94b2c496930b5bfdfe1c6f76898faa2a
2020-08-20 12:32:02 +02:00
Ed Sanders 4545f53245 build: Update eslint-config-wikimedia to 0.17.0
Fix instances of variable shadowing.

Change-Id: I6e2befb020d7d4b506c7b46131eafacd951aa6d1
2020-08-18 13:16:49 +01:00
jenkins-bot c17c7047ef Merge "Fix: provide proper focus order to Category popup" 2020-07-13 19:58:56 +00:00
Akinwale Alagbe 2f7765d1e8 Fix: provide proper focus order to Category popup
Bug: T257173
Change-Id: I99e9332adb83bf1197da827583b9f22f68b2f395
2020-07-13 21:30:38 +02:00
Akinwale Alagbe 2a581819ec Fix: Adding accessibility labels to Visual Editor template elements
Bug: T245669
Change-Id: I3b792ffde571047d9900920188e92634b8f50298
2020-07-06 18:46:59 +00:00
Ed Sanders 6076708ff3 build: Update eslint-config-wikimedia to 0.16.0
Change-Id: I638e0f82949597e2a2e4ea18fc2f0258f225358c
2020-06-02 21:30:00 +01:00
Ed Sanders 651756c4fc eslint: Enable the mediawiki/class-doc rule and make pass
Also minor other adjustments

Change-Id: I9ee48359e3e53799f2f6240e44b53972283ce328
2020-04-17 22:59:11 +01:00
jenkins-bot faa6d75de8 Merge "Adding accessibility label to template and field name edit textbox" 2020-04-16 17:04:54 +00:00
Akinwale Alagbe 229a249cca Adding accessibility label to template and field name edit textbox
Change-Id: Ieeb29de8534300751956eb76477b38578478b4a2
2020-04-02 21:02:55 -07:00
Ed Sanders de47496b19 Move MWutils to preinit and rename to parsoid utils
Bring in ve.dm.MWInternalLinkAnnotation.static.getTargetDataFromHref
and ve.resolveUrl, so that the file has no dependencies on VE.

Change-Id: I03bc455d5484a6c51f3fa2397c64936b829fe7e3
2020-03-24 23:13:16 +01:00
Akinwale Alagbe 30c90b867a Making Categories page in page option dialog accessible
Bug: T247122
Change-Id: Id91438bf6bc1bf0781fbbcbed32326c5700bfb7d
2020-03-06 13:32:48 -08:00
Akinwale Alagbe d3292378cc Fix:Internal and External Link annotation widget
Adding the ability to special aria-label for the link annotation widgets
in order to aid accessibility to visually impaired audience

Bug: T245294
Change-Id: I3e1fd4a3e3a951092b5212397acc38b2b89a23c2
2020-02-24 16:40:19 -08:00
James D. Forrester 2c77e88d2c doc: Bump copyright year for 2020
Change-Id: I30539877543dc2a57bd1428a00d10ac46d8fc294
2020-01-08 09:13:24 -08:00
James D. Forrester 60721584fe Update VE core submodule to master (b1617fdca)
New changes:
d4a21a7e7 Localisation updates from https://translatewiki.net.
0e99d907a Update OOUI to v0.36.0
c422b8313 Localisation updates from https://translatewiki.net.
b1617fdca Update OOUI to v0.36.1

Local changes:
* Rename onLookupMenuItemChoose → onLookupMenuChoose
  (deprecated in OOUI v0.36.0)

Change-Id: If66f3f16c0e882e99b0d768a3cf4170d24e7093e
2019-12-13 18:06:59 +01:00
Ed Sanders 4c86c54e46 Replace $.when with ve.promiseAll
Add linting guards, except in preinit

Change-Id: I999641eddb0e0f5b112ec2259dbafc1e816e3437
2019-11-04 22:06:54 +08:00
David Chan 22098d6b16 Convert $.Deferred() to ve.createDeferred(), except in preinit
Follow-up to a8e07e026dea4f54241d1dbb6b7bcdbd8c670db2 in core.

Change-Id: I09333adb4876c6e584a4a6b6a1628227c4cd2616
2019-11-02 13:06:28 +08:00
Ed Sanders ffa3742ce1 build: Update linters
Change-Id: I03d1a8e63b730ad98ec07ad5f630ba82698de5be
2019-11-01 16:20:22 +00:00
Ed Sanders 4da31e7c9e Update VE core submodule to master (3075d3f8c)
New changes:
4af3f84f7 Mark surface as "showAsDeactivated" when opening a window
79eb0e4e5 ve.ce.Surface: Guard against focusing a un-initialized surface
4124c275e [BREAKING CHANGE] ve.ui.TargetWidget: Construct a real target inside the widget

Local changes:
* Use new target widget
* Remove calls to deprecated methods
* 'surfaceReady' event was upstreamed

Bug: T236400
Change-Id: I765d657c172d96c3b2e2ae5998083e4926a31f15
2019-10-25 17:16:17 +02:00
Ed Sanders 41572f2595 build: Update eslint-config-wikimedia and fix
Change-Id: Ib9cf45a393438e2eb47fd1b0c837d2d6acb06541
2019-10-03 00:54:54 +01:00
jenkins-bot 7f7cf6ce79 Merge "MWInternalLinkAnnotationWidget: adjust the input for relative links to subpages" 2019-09-20 11:23:40 +00:00
Ed Sanders 3b09a0719c Link inspector: Turn off 'addQueryInput'
The double result creates more confusion that it clears up,
and now that the query input is always used for text insertion
it is less of an issue that we don't have a case-exact match
in the results list.

Bug: T230819
Change-Id: I58cbe740fa7d0327aadd5dd111161bb7087a4ddb
2019-08-27 12:17:44 +01:00
Bartosz Dziewoński 84d548e7b1 Remove redundant @method annotations
A @method annotation is only necessary when the docblock is not
directly followed by a function declaration (in which case JSDuck
assumes it documents a property), e.g. when defining an abstract
function or referencing a function from another library.

I verified that JSDuck generates exactly the same output before and
after this change (docs/data-<hash>.js files are identical).

Change-Id: I7edf51a8560ab9978b42800ab1026f0b5555c3bf
2019-08-21 23:33:15 +02:00
James D. Forrester 05fb44ae56 build: Upgrade eslint-config-wikimedia from 0.12.0 to 0.13.1
Change-Id: I43f407da92f59a8bf758cc2586e84aa5e18d9ab0
2019-08-02 09:51:07 -07:00
Bartosz Dziewoński 7ac972d408 ve.ui.MWInternalLinkAnnotationWidget: Remove 'maxlength' to fix pasting URLs
Bug: T228240
Change-Id: I1f1be3a0893bdf8b7f9d07301ed01673eda8327d
2019-07-29 22:07:51 +02:00
Ed Sanders b35241497a Use type=url for external link input
Change-Id: I13cfdaaf5e94f07d16270df2933d1b23cf9f0ff7
2019-07-24 13:50:11 +01:00
jenkins-bot 14539bfe22 Merge "Make page title the target title" 2019-07-15 19:08:11 +00:00
tcreusc 57317a20e4 Make page title the target title
There are cases where the page title and the real/desired page name
are not the same. Fixing that also fixes the suggestions that appear
in dialogs (see related bug).

Bug: T193132
Change-Id: Iafa84c05bea08ebb061ee6d1323eb50945b39815
2019-07-15 17:22:17 +00:00
Niklas Laxström ea66017b4b Remove non-existing showRedlink from ve.ui.MWInternalLinkAnnotationWidget
It was removed in 3e31a31 in 2016.

Change-Id: Ib7383a4ff585258a98d6795487e912597b41900e
2019-07-10 12:18:48 +02:00
Ed Sanders d4bd5d14c8 Fix link normalization when opening inspector
Move fix for I92ffc19eab4e to getInsertionData as getTextFromAnnotation
is also used when populating internal link search field.

Bug: T226645
Change-Id: I60806932b00a742dae52651fb7931caf07413361
2019-06-26 16:16:17 +01:00
Ed Sanders c1130d386c MWEditSummaryWidget: Use showSuggestionsOnFocus flag
Bug: T169484
Depends-On: Ib47c9831ea712bf92b56a88474c3419067124458
Change-Id: I8697e153d4ed0bfbc8d89b65ff63a302c11a27ea
2019-05-24 11:09:26 +01:00
Bartosz Dziewoński d43262feb6 ve.ui.MWEditSummaryWidget: Remove a hack for T220204
Change-Id: I1539eb72b9b313c32743b300a58a734f3eaafef4
2019-05-23 21:30:15 +02:00
Ed Sanders 1168db2370 Link inspector: Pass new 'showInterwikis' option to title widget
Bug: T222831
Change-Id: I28a8c8cbb90f9917301bafa877e0ae66970816e7
2019-05-08 13:48:24 -05:00
David Lynch 4c68fe654e MWInternalLinkAnnotationWidget: adjust the input for relative links to subpages
If in an appropriate namespace, automatically add the name of the current page
to the beginning of internal links that start with a /. Same behavior as
wikitext link-parsing, essentially, just made explicit in the UI.

Bug: T110413
Change-Id: Idf9dc3fafab0e9c809eaf6c523c80da57577bb61
2019-05-02 11:59:05 -05:00
Ed Sanders 934572cdf7 API: Use formatversion=2 by default
V2 has better handling for booleans.

Change-Id: I5388bd2cc64ae0c9ed4a185adce1e3bb4cdd92fc
2019-04-30 19:31:28 +01:00
Ed Sanders e3846ed09b EditSummaryWidget: Don't highlight first automatically
Bug: T50274
Change-Id: If9d46116caac381bfc7264652429377e60bb2a0b
2019-04-24 17:58:46 +01:00
jenkins-bot 32985886e3 Merge "eslint: Enable valid-jsdoc" 2019-04-17 18:39:41 +00:00
Ed Sanders 0db4ae6e00 eslint: Enable valid-jsdoc
Change-Id: Ia0d1e57246a1c567d73022ceca9b8c02850f9bc8
2019-04-17 17:13:39 +01:00
Timo Tijhof ef36f4b0a1 Move usePageImages/usePageDescriptions from page conf to site conf
These do not vary by user or page, and can thus be loaded asynchronously
via the startup module, rather than blocking rendering and fetching
of modules on all pages.

In a future change, it might be better to go a step further and bundle
these with a module so that they only load as-needed instead of still
on all page views, but this should be an improvement nonetheless.

Change-Id: Icae3712ac5546a90bc7ffd787b0f3285dff6a26f
2019-04-17 00:10:27 +01:00
jenkins-bot afdd97c58f Merge "EditSummaryWidget: Disable pending animation" 2019-04-09 20:13:07 +00:00
Ed Sanders ed0105b5a1 EditSummaryWidget: Disable pending animation
Animation shows breifly on every keystroke, even though
only one server request is made, as the promises always yield
to a browser animation frame.

A pending animation isn't really required for autocomplete
as the results are only optional suggestions.

Change-Id: Ifa257592b10d84dccfa3e0c819c1edf1f7ef9cfa
2019-04-09 19:54:39 +00:00
Ed Sanders e2dfdf0ef7 EditSummaryWidget: Don't show suggestions on focus
Bug: T220176
Change-Id: Iffad075929d8835eb4f8677b33c3edd30a27b3f8
2019-04-05 14:04:29 +01:00
Ed Sanders 1ffb574450 Edit summary autocomplete
Bug: T50274
Change-Id: Ida462f3dea325902459546af97e66cd9d0c86166
2019-03-09 14:03:27 +00:00
jenkins-bot 1c083a362e Merge "Add more read-only implementations" 2019-02-25 23:59:13 +00:00
Ed Sanders c04d3da853 Add more read-only implementations
* Gallery:
  - Disable add/remove image buttons in read-only mode
  - Make image list undraggable
* Template: Disable outline controls
* Transclusion: Add/remove buttons on template pages
* MagicLinkNodeInspector: Disable input (e.g. ISBN links)

Bug: T210142
Change-Id: Ibb03ab0bfd55ef5bf7d7558c217c779d7904a134
2019-02-25 20:01:11 +00:00
Ed Sanders 33774758b7 MWCategoryWidget: Implement setDisabled
Change-Id: I443f2b55e2f17fb3c182e6cb22e392434513ce6c
2019-02-25 12:56:37 +00:00
Ed Sanders 18907dde5a Implementations for read-only mode
Depends-On: Ifaa74be266c048d87f94b4ae2df59cafc7aa155f
Change-Id: Iedd1bd9ce17750ad8528c1a053293c4a7321c5de
2019-02-22 18:20:51 +00:00
Ed Sanders 332aa1f3d2 build: Update eslint-config-wikimedia to 0.11.0
Change-Id: I5a294705eed1760e2d4dde33934d2ffb12e29525
2019-02-20 20:23:43 +00:00
Ed Sanders 3269d53632 Support only surfacing part of the document
Bug: T76541
Depends-On: I227a0d704b9b337cff2102d424be9795d6362ed7
Change-Id: Iac71a51c8696434658f24fbb41c8142237bd810e
2019-02-13 19:03:44 +00:00
Chunliang Lyu 4774fbdf5c Fix TypeError in MWTocWidget.initFromMetaList
If a page contains __NOTOC__ magic word, it would break the VisualEditor
with "Uncaught (in promise) TypeError: Right-hand side of 'instanceof' is not
an object at VeUiMWTocWidget.ve.ui.MWTocWidget.initFromMetaList".

The issue seems to be that we removed ve.dm.MWTOCForceMetaItem and
ve.dm.MWTOCDisableMetaItem in commit 57a06a6e75,
but the code in initFromMetaList still refers to them.

Change-Id: I857cddcc7d4aa73375357ef922591ed94d760166
2019-02-09 19:31:27 +01:00
James D. Forrester c1d690e53d MWTemplateTitleInputWidget: Filter out templates named '…/doc'
As configured on-wiki via MediaWiki:templatedata-doc-subpage; this will
probably have a few false positives, but that's worth it.

Bug: T54448
Change-Id: Id91f95b5865e151f8007a2421428aeb82b11b3fd
2019-01-26 13:23:38 -08:00
James D. Forrester 3c293ea00c doc: Bump copyright year for 2019
Change-Id: I8991b97c980d4149f53eb5601036220ef3c0c440
2019-01-01 13:24:23 +00:00
Ed Sanders ae1095d313 Exclude deprecated params from search list
Only show param info if the exact field name/alias is entered

Bug: T207897
Change-Id: Ic5be8b8cd7698b88ab89d771769f2e9ba407dfa9
2018-12-11 14:59:54 +00:00
Ed Sanders 1a3e8a958c build: Use eslint-config-wikimedia v0.9.0 and make pass
Change-Id: Idb57fc12e7822cf17e10dbb726480fc7de0ae199
2018-11-21 16:51:20 +00:00
Bjornskjald daa1f6eb1e
Add using the article title as the default value for sorting in categories
This way users can rearrange/edit current name without exiting VE and/or copying it from somewhere else

Bug: T145339
Change-Id: I80690cdf344c2ccbdd8be486642afcf841f36c10
2018-10-31 19:01:02 +01:00
Bartosz Dziewoński 52e54864b5 ve.ui.MWCategoryPopupWidget: Clear state after closing the popup
After removing a category, it would forever stay in the "removing" mode.

Bug: T208346
Change-Id: I8e8c00e16ea8d03cef5872d969e80e9dfaa84035
2018-10-30 20:55:43 +01:00
Thalia 88875b1b8f Improve the gallery dialog layout for mobile
Bug: T203477
Change-Id: I0adc851b71362267d1d06d9a8b5483c1ee114c26
2018-10-12 16:58:48 +01:00
jenkins-bot 15df919bc1 Merge "Replace jQuery.grep with Array.prototype.filter" 2018-09-03 15:40:49 +00:00
petarpetkovic 30f099382a Replace jQuery.grep with Array.prototype.filter
Change-Id: I912fb68060d88b618cb2a2502417c1bccc5fecec
2018-08-25 00:11:30 +02:00
Ed Sanders 0f81aae133 Template dialog: Lazy resize multiline text inputs on first focus
Bug: T134814
Bug: T200834
Change-Id: I3ec84ad01db1ed896c41ac8ef38cce8eddb0b8c2
2018-08-23 17:34:25 +01:00
James D. Forrester 3c6ca93b92 build: Enable and make pass no-prototype-builtins
Including a spectacular whoops in MWGalleryDialog.

Change-Id: Id9863f6dc3701cb0df6684380fa5ecac4526d37d
2018-07-06 10:58:18 -07:00
Ed Sanders 6cc83781a3 Never store ve.debounce in prototype
This essentially creates a static debouncer, so if you have
multiple instances calling that method at the same time, only
one of them will fire.

Change-Id: I4c257b557e87f5638b459811655a14b8625de2e3
2018-06-10 16:00:37 +01:00
Ed Sanders 478b0bcbb9 Create getters for localised APIs (getContentApi/getLocalApi)
Pass through the current document when available, otherwise
assume the current surface's document.

Also add a getter for getPageName, so that can vary based
on the target document.

Bug: T193856
Change-Id: Ifdc951fdc6a43b924d102e3fcd7e59e52023757b
2018-05-05 14:32:55 +01:00
Ed Sanders b54f427078 Remove unused overrides in internal link annotation inspector
Removes an unused call to mw.util.getUrl.

Change-Id: I3988311b7160af628ea4ceeafcfdc3cc0a7a3774
2018-05-05 14:32:55 +01:00
jenkins-bot e23dd5fb6d Merge "Make gallery dialog work with native gallery implementation" 2018-03-19 23:39:00 +00:00
Thalia 12cc56400b Make gallery dialog work with native gallery implementation
Updates the model and re-renders the gallery.

Bug: T150621
Bug: T149602
Bug: T149596
Change-Id: I1e93c3af02eeeff1fcdaa5549cccc61ea755ee04
2018-03-19 23:55:17 +01:00
petarpetkovic fe8b510232 Allow ve.ui.MWCategoryInputWidget to use different API
* Provide config option to specify which API
ve.ui.MWCategoryInputWidget will use.
* To be used in Iec79e687eff8c63434054282650c97cc882f348d

Change-Id: Ib8869d4facf8b3210b309200d944fad4508d7eee
2018-03-19 16:50:27 +01:00
David Lynch bd64b58071 MWTemplateTitleInputWidget: recover gracefully if TemplateData not present
Bug: T187917
Change-Id: Ica0c853e1a7bc908651260df115d59d1939a7939
2018-02-21 11:53:56 -06:00
Ed Sanders ee5b80aeee Avoid jQuery.parseHTML
Bug: T187713
Change-Id: Ic156d6fb670fa2f79cf3c1d5fe0c6272b53b6440
2018-02-19 15:41:20 +00:00
James D. Forrester 0a7a845a42 doc: Bump copyright year
Change-Id: I0b299c840ede1a1b8552cecfc70c5760ab036181
2018-01-03 17:45:07 +00:00
Prateek Saxena 1d6b87243e Use findFirstSelectableitem instead of getFirstSelectableItem
Depends-on: Ic12be404eba490e5ce748f0d754a807e12f6ba76
Bug: T76630
Change-Id: I7daccf8620ec43a56183fd455048a1f2c5f71f26
2017-09-06 15:42:42 +10:00
Ed Sanders 835a775a49 build: Upgrade grunt-eslint from 19.0.0 to 20.0.0
Mostly indent and regex fixes.

Change-Id: Iaf9d02363c78cb71deec5c4cab53a05b67f60600
2017-07-18 12:55:33 +01:00
Ed Sanders fd1adfb3b5 Keep TOC in correct place in document
Change-Id: I6ad8cd8cbd7ef902204408673eb096b7405abd24
2017-06-22 15:16:15 -07:00
Ed Sanders 1a0fd81f64 Fix TOC meta item detection
Change-Id: Icce35100bbc0bfb5584a676eec0e1774308d0f68
2017-06-22 15:16:14 -07:00
James D. Forrester 756079d477 Replace uses of the removed 'remove' icon with the 'trash' one
Bug: T166730
Change-Id: I528dcdb390a4488ffac89fc823ff35bc1eda4f24
2017-05-31 16:30:17 -07:00
David Lynch dfbbe378c3 MWCategoryInputWidget: missing 'new' for cached redirected optionwidgets
Bug: T164820
Change-Id: I8b2ae9112af74910cb6ba5097dcec8be86cc1376
2017-05-19 11:57:17 +02:00
jenkins-bot c8f919a880 Merge "MWCategoryWidget: batch requests for category data" 2017-04-25 18:32:52 +00:00
James D. Forrester 8fd621ad74 MWTransclusionModel: Update for change in TemplateData
Depends-On: I7905502d0c419a04e4487095214634f1513b461c
Change-Id: I97a1bfc9f9ead082a673a91b9d2053630a90309c
2017-04-24 19:13:59 +00:00
David Lynch f7d0df2449 MWCategoryWidget: batch requests for category data
API query cuts off after 50 results.

Bug: T163406
Change-Id: I6e83843dd1a22334d9ddec7103ddf318fb181112
2017-04-20 16:47:16 -05:00
Bartosz Dziewoński 4b7d188735 ve.ui.MWCategoryPopupWidget: Fix popup positioning
Figuring out why it broke doesn't seem like a very interesting task,
so let's just throw the whole logic out and use OOjs UI PopupWidget's
new built-in ability to position itself relative to anything.

Bug: T163269
Change-Id: Ie464e4668001f4bc6151b40cef469937aa8c6e48
2017-04-19 22:48:16 +02:00
Ed Sanders 738d3aff47 Use original title or normalized title when inserting link text
Original title will preserve the case of what the user entered
into the inspector. Noramlized title will remove any unwanted
leading colons from file/category links.

Bug: T118408
Bug: T124410
Bug: T160977
Change-Id: I92ffc19eab4eead0d124e84afc1e5a0a3e535867
2017-03-24 22:16:31 +00:00
Bartosz Dziewoński 49f603c703 Update <pre> support for Parsoid changes
After 79ccfb9372cb57afa569036ef39ead13abfba673, MediaWiki's `<pre>`
tags get rendered as `<pre typeof="mw:Extension/pre">` in Parsoid HTML.
MediaWiki's indent-pre syntax (block indented by a single space) is
still rendered as `<pre>` in Parsoid HTML, however.

Indent-pre is still handled by MWPreformattedNode (no changes).
Introducing MWPreNode, which will handle `<pre>` extension tags,
and MWPreDialog to change its contents (and allow converting
to MWPreformattedNode).

Pieces copied from MWGalleryNode, MWLinkNodeInspector, CommentInspector.

Possible future improvements:
* Add a specific icon for MWPreContextItem
* Avoid API roundtrips for rendering (but rendering wikitext <pre>
  is not as simple as it looks)
* Consider a way to insert these other than '<pre' sequence

Bug: T159900
Change-Id: I5bc4ea6e5d893736f65ef0dd43b08c18cb1a1e85
2017-03-14 14:08:50 -07:00
Thalia c3650a9c07 Remove line breaks from gallery dialog captions
A gallery tag is parsed line by line, so captions
(and other image data) should not contain line breaks

Bug: T153373
Change-Id: Ib1d1c18216d07c83b2d4358d2dda71c9d17e3e44
2017-03-10 17:27:22 +00:00
James D. Forrester dddd2c0180 build: Bump grunt-jsonlint to latest and make pass
grunt-jsonlint       1.0.8  →   1.1.0

Change-Id: I4a5cdd39f6215cc61a1ef530386a87fdcb0c0088
2017-02-17 16:12:12 -08:00
Thalia fc61fb9be0 Allow AceEditorWidget to accept autocomplete word list
Bug: T155107
Change-Id: I2dd752fb55a4d5596dbc8b8dc69eb55083d7ec66
2017-01-11 17:26:16 -08:00
James D. Forrester 122f49b2dd build: Bump file copyright notices for 2017
Change-Id: I3c20809e71cc0da58123e1b5f29c4f3aac945496
2017-01-03 08:58:33 -08:00
Alex Monk c843824c97 Batch gallery imageinfo requests via ImageInfoCache subclass
Also get rid of .join( '|' ) for API request parameters per Bartosz

Bug: T147067
Change-Id: If4444cca300d65e28d6fb9003fcac5e076a5129a
2016-12-06 22:10:19 +00:00
Alex Monk 5bd95db994 Use widget.getApi, not this.getApi
Bug: T152154
Change-Id: Id7e77323ffabf4eeee3e73481cf6bcb9a1e649dc
2016-12-01 22:48:45 +00:00
Ed Sanders 37910b78ec MWTemplateTitleInputWidget: Use new #getApi method from upstream
Depends-On: I81811cdd1a0750a8335432eee8f971ab9e0b8ee7
Change-Id: Ic73213df5ede6f82de85df8b69c60dd31f033792
2016-11-30 19:51:45 +00:00
jenkins-bot 745e919f97 Merge "Update VE core submodule to master (9625e8f)" 2016-11-29 20:46:54 +00:00
jenkins-bot 33db54ef28 Merge "Use upstream media search widget from core" 2016-11-29 20:04:46 +00:00
Ed Sanders aeafa6afca Update VE core submodule to master (9625e8f)
New changes:
f1297b8 [BREAKING CHANGE] Allow target widgets to be re-used

Local changes:
Re-use target widgets

Change-Id: I5decb918f398704d4b6c108a16fbc1cc073ef077
2016-11-29 11:48:15 -08:00
Ed Sanders 2ee9e62a4d Use upstream media search widget from core
Bug: T140166
Depends-On: If53ef7f4b62c7a5d4da565c14dd2a353778694e5
Change-Id: I28845e9c143e78d3a377f067606c62da212e3bf1
2016-11-29 17:19:14 +00:00
Thalia 003ec7b653 Allow the gallery dialog to insert duplicate images initially
Change I94f4fadd84cd3e prevents the gallery dialog from inserting
duplicate images into the gallery dialog after one request (e.g.
so double-clicking on an image in the search widget doesn't cause
the image to be inserted twice). However, galleries can
intentionally contain duplicates of the same image, so it is
possible to make a spearate request to insert a duplicate image.

When the dialog is first opened, it requests all the images in
the gallery at once, so the above change was causing the
duplicates in an existing gallery to be dropped. Duplicates
should be allowed to be inserted following this initial request.

Bug: T150894
Change-Id: I34353bc9b8db947488474c4be52292e0a1447705
2016-11-23 01:02:35 +00:00
James D. Forrester f24e34de3c build: Bump eslint-config-wikimedia to v0.3.0 and make pass
Change-Id: I7449c11aa63c50fda667265c32021439cc53471f
2016-11-15 15:05:05 -08:00
Ed Sanders e655880d14 eslint: Remove unused exception and fix documentation errors
Don't enable valid-jsdoc yet though, due to @chainable bug.

Change-Id: I4d2a6de19c72c6e4c20733446616d8046419d431
2016-10-28 12:02:36 -07:00
James D. Forrester 36befda61c build: Replace jscs and jshint with eslint
It's new, it's fresh, it's amazing, it's here.

Change-Id: I5dc784411f704685ed5cc763a2b2b1c5d3e5a610
2016-10-28 18:33:15 +00:00
Derk-Jan Hartman 406e9f8e9c Enable conditional loading of ACE language modes
require bypasses Ace's internal loadModule() logic which is capable of
on demand loading of Ace modules. Because unloaded modules are not
defined, they cannot be required, and because we don't use RL to preload
all modes (because it's a lot of bytes), currently only very few of the
available language modes were currently available.

Also validate language mode names passed to Ace.

Bug: T148518
Change-Id: I82d278920695be12aa80a79548abf8b8ce5445fd
2016-10-19 02:23:17 +02:00
Ed Sanders 85f8030053 MWMediaSearchWidget: Fix indentation in var
It is alarming that jscs is not picking this up..

Change-Id: Ibd3b113ebfedede9fa45120c24f00623ec5ea2fb
2016-10-13 23:45:37 +00:00
Thalia 7ec7acf108 Take only the last part of a URL query in media search widget
Quick fix to the problem that searching for the file name or
page title currently returns the image, but searching for the
URL does not.

Bug: T121354
Change-Id: I13e665226e5dc15ba626126dc4806ce8f4e0040b
2016-10-13 21:54:10 +00:00
Ed Sanders 972094788c Fix sanitizing of query value in media search
Always use #getQueryValue which trims whitespace, so we
don't pass whitespace to the API.

Also rename some variables for clarity, and remove some
unused arguments.

Change-Id: I0d27f59488295bc1c398d0fd287e3e16a3f5aaec
2016-10-13 04:03:57 +00:00
Ed Sanders 4d1f8b5928 Pass excludeCurrentPage option to TitleSearchWidget in link inspector
Logically depends on Ieade9d0ff for the actual functionality.

Bug: T147050
Change-Id: I2cc4fc170398c80d7f0103772bc56666685b8baf
2016-09-30 15:41:08 -04:00
Derk-Jan Hartman fbdad82b99 Use slice instead of substring per code conventions
Change-Id: I5de8b485d287db097f2ad63a7edf75f86a86822d
2016-09-26 21:34:37 +02:00
jenkins-bot d9ed33208a Merge "MWAceEditorWidget: Configure Ace with its base path" 2016-09-26 13:50:42 +00:00
Derk-Jan Hartman 148c6b53b4 MWAceEditorWidget: Configure Ace with its base path
Configure the basePath for Ace, so that its own loader knows from where
to lazy-load additional resources. This will enable all known modes and
the worker scripts for linting.

Bug: T124419
Change-Id: Ie71518917ab966743e8397b23ffb050ca47e9ff4
2016-09-26 14:54:42 +02:00
Alex Monk 7888c688b7 Simplify and fix category popup widget checks
Bug: T86357
Change-Id: I9a85267f6da0077e2167a92f25a8dc41074e6548
2016-09-13 04:17:20 +01:00
Ed Sanders 62bdaac13b Use super property to call parent methods
Change-Id: I76982b844cf2871d7583463def4393e5bdc33aa2
2016-08-23 11:56:47 -07:00
jenkins-bot 1fe827197d Merge "Add titles to category input menu's items" 2016-08-08 21:56:43 +00:00
Alex Monk 071291d624 Add titles to category input menu's items
To match where they point to.

Bug: T139189
Change-Id: I46454cc9cd90920dc5e445200598a4706a8639c9
2016-08-08 21:09:36 +01:00
jenkins-bot cf4c2d41b3 Merge "Rewrite TOCWidget based on Linker::generateTOC" 2016-08-05 22:18:22 +00:00
Ed Sanders bb7b38575f Rewrite TOCWidget based on Linker::generateTOC
Use the new node cache to find headings.

Change-Id: I5eb75c5db5ca466fd6f16a57c693c2a4458cff7c
2016-08-05 14:11:15 -07:00
Thalia 7d4864729b Make image list keyboard accessible in gallery dialog
Bug: T140874
Change-Id: I0f00f1ddb397fb8f543a04d62b94fc5db32180f6
2016-08-04 16:34:12 -07:00
David Lynch ef7652fdfc Move internal-link detection into the InternalLinkAnnotationWidget
If internal link detection is in the LinkAnnotationInspector, it falls down
when a valid URL which isn't also a valid page title (e.g. percent-encoded
titles) is pasted into the input. This is fixed by moving the detection to the
input's change handler before any validation can occur.

Bug: T119431
Change-Id: I1eb2040dd918fdcc22c28594b5cbad835cf384a8
2016-07-15 13:51:35 -05:00
jenkins-bot 4837373545 Merge "build: Bump devDependencies to latest and make pass" 2016-06-10 09:36:10 +00:00
James D. Forrester 5ecf40f51e build: Bump devDependencies to latest and make pass
babel-polyfill              6.8.0  →  6.9.1
 grunt-jscs                  2.8.0  →  3.0.0
 grunt-jsonlint              1.0.7  →  1.0.8
 grunt-stylelint             0.3.0  →  0.4.0
 stylelint-config-wikimedia  0.2.0  →  0.2.2

Change-Id: I4db467c7f2bc291a94e7bab86d18e48a44f6054c
2016-06-07 17:17:02 +01:00
Thalia 6fdbe9fd7e Make dialog for editing galleries
Make new graphical interface for editing existing
galleries and adding new galleries.

NB The dialog does not yet support rich text in the
image captions, nor does it provide separate fields for
e.g. link, alt text, etc. These are dependent on parsing
the text within the tag, which is yet to be implemented
by Parsoid. For now, these attributes should be
specified in wikitext in the image-specific caption
field.

Bug: T45037
Change-Id: I2b4082e991268241a15b9bbd6d85c94cdc2185f2
2016-06-07 13:53:02 +01:00
Alex Monk 6b7551112d Use correct case to access ve.ui.MWCategoryItemWidget.prototype.sortKey property
Otherwise we just record undefined as the original sort key and never
allow blank sort keys.

Bug: T92632
Change-Id: I7f37a8a33c54186ec6f0f74e374c591d5428b119
2016-04-25 23:18:09 +01:00
Alex Monk 978224f2ec Use widgets for wiki-page-name, wiki-user-name, wiki-template-name, boolean, URL and line template fields
* Use TitleInputWidget for wiki-page-name and wiki-template-name parameters
* Use UserInputWidget for wiki-user-name parameters
* Use a custom hacky CheckboxInputWidget child class for boolean parameters
* Borrow some ve.ui.MWExternalLinkAnnotationWidget.prototype.createInputWidget code for url parameters
* Use a TextInputWidget with multiline disabled for line parameters

Not dealt with in this commit, so fallback to existing behaviour:
* string
* number
* unknown
* content
* unbalanced-wikitext
* date
* wiki-file-name

Bug: T55613
Bug: T124734
Bug: T124736
Change-Id: If04944d64303d959e8dd605e75a175895932b788
Depends-On: I87699a93ca1b34c6d248456fcc060f584623d158
Depends-On: I5e97604f0fc24176d5e89899bf0505dc442a1a7e
2016-04-06 22:07:19 +01:00
Thalia 003e02efaa MWAceEditorWidget: Update maxRows and minRows if minRows is changed
This was being done correctly in initialize, but not in setMinRows.

Bug: T131009
Change-Id: I57c771720c59ca1d75f0b9bc14e7c834237019d5
2016-03-27 17:42:11 +00:00
Ed Sanders 5d5d5419c6 AceEditorWidget: Use namespaced 'require'
The un-namespaced version will soon be removed to fix RL issues.

Bug: T127643
Change-Id: Iaf4ed23d88cb955b8f8f61725f9effa6180de5bf
2016-03-14 16:56:16 +00:00
Ed Sanders 7f31507e12 Link inspector: make height consistent
Make the DOM order sensible so we don't have to
use SearchWidget's position:absolute hacks.

Bug: T129173
Change-Id: I3517e0e0cfe2ab0eee4bed7390e41710d3140eb0
2016-03-08 10:26:31 +00:00
Ed Sanders 115bf4b3d2 CategoryWidget: Remove reorder event fix after upstream fix
Change-Id: I9088c931433b0824f72b4c77d0fd05cb062068f7
Depends-On: I67945db3652b0edb24b490089b8ea5a43f0b29d0
2016-03-03 15:53:49 +00:00
Ed Sanders 8f028813e5 CategoryWidget: Update to work with new DraggableGroupElement
Change-Id: Iefac99dba0e6b8ed3eaaa1d5f1d92e402e3cf2db
2016-02-25 16:07:50 -08:00
Ed Sanders 704ec7ad3f MWCategoryWidget: Improve caching
For every title request, store an entry in noramlizedTitle to
avoid ever making an API request for that category again.

This prevents API requests from being fired every time a
category was moved, which in turn prevents the list from
flickering as it waits for the API request to resolve.

Also normalise the spelling of normalize to en-US/en-GB-oxendict

Bug: T127317
Change-Id: Ie26d9d60fb83981c45ff27199e38ae98e5560a28
2016-02-18 17:14:33 +00:00
Ed Sanders 7eeb136d94 MWCategoryWidget: Use namespace constants from config
Change-Id: I63661ce49dbb0fac62cb7dbd65c466cfdd6e57b0
2016-02-18 11:36:31 +00:00
James D. Forrester 1e0486a679 Remove all Extension:Cite code, now moved there
Depends-on: I39936ed83d5a60471a0a75da753f498e80aef234
Depends-on: Ifd853bf9f901065798bd0063aeaa786a3761aa71
Depends-on: I32c93c5118eafe5f071252290c58d3de8dacc81a
Change-Id: Iba0f25b3ebe4e5e63377da57afb760d6980f9907
2016-02-05 21:36:56 +00:00
Thalia 16330ac05d Add method for setting minimum number of rows in Ace editor widget
Bug: T123891
Change-Id: Ia2e094071f385628449f1935f0250cbeb75196f0
2016-01-22 17:05:35 +00:00
James D. Forrester ada58df361 build: Bump file copyright notices for 2016
Change-Id: I3c618c196e504a80ca297a4132a17f1977a24fb7
2016-01-03 14:57:25 -08:00