https://bugzilla.wikimedia.org/show_bug.cgi?id=69160
Bug ID: 69160
Summary: Flow: when you close then reopen a topic, IE
redisplays the closed state
Product: MediaWiki extensions
Version: master
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: Unprioritized
Component: Flow
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected], [email protected],
[email protected], [email protected],
[email protected]
Web browser: Internet Explorer
Mobile Platform: ---
Summary: Flow needs to tell IE not to cache API requests, otherwise it will
reuse old API responses for view-topic, etc.
The Close and open topics "Opening a topic" browser test has always failed on
Windows 8 IE.
It genuinely doesn't work!
1. Close topic, enter a summary "I closed this", submit. Topic redisplays fine.
2. Reopen topic, enter "I MANUALLY REOPENED THIS", submit.
The topic displays the same *old* state:
This topic was closed by <YOU>
- - -
I closed this
When you close or reopen a topic, Flow JS first makes a POST API request with
action=flow
submodule=close-open-topic
cotmoderationState=close/reopen
But then (by design, see comment for closeOpenTopic inflow-board.js) Flow JS
makes a GET API request for action=flow&submodule=view-topic
and the server responds with the entire topic tree, and Flow JS displays this.
Except in Internet Explorer (so far I've reproduced in Windows 8.1 IE11 and
Windows 8 IE10 viewing beta labs and mw.org) when you reopen IE doesn't even
make the GET view-topic API request. IE remembers the same request when you
close, and so IE redisplays the old content, including the old closed state and
old summary. It's not until you reload that IE shows the new topic state.
Caching XML HTTP requests is is a known IE "feature", see e.g.
http://www.dashbay.com/2011/05/internet-explorer-caches-ajax/ . IE's developer
tools Net tab lies and shows an instantaneous server response of 304 Not
Modified.
Many other Flow API requests can result in IE reusing an earlier API response.
In many cases Flow should tell jQuery ajax to disable caching, either with
ajax: { cache: false } in the API request as Echo does, or with a single
$.ajaxSetup({ cache: false }) call. But the latter means every Flow API
request includes a dummy { _: <TIMESTAMP>} parameter, so every API response has
a {"warnings":{"main":{"*":"Unrecognized parameter: '_'"}} response.
--
You are receiving this mail because:
You are the assignee for the bug.
You are on the CC list for the bug.
_______________________________________________
Wikibugs-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l