Brion VIBBER has submitted this change and it was merged. Change subject: Clear all inline styling from AF warning messages ......................................................................
Clear all inline styling from AF warning messages They are at least readable now. Change-Id: I89f48f580308fde3f9a7af3194b4840455c456b9 --- M wikipedia/assets/abusefilter.js M www/abusefilter.js M www/js/abusefilter.js 3 files changed, 101 insertions(+), 6 deletions(-) Approvals: Brion VIBBER: Verified; Looks good to me, approved diff --git a/wikipedia/assets/abusefilter.js b/wikipedia/assets/abusefilter.js index 0a9f2d4..2d95f80 100644 --- a/wikipedia/assets/abusefilter.js +++ b/wikipedia/assets/abusefilter.js @@ -1,11 +1,27 @@ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ var bridge = require('./bridge'); +var transformer = require('./transformer'); + +transformer.register( 'clearInlineStyling', function( content ) { + var styledElements = content.querySelectorAll( "*[style]" ); + for ( var i = 0; i < styledElements.length; i++ ) { + styledElements[i].removeAttribute( "style" ); + } + return content; +} ); bridge.registerListener( 'displayWarning', function( payload ) { var content = document.getElementById( 'content' ); - content.innerHTML = payload.html; + + var warning = document.createElement( 'div' ); + warning.innerHTML = payload.html; + + warning = transformer.transform( 'clearInlineStyling', warning ); + + content.appendChild( warning ); } ); -},{"./bridge":2}],2:[function(require,module,exports){ + +},{"./bridge":2,"./transformer":3}],2:[function(require,module,exports){ function Bridge() { } @@ -43,4 +59,28 @@ window.onload = function() { module.exports.sendMessage( "DOMLoaded", {} ); }; +},{}],3:[function(require,module,exports){ +function Transformer() { +} + +var transforms = {}; + +Transformer.prototype.register = function( transform, fun ) { + if ( transform in transforms ) { + transforms[transform].append( fun ); + } else { + transforms[transform] = [ fun ]; + } +}; + +Transformer.prototype.transform = function( transform, element ) { + var functions = transforms[transform]; + for ( var i = 0; i < functions.length; i++ ) { + element = functions[i](element); + } + return element; +} + +module.exports = new Transformer(); + },{}]},{},[2,1]) \ No newline at end of file diff --git a/www/abusefilter.js b/www/abusefilter.js index 0a9f2d4..2d95f80 100644 --- a/www/abusefilter.js +++ b/www/abusefilter.js @@ -1,11 +1,27 @@ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ var bridge = require('./bridge'); +var transformer = require('./transformer'); + +transformer.register( 'clearInlineStyling', function( content ) { + var styledElements = content.querySelectorAll( "*[style]" ); + for ( var i = 0; i < styledElements.length; i++ ) { + styledElements[i].removeAttribute( "style" ); + } + return content; +} ); bridge.registerListener( 'displayWarning', function( payload ) { var content = document.getElementById( 'content' ); - content.innerHTML = payload.html; + + var warning = document.createElement( 'div' ); + warning.innerHTML = payload.html; + + warning = transformer.transform( 'clearInlineStyling', warning ); + + content.appendChild( warning ); } ); -},{"./bridge":2}],2:[function(require,module,exports){ + +},{"./bridge":2,"./transformer":3}],2:[function(require,module,exports){ function Bridge() { } @@ -43,4 +59,28 @@ window.onload = function() { module.exports.sendMessage( "DOMLoaded", {} ); }; +},{}],3:[function(require,module,exports){ +function Transformer() { +} + +var transforms = {}; + +Transformer.prototype.register = function( transform, fun ) { + if ( transform in transforms ) { + transforms[transform].append( fun ); + } else { + transforms[transform] = [ fun ]; + } +}; + +Transformer.prototype.transform = function( transform, element ) { + var functions = transforms[transform]; + for ( var i = 0; i < functions.length; i++ ) { + element = functions[i](element); + } + return element; +} + +module.exports = new Transformer(); + },{}]},{},[2,1]) \ No newline at end of file diff --git a/www/js/abusefilter.js b/www/js/abusefilter.js index b4a26dc..a59bfdc 100644 --- a/www/js/abusefilter.js +++ b/www/js/abusefilter.js @@ -1,6 +1,21 @@ var bridge = require('./bridge'); +var transformer = require('./transformer'); + +transformer.register( 'clearInlineStyling', function( content ) { + var styledElements = content.querySelectorAll( "*[style]" ); + for ( var i = 0; i < styledElements.length; i++ ) { + styledElements[i].removeAttribute( "style" ); + } + return content; +} ); bridge.registerListener( 'displayWarning', function( payload ) { var content = document.getElementById( 'content' ); - content.innerHTML = payload.html; -} ); \ No newline at end of file + + var warning = document.createElement( 'div' ); + warning.innerHTML = payload.html; + + warning = transformer.transform( 'clearInlineStyling', warning ); + + content.appendChild( warning ); +} ); -- To view, visit https://gerrit.wikimedia.org/r/110414 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I89f48f580308fde3f9a7af3194b4840455c456b9 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Yuvipanda <yuvipa...@gmail.com> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits