User:PerfektesChaos/js/externalLinkProblem/query

query is a dependant sub-module of externalLinkProblem.js.

Provide data to be displayed by /gui on content pages. This code will ask by generated URL and react when answer arrives.

Mechanism

edit
  • A tool is supposed to answer a query with project dbname and pageid with database results of observed URL with problems.
    • The query might be applied via interactive form, too, which should resolve current page names as well.
    • Since collection of observations will be done over months and request could happen a year later, the database will be organized by pageid rather than by page title, which could have been changed meanwhile.
  • Results can be called by a certain URL. One output mode might be something like js-mw which means JavaScript in MediaWiki context. That should generate a snippet as shown below.
    • If any results found, the problems component is expected to deliver detailed information. If no problems known, this should be missing or set to false. Details of the problems array are listed on /gui page.

Snippet

edit
( function ( mw ) {
   var problems = [
      { url: "http://example.com/unavailable.html" }
      // etc. etc.
                  ];
   mw.hook( "externalLinkProblem/query.answer" ).fire( problems );
}( window.mediaWiki ) );
  • The answer has to provide text/javascript MIME type.
  • A JSON object could be provided as another output mode.
    • This is safer and reduced to a pure data object which is not executable.
    • However, the wmflabs.org is deliberately separated from domains like wikipedia.org to avoid malicious effects. By same origin policy etc. JSON won’t be accepted.
    • An executable snippet as described below might be necessary to cross domain borders, if CORS was not established.
    • The application has to show open source code to make clear that no undesired statements are embedded into the answer.

Codes

edit
Source code
ResourceLoader
  • ext.gadget.externalLinkProblem/query
Namespaces
  • any content (nsn ≥ 0)
mw.libs externalLinkProblem