Commit graph

1324 commits

Author SHA1 Message Date
jenkins-bot 4f34e9b049 Merge "Regression: Update selection in new sidebar relative to content" 2021-09-17 16:53:29 +00:00
Thiemo Kreuz 48b9a58737 Regression: Update selection in new sidebar relative to content
We broke something with the change I166b971. When we renamed that
method it started to override (and therefor disable) the method
with the same name from the base class.

I decided to move all code in the subclass for the moment. It might
be misplaced there (note how almost all code related to the new
sidebar is in the base class). But this is cleanup work for later.

Bug: T289043
Bug: T291151
Change-Id: Id255585e78967eee0f72c27727cd23211674923c
2021-09-17 16:45:24 +02:00
Thiemo Kreuz d91e356780 Fix Cite dialog failing with new sidebar
The most basic fix. The "outlined" flag is set to false for the
cite dialog, in contrast to the transclusion dialog. It's always
true for the transclusion dialog. Note it doesn't mean the sidebar
is visible, but specifies if a sidebar is created in the first
place.

Bug: T291241
Change-Id: I5a8b538949e9fd0b8e85a6a91ca2420ef72e4612
2021-09-17 16:15:20 +02:00
Thiemo Kreuz 9f783d962a Regression: Fix selection of first transclusion element
We removed this line of code in a recent patch, but it turns out
it's still necessary in at least one situation:
* Make sure you have a multi-part template where the first part is
  a wikitext snippet.
* Edit the template.
* Click the very first item in the sidebar.

Nothing happens. But the text cursor should be in the wikitext
field.

Another situation:
* Put the text cursor in the first wikitext field.
* Press shift + tab. Now a button in the bottom toolbar should have
  the focus.
* Click the 1st element in the sidebar. Again, nothing happens.

The extra .focus() call is redundant in many situations. But it also
doesn't hurt to repeat it. It will just re-focus the element that's
already focused.

Bug: T289043
Change-Id: Iccbe376b98a1b1e5469cd17e1c95d5d8869442d3
2021-09-17 14:46:06 +02:00
jenkins-bot c24e6a85d9 Merge "Rename weird .onBookletLayoutSet() event handler" 2021-09-16 12:39:55 +00:00
jenkins-bot 3486d9ea58 Merge "Rename showSidebar to expandSidebar for consistency" 2021-09-16 12:36:09 +00:00
Thiemo Kreuz 0fcfa5c4aa Rename weird .onBookletLayoutSet() event handler
It was called like this because the event is literally called "set".
But it doesn't explain _what_ is set.

The new name .onBookletLayoutSetPage() already appears somewhere
else in the codebase.

Change-Id: I166b971c08f5d0fae97fc9d6244117a680f84b7c
2021-09-16 14:18:57 +02:00
Thiemo Kreuz cf14790450 Utilize native .isRemovable() in template dialog sidebar
The OO.ui.OutlineOptionWidget class does have an .isRemovable()
state. This is how OO.ui.OutlineControlsWidget decides if the
remove button can be used.

It appears like ve.ui.MWParameterPage forgot to mark required
parameters as not removable.

This makes some oddly specific code in ve.ui.MWTransclusionDialog
obsolete. Note how this class does not contain any other code
about "required" or other flags specific to parameters.

Note that one aspect of this patch will be visible in the old
sidebar: The trashcan will be visible on required parameters, but
disabled. It was hidden before. However, this actually improves
the UX. Hiding the trashcan made the up/down buttons jump around.
This makes it unnecessary hard to hit them. It also causes visual
distraction when navigating the list of parameters.

Let's stick to the upstream OOUI behavior.

The remove button still disappears when the only element in the
dialog is the template search widget. This is clearly an
entirely different state. (Don't ask why the up/down buttons are
not hidden. It was like this before.)

Bug: T289039
Change-Id: If78881e503f19f497f1993da4e5b9b09ee538307
2021-09-16 10:03:09 +02:00
jenkins-bot 5c688148e8 Merge "Force delete button to be disabled on template parameters" 2021-09-15 09:30:32 +00:00
Thiemo Kreuz cb685d1216 Fix enter sometimes focusing the wrong template part
The behavior of the enter key in the new template dialog sidebar
is somewhat inconsistent. When pressing enter on the name of a
template it sometimes just doesn't work, but focuses something
else.

I realized this is because the message "The … template doesn't
yet exist." does not have a link. There is nothing to focus in
this element. The code just gives up and the selection returns
to whatever was selected before.

It works when there is a link in the template header. But this
is not even that useful.

Let's try to always focus the first parameter instead. The user
can still press Shift + Tab to focus the link to the template
page.

Bug: T289043
Change-Id: Id314ee8ebf47d387df08c7fb432094b6d8f7a3d2
2021-09-14 18:14:05 +02:00
Thiemo Kreuz 6680f5f141 Force delete button to be disabled on template parameters
It's impossible to use the delete button from the
OO.ui.OutlineControlsWidget to delete a parameter when the new
sidebar is active.

This partly fixes one of the issues mentioned in I97d77f4. The
delete button might stil become active for a moment (not fixed
yet), but doesn't stay active forever any more with this fix
in place.

Apparently this also makes another workaround obsolete.

Change-Id: I0bca310772c26149170af23ff8e5505c3ce4adf4
2021-09-13 16:01:25 +02:00
jenkins-bot 401319cb67 Merge "Split focus handling from add/remove parameter events" 2021-09-13 13:28:16 +00:00
jenkins-bot 0cfd298d18 Merge "Fix and test page name splitting code in template dialog" 2021-09-13 12:23:17 +00: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 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 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
jenkins-bot 9ef1b22b37 Merge "Clean up post- OOUI fix" 2021-09-10 14:37:12 +00:00
Adam Wight f8cf9e9b8e Clean up post- OOUI fix
Pure cleanup, doesn't change behavior.

Change If8da5ae85dff63c34 included in OOUI v0.42.0 tracks invisible
controls, so it's no longer necessary to maintain persistent class
variables pointing to the buttons.

Also simplify repeated logic to make it clearly exclusive.

Bug: T290554
Change-Id: If9b6404d7061999540515645fa8e50b9a21f5a21
2021-09-10 09:39:07 +00:00
Andrew Kostka 97ef584e20 Rename showSidebar to expandSidebar for consistency
Bug: T274554
Change-Id: Ia0611fe10492e05e4625eb743c66eac7d0235dc5
2021-09-09 12:26:40 +02:00
Andrew Kostka 0c14b6d0bb Don't jump back-and-forth between fullscreen and floating when resizing
Previously, when the tranclusion dialog was being resized, there was
a specific width at which both the sidebar was collapsed and the dialog
was downsized from "larger/large" to "medium". This resulted in the
dialog switching from fullscreen to floating, since the dialog's width
breakpoint for "medium" doesn't match our width breakpoint for mobile.
If the user continued to downsize past this breakpoint, then the dialog
would eventually switch back to fullscreen resulting in this weird
behavior.

A simple way to prevent this is to avoid changing the dialog's size
at all. Since we don't support collapsing the new sidebar (unless
already in fullscreen), we can just leave the dialog at the
"larger/large" size.

Bug: T274554
Change-Id: I5460cdfb1a7ed73fe7957745ba37055c5f66dce1
2021-09-09 12:16:52 +02:00
jenkins-bot 836ab09a79 Merge "Rename and document select/focus events in template dialog" 2021-09-03 09:38:21 +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 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
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
jenkins-bot 6c33cc4a35 Merge "Add message on multipart content" 2021-08-26 07:34:15 +00:00
jenkins-bot 4741abe803 Merge "Added new input page for undocumented parameters" 2021-08-26 07:26:41 +00:00
WMDE-Fisch 67988452ab Add message on multipart content
Bug: T276574
Change-Id: Iff5c2fd4071dd03ca62c395cce4041dacb1c7ea6
2021-08-25 10:47:16 +02:00
Svantje Lilienthal 5c9fbca085 Added new input page for undocumented parameters
Bug: T272487
Change-Id: Ic5dcd36c9f647f9b52b98e5a520a1df1960a5b48
2021-08-24 10:18:43 +02:00
jenkins-bot f1c9012916 Merge "Remove dependency from new sidebar to the BookletLayout" 2021-08-23 14:40:02 +00:00
jenkins-bot 6cdd1f6ebf Merge "Clean up toggleSidebar by splitting out 'auto'" 2021-08-23 14:31:39 +00:00
Thiemo Kreuz 3b5bc1b0b2 Fix non-existing property name .isNewSidebar
This is obviously a rebase mistake. We renamed the property in
I78a5129.

Change-Id: I43247ebf6c8910d12c90aa2dd1f9111f4ed69a07
2021-08-23 15:44:28 +02:00
Adam Wight b1a376a6e1 Clean up toggleSidebar by splitting out 'auto'
This naturally fits into a new function.

Bug: T274554
Change-Id: Icda432dc1a13243efddc9949f41a00162053970d
2021-08-23 14:38:24 +02:00
jenkins-bot d6316145b5 Merge "Better method names in MWTransclusionModel class" 2021-08-20 11:29:49 +00:00
jenkins-bot 112bd2e5cb Merge "Call focusPart() only once in MWTemplateDialog.onReplacePart()" 2021-08-20 09:56:52 +00:00
jenkins-bot cdf7d907a9 Merge "Fix null error in ve.ui.MWTemplateDialog" 2021-08-20 09:48:27 +00:00
jenkins-bot 928b33ce69 Merge "Re-add adding undocumented paramters in some cases" 2021-08-20 09:33:18 +00:00
Thiemo Kreuz 8fbdd4258f Fix null error in ve.ui.MWTemplateDialog
Introduced via Ifd52369 just a few minutes ago.

Bug: T288827
Change-Id: I859f606c0608f9725bb64ff56a501a7a2c85c1df
2021-08-20 09:24:56 +00:00
WMDE-Fisch c3e5ea2fe1 Re-add adding undocumented paramters in some cases
Bug: T272487
Change-Id: I862c2802da1340d302a2a95e8e9d17bd6fd35877
2021-08-20 10:13:20 +02: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 7045371a4d Better method names in MWTransclusionModel class
Names like "fetch" or "resolve" are heavily ambiguous and
continue to confuse me. I hope these new names reflect better
what's going on.

Bug: T288827
Depends-On: I587a203a9370e4742f87586b4f1867b37459c375
Change-Id: I8fa47ed313e7d7b2c114a5638a67c4f3c8b830f1
2021-08-20 10:00:10 +02:00
Thiemo Kreuz 301c84bda4 Call focusPart() only once in MWTemplateDialog.onReplacePart()
This merges all code-paths that re-select a part (i.e. an input
widget on the right side of the template dialog).

Note there is an edge-case that actually changes with this
patch. When a page is removed, and creating a new page fails,
there is an `if ( page )` check. Before, the behavior was that
nothing gets selected in this case. After this change the
behavior is the same as if a page was removed: the closest one
gets selected. Not only does this make more sense. The `if` is
only a fail-safe anyway and should not result in different
behavior.

Bug: T288827
Change-Id: Ibb0260587588fb51a876658b16a81c5a73371dc4
2021-08-20 09:49:30 +02:00
Thiemo Kreuz 47bed4e1c8 Use page ID string instead of object reference
You will see where I'm going with this in the following patches.

Bug: T288827
Change-Id: Ifd52369d19c01499fb9cc801c3deec46c26810fd
2021-08-20 09:47:57 +02:00
jenkins-bot fdde92f820 Merge "Refactor onReplacePart in TemplateDialog" 2021-08-19 13:40:52 +00:00
jenkins-bot 0bf5c8493b Merge "Remove parameter adding on new sidebar code" 2021-08-19 13:40:16 +00:00
WMDE-Fisch eeda931f59 Refactor onReplacePart in TemplateDialog
As preparation to introduce then new UI to add unknown parameters.
This is a few things:
- Merge the code paths when adding a MWTemplateModel
- Put code adding parameters to the dialog next to each other so
  that preventing reselection happens around that block
- Reduce duplicated code when re-focusing after addition
- Move adding the placeholder page to the end
- Add and clean up inline documentation

Bug: T272487
Change-Id: Ic700edd42027a928a236ed11f2c257fffe994257
2021-08-19 08:19:01 +00:00
WMDE-Fisch d41714f3a1 Remove parameter adding on new sidebar code
This removes the paramter placeholder page from all places where it's
not usefull anymore under the new sidebar.

The new UI will be re-added in follow up patches.

Bug: T272487
Change-Id: Ifc6f6f64fed1a1b23c92282e2a1bb40a7d401d72
2021-08-19 08:18:55 +00:00
Thiemo Kreuz 0af0978db4 Use same .useNewSidebar property name everywhere
This makes it easier to find stuff.

Change-Id: I78a51290767db4fe06ba0d4d2d251e8df07368b4
2021-08-19 10:13:16 +02:00
jenkins-bot 5102ed2ab5 Merge "ve.ui.MWMediaDialog: mediaUploadBooklet may be undefined" 2021-08-18 16:50:07 +00:00
WMDE-Fisch 53186fc231 Remove sidebar margin on single transclusion
Bug: T272482
Change-Id: I5696dbd469161b1ab1ede2bb3f49e6dd24b98521
2021-08-17 13:54:36 +02: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
Andrew Kostka a2135d524d Show sidebar controls only when multi-part content is present
Bug: T272482
Change-Id: I092438bc9c7d5569f758786ca6952beffdf37507
2021-08-11 15:00:59 +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
jenkins-bot aa868059ee Merge "Better name for ambiguous "empty" concept in the model" 2021-08-09 09:40:40 +00:00
Thiemo Kreuz 35080a8646 Better name for ambiguous "empty" concept in the model
This is really only about the methods name, but doesn't change
any behavior.

I realized we work with several different definitions of what
"empty" means. There are at least two significant definitions:

1. When a parameter's value is the empty string or identical
to the default value, the behavior of the template is the same.
It will use the default value just as if the user entered it.

The auto-value is a meaningful value in this scenario and can't
be considered equal to the empty string.

2. The context here is when the user presses the back button.
This will destroy all user input. But an auto-value is not user
input. It will appear again when the user realizes they made a
mistake. Nothing is lost.

Personally, I would not use the word "empty" to describe this
concept. Things like "containsUserProvidedValue",
"isCustomValue", "isMeaningfulValue", … come to mind. These are
all still a big vague. A "user provided" value can be identical
to the default or auto-value. "Custom" how? I went for
"containsValuableData" for now.

Bug: T274551
Change-Id: I2912a35556795c867a6b2396cbad291e947f0ed6
2021-08-06 15:11:44 +02:00
jenkins-bot 004d37dc1d Merge "Hide old sidebar when the new one is enabled" 2021-08-06 13:10:04 +00:00
jenkins-bot 4e2f3befe9 Merge "Make the sidebar in the transclusion dialog responsive" 2021-08-06 10:40:44 +00:00
jenkins-bot 5dabf57f94 Merge "Filter right content side of the template dialog as well" 2021-08-06 10:26:55 +00:00
Andrew Kostka 21e9f5f0c4 Make the sidebar in the transclusion dialog responsive
Bug: T274554
Change-Id: I51e988e6fb0e50c9d542400471152807626539ea
2021-08-05 17:23:22 +02:00
Andrew Kostka 2f1cfdd187 Cleanup feature flags in ve.ui.MWTransclusionDialog
Change-Id: I6f6326c981da998b547a2a1990e26185763093ca
2021-08-05 17:00:27 +02: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 0351537ba2 Hide old sidebar when the new one is enabled
This is – for now – intentionally done in a way that can be
undone. This will still be helpful for debugging for a while.
But we need to get rid of the duplication to be able to make
this new functionality visible on the beta cluster.

Actual removal will hapen the moment we actually remove the
old toolbar. There are already tickets for this.

Bug: T286765
Change-Id: I842c3c39a55a273af20643fa8a602d2e57fb6b8c
2021-08-05 09:14:40 +02:00
jenkins-bot cf17a1f191 Merge "Remove tooltip from template dialog title" 2021-08-03 15:29:10 +00:00
jenkins-bot e57daaad98 Merge "Minor JSDoc documentation fixes in template dialog code" 2021-07-29 12:13:17 +00:00
Arlo Breault 2fd09aaba3 Remove skinning modules when showing preview
Bug: T185284
Change-Id: Ifec8809cd75cb76c79936a69351be0c7779de39e
2021-07-28 10:55:16 -04:00
Thiemo Kreuz 014bc9369c Fix incomplete back button implementation in template dialog
Bug: T286783
Change-Id: Ie86e2c8c6a874fde11591286a83faba71a34430d
2021-07-16 14:54:09 +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 092276009a Minor JSDoc documentation fixes in template dialog code
Change-Id: I3697e48697ab0910b90b418abbc370736589b6e1
2021-07-16 14:25:11 +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 8ab2ec25ea Fix template editor showing more than one new sidebar
Bug: T274544
Bug: T286715
Change-Id: I9fe8b53a73b1862eca2d99afb02aa3d532d61918
2021-07-15 15:17:44 +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 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
Thiemo Kreuz 1c98f4cce0 Remove unnecessary code from template related classes
For example, checking if a parameter is required works just fine
for unknown parameters. They are never required. Since I16708b0
we don't need to guard the spec related methods any more.

Change-Id: Id90e4cb810dc9faca3b26f122a534f276ee31709
2021-07-07 10:18:41 +02:00
jenkins-bot 9e6387176b Merge "Add @private/@protected documentation to template dialog code" 2021-07-06 08:41:55 +00:00
jenkins-bot 7afb7981d1 Merge "Rewrite MWTemplateDialog.setApplicableStatus for readability" 2021-07-01 11:56:30 +00:00
jenkins-bot 5028f4eaf3 Merge "Remove unused "insert" action from MWTemplateDialog" 2021-07-01 11:52:21 +00:00
Thiemo Kreuz f1a66c17e4 Rewrite MWTemplateDialog.setApplicableStatus for readability
I rearranged this piece of code like a dozen times before I
finally understood what it actually does. This should be much
more obvious now.

The idea is:
* If no edit was made the button is always disabled.
* You can save pretty much everything, except when the
  transclusion still starts with a placeholder.
* You can also click the done button when the dialog is empty.
  This feels a bit odd, but was like this before. I think this
  codepath is unreachable. But it probably doesn't hurt to
  keep it.

Bug: T284895
Change-Id: Ic483201b64fd64f414c5b1ec4c44198b8eadb9f2
2021-07-01 11:20:50 +02:00
Thiemo Kreuz 55a49195ba Add @private/@protected documentation to template dialog code
These tags don't do much, if anything. But they provide a hint
in which scope a method might be used.

Bug: T284895
Change-Id: I0b4bdd416ee89d26961c4ded4d8bbace8c57da76
2021-07-01 09:36:00 +02:00
jenkins-bot 7426139a41 Merge "Fix possibly uninitialized variable in template dialog" 2021-06-29 13:47:06 +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 6b346442ad Hotfix for broken "Extract show all to placeholder class"
This does not revert commit 950a5300 but applies the most
minimal hotfix I could come up with.

The reason for the breakage 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.

This extra check compares this model reference and creates a
new widget when it changed.

Bug: T284636
Bug: T285571
Change-Id: Ib3eca52bbff90ffbf56a257e3984adcbe02b310b
2021-06-27 18:29:23 +02:00
Thiemo Kreuz 2966b69609 Fix possibly uninitialized variable in template dialog
There is a codepath where `modelPromise` is undefined and
calling `modelPromise.then()` fails. This codepath implies
that the dialog is empty and there is nothing to update. We
can just close the dialog then.

I found this while debugging the actions in this dialog.
This happens when the dialog is empty (except for a
placeholder) but you submit it anyway. This is typically
not possible as the button is supposed to be disabled.
Still I think it's a good idea to make this code less
fragile.

The relevant code was introduced in Ibc2fc66 (2016).

Change-Id: Ia6b723548456c211b944a2320949bfc23b0afa16
2021-06-25 16:49:30 +02:00
jenkins-bot 118ae98a2a Merge "Wire model changes into new template sidebar" 2021-06-24 09:31:46 +00: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
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
Thiemo Kreuz eedef37c78 Remove tooltip from template dialog title
This reverts parts of I678bb24.

Brief history of this code:
2014: The dialog was designed to dynamically change the title.
      There was never a tooltip.
2016: A change in OOjs changed the behavior in VE. Now the initial
      title shows up as a tooltip. It never updates because VE
      does not know about this. The tooltip does not match the
      visible title.
2021: We revert to the behavior from 2014. We achieve this by
      bypassing the codepath that creates the tooltip. This is why
      ….title.setLabel() is used instead of ….static.title.

Bug: T276568
Change-Id: I346a904881c3a63186d6a80afdaf717688bab42a
2021-06-22 16:12:52 +02:00
Adam Wight 1100db9665 Revert "Make template dialog header tooltip match title"
This reverts commit 7d05257059.

Change-Id: I16395c1118a5a1afe6c0f9022e478f38a2ac3755
2021-06-22 15:37:09 +02:00
Adam Wight 7d05257059 Make template dialog header tooltip match title
The tooltip is useful for languages where the dialog title might get
truncated.  This patch makes sure the tooltip is always the same as
the visible label.

Bug: T276568
Change-Id: I678bb243bb5ac6d1c516ee4e146f2db9ffd5afcf
2021-06-22 13:16:17 +02:00
Bartosz Dziewoński b05fb5f7a2 ve.ui.MWMediaDialog: mediaUploadBooklet may be undefined
Follow-up to 0f5cd19e08.

Bug: T279217
Change-Id: I88cc16e355d803625fcb477ac2d8d1f352b1698a
2021-06-21 16:46:57 +02:00
jenkins-bot 06ea3f84f8 Merge "Rewrite MWTransclusionDialog methods for readability" 2021-06-21 10:41:39 +00: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
Thiemo Kreuz c6f2683dd8 Rewrite MWTransclusionDialog methods for readability
Most notably:
* Introduce variable names that explain much better what's
  going on.
* Reduce nesting.

Bug: T284895
Change-Id: I793677d8107abb6354f9e19d79c4879a41c4bd93
2021-06-18 16:09:52 +02:00
Thiemo Kreuz c135f10f72 Remove unused "insert" action from MWTemplateDialog
This action was removed via Ib744b89 in 2019, see
https://gerrit.wikimedia.org/r/c/mediawiki/extensions/VisualEditor/+/491537/4/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js
Note the messages that are removed in this patch:
* …-action-insert was used for the "insert" action.
* …-action-apply was used for an "apply" action.
* …-action-cancel doesn't mention an action. Internally,
  the cancel action is "".

Since Ibd740ad the actions are registered in the
FragmentDialog superclass, see
https://gerrit.wikimedia.org/r/c/VisualEditor/VisualEditor/+/491536/2/src/ui/dialogs/ve.ui.FragmentDialog.js
Note the messages. Cancel is unchanged. …-action-insert and
…-action-apply are still there, but both linked to the same
"done" action. The "apply" and "insert" actions are gone.
I.e. they are merged into a single "done" action, represented
by a single button that changes the label from "Insert" to
"Apply changes" when needed.

On top of that,
MWTransclusionDialog.updateActionSet() replaces "Apply
changes" with "Save".

Note: Other dialogs also mention an "insert" action. I didn't
look at these. These are not in the focus of our team's
current project.

Bug: T284895
Change-Id: I1d35ada3b5b2049ed20c2d940a1c065b704c978d
2021-06-18 13:44:35 +02:00
jenkins-bot 595b3a1caf Merge "Better variable names for the template dialog's "single" mode" 2021-06-18 08:34:54 +00:00
Thiemo Kreuz 2a1defc26f Remove unused .onAddParameterBeforeLoad() method
https://codesearch.wmcloud.org/search/?q=onAddParameterBeforeLoad&i=1

Bug: T284895
Change-Id: Ib521e05d8def8514ffe1b3c3822f0151ab10932e
2021-06-17 18:30:02 +02:00
Thiemo Kreuz bba592460d Better variable names for the template dialog's "single" mode
The "mode" button is the button that allows to expand and
collapse the dialog. It can't be collapsed when multiple
templates are edited. That's what these lines do,
disabling the button.

"Can expand" is not the correct question. It's always
possible to expand the dialog no matter what it contains.

Bug: T284895
Change-Id: I60f3060695c80bf5541ef2156be89b85a62bf91b
2021-06-17 18:24:17 +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
jenkins-bot 6d101fb9d7 Merge "Extract "show all" to placeholder class" 2021-06-16 12:25:55 +00:00
jenkins-bot 09933c4905 Merge "Method for getting the currently selected element" 2021-06-16 07:22:28 +00:00
jenkins-bot 4c7f5ff805 Merge "Introduce a new class to encapsulate booklet inter-pane wiring" 2021-06-15 14:55:16 +00: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 3f4cfb0fd8 Merge "Rename "value" to "wikitext" in TransclusionContent… classes" 2021-06-11 14:10:24 +00:00
WMDE-Fisch 09d98669df Rename expand and collapse button msg key names
These are currently more confusing than helpfull. Also applied
alphabetical order.

Change-Id: I4d48f7bc28b403142a5818d1c7a062872afc660d
2021-06-11 13:16:44 +02:00
Adam Wight a2daf5f6c6 Method for getting the currently selected element
Continue refactoring booklet pane access.

Bug: T284632
Change-Id: I866f8550d269d05b40eaddf8abb4ed5be03f902d
2021-06-10 15:32:07 +02:00
Adam Wight 44035a2384 Introduce a new class to encapsulate booklet inter-pane wiring
Begin to extract the wiring between a sidebar and the content pane of
the template dialog booklet layout.  Eventually, this helper class
will present a high-level interface like "addPart(id)" and will take
care of creating the outline item, content page, and connecting
events.

Start very simple, take over the "focus" method.

Bug: T284632
Change-Id: I7bc73cc4386b99d95941fc6ed88ab5bd998de014
2021-06-10 15:30:51 +02:00
Thiemo Kreuz df419335bb Rename MWTransclusionDialog.setMode() to toggleSidebar()
This reflects better what the method actually does. This patch
is a direct follow-up for the renames started in Ib029fd4.

Change-Id: Ie3e87139a5c2f5ac196e0fcc02fb897fadc99177
2021-06-10 14:05:40 +02:00
WMDE-Fisch ecf317e0bd Fix message keys to show options in template dialog
The names of the messages keys are very confusing. The order was set
wrong during refactoring in Ib029fd48b393d2ab7d7cff6c842789e22989e944.

We should rename the keys in a follow up in sync with translatewiki.

Bug: T284649
Change-Id: I43794d80b7df7d00441cb583ca53bcab03999e65
2021-06-10 10:50:40 +00:00
Thiemo Kreuz 190237ee28 Rename sidebar state to distinguish from multiple transclusion
This dramatically simplifies the "mode" flag in
MWTransclusionDialog. The main reason to touch this code is:
The flag appears like it will be "single" when the dialog
contains a single template, and "multiple" when there are
multiple templates. But this is not true.

What the flag really does is show/hide the sidebar. The sidebar
is needed to be able to create multi-part templates. But a
dialog that already contains multiple templates can be set to
"single" mode (i.e. the user can collapse the sidebar), and
vice versa.

This patch focuses on private details inside of this class, but
keeps the terminology of a "mode" in some places. E.g. the
messages are not renamed to not cause unnecessary trouble for
translators.

Change-Id: Ib029fd48b393d2ab7d7cff6c842789e22989e944
2021-06-09 09:44:08 +02:00
Ed Sanders 857014fae9 Support watchlist expiry
Bug: T251348
Change-Id: I017a54784c758c5e97fb640721bd456adc0fbab5
2021-06-08 20:14:45 +00:00
jenkins-bot 2b0da3e338 Merge "Update template dialog title when multiple transclusions present" 2021-06-08 08:14:11 +00:00
Thiemo Kreuz 8d7c55aa71 Rename "value" to "wikitext" in TransclusionContent… classes
This class represents a raw wikitext snippet. There is also no
base class that would require us to follow a generic
getValue/setValue naming scheme.

Change-Id: I0891a2f6c0ae0121429a47c39221e99b9653e8e3
2021-06-08 09:27:47 +02:00
Thiemo Kreuz 7fdc560fb8 Rename "sequence" to "ordered parameter names"
There are 2 methods with the same name, but they are very
different. This makes it much easier to understand the
difference, I hope.

Change-Id: Ie1f049b2b14e1fe23f078e281ee797da29dfe3db
2021-06-07 23:24:17 +00:00
Andrew Kostka 67e48a26ef Update template dialog title when multiple transclusions present
Bug: T276568
Change-Id: I530a6cd8aea4f9fcafe7a03fc5050883f1f4b37c
2021-06-04 16:48:05 +02:00
jenkins-bot 69676950b3 Merge "Much longer descriptions of template dialog related classes" 2021-06-04 12:00:46 +00:00
Thiemo Kreuz e13b0dae48 Much longer descriptions of template dialog related classes
The idea is to possibly rename some of these classes, based on
these descriptions. But this should be done in later, separate
patches.

Change-Id: I7f9e5b2382711b434d6dd618489fa3ed8b7a46b4
2021-06-04 13:17:59 +02:00
jenkins-bot bc0f405317 Merge "NWE: Always paste rich text as plain, and show context item to convert" 2021-06-03 18:15:59 +00:00
Adam Wight d4eee82701 Update template dialog titles: Insert/Edit
Toggle depending on whether the transclusion existed or is new.

Bug: T276568
Change-Id: Ib9b76cac7cd57245e8db2ef10879069a86a6269e
2021-06-02 12:36:38 +02:00
jenkins-bot 7fe5b6a433 Merge "Template dialog button title toggles between Insert/Edit" 2021-06-02 10:34:53 +00:00
Adam Wight c49478de60 Template dialog button title toggles between Insert/Edit
Depends on whether this is a new or existing template transclusion.

Split from Ib9b76cac7cd57245e8db2ef10879069a86a6269e

Bug: T276568
Change-Id: I4d22e32fef067b640e9a9389deffaace736c3405
2021-06-02 12:00:15 +02:00
jenkins-bot fa94c27a8d Merge "Change header titles in the template dialog" 2021-06-02 09:05:04 +00:00
WMDE-Fisch 58cf1b0344 Change header titles in the template dialog
Bug: T276568
Change-Id: I5da40032c5b83d04ae92e86372c445d7a28d0444
2021-06-02 08:48:07 +00:00
WMDE-Fisch 98b6cc8bc2 Don't update backButton visibility if not set
Bug: T283511
Change-Id: Idb9668e45c6820cbb631d7a8aac34e03cf788802
2021-05-26 08:47:52 +02:00
jenkins-bot a01b56bcf1 Merge "Invert template search result highlighting" 2021-05-17 12:30:49 +00:00
Adam Wight 9cac71676e Invert template search result highlighting
Bug: T275048
Change-Id: I50fc7407b4357e2cea9d5421d0de46a81d39c69d
2021-05-17 14:12:02 +02:00
Andrew Kostka b2aa35a90a Show a warning before resetting the transclusion dialog
Bug: T272355
Change-Id: Id97190a149ed7642eda82300eeee623e0debf528
2021-05-17 13:27:37 +02:00
Adam Wight f444610fbc Support isEmpty on transclusion dialog elements
Returns true if there is no meaningful user input yet.

Will be used in the next patch.

Bug: T272355
Change-Id: I4f88ce31662bbc46755f78d574c46b907581d438
2021-05-17 13:26:11 +02:00
Andrew Kostka b2c9b225bd Add back button to the transclusion dialog
Bug: T272354
Change-Id: I08c4a7db6239b485439bf547e3e8b4d6f7aeede8
2021-05-17 13:18:14 +02:00
jenkins-bot 71a4ad4f8e Merge "Template dialog bigger size uses "larger" preset" 2021-05-14 11:27:44 +00:00
Ed Sanders ea9ea1d17f NWE: Always paste rich text as plain, and show context item to convert
Bug: T282789
Change-Id: I1bc32c9e16140190baef9bcb08d49b4b21896883
2021-05-13 15:56:19 +01:00
Adam Wight 9607cb3ed0 Template dialog bigger size uses "larger" preset
Rather than invent our own size, we'll reuse the "larger" format and
tweak the dialog height to 90%.

Bug: T273971
Change-Id: Ibef85c1912267b14d83396b089b81934751a8328
2021-05-12 11:31:40 +02:00
WMDE-Fisch 42b557ff80 Use add template when adding a new transclusion part
We have two cases now that we want to cover here:
- Either we're inserting a new template and start a "fresh"
  transclusion, then we want to use "search" in the headlines
- Or we're adding a new template to an exsisting
  transclusion, then we want to use "add" in the headlines

Bug: T277028
Change-Id: I9fa294cf732598d58f848c75b353d2e1742eb4e8
2021-05-11 13:13:44 +02:00
Svantje Lilienthal 2665734b10 Renaming temporary config variable and splitting it from cirrus search lookup
This allows using the config variable independendly from the cirrus search extension.
This way it can be used for all subtickets of T271802.

Bug: T277028
Change-Id: I1b3bdda5fa6fbfe5c531c3b51c2c8e2a28ed1faf
2021-05-10 14:47:31 +02:00
Adam Wight f89301bedf Optional verbose template search
Renames "Add a template" to "Template Search" in most cases and
provides inline help for the workflow.

Bug: T277028
Change-Id: I3fee87cb89b5044e785596e71ef3f1a18f2694ce
2021-05-10 12:45:12 +00:00
Andrew Kostka c1d36072ea Add collapsible descriptions to the transclusion dialog
Bug: T273426
Change-Id: I793a66f5c5877451b70058e9388dd86b3fcaadd7
2021-05-10 11:18:17 +00:00
Adam Wight ded8c40915 Optional feature makes the transclusion dialog bigger
When $wgVisualEditorTransclusionDialogInlineDescriptions is set to
true, the template dialog will use a larger format.

Bug: T273971
Change-Id: Iad3c3f4d65125c83e35414ce15f793f6a1b192ef
2021-05-03 16:53:27 +02:00
Bartosz Dziewoński e04f78d48a Replace use of deprecated CSS class 'mw-ajax-loader'
Bug: T278894
Change-Id: I100bbe06da198f5175366c25b74daf3af986aae3
2021-03-31 20:46:58 +02:00
Bartosz Dziewoński 4cb6842f86 Fix displaying error message when preview fails
Follow-up to 5f1c68945d,
I didn't realize that showPreview() expected strings.

Bug: T277696
Change-Id: I78af5786d211f724728ed81e28170d2d6be6125b
2021-03-18 13:45:07 +01:00
jenkins-bot cb21c4a158 Merge "Parse relative hrefs on image nodes like on regular links (try 2)" 2021-02-24 17:19:44 +00:00
Ed Sanders 87ab649e9d Add mw-content-container, mw-body classes to preview
Bug: T272751
Change-Id: I96440806ec9bce28cfb1b833c8fd913ba6770903
2021-02-18 21:33:36 +00:00
jenkins-bot b6033895f5 Merge "Add edit count bucket to VisualEditorTemplateDialogUse events" 2021-02-01 10:22:38 +00:00
Bartosz Dziewoński 91291d3e98 Parse relative hrefs on image nodes like on regular links (try 2)
Previous, reverted attempt: da9b6fffbd.
This attempt also includes 6037fefbe0,
and fixes minor conflicts with other changes.

* In normal images, parse relative 'href' attributes instead of
  expanding them to absolute. This resolves Parsoid generating
  |link= options for copy-pasted images (T193253).

  Keep them in the underscore-form to avoid causing dirty diffs like
  T237040 again. Unlike in the previous attempt, we don't need to be
  super-careful about the 'resource' attribute, thanks to the Parsoid
  changes in T108504.

* In gallery images stuff, prefix the 'resource' attribute with './',
  same as normal images do. This causes no functional changes, but it
  makes updating tests easier, and the consistency is probably good.

* Update test examples to also prefix 'resource' and relative 'href'
  attributes with './', like the real Parsoid does.

Bug: T193253
Change-Id: I91131728a87c9406bf069d46d3c94c9a8905a003
2021-01-27 11:53:15 +00:00
Adam Wight 9a1072a960 Add edit count bucket to VisualEditorTemplateDialogUse events
Bug: T269986
Change-Id: I68cc15d58a23149a6edc71cac229f6b29d33fd92
2021-01-21 13:17:03 +01:00
Ed Sanders 1ec49384dc MWSaveDialog: Use MessageWidget (inline, warning) to show save dialog warnings
This is the same style that is recommended for form warnings.

Change-Id: I163f5180c66b9eb165a610184b153bb1da99caab
2021-01-20 19:41:17 +00:00
Ed Sanders e20decc77c MWSaveDialog: Remove wrap option from showMessage
This was used when we used to pass API errors to showMessage, but
is now unused by the two remaining users (missing edit summary, and
"press ctrl+enter to submit").

Change-Id: I8a6b4db78d4e451cf3ec85fcdfd8293328aaaa3c
2021-01-16 16:22:23 +00:00
Ed Sanders 598cb943de MWSaveDialog: Restore focus to edit summary widget after resize
Change-Id: I1fc1e43d947e9e8472a470bb5eabf67fda07be5d
2021-01-16 16:18:18 +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
jenkins-bot 3bd0d4056a Merge "Instrument media search interactions in MWMediaDialog" 2021-01-11 20:23:40 +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 2ce9934ab9 Add tracking of template usage
The names in the schema are roughly following what's
done in Schema:TemplateWizard. The information if
templates have TemplateData will be logged seperatly.

Bug: T259705
Change-Id: Iafa7256f675dbfd6a5a6de794061901780e3c55d
2020-12-16 12:56:45 +01:00
Eric Gardner a7c1e4e985 Instrument media search interactions in MWMediaDialog
Before we can integrate our new media search functionality into VE,
we need to add instrumentation that can measure the effectiveness of
the current media search tools to provide a baseline for comparison.

Bug: T265101
Change-Id: I980d6ae10045b0a4e56694473006196c2132c930
2020-12-15 14:45:10 -08:00
Ed Sanders 0f5cd19e08 Don't block media dialog on initialising upload booklet
Bug: T264441
Change-Id: If2533c7bdf08e92443b28f267b1ede22699a4179
2020-10-02 20:32:49 +01:00
James D. Forrester 8a78603988 Drop support for wgCommentByteLimit, hard-coded null in MW nowadays
Change-Id: I767e0633415568134c46fccbafdaceb1ab76dea3
2020-08-26 20:25:38 +00: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
Ed Sanders 42c7096dbf Gallery: Handle invalid titles
Items which are invalid titles will still get discarded if
the gallery is edited, but this is better than crashing.

Bug: T260584
Change-Id: I5dc20c233fd9ab41bdf48531829bddca2c5b25df
2020-08-17 18:22:42 +00:00
Ed Sanders 69d8a195e5 Follow-up I0a1a889: Show user uploads in gallery dialog
Gallery dialog should behave the same as media dialog.

Bug: T62398
Change-Id: I601df9370b82868ba981e415fe24bd4f29399cdb
2020-07-30 17:01:04 +01:00
Ed Sanders 7d722c5f9a MWMediaDialog: Show user uploads when no query provided
Bug: T62398
Depends-On: Iff4b9fab47764e5b775f6757de1163a245f58ed5
Change-Id: I0a1a88933efa9003a75373c61f194f56bb083219
2020-07-13 08:39:40 +00: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
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
jenkins-bot 6c29d69e33 Merge "MWTransclusionDialog: Set 'aria-expanded' on "Show/hide options" button" 2020-03-19 19:57:37 +00:00
Akinwale Alagbe 2aeae1c3f9 MWTransclusionDialog: Set 'aria-expanded' on "Show/hide options" button
Adding the ability for screen reader to announce 
the state of the Transclusion dialog 
when the show/hide options button is clicked.

Bug: T248089
Change-Id: I89b86179bcb63376e480cb8df55e24b9d29df037
2020-03-19 19:43:14 +00:00
jenkins-bot 74ee640664 Merge "ve.ui.MWSaveDialog: Remove meta element filtering from wikitext preview" 2020-03-11 15:26:05 +00:00
jenkins-bot ee43838e79 Merge "Making Categories page in page option dialog accessible" 2020-03-10 19:48:57 +00: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
Bartosz Dziewoński 734c929ea0 Add some accessibility labels to buttons on mobile
Various buttons have a label on desktop, but only an icon on mobile.
We should still use the label for accessibility.

Change-Id: I2b49a80e174dc30ae997a69662643b28b428263a
2020-03-06 15:09:44 +01:00
Bartosz Dziewoński d0c45940d0 ve.ui.MWSaveDialog: Remove meta element filtering from wikitext preview
Once upon a time, we added code to filter <style> and <link> elements
from the rendering of templates in visual editor, because attempting
to cut them would crash Chrome (T52043).

There are at least three reasons why that is not needed here:
* The preview is not editable text, so you can't cut from it
* The Chrome bug was fixed 7 years ago anyway
* We now use TemplateStyles in articles and they work just fine

The code was added here in 9dd638a5ab
without explanation, I think it was just done for consistency.

Bug: T212085
Change-Id: I0712e3a081f04d0b74cda47652fa6eb118dfe7b2
2020-03-05 16:57:51 +01:00
jenkins-bot 9e6a40a827 Merge "Use mw.Api#getErrorMessage instead of custom handling" 2020-01-10 14:22:14 +00:00
James D. Forrester 2c77e88d2c doc: Bump copyright year for 2020
Change-Id: I30539877543dc2a57bd1428a00d10ac46d8fc294
2020-01-08 09:13:24 -08:00
Bartosz Dziewoński 5f1c68945d Use mw.Api#getErrorMessage instead of custom handling
Bug: T240519
Depends-On: Ie18666b41f4aff1ab4bcf93f9df6e3000ac7b500
Change-Id: I69d9432162f195dcfe9470485b549a1b007617ff
2019-12-14 17:01:35 +00:00
Bartosz Dziewoński 092d0c332b MWSaveDialog: Fix error handling for diffs
In case of HTTP errors we'd crash and show no message.

Change-Id: Ideeff4ce75e7ca82ce63bf7ede6dff03eaa1c5d7
2019-11-24 09:51:43 +00:00
Ed Sanders b0f4b4c94e Move more code to ArticleTargetSaver
* Add a postWikitext method and split out postContent
  from postHtml
* Move saveSuccess handling into postContent promise
* Connect promise directly to saveComplete instead
* Pass whole response.visualeditoredit object, instead
  of splitting into variadic arguments for saveComplete.
* [DEPRECATION] Make serialize return the postHtml promise
  and deprecate passing a callback.

Change-Id: I905737515578000b2b87214c92e8b9fe9e82f6b7
2019-11-14 14:34:22 +00: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
Bartosz Dziewoński 00eb79d4d7 Revert "Parse relative hrefs on image nodes like on regular links"
This reverts commit 6037fefbe0.
This reverts commit da9b6fffbd.

Bug: T237040
Change-Id: Id6ea5784512e4d4c3cb00927b859d713c3814f89
2019-10-31 22:40:42 +01: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
jenkins-bot cc1bd58e83 Merge "Parse relative hrefs on image nodes like on regular links" 2019-10-11 15:22:29 +00:00
Bartosz Dziewoński 7579f6eb1f Fix linking to pages in media dialog/media context/internal link context
If you had an image thumbnail for a file 'Foo?.png' on the page,
ve.ui.MWMediaContextItem and ve.ui.MWMediaDialog did not escape
the '?' when linking to it, which resulted in incorrect links.
Similarly, if you had an internal link to the page 'Foo?',
ve.ui.MWInternalLinkContextItem did not escape it.

Additionally, the links were always generated as if the wiki was
using short URLs, even when it is not (T233628).

The approach using mw.Title is copied from ve.ui.MWGalleryDialog.

Bug: T233628
Change-Id: I10256ed6883dae0ea216de4c0719f03d7fd19ae4
2019-10-07 14:27:02 +02:00
David Lynch d03db0e4f2 ui.MWSaveDialog: checkbox tracking was getting duplicated on every setup
Bug: T232790
Change-Id: Id19aa59c71432d0179fc06b6a30014d1037074ae
2019-10-03 12:44:43 -05:00
Bartosz Dziewoński da9b6fffbd Parse relative hrefs on image nodes like on regular links
* In normal images, parse relative 'href' attributes instead of
  expanding them to absolute, and parse 'resource' to keep it
  identical to 'href' if they refer to the same page (including
  same percent-encoding and space/underscore). This resolves Parsoid
  generating |link= options for copy-pasted images (T193253).

* In gallery images stuff, prefix the 'resource' attribute with './',
  same as normal images do. This causes no functional changes, but it
  makes updating tests easier, and the consistency is probably good.

* Update test examples to also prefix 'resource' and relative 'href'
  attributes with './', like the real Parsoid does.

Bug: T193253
Change-Id: If2d7f080d9d693568054f8311c1e1b15ca27ea5c
2019-09-25 00:25:04 +02:00
David Lynch 001ed6a88e MWSaveDialog: add more instrumentation
Bug: T229079
Change-Id: I2e5b45a4a28b580fbca872d620df94a61fb8a24a
2019-09-16 10:48:31 -05:00
Ed Sanders 4a8947686d Docs: Standardise "messages used" comments
Change-Id: Ic563901a9439e86ca85ac6210323a35ab34736c3
2019-08-28 16:41:19 +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
David Lynch ac471d47e9 MWSaveDialog: On mobile show a back button rather than an x
Bug: T230058
Change-Id: I370fedddf8475e5688ac4ce53f9ccd7d6137705b
2019-08-14 11:38:38 -05:00
Ed Sanders 348c880cbe MWSaveDialog: Don't pretend saveButtonLabel is optional
Change-Id: I7cfc5bfbf8893fa4808f2823b37efae7b9e520ac
2019-08-05 21:16:21 +01:00
Ed Sanders 0b1f0a0eda Use MobileFrontend license message on mobile when available
Bug: T229579
Change-Id: I861f0d997607a34ca04727afd55771cbf14e253b
2019-08-02 16:29:54 -05:00
Ed Sanders 085764ddd6 SaveDialog: Hide options bar when empty
Since I7f6fd7ee9 it is now possible for the options bar to be
completely empty if the user is logged out. In this case hide
it and only show it again when the character limit needs to be
show.

Ideally we wouldn't have the height change, but it is quite rare
that a user gets to 400 chars and is logged out.

Bug: T228165
Change-Id: Ifbdf352afcbf4e549889e04fdb70fd30ce233aad
2019-07-16 14:28:25 +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
Bartosz Dziewoński f259bb9c02 MWSaveDialog: Use close flag for close actions, move 'back' button
When previewing/reviewing changes, the "Return to save form" button
now replaces the "Resume editing" button in the top-left corner (and
receives the 'back' flag). Effectively, you tap 'back' once to go back
to the edit summary, and twice to go back to editing. This seems to me
like a much more natural interaction than two separate buttons.

Bug: T225021
Bug: T227049
Bug: T227857
Change-Id: Id27ccf06923c8aa86b1c1a9292bc43bb825ce6c8
2019-07-12 20:33:02 +00:00
jenkins-bot 1d2b9d20cf Merge "Dialogs: Use close flag for close actions" 2019-07-02 19:01:36 +00:00
Ed Sanders e83e80f42e Show edit summary on preview page
Bug: T199582
Change-Id: Ia8c2322706e8e635498c447dddb3b4b98040e27e
2019-06-21 12:54:13 +01:00
Ed Sanders 7ad624f0a3 Remove switch confirm dialogs
Bug: T220007
Change-Id: I81b39a02d573d96bcb6b4238aabbcd077e874906
2019-06-11 22:35:34 +02:00
Ed Sanders efae95dabf Dialogs: Use close flag for close actions
Bug: T225021
Change-Id: Ifd0cb40031c2717cc0716f98a27c124f54709003
Depends-On: I67b8474b0662f8dbc23c1b5ff883e3d4093bdbd4
2019-06-10 15:58:47 +01:00
Ed Sanders 4c8346f822 Fix API request for media dialog preview
Regressed with upgrade to apiversion 2.

Change-Id: I257c367b8f639a389002fefcd074e2fffe5a3bd4
2019-05-13 12:51:54 +01:00
Ed Sanders a424bc3da5 SaveDialog: Move iOS Safari hack to avoid losing focus
Bug: T222859
Change-Id: I07b530573a8f5b900bdb5cbc15314f5758baf36a
2019-05-13 11:50:55 +01:00
Ed Sanders 5346acc175 Fix edit summary preview
API version 2 doesn't use the '*' property.

Bug: T222999
Change-Id: I4da49dfd6f1e7ffe682fb803bb256ab7ec2aad61
2019-05-11 21:24:43 +01:00
Bartosz Dziewoński c31cf00432 ve.ui.MWSaveDialog: More save panel disappearing on iOS Safari
Bug: T221289
Change-Id: I6ec40bd78f5c36a6033e800466124fcbb4f6446d
2019-05-01 22:43:49 +02:00
jenkins-bot d85062d1d1 Merge "Fix switching without changes" 2019-04-30 19:37:03 +00:00
Ed Sanders 7739b1c79b Fix switching without changes
* Remove 'discardChanges' from switchToWikitext. This was
  intended to discard changes even when the document was
  modified, but it is no longer used as we always keep
  changes if we can.
* Remove 'leaveVE' param, it was only used once and has
  been replaced with a direct call to switchToFallbackWikitextEditor.
* Don't reset 'section' if there are no changes.

Bug: T221981
Change-Id: Ia39345da44d203ba67ae331917c8d5ece7d42ef7
2019-04-30 14:52:58 +01:00
Ed Sanders 31dd73ae81 MediaDialog: Use new icons
Bug: T222086
Change-Id: I09c0a4e039de224d3cb0dd92855c559668ed35d3
2019-04-29 10:00:06 -07:00
Ed Sanders 709530993b DesktopArticleTarget: Remove changing document opacity when switching to WTE
When this was introduced in 7b2cacbe57
(2013), the confimation dialog was a generic confirm() popup. Now that
it is a OOUI dialog, the dialog overlay serves the same function.

Change-Id: I9812ab55c7a8179524865d93a6d269e388d4c4ab
2019-04-25 21:08:42 +02:00
jenkins-bot d39c28ca69 Merge "ve.ui.MWSaveDialog: Work around save panel disappearing on iOS Safari as well" 2019-04-24 22:25:59 +00:00
Bartosz Dziewoński 11673b21ad ve.ui.MWSaveDialog: Work around save panel disappearing on iOS Safari as well
Same thing as Ifb49ede450cabdcd8303b298b62f2ac632809b53, for
a slightly different case that we missed.

Bug: T221289
Change-Id: I0ca287af87e1058620fbed75a50d40f01513a567
2019-04-24 15:56:58 +02:00
Bartosz Dziewoński 5b0bb28323 ve.ui.MWSaveDialog: Fix preview of redirects
Incorrect order of operations caused all metadata to be removed before
we looked for the 'mw:PageProp/redirect' metadata item.

Bug: T221686
Change-Id: Ifcf210ad772babe1019fd0cfbaa7bd60d0e7e5fe
2019-04-23 23:02:24 +02:00
Ed Sanders 0db4ae6e00 eslint: Enable valid-jsdoc
Change-Id: Ia0d1e57246a1c567d73022ceca9b8c02850f9bc8
2019-04-17 17:13:39 +01:00
Bartosz Dziewoński b7f7cf3734 ve.ui.MWSaveDialog: Work around review panel disappearing on iOS Safari
No idea what causes it, but I've seen a similar issue when working on
Ic35f084d019afd1782292c831765ceb1444fb14a (in OOUI) and this hack
worked there too.

Bug: T219680
Change-Id: Ifb49ede450cabdcd8303b298b62f2ac632809b53
2019-04-10 22:56:08 +02:00
Ed Sanders 72df5f690f Update VE core submodule to master (f039957f3)
New changes:
f039957f3 [BREAKING CHANGE] Use keyed objects for importRules blacklists

Local changes: Use extendObject to set importRules

This allows us to inherit the ruleset from the parent
so we don't have to worry about keeping it up to date.
(For example alienTableCell from upstream was missing
in MW).

Media/Gallery dialogs: Add missing mwTable types.

Change-Id: I366a091ff4def66cc25200b3d1b2c23ba6b716f7
Depends-On: I8ff7e8242c8db235a0f9e11e2e52f90d62d368a0
2019-04-09 16:58:26 -07: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 6aa61aefa5 MWMetaDialog: Implement read-only mode
Bug: T210142
Change-Id: I7b32668a5daecc04515e9fa13875b278cadfbcce
2019-02-25 12:56:37 +00:00
Bartosz Dziewoński 043a59a9bd ve.ui.MWSaveDialog: Fix fragment links in visual diff too
Follow-up to a22b9c8ea3.

Bug: T212554
Change-Id: Id7a16505c11a25f7a61f1394e9d9d1372cbb3d23
2019-02-22 22:51:30 +01:00
Bartosz Dziewoński ab8ae002af ve.ui.MWSaveDialog: Target links in visual diff to new window
Needed after change I6c988c012730d36d60629864a436e4a1700684c5
in VE core.

Change-Id: I7f0e836bd105a925f8dc62d52f081ee9051765fd
2019-02-22 22:50:55 +01: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 e21d4fab3f Update VE core submodule to master (2951e9378)
New changes:
202adf904 [BREAKING CHANGE] Unify FragmentInspector/Dialog behaviour

Local changes:
* Update dialogs to use common actions & FragmentWindow

Change-Id: Ib744b8996db48d1ee58bc873120400566c490e88
2019-02-22 01:13:36 +01:00
Ed Sanders 332aa1f3d2 build: Update eslint-config-wikimedia to 0.11.0
Change-Id: I5a294705eed1760e2d4dde33934d2ffb12e29525
2019-02-20 20:23:43 +00:00
Bartosz Dziewoński c91047b129 ve.ui.MWGalleryDialog: Allow normal tools in gallery captions
PHP parser and Parsoid now both allow normal wikitext in gallery captions.

Bug: T187958
Change-Id: I3470ec1f81493c58e4c2bdad00d5d78af8b4a10b
2019-02-01 19:51:35 -08:00
Ed Sanders 375edf0182 Fix uncaught jQuery linting errors
Change-Id: I17482ec84c95e88881ab4bee9b9cadb27b2dc472
2019-01-18 21:03:38 +00:00
jenkins-bot 1737464653 Merge "Fix fragment links in preview" 2019-01-18 16:54:54 +00:00
Ed Sanders a22b9c8ea3 Fix fragment links in preview
Bug: T212554
Change-Id: Ic9b8f14c377b0dd43aa648983fac27272a64b66f
2019-01-18 14:39:00 +00:00
Ed Sanders 5461c56380 stylelint: Enforce class name pattern
Change-Id: Ia41a08424f840d353eb7fc213815f7992da4a2ef
2019-01-13 15:14:53 +00:00
jenkins-bot 1190ce584d Merge "Add missing mw-content-ltr/rtl class to diffElement" 2019-01-09 16:49:39 +00:00
Ed Sanders 74f6c4899c build: Update eslint-config-wikimedia to 0.10.0
Change-Id: I63a0ebf0b31a0d5d4e680a4e2a5a0be4850be165
2019-01-08 17:00:09 +00:00
Ed Sanders 3059251b5c Add missing mw-content-ltr/rtl class to diffElement
Change-Id: I9bd4fad6202ea3636256970b12d6c94f408d0bd8
2019-01-04 22:23:23 +00:00
jenkins-bot 3d4fabd3de Merge "Move save error messages above save footer" 2019-01-03 16:55:40 +00:00
Ed Sanders 0f1a8b9eb9 Default originalGalleryGroupItems to empty array
Bug: T212809
Change-Id: I29e95be677d1d7fcc96bbf20efb7d5724d71b0de
2019-01-03 15:13:15 +00:00
James D. Forrester 3c293ea00c doc: Bump copyright year for 2019
Change-Id: I8991b97c980d4149f53eb5601036220ef3c0c440
2019-01-01 13:24:23 +00:00
jenkins-bot ccfcacf1fd Merge "ve.ui.MWGalleryDialog: Improve modification checks" 2018-12-30 22:49:34 +00:00
jenkins-bot 4c44d8b712 Merge "Use ve.targetLinksToNewWindow where possible" 2018-12-13 22:25:31 +00:00
Ed Sanders ad5b8f99ee Replace $( 'body' ) with $( document.body )
Better to use the actual element rather than a string selector.

Change-Id: I7d2c08cf1e3c6f14be5bf65ac040b7cdfdd8c594
2018-12-13 16:44:25 +00:00
Bartosz Dziewoński 22a80e430e Use ve.targetLinksToNewWindow where possible
Also, avoid parsing HTML manually in a few places.

Change-Id: I983a7e1917a3f0728173e9621c709d1c8c04f650
2018-12-12 23:19:11 +00:00
Ed Sanders f2ac575ee2 Move save error messages above save footer
Keeps the more important information higher up the page.

Bug: T72266
Change-Id: Iaf29a5190af5f72c88eb1bfdacce199cd046eee4
2018-12-12 12:53:55 +00:00
Ed Sanders a9aa4d6c15 Fix save dialog error message transition
Element must be hidden for $.slideDown to work.

Also speed up animation to OOUI default 250ms.

Change-Id: I0616c156f1893688abd80f9e47c1a88e9237d085
2018-12-12 12:20:24 +00:00
Bartosz Dziewoński a659c4eaea ve.ui.MWTransclusionDialog: Remove unneeded code re-setting insert label
This sets the label to be the same as the default value inherited from
ve.ui.MWTemplateDialog. Looks like it's no longer needed since change
Ia8fb88d3501ffa2c26add4419da5463a926f45d1 (2014).

Change-Id: I1dd40d2428c0221dfdc79e5f34e411b127624eb6
2018-11-29 23:10:56 +01:00
Ed Sanders b76e40b2f3 MWSaveDialog: Use ve.targetLinksToNewWindow
Change-Id: I1515901f05de1a7b1ef2aa3cb34f3043ab02acce
2018-11-28 15:44:52 +00:00
Bartosz Dziewoński b983538038 ve.ui.MWSaveDialog: Improve handling of links in edit summary preview
* Pass the page title, so that links to section point to the current
  page rather than "API"
* Make all links open in a new window, instead of producing a warning
  about losing your changes

Bug: T208978
Change-Id: Ia1924e1af644ee41ebcaa1da40ca004cb72dcdaf
2018-11-27 02:39:47 +01: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
Bartosz Dziewoński 914e6905ed ve.ui.MWTemplateDialog: Unbreak the logic to enable/disable "Apply" button
I have moved this block of code to the wrong place in change
13675e4a81. As a result,
`this.loaded` was being set early, so the dialog was treating
all of the pre-existing transclusion parts as newly inserted,
and the "Apply" button was therefore always enabled.

Bug: T209661
Change-Id: I3c1b45f91738ab6fc4a6f6d61ae5bf925c9a1bb5
2018-11-16 01:08:29 +01:00
Bartosz Dziewoński 79e16e218f ve.ui.MWGalleryDialog: Improve modification checks
Undoing the changes to an image caption or alt text, or to the gallery
caption, or to the order of images, or removing a previously added
image, will now disable the "Apply" button again.

The following cases will *not* disable the button again, and it is not
feasible to implement them:
* Re-adding a previously removed image with identical options
* Changing any caption to the old value by other means than "Undo"
* Changing image caption or alt text to the old value after switching
  to a different image and then back

Bug: T206534
Change-Id: I7c19600e741211a6ba61837513497facbafc5cef
2018-11-15 22:16:26 +01:00
Bartosz Dziewoński a66f57643c ve.ui.MWGalleryDialog: Update "Apply" button when image added
Use 'change' event instead of 'reorder' to respond to this event.
This also covers removing images now, so delete that code.

Bug: T206534
Bug: T209451
Change-Id: I9eda383be2ca7f02b42814d43e6b42961b9b96e7
2018-11-15 20:56:39 +01:00
Thalia 70c3bc65d9 ve.ui.MWGalleryDialog: Improve how dialog actions are enabled
Enable the Apply changes/Done action if (i) the current contents
of the dialog inputs would change the gallery node or (ii) if the
user has interacted with inputs that alter the gallery caption or
images (including dragging/dropping or removing an image).

Bug: T206534
Change-Id: Ia6c1cc60d4f32ac66778e6973e2d400491f74128
2018-11-13 19:14:33 +00:00
jenkins-bot ef5ad0052a Merge "SaveDialog: Remove scrollable property from nested panels" 2018-11-05 20:46:22 +00:00
jenkins-bot 3f97176f7c Merge "Use upstream AbandonEditDialog" 2018-11-05 18:19:23 +00:00
Ed Sanders 956c28bf56 SaveDialog: Remove scrollable property from nested panels
Scrolling is handled by oo-ui-window-body.

Change-Id: If074b5de859b5a9dbad76d6715739e4d37e68c90
2018-11-02 20:32:23 +00:00
jenkins-bot 74a744327e Merge "ve.ui.MWMetaDialog: Wait for each page to set up (especially 'category')" 2018-11-01 23:02:59 +00:00
jenkins-bot 9ac196777a Merge "Blocked apply if redirect address is invalid" 2018-11-01 22:17:03 +00:00
flutters f847880292 Blocked apply if redirect address is invalid
Extracted extractValue to a separate method
Added checkValidRedirect method to MWSettingsPage
Added errors when redirect address is invalid
Added 1 error message to localisation strings
Added 1 TODO (more precise error messages)

Bug: T74971
Change-Id: I8bcf16e97e5211671759acdf0846243df2c03fc2
2018-11-01 21:20:01 +01:00
jenkins-bot 62c81905e6 Merge "Use changed ve.dm.Selection interface, if present" 2018-11-01 13:39:18 +00:00
jenkins-bot c1871d0216 Merge "ve.ui.MWMediaDialog: Open to the "Upload" tab when dropping/pasting file" 2018-11-01 11:48:46 +00:00
Ed Sanders 1f7b239fbb Reset scroll and tab state when closing dialogs
Bug: T205948
Depends-On: I993455b648b62b97164f55146c75a53da70c322b
Change-Id: I30336caf76e8ff4de4c4dbd3728211c9a58d724e
2018-11-01 04:11:28 +00:00
Ed Sanders eab2b728e9 Use upstream AbandonEditDialog
Bug: T192333
Depends-On: Ib581528363a3fe5461529515835bd7fb1ce66e56
Change-Id: I206366e096aafc02102357648b9f85f879479500
2018-10-31 13:38:31 +00:00
David Chan 2c3e33b759 Use changed ve.dm.Selection interface, if present
Bug: T208228
Change-Id: Ie2027c4d16e0ac591512e90dbdeea012f11ff875
2018-10-31 12:07:14 +08:00
James D. Forrester c36f3d2214 Revert "Update VE core submodule to master (02f5f0ca4)"
This reverts commit be628a5b7e.

87b20f9b Revert "[BREAKING CHANGE] Do not cache document model data in DM selections"

Change-Id: I47bbf757a4ad227346d3734f6e50d928a2de1409
2018-10-30 15:12:30 -07:00
Bartosz Dziewoński b5e430a3fc ve.ui.MWMetaDialog: Wait for each page to set up (especially 'category')
The initial value for the categories field is set asynchronously
(after potentially querying the MediaWiki API about the categories).

This caused the existing categories to "pop in" after the dialog was
opened (if you were on a slow network and it took more than 250ms to
query their information).

Additionally, it caused the "Apply" button to always be enabled if the 
page had any categories on it (since the categories field was still
empty when extractSettings() was executed).

Bug: T207719
Change-Id: I46475a1eead91707edb8efe8cb7221a734818e16
2018-10-30 20:55:43 +01:00
Bartosz Dziewoński f0d30ad59f ve.ui.MWMetaDialog: Consider category sortkeys when checking for changes
I forgot about them when reviewing 79253bb0c8.
Oops.

Bug: T207719
Change-Id: I11fd396883132a2dfb79ded6f04983fd5b7fbf61
2018-10-30 20:55:43 +01:00
jenkins-bot afb49f7f1f Merge "ve.ui.MWMetaDialog: "Apply changes" is now only enabled after making changes" 2018-10-30 19:29:05 +00:00
flutters 79253bb0c8 ve.ui.MWMetaDialog: "Apply changes" is now only enabled after making changes
Added 5 methods for MetaDialog (documented in code comments)
extractSettings
compareSettings
getAllWidgets
assignEvents
updateActions

Added 2 fields to MetaDialog
oldSettings
widgetList

Apply changes button now is only enabled when there are new changes

Added getFieldsets method to all subpages

Bug: T207719
Change-Id: Id51acf6c754d9a2572811775d83983e6ab9395b7
2018-10-30 19:12:52 +00:00
Ed Sanders be628a5b7e Update VE core submodule to master (02f5f0ca4)
New changes:
ccb4de82c [BREAKING CHANGE] Do not cache document model data in DM selections

Bug: T208228
Change-Id: I564399ad864751d1690077b45a06e098b5509a93
2018-10-30 08:11:02 -07:00
Bartosz Dziewoński af1a898380 ve.ui.MWMediaDialog: Open to the "Upload" tab when dropping/pasting file
Bug: T208286
Change-Id: I1f203b3a9b9401de22420e21f5553c78321cdbf8
2018-10-30 03:07:30 +01:00
jenkins-bot 54abc29ca1 Merge "Improve the gallery dialog layout for mobile" 2018-10-15 10:19:41 +00:00
Thalia 88875b1b8f Improve the gallery dialog layout for mobile
Bug: T203477
Change-Id: I0adc851b71362267d1d06d9a8b5483c1ee114c26
2018-10-12 16:58:48 +01:00
Volker E a5a3d829a9 Update user avatar icon and make use of OOUI's built-in
Bug: T123810
Change-Id: I3ed04d3037836b47706d9f7284eeb9668712bdcb
2018-10-10 18:34:27 -07:00
Ed Sanders bb369a0b48 Wrap editPanel & searchPanel in a StackLayout
Change-Id: Ib069a41c7855647b1cd85546fc83b30d65b27443
2018-10-05 22:17:14 +01:00
jenkins-bot 95eb279cc6 Merge "ve.ui.MWGalleryDialog: Fix setting of expanded/scrollable panels" 2018-10-04 21:45:24 +00:00
jenkins-bot c43f1589d4 Merge "ve.ui.MWGalleryDialog: Switch innerMenuPanel/innerContentPanel" 2018-10-04 21:38:41 +00:00
Ed Sanders 485b257278 ve.ui.MWGalleryDialog: Fix setting of expanded/scrollable panels
There are 4 scrollable panels:
* Image list content
* Edit panel
* Search panel
* Options panel

Remove non-existent 'expandable' property.

Change-Id: Ia0d0a66be8a2bcb243a39ef632151d7fb99486ef
2018-10-04 21:23:10 +00:00
Ed Sanders 61cfce8c32 ve.ui.MWGalleryDialog: Switch innerMenuPanel/innerContentPanel
These two panels were named the wrong way around.

Also change 'inner' prefix to 'imageList'.

Change-Id: Ie1c3e2160c81b898795fb1fd4d0a027e8f06c4d4
2018-10-04 21:22:05 +00:00
jenkins-bot 0a4cee1cd6 Merge "Use correct OOUI hierarchy in gallery dialog" 2018-10-04 20:41:13 +00:00
Thalia f422ae2dcc Use correct OOUI hierarchy in gallery dialog
Make sure fieldset layouts contain field layouts. Also remove
meaningless parameter icons.

Bug: T205615
Change-Id: Ia104cd60ffa9f5d636bee5611f265a2bb5ac0051
2018-10-03 22:22:25 +01:00
Thalia a4f033a1e6 Use correct OOUI hierarchy in media dialog
In the "advanced settings" tab, make sure widgets are wrapped in
field layouts, then fieldset layouts.

Bug: T205615
Change-Id: I141f9954e482f9d5afd84bfa63384b90a2911d00
2018-10-03 21:54:41 +01:00
Thalia 56cd18e674 Refactor media dialog initialize method
Change-Id: Ida7b50a89ab454ba023334cd2203d2e2e6150931
2018-10-03 20:50:36 +01:00
Bartosz Dziewoński 7a18889ddd ve.ui.MWMediaDialog: Remove unused CSS
This rule was being overridden by a more specific rule from OOUI with
the selector `.oo-ui-fieldLayout.oo-ui-labelElement`. I don't think
the margin tweak would be useful.

Change-Id: If6321ba7ea1cfad83f65f137b2a440957bf2fea6
2018-10-02 00:02:03 +02:00
Thalia dc6e7027a8 Make extension dialog done action messages match other dialogs
Bug: T205807
Change-Id: Icd7e4fddcee8687d9c3dbbda144aa0989d659ac8
2018-09-30 21:18:18 +01:00
Bartosz Dziewoński 9cf5515ccb ve.ui.MWMediaDialog: Remove unused widget and messages
* visualeditor-dialog-media-size-originalsize-error
  Unused since 37b3c07b26.

* visualeditor-dialog-media-originaldimensions
  Never used (introduced in 4947420650).

Change-Id: I22f37b457cc6fbac03593fece003e97f4f5a2ccf
2018-09-27 18:31:20 +02:00
Thalia 9813d876e1 Enable the media dialog on mobile visual editor
Also make improvements to the layout, so that the dialog works
in desktop and mobile - most importantly, change from booklet
to index layout.

Bug: T190885
Bug: T118710
Change-Id: I1915d06c9b0e4b7907136e645f60be96e30cc287
2018-09-27 13:21:15 +01:00
Bartosz Dziewoński 42ebd10090 Correct some doc comments' syntax
I ran Closure Compiler over the codebase just to see what would happen,
and it printed some useful warnings.

Change-Id: I56d40b11e6d1dd7ce68a5e59da511f66e928647f
2018-09-26 14:49:52 +02:00
Ed Sanders 985a94777a Change type from 'frame' to 'thumb' when resizing
Bug: T204185
Change-Id: If40c70a074263b870aee4e5c87c3f4b5e98d0c4b
2018-09-24 15:31:58 +01:00
Ed Sanders 76d0b95af3 Re-order MWCommandHelpDialog and promote/demote insert tools
Change-Id: I3ac4e556e06e2ab899d8bc07ca79d847146952e6
Depends-On: Ic12bc1c3ac96a1feb79e277e65aaf2d29af4f03f
2018-08-29 10:51:00 +00:00
Ed Sanders 4ee09f75af Replace Bugzilla numbers with Phab numbers
Change-Id: I0e91d63b3872520b8f66002615967b2cfe235bf5
2018-08-09 15:11:27 +01:00
Bartosz Dziewoński 86f2057c81 Always generate empty wrapper paragraph inside image captions (slugs begone!)
While all of the following are valid in the model:

1. <mwBlockImage></mwBlockImage>
   Image with no caption. Must use the media dialog to insert one.
2. <mwBlockImage><mwImageCaption></mwImageCaption></mwBlockImage>
   Image with empty caption. There is a slug to insert a paragraph.
3. <mwBlockImage><mwImageCaption><paragraph></paragraph></mwImageCaption></mwBlockImage>
   Image with caption with empty paragraph. Nice and intuitive!

(Same for <mwGalleryImage> / <mwGalleryImageCaption>.)

The third option is the most convenient for the user. We should always
generate that when converting documents from HTML and from the editing
tools (MWGalleryDialog, MWMediaDialog/MWImageModel).

Previously, the editing tools generated option 2 if no caption text
was entered, and the converter generated option 2 if there was no
caption node or if it was empty. Curiously, option 1 was never used.

Wikitext for manual testing:

```
[[File:Foo.png|thumb]]
[[File:Foo.png|thumb|]]
[[File:Foo.png|thumb|Caption]]

<gallery mode="packed">
File:Foo.png
File:Foo.png|
File:Foo.png|Caption
</gallery>
```

Bug: T200387
Change-Id: Ie82fb339f6bd8ae1b289235bf5402490722d9a7c
2018-08-01 05:40:57 +02:00
Bartosz Dziewoński 668ce071fa ve.ui.MWTemplateDialog: Prevent focus changes in the setup process
This is similar to the hack in ve.ui.MWMetaDialog, except uglier :(
We already explicitly focus the right field in the ready process.

I am not really sure why the focus change causes the issue, but
preventing it definitely fixes it. It would make sense if we changed
the value of the field after focussing it (as setValue() restores the
validity flag cleared by onFocus()), but we don't seem to do it.

Bug: T199838
Change-Id: Ia602551ee0b0885cefbd4cb2fc00d569ff42da67
2018-07-19 01:43:31 +02:00
Bartosz Dziewoński fc91623b94 ve.ui.MWMediaDialog: Fix confusion between #getSetupProcess and #getReadyProcess
Follow-up to 13675e4a81.

Bug: T185944
Bug: T199841
Change-Id: I2bf08bc0a3684dbfdb9574ea6df0352e8d9d8fd7
2018-07-18 06:30:46 +02:00
Bartosz Dziewoński 13675e4a81 Fix confusion between #getSetupProcess and #getReadyProcess
The #getReadyProcess method should be used pretty much only to focus
a field inside the dialog after it is opened. It runs after the window
opening animation finishes, so if you add stuff to the window here,
that will be visibly delayed.

The #getSetupProcess method should be used pretty much for everything
else that depends on the opening `data`. It runs before the window
opening animation, so if you add stuff to the window here, it will be
visible while animating it.

Bug: T185944
Change-Id: I71ea5b6e1e1947c1cf8fd749100e854953a8ef3c
2018-07-11 23:47:55 +02:00
Ed Sanders f80b029444 Fix doc in GalleryDialog and add todo
Change-Id: I4e1ad8ec3d7a1c85a600bf1dafc449054c115203
2018-07-09 22:03:52 +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
jenkins-bot 43d5e767e8 Merge "De-duplicate and fix updating of file link in media dialog" 2018-07-03 17:27:37 +00:00
Ed Sanders 6bf9210abe De-duplicate and fix updating of file link in media dialog
Bug: T198565
Change-Id: I7d06d3316b317fb85edb9461080f5f2e5cd439fe
2018-07-03 17:59:43 +01:00
Ed Sanders 452545fa2e Fix window target when opening feedbackUrl
'_new' should be '_blank', but '_blank' is also the
default, so just remove the argument.

Change-Id: I8f922b835b2bc14e5641e0ab29bf002b32301490
2018-07-03 17:36:35 +01:00
Bartosz Dziewoński b51707d96f ve.ui.MWTemplateDialog: Prevent scrolling to top after removing a parameter
Bug: T180151
Change-Id: I063c53fa572e998f5b34fc895d02fe1a74026c6e
2018-06-21 20:45:06 +02:00
Ed Sanders b340f526e3 Use WindowAction to open the wikitext paste dialog
This adds in missing functionality, such as deactivating
the surface selection while the dialog is open.

Change-Id: I0d8652a989504a35e5c235224b0ef924b6dcbeed
2018-06-13 13:28:15 +01:00
David Lynch d3fd979d3b Paste conversion dialog shouldn't be escapable
It doesn't have a "cancel and do nothing" route to fall back on, so pressing
escape does the non-progressive action, which is to paste-as-wikitext rather
than paste-as-plaintext. Neither of these is really an intuitive outcome.

Change-Id: I786b6fc87e3cdf3bb50898a070a15a353a242848
2018-06-04 11:16:19 -05:00
jenkins-bot 6c90442326 Merge "ce.MWWikitextSurface: ask on paste about wikitext conversion" 2018-05-24 17:21:07 +00:00
David Lynch 4d263afaa2 ce.MWWikitextSurface: ask on paste about wikitext conversion
Throw a dialog box up to ask whether to convert something with formatting to
wikitext, or downconvert it to plain text.

This logically depends on Ie9aaaa59e9dfa138d394051fe491573253df1805.

Bug: T190079
Change-Id: I6afbbe303d1506426109e75c95f6be546ec48536
Depends-On: Ie9aaaa59e9dfa138d394051fe491573253df1805
2018-05-23 08:08:22 -05:00
Ed Sanders ccb766e933 MWSaveDialog: Fix typo in no-categories branch
Bug: T195323
Change-Id: I7d22b6cad363a240660563554e4578621f7966d0
2018-05-23 11:18:54 +01:00