Brion VIBBER has submitted this change and it was merged.
Change subject: Make linkactions into its own module
......................................................................
Make linkactions into its own module
Makes reuse easier
Change-Id: I8a6595594909e58af2e6f2df831ca5c3ac8aaefd
---
M wikipedia/assets/bundle.js
M www/Gruntfile.js
A www/js/actions.js
A www/js/editaction.js
D www/js/linkactions.js
5 files changed, 102 insertions(+), 47 deletions(-)
Approvals:
Brion VIBBER: Verified; Looks good to me, approved
diff --git a/wikipedia/assets/bundle.js b/wikipedia/assets/bundle.js
index f893cc3..e826853 100644
--- a/wikipedia/assets/bundle.js
+++ b/wikipedia/assets/bundle.js
@@ -1,4 +1,37 @@
(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');
+
+function ActionsHandler() {
+}
+
+var actionHandlers = {};
+
+ActionsHandler.prototype.register = function( action, fun ) {
+ if ( action in actionHandlers ) {
+ actionHandlers[action].push( fun );
+ } else {
+ actionHandlers[action] = [ fun ];
+ }
+};
+
+document.onclick = function() {
+ if ( event.target.tagName === "A" ) {
+ if ( event.target.hasAttribute( "data-action" ) ) {
+ var action = event.target.getAttribute( "data-action" );
+ var handlers = actionHandlers[ action ];
+ for ( var i = 0; i < handlers.length; i++ ) {
+ handlers[i]( event.target, event );
+ }
+ } else {
+ bridge.sendMessage( 'linkClicked', { href:
event.target.getAttribute( "href" ) });
+ event.preventDefault();
+ }
+ }
+};
+
+module.exports = new ActionsHandler();
+
+},{"./bridge":2}],2:[function(require,module,exports){
function Bridge() {
}
@@ -36,28 +69,16 @@
window.onload = function() {
module.exports.sendMessage( "DOMLoaded", {} );
};
-},{}],2:[function(require,module,exports){
+},{}],3:[function(require,module,exports){
+var actions = require('./actions');
var bridge = require('./bridge');
-var actionHandlers = {
- "edit_section": function( el, event ) {
- bridge.sendMessage( 'editSectionClicked', { sectionID:
el.getAttribute( 'data-id' ) } );
- event.preventDefault();
- }
-};
+actions.register( "edit_section", function( el, event ) {
+ bridge.sendMessage( 'editSectionClicked', { sectionID: el.getAttribute(
'data-id' ) } );
+ event.preventDefault();
+} );
-document.onclick = function() {
- if ( event.target.tagName === "A" ) {
- if ( event.target.hasAttribute( "data-action" ) ) {
- var action = event.target.getAttribute( "data-action" );
- actionHandlers[ action ]( event.target, event );
- } else {
- bridge.sendMessage( 'linkClicked', { href:
event.target.getAttribute( "href" ) });
- event.preventDefault();
- }
- }
-};
-},{"./bridge":1}],3:[function(require,module,exports){
+},{"./actions":1,"./bridge":2}],4:[function(require,module,exports){
var bridge = require("./bridge");
bridge.registerListener( "displayAttribution", function( payload ) {
var lastUpdatedA = document.getElementById( "lastupdated" );
@@ -75,7 +96,7 @@
}
bridge.sendMessage( "imagesListResponse", { "images": imageURLs });
} );
-},{"./bridge":1}],4:[function(require,module,exports){
+},{"./bridge":2}],5:[function(require,module,exports){
var bridge = require("./bridge");
var transformer = require("./transformer");
@@ -143,7 +164,7 @@
window.scrollTo(0, scrollY);
});
-},{"./bridge":1,"./transformer":5}],5:[function(require,module,exports){
+},{"./bridge":2,"./transformer":6}],6:[function(require,module,exports){
function Transformer() {
}
@@ -167,7 +188,7 @@
module.exports = new Transformer();
-},{}],6:[function(require,module,exports){
+},{}],7:[function(require,module,exports){
var bridge = require("./bridge");
var transformer = require("./transformer");
@@ -205,4 +226,4 @@
return content;
} );
-},{"./bridge":1,"./transformer":5}]},{},[3,5,6,1,2,4])
\ No newline at end of file
+},{"./bridge":2,"./transformer":6}]},{},[4,6,7,2,1,3,5])
\ No newline at end of file
diff --git a/www/Gruntfile.js b/www/Gruntfile.js
index 1f5e148..01e162e 100644
--- a/www/Gruntfile.js
+++ b/www/Gruntfile.js
@@ -4,7 +4,8 @@
"js/tranformer.js",
"js/transforms.js",
"js/bridge.js",
- "js/linkactions.js",
+ "js/actions.js",
+ "js/editaction.js",
"js/sections.js",
"tests/*.js"
];
@@ -20,9 +21,24 @@
browserify: {
dist: {
files: {
- "bundle.js": [ "js/main.js", "js/transformer.js",
"js/transforms.js", "js/bridge.js", "js/linkactions.js", "js/sections.js"],
- "bundle-test.js": [ "js/main.js", "js/bridge.js",
"tests/*.js" ],
- "abusefilter.js": [ "js/bridge.js", "js/abusefilter.js" ]
+ "bundle.js": [
+ "js/main.js",
+ "js/transformer.js",
+ "js/transforms.js",
+ "js/bridge.js",
+ "js/actions.js",
+ "js/editaction.js",
+ "js/sections.js"
+ ],
+ "bundle-test.js": [
+ "js/main.js",
+ "js/bridge.js",
+ "tests/*.js"
+ ],
+ "abusefilter.js": [
+ "js/bridge.js",
+ "js/abusefilter.js"
+ ]
}
}
},
diff --git a/www/js/actions.js b/www/js/actions.js
new file mode 100644
index 0000000..f255072
--- /dev/null
+++ b/www/js/actions.js
@@ -0,0 +1,31 @@
+var bridge = require('./bridge');
+
+function ActionsHandler() {
+}
+
+var actionHandlers = {};
+
+ActionsHandler.prototype.register = function( action, fun ) {
+ if ( action in actionHandlers ) {
+ actionHandlers[action].push( fun );
+ } else {
+ actionHandlers[action] = [ fun ];
+ }
+};
+
+document.onclick = function() {
+ if ( event.target.tagName === "A" ) {
+ if ( event.target.hasAttribute( "data-action" ) ) {
+ var action = event.target.getAttribute( "data-action" );
+ var handlers = actionHandlers[ action ];
+ for ( var i = 0; i < handlers.length; i++ ) {
+ handlers[i]( event.target, event );
+ }
+ } else {
+ bridge.sendMessage( 'linkClicked', { href:
event.target.getAttribute( "href" ) });
+ event.preventDefault();
+ }
+ }
+};
+
+module.exports = new ActionsHandler();
diff --git a/www/js/editaction.js b/www/js/editaction.js
new file mode 100644
index 0000000..f9dfc50
--- /dev/null
+++ b/www/js/editaction.js
@@ -0,0 +1,7 @@
+var actions = require('./actions');
+var bridge = require('./bridge');
+
+actions.register( "edit_section", function( el, event ) {
+ bridge.sendMessage( 'editSectionClicked', { sectionID: el.getAttribute(
'data-id' ) } );
+ event.preventDefault();
+} );
diff --git a/www/js/linkactions.js b/www/js/linkactions.js
deleted file mode 100644
index 73feb09..0000000
--- a/www/js/linkactions.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var bridge = require('./bridge');
-
-var actionHandlers = {
- "edit_section": function( el, event ) {
- bridge.sendMessage( 'editSectionClicked', { sectionID:
el.getAttribute( 'data-id' ) } );
- event.preventDefault();
- }
-};
-
-document.onclick = function() {
- if ( event.target.tagName === "A" ) {
- if ( event.target.hasAttribute( "data-action" ) ) {
- var action = event.target.getAttribute( "data-action" );
- actionHandlers[ action ]( event.target, event );
- } else {
- bridge.sendMessage( 'linkClicked', { href:
event.target.getAttribute( "href" ) });
- event.preventDefault();
- }
- }
-};
\ No newline at end of file
--
To view, visit https://gerrit.wikimedia.org/r/110961
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I8a6595594909e58af2e6f2df831ca5c3ac8aaefd
Gerrit-PatchSet: 2
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits