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

Reply via email to