David Lynch
9762b096c8
Autosave: only try to remove autosave on teardown if the surface exists
...
It's possible for some load failure states to cause this teardown at a point
without a surface. I observed it in MobileFrontend, when restbase can't be
contacted.
Change-Id: I13489640759c73dad5730d0bbadbfb2a38cb8e53
2018-03-14 11:53:10 -05:00
Ed Sanders
e0419f8388
Autosave section title when adding new section in source mode
...
Change-Id: Idcbe2f12e3eb0bb85e2c986885bd8084b16dbe5b
2018-03-12 12:25:12 +00:00
Ed Sanders
e78379a395
Attach deactivate code to namespace tab ('Main'/'Article')
...
Bug: T189380
Change-Id: I9f05722b9a1c740f9f982d9c5690d48046f19fdd
2018-03-10 19:07:11 +00:00
Ed Sanders
c3c3c60f1f
Clear VE autosave whenever WikiEditor is loaded
...
Bug: T189381
Change-Id: I21a76dc32327d6c6e72a793d9b579cb7b6a5e32e
2018-03-10 18:34:17 +00:00
Ed Sanders
ec6d9b235a
Clear auto-save when switching to fallback wikitext editor
...
Bug: T189381
Change-Id: Id89fa2a673ad8aef3826c0ef862770bf522bbdcf
2018-03-10 18:04:44 +00:00
Ed Sanders
9678cdc7c8
Factor out isSaveable method from updateToolbarSaveButtonState
...
Change-Id: Ic1922ed26bae26a76e8149d48f3fb27fa9ba4330
2018-03-10 16:20:30 +00:00
Ed Sanders
8b208c80d5
Remove unnecessary attachToolbarSaveButton override
...
It's identical to the code inherited form ArticleTarget.
Change-Id: I7fe7a48b0614f2ac2665ece042bb95a6f77303ad
2018-03-10 16:20:30 +00:00
jenkins-bot
04e5f6f208
Merge "LinkCache: styleParsoidElements find mw:WikiLink with ~="
2018-03-09 21:44:52 +00:00
jenkins-bot
8e79d85583
Merge "Blacklist Web of Trust junk from being added to pages"
2018-03-08 00:33:48 +00:00
David Lynch
f8c5608caf
LinkCache: styleParsoidElements find mw:WikiLink with ~=
...
`noopener` being added to the rel caused issues.
Bug: T189175
Change-Id: I33a456351ab025d0c81cfb1a1577d5a2ae9df51a
2018-03-08 00:14:16 +00:00
Bartosz Dziewoński
b05ac142c6
Blacklist Web of Trust junk from being added to pages
...
Bug: T189148
Change-Id: Icc4b2d0ddf5104e26a3f563816f6f971d71e2531
2018-03-07 22:12:43 +01:00
Ed Sanders
045f3b7640
Follow-up I5357a909: Fix logic for autosave from edited state
...
Bug: T189071
Change-Id: I5439a73ffcf26795f58625720b1f1667ee3965cc
2018-03-07 18:43:28 +00:00
David Lynch
795b428477
MWNumberedExternalLinkNode: set an explicit type
...
This lets copy-paste between documents retain the numbered status rather than
falling back on pasting "<a>[3]</a>".
Update the part of LinkCache which selects on mw:ExtLink, so it will handle
possible multiple values in the link rel.
Bug: T188429
Change-Id: Ia5e4c9fa45e94da9cbfcd2a42d017d0fda1c511f
2018-03-05 11:59:41 -06:00
Ed Sanders
4c759e2587
autosave: Handle switched document with no transactions
...
Always store immediately if fromEditedState is true. Also
now that we only store if there is state to recover, remove
the check for transactions before deciding to show the notification.
Change-Id: I5357a9098b91e303f5c71881ea03a080d2969fff
2018-03-04 23:40:24 +00:00
Ed Sanders
007bb6fa09
Refactor diffpage init
...
Avoid re-rendering the diff if it hasn't changed.
Change-Id: Icbc8eb58625cf7c5485d0045e26993a170016309
2018-03-04 14:45:33 +00:00
Ed Sanders
c8d0f62095
fetchSpecialCharList: Set directionality
...
Specifically, set arabic(extended) and hebrew to 'rtl'.
Logically depends on I14abd3e0c0d23f79aa01d96c216eea913024b4c8
to set the dir attribute in UI.
Bug: T56310
Change-Id: I1c7e28d3d2f20ca84115be6d49650cd9a81d78dd
2018-03-01 23:22:45 +00:00
Ed Sanders
11ac2736a1
autosave: Don't store initial document state until first change
...
1. It wastes valuable time during setup.
2. If a user reloads the page without making changes we
should give them the latest html from the server to
minimise the chance of an edit conflict.
Change-Id: I9a1f8cfd65ef2552fe2c3d6d2bbf975851b52003
2018-03-01 18:25:10 +00:00
Ed Sanders
90b6a1b5cf
Clarify autosave comment
...
Change-Id: I0bdaf989886be8537ea45237ceea88a5cca11fc1
2018-02-28 14:36:58 +00:00
Ed Sanders
19d9e9eb98
Tag TODO comments with bug number
...
Change-Id: I965e8d4bed4fdfa24738ca5cce0ae3f51e7f2b40
2018-02-28 14:36:42 +00:00
jenkins-bot
8727ecd181
Merge "Do not use deprecated jquery.byteLength"
2018-02-27 22:10:23 +00:00
Bartosz Dziewoński
974ea82c50
Do not use deprecated jquery.byteLength
...
Change-Id: If3f921d60563bd614c269d1d26b745161f8cfc7b
2018-02-27 22:35:29 +01:00
jenkins-bot
12323a022e
Merge "autosave: Use upstream methods in ve.dm.Surface"
2018-02-27 21:03:52 +00:00
jenkins-bot
b3adaa5fc1
Merge "Show notification when document is recovered (or fails)"
2018-02-27 21:03:51 +00:00
Ed Sanders
c670ce76ee
autosave: Use upstream methods in ve.dm.Surface
...
Change-Id: I150b21d7767153d8457b5da658bb8b51b5464aa9
Depends-On: I859b57aef9d591597956f3d942dd2cf1b0aecee0
2018-02-27 20:54:59 +00:00
Ed Sanders
a46b30a161
Show notification when document is recovered (or fails)
...
Change-Id: Id2f6651ba7743c05043bbbe64cd9cb7bd762d74b
2018-02-27 20:54:18 +00:00
jenkins-bot
c44390e6f8
Merge "Use session storage to auto-save"
2018-02-27 20:20:31 +00:00
Ed Sanders
76caef6b4b
Use session storage to auto-save
...
Ensure we start with the same HTML (i.e. if an edit has
been made since the crash-recovery):
* Whenever an article target is activated, stash the initial
document html, other parsoid response data, and the request
parameters (pageName, mode, section) in session storage.
* Whenever an article is fetched through the target loader,
recover from session storage if the request parameters match.
Store transactions:
* On document transaction (debounced) append the latest
changes to session storage.
* If a document state is recovered from session storage,
attempt to re-apply the stored transactions.
Clear transactions:
* Whenever the target is torn down (i.e. save, deliberately
closing the editor to go back to read mode)
Other:
* If writing to session storage fails once, disable future
attempts for that session (assume storage quota exceeded)
* Disable tempWikitextEditor when recovering. We don't have
the transaction code loaded yet to perform the recovery.
Bug: T57370
Depends-On: I3832243fc347a99641fcb7e39a887a153c9a3b22
Depends-On: I448fb566fe9f7f5b5a76e88b70ca000e3d35b415
Change-Id: Id9d877f903cf4796a52f90991c030417a9f8786f
2018-02-27 12:19:06 +00:00
Ed Sanders
31f7015260
Whitelist style tags from Parsoid, e.g. TemplateStyles
...
Bug: T188143
Change-Id: I7a30d8a8c40de8b786d59c8bf0ebcb77f2baeb2a
2018-02-26 16:52:01 +00:00
David Lynch
abe3d0a4a5
DiffPage.init: Enforce a valid diff mode
...
Bug: T173400
Change-Id: I48b97e10fc6c6e2ca84563b58dd0bb8f42fa251f
2018-02-22 11:48:37 -06:00
Ed Sanders
05a504887d
Drop IE10 support
...
Change-Id: Ib1cb8fb32c499ba0bdc87ec55e1e2e95d2eb39ec
Depends-On: I68c882e64fba95d5e1bf41f64658fcef7524dcf5
2018-02-22 00:47:38 +00:00
jenkins-bot
8d3e702976
Merge "Disable tempWikitextEditor for section=new on talk pages"
2018-02-21 01:29:58 +00:00
Derk-Jan Hartman
249c52b6a4
Hide historical diff controls when UA doesn't support JS
...
Bug: T187780
Change-Id: If29974323ef21016edbbb66870914a6dc37e7bbb
2018-02-20 16:54:31 +00:00
jenkins-bot
8f33fc6225
Merge "Add clearfix to diff page's visual diff element"
2018-02-20 16:52:39 +00:00
jenkins-bot
d040645244
Merge "Avoid jQuery.parseHTML"
2018-02-20 16:50:06 +00:00
Ed Sanders
7fe496d8ef
Avoid hiding generated #toc
...
Bug: T187636
Change-Id: I713479616feddb01c48c9bb6dda2f9c4aaf182e0
2018-02-20 16:18:27 +00:00
Ed Sanders
fcf6ea9e67
Add clearfix to diff page's visual diff element
...
Bug: T187687
Change-Id: I4de925964fde7b0fffc6540ba821f9a8162cffe7
2018-02-20 15:04:25 +00:00
Ed Sanders
ee5b80aeee
Avoid jQuery.parseHTML
...
Bug: T187713
Change-Id: Ic156d6fb670fa2f79cf3c1d5fe0c6272b53b6440
2018-02-19 15:41:20 +00:00
Ed Sanders
f2e7361460
Disable tempWikitextEditor for section=new on talk pages
...
The temp editor doesn't know about the title input
widget yet, so disable for now.
Bug: T185633
Change-Id: I3e44dcc30ee8372080c7cd8c5fc27eb167e24fc6
2018-02-16 18:32:41 +00:00
James D. Forrester
dd3dddb98c
Follow-up 0a7a845a4
: Missed one
...
Change-Id: I252cb6678df9df503e07b635384a713f052a8abe
2018-02-14 14:25:07 -08:00
Ed Sanders
119e9ef0f6
Remove IE9 workaround
...
Change-Id: Ifcb1690934ece7d373c764591e00740d6f1238ee
2018-02-13 10:45:16 +00:00
Fomafix
8079d081d0
Remove /* global confirm, alert */
...
The browser functions alert() and confirm() are not used.
Change-Id: I1b069937fe1548298d55a3e6616e189b72c3e8fa
2018-02-12 10:49:11 +01:00
Ed Sanders
cefa0ebf7b
Add trailing linebreak to NWE's temporary wikitext editor
...
Bug: T185632
Change-Id: I8225b08484e535668e8b0bd33eb3b8b09b80ff35
2018-02-02 11:10:18 +00:00
Ed Sanders
9770c80615
Load modules for preview
...
Bug: T147702
Change-Id: I94f6bdf122d4e2c9fba3103f36c438980ce8228d
2018-01-29 22:35:00 +00:00
jenkins-bot
97fbd5619c
Merge "Public API for the tempWikitextEditor"
2018-01-24 00:53:11 +00:00
jenkins-bot
a77eea97b3
Merge "Sync tempWikitextEditor just before building target, not on every change"
2018-01-24 00:50:41 +00:00
jenkins-bot
14e557e936
Merge "Use jQuery 3 .catch( fn ) instead of .then( null, fn )"
2018-01-24 00:06:11 +00:00
Ed Sanders
8afe6c5c6d
Public API for the tempWikitextEditor
...
Allows users to know when the widget has been constructed,
and access it (e.g. to set an initial selection)
Bug: T185279
Change-Id: I3678996bcf644cc889dd168ac3ce48b5c3633ec1
2018-01-23 15:30:51 -08:00
Bartosz Dziewoński
a0e2afef8e
Use jQuery 3 .catch( fn ) instead of .then( null, fn )
...
Change-Id: I676eec0acf25690c2b2dd0b9a414be5fee887395
2018-01-23 15:25:15 -08:00
Ed Sanders
d294006d7b
Sync tempWikitextEditor just before building target, not on every change
...
Also ensure tempWikitextEditor is always torn down, even if
target setup fails.
Change-Id: Idc30a9dc00491b8c85353d73cb9ff70afea1d51c
2018-01-23 15:13:10 -08:00
jenkins-bot
f52ee56a02
Merge "Toolbars: Replace $.height with clientHeight/offsetHeight"
2018-01-23 23:01:37 +00:00
Ed Sanders
154f49e964
Toolbars: Replace $.height with clientHeight/offsetHeight
...
Bug: T185599
Change-Id: I43fbce8f221553e9ae03f8385f39a19de01e8eb7
2018-01-23 12:32:16 -08:00
Ed Sanders
3077bbe51c
Remove Firefox support comment
...
This line isn't solely for supporting FF52, that is the order
in which it is called (move after attach, not before),
but that matches all our other widgets, so not sure
it needs commenting.
Change-Id: I6f3cc5687f1e4b995dff700d0765d14de1927d51
2018-01-22 11:27:46 -08:00
Ed Sanders
f2568c8d7d
NWE: Don't attempt to set selection on unattached textarea
...
Prevents an exception being thrown in Firefox <= 52.
Bug: T185304
Change-Id: Ic9a43e3cf12d4cc566cebb328f8e807e464af634
2018-01-22 18:58:26 +00:00
jenkins-bot
140ec5f2ab
Merge "NWE: Show temporary wikitext input widget while loading"
2018-01-16 18:13:47 +00:00
Ed Sanders
b1ea5d618a
Don't pass wikitext to requestPageData if unmodified
...
Bug: T184875
Change-Id: I41a72a9c7546fafc834bf837e507d9359872ff11
2018-01-14 16:16:47 +00:00
jenkins-bot
2091b8634a
Merge "Use section fragment after-save even if the query is empty"
2018-01-10 21:41:59 +00:00
jenkins-bot
2ea64bdd27
Merge "Change save dialog accesskey to be entirely off the trigger"
2018-01-10 21:30:51 +00:00
Ed Sanders
886faf2adc
NWE: Show temporary wikitext input widget while loading
...
Bug: T184614
Change-Id: I2e4964cb6329660957815dcb9a74d2ad24d5256b
2018-01-10 21:34:53 +01:00
David Lynch
64944c119a
Use mw.storage instead of localStorage
...
mw.storage catches errors, so we won't crash horribly when the user has
localStorage disabled / full.
Bug: T181822
Change-Id: I212994eb535b9a8fb5f6c09deaa10b16c3d7f10e
2018-01-10 11:44:24 -06:00
David Lynch
a89c79dc79
Change save dialog accesskey to be entirely off the trigger
...
Accesskeys in this situation are unreliable cross-browser. Firefox won't
trigger the accesskey inside the dialog. We can manually simulate it, via the
existing trigger.
Bug: T121183
Change-Id: Ib919d8b9fcd9324a517037bcc6ef93a26d1488b9
2018-01-08 11:52:06 -06:00
David Lynch
874ba30ce8
Use section fragment after-save even if the query is empty
...
Bug: T181075
Change-Id: If2d1107982d3f947330c750c635ee221ab71610f
2018-01-05 11:55:38 -06:00
Bartosz Dziewoński
23158de319
Fix context menu for mobile TargetWidgets
...
Depends on Ica66325a8267d14f25fbc537b956573d1d3cc336 in VE core.
Bug: T157084
Change-Id: I9d9839d7e96eb1ef254e11554acfb955750a2915
2018-01-04 16:53:40 +00:00
jenkins-bot
683ac88fcc
Merge "doc: Bump copyright year"
2018-01-03 19:20:07 +00:00
James D. Forrester
0a7a845a42
doc: Bump copyright year
...
Change-Id: I0b299c840ede1a1b8552cecfc70c5760ab036181
2018-01-03 17:45:07 +00:00
Bartosz Dziewoński
5f7e60e938
Remove unused files loading-ltr.gif, loading-rtl.gif
...
No longer in use since 6d8fbd8221
.
Change-Id: If0392c49985fdd5b07c336e17eb5360e0a71770a
2018-01-02 10:47:32 +01:00
jenkins-bot
5457615129
Merge "Add section id to URI fragment on save"
2017-12-18 10:55:35 +00:00
David Lynch
6f2c829bd9
Add section id to URI fragment on save
...
Bug: T181075
Change-Id: Iea63112301bfa0860c3d68efc35648a5af7e4ae6
2017-12-15 00:03:52 +00:00
David Lynch
5bbda2b8c8
ArticleTargetEvents: Track editor mode on save events
...
Bug: T182610
Change-Id: I8b58bea8e4444478cde4c1340d13ddf97aab8f01
2017-12-14 16:23:08 -06:00
James D. Forrester
af8428e861
trackSubscriber: Add timing data for 'loaded' state
...
Change-Id: I771764e5f40adcfc67d181cda68f60fc283a9cb2
2017-12-13 11:20:09 -08:00
David Lynch
e66d58076f
trackSubscriber: data isn't required
...
Editor-fixing caused errors on some events which don't pass data in.
Introduced in 8f612fbe64
.
Change-Id: I5c9471e6ffe4cdda0bf5455c80ef70251690e20f
2017-12-13 11:56:35 -06:00
C. Scott Ananian
d2d6d23522
Bump Parsoid HTML version to 1.6.0
...
It's a brave new world.
https://www.mediawiki.org/w/index.php?title=Parsoid/Deployments&oldid=2644817#Tuesday,_Dec._12,_2017_around_11:45_am_PT:_Y_Deployed_741fc5d
Change-Id: Ib22dc5370cd01bf5becdd639cc12d6a5ccc653a3
2017-12-13 00:10:16 +00:00
C. Scott Ananian
b85caca493
Strip legacy section IDs from inside headings
...
We emit <span id="..." typeof="mw:FallbackId"></span> inside headings
when necessary to provide backward compatibility with pre-HTML5
section ids. These are mostly harmless inside VE --- they become hidden
alienated nodes, which are then safely ignored by Parsoid during html2wt
even if they manage to migrate outside of a heading --- but it's a
little safer to strip them.
Change-Id: I07d0fcf54427ab02d4930cff183d3e5579a99306
2017-12-12 12:15:05 -05:00
Ed Sanders
8f612fbe64
Pass editor mode (visual/source) to tracking code
...
Change-Id: Iba5d3c66ecbd2872d76ea12f795ef3bebaae9d81
2017-12-07 11:14:00 +00:00
David Lynch
7a260ad1b7
Track action=loaded for consistency with WikiEditor
...
Change-Id: I1b92996e63dd85416755377dc14a5a997aac6657
2017-12-06 11:32:01 -06:00
jenkins-bot
7dd9cec01e
Merge "DesktopArticleTarget: enable spellcheck on sectionTitle"
2017-11-29 00:38:47 +00:00
David Lynch
396ce6eb6b
DesktopArticleTarget: enable spellcheck on sectionTitle
...
Tell browsers we explicitly want spellchecking on the section title. If
unspecified this is browser-dependent, so it was inconsistent.
This won't actually have an effect until the next OOjs-UI release (v0.24.3),
as this was a new feature added to TextInputWidget.
Bug: T179654
Depends-On: Ifdd44ead7d782288aaef0979322f0943f7304835
Change-Id: I588874efcff91c5be03da2fc03c268f883b718e2
2017-11-29 00:06:20 +00:00
Ed Sanders
267d60f61a
Unwrap Parsoid sections
...
Section wrapping will be introduced in I0f4c19f7.
Change-Id: I43ced131d07a20318af37e830318e30db2eb451f
2017-11-23 12:19:57 +00:00
Ed Sanders
38dba57e95
Follow-up I80d82ad87: Only add linebreak to non-empty documents
...
This is the same behaviour as the old editor, and
unbreaks editors that use placeholders.
Change-Id: I7b5a18f1fb0d41c5dc08d1b893c90db2bf3dbd86
2017-11-21 17:14:08 +00:00
jenkins-bot
26e78ea946
Merge "Move source mode newline hack down to ArticleTarget"
2017-11-20 22:32:20 +00:00
Roan Kattouw
f37caa6a6f
Move source mode newline hack down to ArticleTarget
...
We need this hack when visually editing articles, but not in e.g. the
Flow integration. Move it down so that mw.Target has a clean
parseDocument method that can be used by Flow without undesirable
newlines being introduced.
Change-Id: I52bba88b3d33c3d6d16c4cf832f23f970a243abf
2017-11-17 13:15:27 -08:00
Ed Sanders
50217d2a19
Rename mediawikitheme -> wikimediatheme
...
Change-Id: I48e1fcc0b71dccdb6d8e034d686a4bfe5dbe39e6
2017-11-01 15:36:34 +00:00
jenkins-bot
2649a2123a
Merge "Fix revslider colours in visual diff mode"
2017-10-31 17:50:53 +00:00
jenkins-bot
93c2da8e78
Merge "ArticleTarget: remember whether we preloaded, so it can affect the save button"
2017-10-30 22:07:19 +00:00
David Lynch
001b945513
ArticleTarget: remember whether we preloaded, so it can affect the save button
...
Idea being: preload use case is often "load content, maybe with parameters,
immediately save it", so we can treat it as being already-modified for saving
purposes.
Bug: T179063
Change-Id: I35ff04bc9cb5172edf8174832624145973aa1fdb
2017-10-30 16:40:57 -05:00
Ed Sanders
236d437875
Fix revslider colours in visual diff mode
...
Change-Id: If8a631812f3947b2260d66f832849eed3a0ad238
2017-10-27 11:41:02 +01:00
Ed Sanders
dc3ed6cec0
build: Update stylelint 0.4.1->0.4.2
...
Change-Id: I9d67e4224eb6298e20574a201eeee559ab3a7504
2017-10-26 21:04:07 +01:00
jenkins-bot
600208453b
Merge "Use more common 250ms transition for toolbar instead of 400ms"
2017-10-19 17:40:37 +00:00
Ed Sanders
4eb8f46234
Remove duplicate position:relative in toolbar css
...
Already set upstream.
Change-Id: Icf15dc82b7d57eb3591b0873e49fa9c598b2742d
2017-10-19 14:23:05 +01:00
Ed Sanders
6761a3619a
Use more common 250ms transition for toolbar instead of 400ms
...
Change-Id: I8ad1a20753b7bd4a17db605d31502e57149b5348
2017-10-18 19:17:05 +01:00
jenkins-bot
1b54d6e75a
Merge "Mobile: Rewrite toolbar centring CSS"
2017-10-17 20:37:14 +00:00
Ed Sanders
afc9d2156b
Mobile: Rewrite toolbar centring CSS
...
Change-Id: I43ada52231a0c9a91c98f2a482d2702528d995a2
2017-10-17 20:23:50 +01:00
jenkins-bot
45a5121853
Merge "requestParsoidData: Support 'wikitext' param in RESTBase-less environment"
2017-10-17 19:22:55 +00:00
Ed Sanders
0306f77fde
Simplify mobile overrides using LESS
...
Change-Id: I9ffce148fede03dda6e78377a0d20355bb45e5fd
2017-10-17 19:44:03 +01:00
jenkins-bot
18e2ccdc96
Merge "init.mw.DesktopArticleTarget: properly set up section links"
2017-10-17 16:28:54 +00:00
David Lynch
80c813e08c
init.mw.DesktopArticleTarget: properly set up section links
...
We were reimplementing (incompletely) the setup from the .init version. Just
call the original, modified slightly so it doesn't over-setup on repeated
calls.
Bug: T151021
Change-Id: I65bd7c5ecf75c478d6babeb13e7fb2a76a9842c8
2017-10-17 10:14:50 -05:00
Ed Sanders
8f11796c43
Convert mobile overrides to LESS
...
Change-Id: I44754f2d6e69ad9a8a6ce941962714a6d2617b5a
2017-10-17 11:46:17 +01:00
Ed Sanders
59955251fe
Fix button alignment in MW mobile
...
Change-Id: I4b29dfef672f48bc6d2b6644b1e0da5a7ada521a
2017-10-17 11:32:58 +01:00
Ed Sanders
169ce28c44
Remove duplication from browser whitelist
...
The whitelist isn't checked for blacklisted browsers,
so if all non-blacklisted browsers are whitelisted,
set the whitelist definition to all (null).
Change-Id: I8ee3569d9d5be2eda9153f1b087c1be385f93d9c
2017-10-12 16:54:46 +01:00
Ed Sanders
58a226288b
requestParsoidData: Support 'wikitext' param in RESTBase-less environment
...
Change-Id: I6154376be090655d3249ad7e74a0e90b39208a82
2017-10-11 21:26:18 +01:00
Ed Sanders
581847acb3
Show visual diffs in wikitext mode
...
Bug: T170371
Change-Id: I8fd9ed4f804444ec486c4df72125cdeb04da0d5f
2017-10-11 20:31:39 +01:00