![]() |
Information regarding the Club Penguin Wiki Network
The Club Penguin Wiki Network was abandoned by its tech staff. These are recreations of the original sites. Your original CPWN account will not work here. Any issues, please contact Sky. |
User:Juca/common.js
Jump to navigation
Jump to search
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.
// quick news creator
$("#p-tb ul").prepend('<li id="t-newsupload"><a href="/wiki/Special:NewsUpload" title="NewsUpload (beta)">NewsUpload <span style="font-size: 80%; color: #08afbd; font-weight: bold;">(beta)</span></a></li>');
if (mw.config.get("wgTitle") == "NewsUpload" && mw.config.get("wgNamespaceNumber") == -1) {
$("#firstHeading span").html("NewsUpload");
/*
to-do list:
1. output text if string is too big (actually, always do that)
2. fix the passed 'date' property
3. add an interface
4. include in the interface a progress bar
*/
$news = {};
$news.fn = {};
$news.data = {};
$news.errors = [];
/* data */
// languages text
$news.data.langs = {
en: "English",
pt: "Portugu\u00eas",
fr: "Fran\u00e7ais",
es: "Espa\u00f1ol",
de: "Deutsch",
ru: "\u0420\u0443\u0441\u0441\u043a\u0438\u0439",
}
// swf files paths
$news.data.files = [ // this[i].text.replace(/ /g,"") -> results fragment of the wiki file name
{pos: "front", file: "header", text: "Header"},
{pos: "front", file: "navigation", text: "Navigation"},
{pos: "front", file: "featureStory", text: "Feature Story"},
{pos: "overlays", file: "featureMore", text: "Feature More"},
{pos: "front", file: "supportStory", text: "Support Story"},
{pos: "front", file: "upcomingEvents", text: "Upcoming Events"},
{pos: "front", file: "newsFlash", text: "News Flash"},
{pos: "front", file: "askAuntArctic", text: "Ask Aunt Arctic"}, // provide name switching
{pos: "front", file: "dividers", text: "Dividers"},
{pos: "back", file: "header", text: "Header"},
{pos: "back", file: "navigation", text: "Navigation"},
{pos: "back", file: "askAuntArctic", text: "Comics"},
{pos: "back", file: "jokesAndRiddles", text: "Jokes and Riddles"},
{pos: "back", file: "secrets", text: "Secrets"},
{pos: "overlays", file: "secretOverlay", text: "Secret (overlay)"},
{pos: "back", file: "dividers", text: "Dividers"},
{pos: "back", file: "submitYourContent", text: "Submit Your Content"}
];
// licensing
$news.data.licensing = "== Licensing ==\n{{CPTimes}}";
// upload comment
$news.data.uploadComment = "Uploaded newspaper file";
/* functions */
// get current issue information
$news.fn.getCurr = function(onDone) {
$.ajax({
url: "http://media1.clubpenguin.com/play/en/web_service/game_configs/newspapers.jsonp?cb=" + new Date().getTime(),
dataType: "jsonp",
jsonpCallback: "cp_newspapers",
success: function(data) {
var a = data[0];
onDone({
date: (function(DATE) {var a = new Date(new Date(DATE).getTime() + 86400000);return ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][a.getMonth()] + " " + a.getDate() + ", " + a.getFullYear();}(a.date)),
issue: a.issue.match(/\d+$/)[0],
path: a.path.match(/\d+$/)[0]
});
}
});
}
$news.fn.upload = function(obj) {
/*
var obj = {
issue: "451",
path: "yyyymmdd",
props: {}
}
*/
if (typeof obj.filesArr !== "object") {
obj.filesArr = [];
}
if (typeof obj.props === "undefined") {
obj.props = {};
for (var i in $news.data.langs) {
for (var j in $news.data.files) {
var filename = i.toUpperCase() + "News" + obj.issue + ($news.data.files[j].file == "secretOverlay" ? "SecretOverlay" : (function() {var a = $news.data.files[j].text.replace(/ /g,""); return a == "Comics" ? "AskAuntArcticBack" : a;}())) + ($news.data.files[j].file == "dividers" && $news.data.files[j].pos == "back" ? "Back" : "") + (["header","navigation"].indexOf($news.data.files[j].file) > -1 ? $news.data.files[j].pos.replace(/[fb]/, function(a) {return a.toUpperCase();}) : "") + ".swf";
obj.filesArr.push(filename);
obj.props[filename] = "http://media1.clubpenguin.com/play/v2/content/local/" + i + "/news/papers/" + obj.path + "/content/" + $news.data.files[j].pos + "/" + $news.data.files[j].file + ".swf";
}
}
}
function enc(s) {
return encodeURIComponent(s);
}
var a = Object.keys(obj.props)[0],
url = obj.props[a];
window.Q_obj = obj; // DEBUGGING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if (typeof a !== "undefined") {
// there are still properties in 'obj'
$.ajax({
url: mw.util.wikiScript("api"),
data: {
format: 'json',
action: 'upload',
filename: a,
comment: $news.data.uploadComment,
text: $news.data.licensing,
token: mw.user.tokens.get("editToken"),
url: url
},
type: "POST",
success: function(data) {
console.info("Successfully uploaded " + a);
//console.info(String(100 - Object.keys(obj.props).length/obj.filesArr.length*100).match(/\d+(\.\d{0,2})?/)[0] + "%");
console.info(obj.props, Object.keys(obj.props).length, obj.filesArr.length);
$("#newsupload-progress").val(String(String(obj.filesArr.length) - Object.keys(obj.props).length) + " / " + String(obj.filesArr.length)).css("background", "linear-gradient(to right, #dfd " + String((1 - Object.keys(obj.props).length / obj.filesArr.length) * 100) + "%, #ddd " + String((1 - Object.keys(obj.props).length / obj.filesArr.length) * 100) + "%)");
delete obj.props[a];
$news.fn.upload({
issue: obj.issue,
date: obj.date,
path: obj.path,
props: obj.props,
filesArr: obj.filesArr
});
},
error: function(data) {
console.error("Failed to upload the file " + a + ". Error logs may be found in $news.errors");
$news.errors.push({type: "upload_error", value: {filename: a, url: obj[a], response: data}});
delete obj.props[a];
$news.fn.upload({
issue: obj.issue,
date: obj.date,
path: obj.path,
props: obj.props,
filesArr: obj.filesArr
});
}
});
} else {
// all properties have been deleted
console.info("Done!");
console.info("Now start saving pages!");
}
}
// create page
$news.fn.create = function (a) {
var date = new Date(a.path.match(/(\d+)(\d\d)(\d\d)$/).splice(1).join("/"));
pageContent = encodeURIComponent('{{Newspaper2\n|issue= ' + a.issue + '\n|date= ' + (["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][date.getMonth()] + " " + date.getDate() + ", " + date.getFullYear()) + '\n|ask= ' + "" + '\n}}');
$.ajax({
url: mw.util.wikiScript("api") + "?action=edit&titles=Club_Penguin_Times/" + a.issue + "&text=" + encodeURIComponent(pageContent) + "&summary=" + encodeURIComponent("test") + "&token=" + encodeURIComponent(mw.user.tokens.get("editToken")),
type: "POST",
success: function(data) {
console.log("Success!");
},
error: function(data) {
window.Q_publisherror = data;
if (data.status == 756) {
console.error("The request was too long. Please copy the content in the textarea and use it for creating the page");
} else {
console.error("An error occured while attempting to publish the page");
}
}
}).always(function() {
$("#newsupload-result").val(pageContent);
$("#newsupload dt").html('<a href="/wiki/Club_Penguin_Times/' + a.issue + '">' + a.issue + '</a>');
});
}
// main execution
$news.fn.exe = function() {
// DEBUGGING START
var fromCurr = $("#newsupload-current:checked").length == 1;
// DEBUGGING END
if (fromCurr) {
// from current issue - get data and then create pages based on it
$news.fn.getCurr($news.fn.upload);
} else {
// data from a different page
var issue = $("#newsupload-issue").val(),
date = $("#newsupload-date").val(),
path = $("#newsupload-path").val();
if (
$.isArray(issue.match(/^\d+$/)) &&
$.isArray(date.match(/^[A-Z][a-z]+ ([1-9]|[1-3][0-9]?), \d{4,}$/)) &&
$.isArray(path.match(/^\d{4,}(0[1-9]|1[0-2])[0-3][0-9]$/))
) {
$news.fn.upload({
issue: issue,
date: date,
path: path
});
} else {
console.error("Your input is incorrect. Please check again your parameters");
alert("Your input is incorrect. Please check again your parameters");
}
}
}
/* interface */
$("#mw-content-text").html(
'<section id="newsupload">\n' +
'\t<h3>News uploader wizard (beta)</h3>\n' +
'\t<input type="checkbox" id="newsupload-current" checked /> <span class="help" title="Parameters with a * on them will be ignored if this box is checked">Upload from current Club Penguin Times issue</span><br />\n' +
'\tIssue:* <input type="text" id="newsupload-issue" /><br />\n' +
'\t<span class="explain" title="As \'MM DD, YYYY\', while specifying the month name (first letter uppercase)">Date:*</span> <input type="text" id="newsupload-date" /><br />\n' +
'\t<span class="explain" title="As \'YYYYMMDD\', as for PST during 00:00 UTC, hence, the day before the update">Path date:*</span> <input type="text" id="newsupload-path" /><br />\n' +
'\tAsk: <input type="text" id="newsupload-ask" value="Aunt Arctic" /><br />\n' +
'\tComic or Ask section on the back:<br />\n' +
'\t <input type="radio" name="newsupload-askcomic" value="ask" /> Ask Aunt Arctic (or other character)<br />\n' +
'\t <input type="radio" name="newsupload-askcomic" value="comic" checked /> Comic<br />\n' +
'\tProgress: <input type="text" id="newsupload-progress" disabled /><br />\n' +
'\t<input type="button" id="newsupload-start" value="start" />\n' +
'\t<h3>Output</h3>\n' +
'\tIt is likely that the page\'s content will be too long. If that\'s the case, once loading is done, copy the following content to the page:\n' +
'\t<dl><dt></dt></dl>\n' +
'\t<textarea id="newsupload-result"></textarea>\n' +
'\t<h3>Instructions</h3>\n' +
'\t<ol>\n' +
'\t\t<li>Leave the <span style="font-style: italic;">Upload from current Club Penguin Times issue</span> checkbox checked if you are interested in uploading the current issue.</li>\n' +
'\t\t<li>Uncheck and fill the parameters with the asterisks (<span style="font-weight: bold;">*</span>) if you are uploading an old issue of the paper.</li>\n' +
'\t\t<li>Modify the <span style="font-style: italic;">Ask</span> text field if the Ask section included a different character.</li>\n' +
'\t\t<li>Switch the <span style="font-style: italic;">Comic or Ask section on the back</span> radio inputs if needed.</li>\n' +
'\t\t<li>Hit <span style="font-style: italic;">start</span> to start uploading.</li>\n' +
'\t</ol>\n' +
'\tFor questions, requests or bug reports, please contact <a href="http://' + (location.origin == "http://archives.clubpenguinwiki.info" ? "archives.clubpenguinwiki.info" : "cps05box.wikia.com") + '/wiki/User_talk:Penguin-Pal">Penguin-Pal</a>\n' +
'</section>'
);
$("#newsupload-start").click(function() {
$news.fn.exe();
});
/* interface css */
mw.util.addCSS(
'#newsupload {\n' +
'\tbackground: #fafafa;\n' +
'\tborder: 1px solid #ccc;\n' +
'\tpadding: 4px;\n' +
'\tborder-radius: 10px;\n' +
'}\n' +
'section#newsupload h3 {\n' +
'\tmargin-top: 0;\n' +
'}\n' +
'#newsupload textarea {\n' +
'\tresize: none;\n' +
'}\n' +
'#newsupload dl, #newsupload dt {\n' +
'\tmargin: 0;\n' +
'\tpadding-left: 5;\n' +
'}\n' +
'#newsupload dt:not(:empty) {\n' +
'\tmargin: 3px 0;\n' +
'}\n'
);
/*
$news.fn.upload({
issue: "451",
path: "20140702"
});
*/
}