User:Syunsyunminmin/wikinews/easy-dialog.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.
//<nowiki>
if (typeof Syunmin === 'undefined') {
var Syunmin = {};
}
Syunmin.api = new mw.Api();
Syunmin.IBWN = {};
Syunmin.IBWN.suffix = ' (using [[User:Syunsyunminmin/wikinews/easy-dialog|easy dialog]])';
Syunmin.IBWN.language = {
"Wn/bn" :{
"text": "প্রতিস্থাপন",
"developRegExp": "Wn/bn/(উন্নয়ন চলছে|develop)",
"develop": "Wn/bn/উন্নয়ন চলছে",
"reviewRegExp": "Wn/bn/(নিরীক্ষা|অনিরীক্ষিত প্রকাশ|প্রকাশ করুন)",
"review": "Wn/bn/নিরীক্ষা",
"publish": "Wn/bn/প্রকাশ করুন",
"peer-review": "Wn/bn/প্রকাশন নিরীক্ষা",
"peer-review-params": {
"disabled": {
"সংখ্যা": {
"label": "সংখ্যা",
"value": mw.config.get("wgRevisionId")
},
"তারিখ": {
"label": "তারিখ",
"value": "~~~~~"
},
"নিরীক্ষক": {
"label": "নিরীক্ষক",
"value": mw.config.get("wgUserName")
},
},
"select": {
"ফলাফল": {
"label": "ফলাফল",
"options": ["সফল", "বিফল"]
}
},
"selectOption": {
"সফল": "pass",
"বিফল": "fail"
},
"comments": {
"name": "বার্তা",
"label": "বার্তা"
}
},
"summary-submit": "Mark as under review",
"summary-sendback": "Not ready when reviewed",
"summary-publish": "Publish.",
"summary-talk": "Review of revision " + mw.config.get("wgRevisionId"),
"talk-header": "[সংস্করণ সংখ্যা: " + mw.config.get("wgRevisionId") + "] এর নিরীক্ষণ - ফলাফল: $result"
}
};
Syunmin.IBWN.langSuppot = {};
if (Syunmin.IBWN.language[mw.config.get("wgWmincTestwikiPrefix")] !== undefined) {
for (var lang in Syunmin.IBWN.language[mw.config.get("wgWmincTestwikiPrefix")]) {
Syunmin.IBWN.langSuppot[lang] = Syunmin.IBWN.language[mw.config.get("wgWmincTestwikiPrefix")][lang];
}
}
Syunmin.IBWN.makeSubmitButton = function() {
var elements = document.getElementsByClassName("wikidialog-dependent");
var altelements = document.getElementsByClassName("wikidialog-alternative");
for (var i = 0; i < elements.length; i++) {
elements[i].innerHTML = "<input type='button' onclick='Syunmin.IBWN.submitForReview(" + i + ")' value='" + Syunmin.IBWN.langSuppot.text + "'>";
elements[i].removeAttribute("style");
altelements[i].setAttribute("style", "display:none");
}
};
Syunmin.IBWN.submitForReview = function(num) {
Syunmin.api.get({
"action": "query",
"format": "json",
"prop": "revisions",
"titles": mw.config.get('wgPageName'),
"formatversion": "2",
"rvprop": "content",
"rvslots": "*"
}).done(function(data) {
var content = data.query.pages[0].revisions[0].slots.main.content;
var regExp = new RegExp("^\\{\\{\\s*" + Syunmin.IBWN.langSuppot.develop.replace("/", "\/") + "\\s*\\}\\}$", "gim");
newcontent = content.replace(regExp, "{{" + Syunmin.IBWN.langSuppot.review + "}}");
if (content == newcontent) {
if (window.confirm("No template found to replace.\r\nPlease let Syunsyunminmin know as it may use an unknown redirect template.\r\n\r\nWould you like to continue to Syunsyunminmin's talk page?")) {
window.open("https://incubator.wikimedia.org/wiki/User_talk:Syunsyunminmin");
}
return;
}
Syunmin.api.postWithToken('csrf', {
"action": "edit",
"format": "json",
"title": mw.config.get('wgPageName'),
"formatversion": "2",
"nocreate": 1,
"text": newcontent,
"summary": Syunmin.IBWN.langSuppot['summary-submit'] + Syunmin.IBWN.suffix
}).done(function(data) {
if (data.error !== undefined) {
alert("Edit failed!\r\n\r\n\r\n" + data.error.info);
} else {
alert("Edit success");
document.location.reload();
}
});
});
};
Syunmin.IBWN.addReviewLink = function() {
mw.util.addPortletLink("p-cactions", "javascript:Syunmin.IBWN.makeReviewForm();void%200;", 'Review', "ca-review", 'start reviewing');
var formHTML = document.createElement('div');
formHTML.setAttribute('id', 'reviewForm');
formHTML.setAttribute('style', 'display: none');
var steady, steadyLabel, steadyInput;
for (var d in Syunmin.IBWN.langSuppot["peer-review-params"].disabled) {
steady = document.createElement('div');
steadyLabel = document.createElement('label');
steadyLabel.setAttribute('for', "review-" + d);
steadyLabel.setAttribute('style', "padding-right: 5%");
steadyLabel.textContent = Syunmin.IBWN.langSuppot["peer-review-params"].disabled[d].label;
steady.appendChild(steadyLabel);
steadyInput = document.createElement('input');
steadyInput.setAttribute('id', "review-" + d);
steadyInput.setAttribute('name', d);
steadyInput.setAttribute('class', "reviewValue");
steadyInput.setAttribute('value', Syunmin.IBWN.langSuppot["peer-review-params"].disabled[d].value);
steadyInput.setAttribute('disabled', true);
steady.appendChild(steadyInput);
formHTML.appendChild(steady);
}
var select,selectLabel,selectSelect, selectOption;
for (var i in Syunmin.IBWN.langSuppot["peer-review-params"].select) {
select = document.createElement('div');
selectLabel = document.createElement('label');
selectLabel.setAttribute('for', "review-" + i);
selectLabel.setAttribute('style', "padding-right: 5%");
selectLabel.textContent = Syunmin.IBWN.langSuppot["peer-review-params"].select[i].label;
select.appendChild(selectLabel);
selectSelect = document.createElement('select');
selectSelect.setAttribute('id', "review-" + i);
selectSelect.setAttribute('name', i);
selectSelect.setAttribute('class', "reviewValue reviewSelect");
for (var u in Syunmin.IBWN.langSuppot["peer-review-params"].selectOption) {
selectOption = document.createElement('option');
selectOption.setAttribute('value', u);
selectOption.textContent = u;
selectSelect.appendChild(selectOption);
}
select.appendChild(selectSelect);
formHTML.appendChild(select);
}
formHTML.appendChild(document.createElement('hr'));
var comments = document.createElement('div');
var commentsLabel = document.createElement('label');
commentsLabel.setAttribute('for', 'review-comments');
commentsLabel.textContent = Syunmin.IBWN.langSuppot["peer-review-params"].comments.label;
comments.appendChild(commentsLabel);
var commentsArea = document.createElement('textarea');
commentsArea.setAttribute('id', 'review-comments');
commentsArea.setAttribute('name', Syunmin.IBWN.langSuppot["peer-review-params"].comments.name);
commentsArea.setAttribute('rows', '5');
commentsArea.setAttribute('class', "reviewValue");
comments.appendChild(commentsArea);
formHTML.appendChild(comments);
document.body.appendChild(formHTML);
};
Syunmin.IBWN.makeReviewForm = function() {
$('#reviewForm').dialog({
title:"Easy Review",
width:500,
buttons: {
"Review": function() {
Syunmin.IBWN.publishArticle();
},
"Close": function() {
$( this ).dialog( "close" );
}
}
});
};
Syunmin.IBWN.publishArticle = function() {
var temp = '{{' + Syunmin.IBWN.langSuppot['peer-review'];
for (var i = 0; i < document.getElementsByClassName('reviewValue').length; i++) {
document.getElementsByClassName('reviewValue')[i].disabled = true;
temp += ('\n|' + document.getElementsByClassName('reviewValue')[i].name + '=' + document.getElementsByClassName('reviewValue')[i].value);
}
temp += '}}';
var isPass = true;
for (var p = 0; p < document.getElementsByClassName('reviewSelect').length; p++) {
if (Syunmin.IBWN.langSuppot["peer-review-params"].selectOption[document.getElementsByClassName('reviewSelect')[p].value] == "fail") {
isPass = false;
}
}
var result;
for (var r in Syunmin.IBWN.langSuppot["peer-review-params"].selectOption) {
if (
(isPass && (Syunmin.IBWN.langSuppot["peer-review-params"].selectOption[r] == "pass")) ||
(!isPass && (Syunmin.IBWN.langSuppot["peer-review-params"].selectOption[r] == "fail"))) {
result = r;
}
}
var talkHeader = Syunmin.IBWN.langSuppot["talk-header"].replace("$result", result);
Syunmin.api.get({
"action": "query",
"format": "json",
"prop": "revisions",
"titles": mw.config.get('wgPageName'),
"formatversion": "2",
"rvprop": "content",
"rvslots": "*"
}).done(function(data) {
var content = data.query.pages[0].revisions[0].slots.main.content;
var regExp = new RegExp("^\\{\\{\\s*" + Syunmin.IBWN.langSuppot.reviewRegExp.replace("/", "\/") + "\\s*\\}\\}$(\n|\r\n|\r|)", "gim");
if (isPass) {
newcontent = content.replace(regExp, "");
newcontent += ("\n" + "{{" + Syunmin.IBWN.langSuppot.publish + "}}");
} else {
newcontent = content.replace(regExp, "");
newcontent = ("{{" + Syunmin.IBWN.langSuppot.develop + "}}\n" + newcontent);
}
if (content == newcontent) {
if (window.confirm("No template found to replace.\r\nPlease let Syunsyunminmin know as it may use an unknown redirect template.\r\n\r\nWould you like to continue to Syunsyunminmin's talk page?")) {
window.open("https://incubator.wikimedia.org/wiki/User_talk:Syunsyunminmin");
}
return;
}
Syunmin.IBWN.addInfo("Tag an article...", "blue");
Syunmin.api.postWithToken('csrf', {
"action": "edit",
"format": "json",
"title": mw.config.get('wgPageName'),
"formatversion": "2",
"nocreate": 1,
"text": newcontent,
"summary": ((isPass) ? Syunmin.IBWN.langSuppot['summary-publish'] : Syunmin.IBWN.langSuppot['summary-sendback']) + Syunmin.IBWN.suffix
}).done(function(data) {
if (data.error !== undefined) {
Syunmin.IBWN.addInfo("Failed to tag!: " + data.error.info, "red");
} else {
Syunmin.IBWN.addInfo("Tagging success.", "green");
Syunmin.IBWN.addInfo("Adding a template to the talk page...", "blue");
Syunmin.api.postWithToken('csrf', {
"action": "edit",
"format": "json",
"title": mw.config.get('wgFormattedNamespaces')[1] + ":" + mw.config.get('wgTitle'),
"formatversion": "2",
"appendtext": "== " + talkHeader + " ==\n" + temp,
"summary": Syunmin.IBWN.langSuppot['summary-talk'] + Syunmin.IBWN.suffix
}).done(function(data) {
if (data.error !== undefined) {
Syunmin.IBWN.addInfo("Failed to add!: " + data.error.info, "red");
} else {
Syunmin.IBWN.addInfo("Add success.", "green");
Syunmin.IBWN.addInfo("Review done!", "green");
}
});
}
});
});
};
Syunmin.IBWN.addInfo = function(infotext, color) {
var newinfo = document.createElement('div');
newinfo.setAttribute('style', 'color:' + color);
newinfo.textContent = infotext;
if(document.getElementById("review-process-info") !== null) {
document.getElementById("review-process-info").appendChild(newinfo);
} else {
var infoarea = document.createElement('div');
infoarea.setAttribute('id', 'review-process-info');
infoarea.appendChild(newinfo);
document.getElementById("reviewForm").appendChild(document.createElement('hr'));
document.getElementById("reviewForm").appendChild(infoarea);
}
};
mw.loader.using(["mediawiki.api", "mediawiki.util", "jquery.ui"]).then(function() {
if (mw.config.get("wgWmincTestwikiProject") == "n" && mw.config.get("wgNamespaceNumber") == 0) {
if (!(mw.config.get("wgWmincTestwikiPrefix") in Syunmin.IBWN.language)) {
console.warn('Easy dialog: The language support for this test wiki is broken. Please contact User:Syunsyunminmin to request additional language support.\nhttps://incubator.wikimedia.org/wiki/User_talk:Syunsyunminmin');
}
if (document.getElementById("develop") !== null) {
Syunmin.IBWN.makeSubmitButton();
}
if (document.getElementById("review") !== null) {
Syunmin.IBWN.addReviewLink();
}
}
});
//</nowiki>