User:Xiplus/js/APIedit.js
< User:Xiplus | js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
function APIedit (pagename, summary, editfunc, minoredit = false, finish = undefined, testmode = false) {
content = "";
revisions = "";
if (finish === undefined) {
finish = function(){location.reload()};
} else if (finish === false) {
finish = function(){};
}
function getPageContent() {
$.ajax({
type: 'GET',
url: mw.config.get("wgServer")+mw.config.get("wgScriptPath")+'/index.php?title='+encodeURIComponent(pagename)+'&action=raw',
success: function success(data) {
content = data;
console.log(data);
console.log("getPageContent Success");
getPageRevision();
},
error: function error(e) {
content = "";
revisions = "";
console.log("getPageContent Error!");
editPage();
}
});
}
function getPageRevision() {
$.ajax({
type: 'POST',
url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php',
data: {
'action': 'query',
'format': 'json',
'prop': 'revisions',
'rvprop': 'timestamp',
'titles': pagename
},
success: function success(data) {
console.log("getPageRevision Success");
console.log(data);
var info = data.query.pages;
for (var key in info) {
revisions = info[key].revisions[0].timestamp;
break;
}
editPage();
},
error: function error(e) {
alert("getPageRevision Error!");
}
});
}
function editPage() {
content = editfunc(content);
if (testmode) {
console.log(content);
return ;
}
temp = {
type: 'POST',
url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php',
data: {
'action': 'edit',
'format': 'json',
'title': pagename,
'summary': summary,
'basetimestamp': revisions,
'text': content,
'token': mw.user.tokens.get('editToken')
},
success: function success(data) {
console.log(data);
console.log("editPage Success");
finish();
},
error: function error(e) {
alert("editPage Error!");
}
};
if (minoredit) {
temp.data.minor = "";
}
$.ajax(temp);
}
getPageContent();
}