summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Maps/resources/MapSaver.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Maps/resources/MapSaver.js')
-rw-r--r--www/wiki/extensions/Maps/resources/MapSaver.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/www/wiki/extensions/Maps/resources/MapSaver.js b/www/wiki/extensions/Maps/resources/MapSaver.js
new file mode 100644
index 00000000..2dd22ac1
--- /dev/null
+++ b/www/wiki/extensions/Maps/resources/MapSaver.js
@@ -0,0 +1,57 @@
+(function(mw) {
+ 'use strict';
+
+ function getUserHasPermission(permission, callback) {
+ mw.user.getRights(
+ function(rights) {
+ callback(rights.includes(permission))
+ }
+ );
+ }
+
+ function ifUserHasPermission(permission, callback) {
+ getUserHasPermission(
+ permission,
+ function(hasPermission) {
+ if (hasPermission) {
+ callback();
+ }
+ }
+ );
+ }
+
+ let MapSaver = function(pageName) {
+ let self = {};
+
+ // parameters.newContent: required string
+ // parameters.summary: required string
+ // parameters.done: required callback function
+ self.save = function(paremeters) {
+ new mw.Api().edit(
+ pageName,
+ function(revision) {
+ let editApiParameters = {
+ text: paremeters.newContent,
+ summary: paremeters.summary,
+ minor: false
+ };
+
+ ifUserHasPermission(
+ "applychangetags",
+ function() {
+ editApiParameters.tags = ['maps-visual-edit'];
+ }
+ );
+
+ return editApiParameters;
+ }
+ ).then(paremeters.done);
+ };
+
+ return self;
+ };
+
+ if (!window.maps) {window.maps = {};}
+
+ window.maps.MapSaver = MapSaver;
+})(window.mediaWiki);