3864 lines
155 KiB
JavaScript
3864 lines
155 KiB
JavaScript
//! Modifications by Arian K and Lane B
|
|
var splatoon = true;
|
|
if(innerWidth <= 480 || navigator.userAgent.indexOf('Nintendo') > 0) {
|
|
splatoon = false;
|
|
}
|
|
//var loading_animate = false;
|
|
var loading_animate = true;
|
|
var pjax_container = '#container';
|
|
// Edge lies about being WebKit but it works anyway
|
|
// Edit: This used to match 'WebKit' but it's now Gecko because WebKit will have that in here anyway
|
|
var webkit = navigator.userAgent.indexOf('WebKit') > 0 || navigator.userAgent.indexOf('Firefox') > 0;
|
|
|
|
|
|
function setupDrawboard() {
|
|
var canvas = document.getElementById("artwork-canvas");
|
|
var ctx = canvas.getContext('2d');
|
|
|
|
var haval = $("input[type=hidden][name=painting]");
|
|
if(haval.length) {
|
|
dds = new Image();
|
|
dds.src = haval.val();
|
|
dds.onload = function() {
|
|
ctx.drawImage(dds,0,0);
|
|
};
|
|
}
|
|
|
|
var undoCanvas = document.getElementById('artwork-canvas-undo');
|
|
var undoCtx = undoCanvas.getContext('2d');
|
|
var redoCanvas = document.getElementById('artwork-canvas-redo');
|
|
var redoCtx = redoCanvas.getContext('2d');
|
|
undoCanvas.width = 320; undoCanvas.height = 120;
|
|
redoCanvas.width = 320; redoCanvas.height = 120;
|
|
canvas.width = 320; canvas.height = 120;
|
|
var mousePosOld = 0;
|
|
var artworkTool = {type: 0, size: 1};
|
|
var sizeSmall = 1;
|
|
var sizeMedium = 2;
|
|
var sizeLarge = 4;
|
|
var artworkColor = "#000000";
|
|
var artworkZoomFactor = 1;
|
|
function getMousePos(evt) {
|
|
var rect = canvas.getBoundingClientRect();
|
|
if(evt.type == 'touchmove') {
|
|
var clientX = evt.touches[0].clientX;
|
|
var clientY = evt.touches[0].clientY;
|
|
} else {
|
|
var clientX = evt.clientX;
|
|
var clientY = evt.clientY;
|
|
}
|
|
return {
|
|
x: (clientX - rect.left) / artworkZoomFactor,
|
|
y: (clientY - rect.top) / artworkZoomFactor
|
|
};
|
|
}
|
|
function drawLineNoAliasing(ctx, sx, sy, tx, ty) {
|
|
var dist = Math.sqrt((tx-sx)*(tx-sx)+(ty-sy)*(ty-sy));
|
|
var ang = Math.atan((ty-sy)/((tx-sx)==0?0.01:(tx-sx)))+((tx-sx)<0?Math.PI:0);
|
|
for(var i=0;i<dist;i++) {
|
|
ctx.fillRect(Math.round(sx + Math.cos(ang)*i),
|
|
Math.round(sy + Math.sin(ang)*i),
|
|
artworkTool.size, artworkTool.size);
|
|
}
|
|
}
|
|
function artworkUpdate(evt) {
|
|
//console.log('artworkUpdate()');
|
|
var mousePos = getMousePos(evt);
|
|
if(artworkTool.type < 2) {
|
|
if(mousePosOld == 0) mousePosOld = mousePos;
|
|
if(evt.originalEvent.buttons == 1 || evt.type == 'touchmove') {
|
|
if(artworkTool.type == 0) {
|
|
ctx.fillStyle = artworkColor;
|
|
} else {
|
|
ctx.fillStyle = "#fff";
|
|
}
|
|
drawLineNoAliasing(ctx, mousePosOld.x,mousePosOld.y,mousePos.x,mousePos.y);
|
|
}
|
|
mousePosOld = mousePos;
|
|
}
|
|
}
|
|
function artworkDrawOnce(evt) {
|
|
//console.log('artworkDrawOnce()');
|
|
var mousePos = getMousePos(evt);
|
|
if(artworkTool.type < 2) {
|
|
if(evt.which == 1) {
|
|
if(artworkTool.type == 0) {
|
|
ctx.fillStyle = artworkColor;
|
|
} else {
|
|
ctx.fillStyle = "#fff";
|
|
}
|
|
ctx.fillRect(Math.round(mousePos.x), Math.round(mousePos.y), artworkTool.size, artworkTool.size);
|
|
}
|
|
} else {
|
|
ctx.fillStyle = artworkColor;
|
|
ctx.fillFlood(mousePos.x, mousePos.y, 0);
|
|
}
|
|
}
|
|
function artworkClear() {
|
|
doTheThing();
|
|
//console.log('artworkClear()');
|
|
|
|
artworkUndoDown();
|
|
//console.log('artworkUndoDown()');
|
|
ctx.fillStyle = "#fff";
|
|
ctx.fillRect(0, 0, 320, 120);
|
|
}
|
|
function artworkUndoDown() {
|
|
undoCtx.drawImage(canvas, 0, 0);
|
|
}
|
|
function artworkUndo() {
|
|
redoCtx.drawImage(canvas, 0, 0);
|
|
ctx.drawImage(undoCanvas, 0, 0);
|
|
undoCtx.drawImage(redoCanvas, 0, 0);
|
|
}
|
|
function artworkToolUpdate() {
|
|
//console.log('artworkToolUpdate()');
|
|
if($(this).hasClass('artwork-eraser')) {
|
|
var toolType = 1;
|
|
} else if($(this).hasClass('artwork-fill')) {
|
|
var toolType = 2;
|
|
} else {
|
|
var toolType = 0;
|
|
}
|
|
if($(this).hasClass('selected')) {
|
|
if($(this).hasClass('small')) {
|
|
artworkTool = {type: toolType, size: sizeMedium};
|
|
$(this).removeClass('small');
|
|
$(this).addClass('medium');
|
|
} else if ($(this).hasClass('medium')) {
|
|
artworkTool = {type: toolType, size: sizeLarge};
|
|
$(this).removeClass('medium');
|
|
$(this).addClass('large');
|
|
} else if ($(this).hasClass('large')) {
|
|
artworkTool = {type: toolType, size: sizeSmall};
|
|
$(this).removeClass('large');
|
|
$(this).addClass('small');
|
|
} else {
|
|
artworkTool = {type: toolType};
|
|
}
|
|
} else {
|
|
$('.memo-buttons button').removeClass('selected');
|
|
$(this).addClass('selected');
|
|
if($(this).hasClass('small')) {
|
|
artworkTool = {type: toolType, size: sizeSmall};
|
|
} else if ($(this).hasClass('medium')) {
|
|
artworkTool = {type: toolType, size: sizeMedium};
|
|
} else if ($(this).hasClass('large')) {
|
|
artworkTool = {type: toolType, size: sizeLarge};
|
|
} else {
|
|
artworkTool = {type: toolType};
|
|
}
|
|
}
|
|
}
|
|
function artworkZoomUpdate(evt) {
|
|
if(artworkZoomFactor == 1) {
|
|
artworkZoomFactor = 2;
|
|
$('#artwork-canvas').css('width', '640px');
|
|
} else if(artworkZoomFactor == 2) {
|
|
artworkZoomFactor = 4;
|
|
$('#artwork-canvas').css('width', '1280px');
|
|
$(this).addClass('out');
|
|
} else {
|
|
artworkZoomFactor = 1;
|
|
$('#artwork-canvas').css('width', '320px');
|
|
$(this).removeClass('out');
|
|
}
|
|
}
|
|
artworkClear();
|
|
$(document).on('mousemove', artworkUpdate);
|
|
$(document).on('touchstart', function(){
|
|
mousePosOld = 0;
|
|
});
|
|
$(document).on('touchmove', artworkUpdate);
|
|
$('#artwork-canvas').on('mousedown', artworkUndoDown);
|
|
$('#artwork-canvas').on('mousedown', artworkDrawOnce);
|
|
$('button').contextmenu(function() { $(this).click(); return false });
|
|
$('.artwork-clear').click(artworkClear);
|
|
$('.artwork-undo').click(artworkUndo);
|
|
$('.artwork-pencil, .artwork-eraser, .artwork-fill').click(artworkToolUpdate);
|
|
$(".artwork-color").spectrum({
|
|
color: "#000000",
|
|
preferredFormat: "hex",
|
|
showInput: true,
|
|
showPalette: true,
|
|
change: function(color) {
|
|
artworkColor = color;
|
|
},
|
|
palette: [["#000000", "#808080"], ["#ff0000", "#804000"], ["#ff8000", "#c08000"], ["#ffff00", "#fff8dc"], ["#00c700", "#008000"], ["#00ffff", "#00a0a0"], ["#0000ff", "#0080ff"], ["#ff00ff", "#800080"]]
|
|
});
|
|
$('.artwork-zoom').click(artworkZoomUpdate);
|
|
function doTheThing(){
|
|
var canvas = document.getElementById("artwork-canvas");
|
|
var ctx = canvas.getContext('2d');
|
|
var pixelArray = [];
|
|
for(var i = 0; i < canvas.clientHeight; i++) {
|
|
pixelArray[i] = [];
|
|
for(var j = 0; j < canvas.clientWidth; j++) {
|
|
var data = ctx.getImageData(j, i, 1, 1).data;
|
|
if(data[0] + data[1] + data[2] < 382) {
|
|
pixelArray[i].push(0);
|
|
} else {
|
|
pixelArray[i].push(1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$('.memo-finish-btn').on('click',function(){
|
|
canvas.toBlob(function(blob) {
|
|
postFile(blob, "image/png", true, 'image');
|
|
});
|
|
Olv.Form.toggleDisabled($("input.post-button"), true);
|
|
Olv.Form.toggleDisabled($(".memo-finish-btn"), true);
|
|
});
|
|
}
|
|
var fixe = false;
|
|
function openDrawboardModal() {
|
|
if(innerWidth <= 800) {
|
|
fixe = true;
|
|
}
|
|
$('#memo-drawboard-page').removeClass("none");
|
|
return true;
|
|
}
|
|
function setupPostForm2() {
|
|
var letters = ["a", "b", "c", "d", "e"];
|
|
$("label.textarea-menu-memo > input").on("click", function(e) {
|
|
if (openDrawboardModal()) {
|
|
var menu = $("div.textarea-with-menu");
|
|
var memo = $("div.textarea-memo");
|
|
var text = $("div.textarea-container");
|
|
var poll = $("div.textarea-poll");
|
|
if (menu.hasClass("active-text") || menu.hasClass("active-poll")) {
|
|
menu.removeClass("active-text");
|
|
menu.removeClass("active-poll");
|
|
menu.addClass("active-memo");
|
|
memo.removeClass("none");
|
|
text.addClass("none");
|
|
poll.addClass("none");
|
|
$(".character-count").addClass("none");
|
|
}
|
|
if($("#drawing").length) {
|
|
Olv.Form.toggleDisabled($("input.post-button"), false);
|
|
} else {
|
|
Olv.Form.toggleDisabled($("input.post-button"), true);
|
|
}
|
|
|
|
setupDrawboard();
|
|
}
|
|
});
|
|
|
|
var maxlength;
|
|
if($(".textarea-text").attr("maxlength")) {
|
|
maxlength = $(".textarea-text").attr("maxlength");
|
|
} else {
|
|
maxlength = 2000;
|
|
}
|
|
|
|
$(".textarea-text").on("input", function() { // © 2016 Miiverse+ https://openuserjs.org/scripts/PF2M/Miiverse+
|
|
var length = $(this).val().length;
|
|
var remaining = maxlength - length;
|
|
$(".character-count").text(remaining);
|
|
if(remaining < 200) {
|
|
$(".character-count").addClass("red");
|
|
} else {
|
|
$(".character-count").removeClass("red");
|
|
}
|
|
});
|
|
|
|
$("label.textarea-menu-text").on("click", switchtext);
|
|
$("label.textarea-menu-poll").on("click", switchpoll);
|
|
$('button.add-option').on('click', addOption);
|
|
$('button.delete').on('click', deleteOption);
|
|
|
|
$(".post-button").on("click", switchtext);
|
|
function switchtext() {
|
|
var menu = $("div.textarea-with-menu");
|
|
menu.removeClass("active-memo");
|
|
menu.removeClass("active-poll");
|
|
menu.addClass("active-text");
|
|
$("div.textarea-container").removeClass("none");
|
|
$("div.textarea-memo").addClass("none");
|
|
$("div.textarea-poll").addClass("none");
|
|
$(".character-count").removeClass("none");
|
|
$("textarea[name=body]").attr("data-required", "");
|
|
Olv.EntryForm.setupFormStatus($("#post-form"), $.Deferred());
|
|
}
|
|
function switchpoll() {
|
|
var menu = $("div.textarea-with-menu");
|
|
menu.removeClass("active-text");
|
|
menu.removeClass("active-memo");
|
|
menu.addClass("active-poll");
|
|
$("div.textarea-poll").removeClass("none");
|
|
$("div.textarea-container").removeClass("none");
|
|
$("div.textarea-memo").addClass("none");
|
|
$(".character-count").removeClass("none");
|
|
$("textarea[name=body]").removeAttr("data-required");
|
|
Olv.EntryForm.setupFormStatus($("#post-form"), $.Deferred());
|
|
}
|
|
function addOption() {
|
|
var options = $(".option").length;
|
|
// lol it's Nintendo Switch
|
|
switch(options) {
|
|
case 2:
|
|
$(this).before('<button type="button" class="delete" option="option-c"></button><input type="text" class="url-form option" name="option-c" placeholder="Option C" maxlength="64" data-required>');
|
|
$(".delete").removeClass("none");
|
|
break;
|
|
case 3:
|
|
$(this).before('<button type="button" class="delete" option="option-d"></button><input type="text" class="url-form option" name="option-d" placeholder="Option D" maxlength="64" data-required>');
|
|
break;
|
|
case 4:
|
|
$(this).before('<button type="button" class="delete" option="option-e"></button><input type="text" class="url-form option" name="option-e" placeholder="Option E" maxlength="64" data-required>');
|
|
$(this).attr("disabled", "true");
|
|
break;
|
|
default:
|
|
$('.textarea-poll').html('<button type="button" class="delete" option="option-a"></button><input type="text" class="url-form option" name="option-a" placeholder="Option A" maxlength="64" data-required><button type="button" class="delete" option="option-b"></button><input type="text" class="url-form option" name="option-b" placeholder="Option B" maxlength="64" data-required><button type="button" class="delete" option="option-c"></button><input type="text" class="url-form option" name="option-c" placeholder="Option C" maxlength="64" data-required><button type="button" class="button symbol add-option">Add Option</button>');
|
|
$("button.add-option").on("click", addOption);
|
|
break;
|
|
}
|
|
$("button.delete").off().on("click", deleteOption);
|
|
Olv.EntryForm.setupFormStatus($("#post-form"), $.Deferred());
|
|
}
|
|
function deleteOption() {
|
|
var options = $(".option").length;
|
|
if(options == 5 || options == 4) {
|
|
$(".add-option").removeAttr("disabled");
|
|
$(".option[name=" + $(this).attr("option") + "]").remove();
|
|
$(this).remove();
|
|
for(var i = 0; i < options - 1; i++) {
|
|
$(".option").eq(i).attr("name", "option-" + letters[i]);
|
|
$(".option").eq(i).attr("placeholder", "Option " + letters[i].toUpperCase());
|
|
$(".delete").eq(i).attr("option", "option-" + letters[i]);
|
|
}
|
|
} else if(options == 3) {
|
|
$(".option[name=" + $(this).attr("option") + "]").remove();
|
|
$(this).remove();
|
|
for(var i = 0; i < options - 1; i++) {
|
|
$(".option").eq(i).attr("name", "option-" + letters[i]);
|
|
$(".option").eq(i).attr("placeholder", "Option " + letters[i].toUpperCase());
|
|
$(".delete").not(this).eq(i).attr("option", "option-" + letters[i]);
|
|
}
|
|
$(".delete").addClass("none");
|
|
} else {
|
|
$('.textarea-poll').html('<button type="button" class="delete none" option="option-a"></button><input type="text" class="url-form option" name="option-a" placeholder="Option A" maxlength="64" data-required><button type="button" class="delete none" option="option-b"></button><input type="text" class="url-form option" name="option-b" placeholder="Option B" maxlength="64" data-required><button type="button" class="button symbol add-option">Add Option</button>');
|
|
$("button.add-option").on("click", addOption);
|
|
$("button.delete").on("click", deleteOption);
|
|
}
|
|
Olv.EntryForm.setupFormStatus($("#post-form"), $.Deferred());
|
|
}
|
|
}
|
|
|
|
function checkGroupForm() {
|
|
if($("#members .input").length > 0) {
|
|
$("#members .no-content").addClass("none");
|
|
Olv.Form.toggleDisabled($(".post-button"), false);
|
|
} else {
|
|
$("#members .no-content").removeClass("none");
|
|
Olv.Form.toggleDisabled($(".post-button"), true);
|
|
}
|
|
if($("#friends .input").length > 0) {
|
|
$("#friends .no-content").addClass("none");
|
|
} else {
|
|
$("#friends .no-content").removeClass("none");
|
|
}
|
|
}
|
|
|
|
//!© Nintendo/Hatena 2012-2017 copyright@hatena.com
|
|
var Olv = Olv || {};
|
|
(function(a, b) {
|
|
b.init || (b.init = a.Deferred(function() {
|
|
a(this.resolve)
|
|
}).promise(),
|
|
b.Router = function() {
|
|
this.routes = [],
|
|
this.guard = a.Deferred()
|
|
}
|
|
,
|
|
a.extend(b.Router.prototype, {
|
|
connect: function(a, b) {
|
|
a instanceof RegExp || (a = new RegExp(a)),
|
|
this.routes.push([a, b])
|
|
},
|
|
dispatch: function(b) {
|
|
a("#global-menu-list > ul > li.selected").removeClass("selected");
|
|
this.guard.resolve(b),
|
|
this.guard = a.Deferred();
|
|
for (var c, d = b.pathname, e = 0; c = this.routes[e]; e++) {
|
|
var f = d.match(c[0]);
|
|
f && c[1].call(this, f, b, this.guard.promise())
|
|
}
|
|
}
|
|
}),
|
|
b.router = new b.Router,
|
|
a(document).on("pjax:end", function(c, d) {
|
|
a(document).trigger("olv:pagechange", [d]),
|
|
b.router.dispatch(location)
|
|
}),
|
|
b.init.done(function() {
|
|
b.init.done(function() {
|
|
b.router.dispatch(location)
|
|
})
|
|
}),
|
|
b.Locale = {
|
|
Data: {},
|
|
text: function(a) {
|
|
var c = Array.prototype.slice.call(arguments);
|
|
return c.splice(1, 0, -1),
|
|
b.Locale.textN.apply(this, c)
|
|
},
|
|
textN: function(a, c) {
|
|
//if (b.Cookie.get("plain_msgid"))
|
|
// return a;
|
|
c = +c || 0;
|
|
var d = b.Locale.Data[a];
|
|
if (!d)
|
|
return a;
|
|
var e, f, g = d.quanttype || "o", h = "1_o" === g && 1 === c || "01_o" === g && (0 === c || 1 === c);
|
|
if (h ? (e = d.text_value_1 || d.value_1,
|
|
f = d.text_args_1 || d.args_1) : (e = d.text_value || d.value,
|
|
f = d.text_args || d.args),
|
|
!f)
|
|
return e;
|
|
var i = Array.prototype.slice.call(arguments, 2)
|
|
, j = 0;
|
|
return e.replace(/%s/g, function() {
|
|
return i[f[j++] - 1]
|
|
})
|
|
}
|
|
},
|
|
b.loc = b.Locale.text,
|
|
b.loc_n = b.Locale.textN,
|
|
b.print = function(a) {
|
|
"undefined" != typeof console && console.log(a)
|
|
}
|
|
,
|
|
b.deferredAlert = function(b) {
|
|
var c = a.Deferred();
|
|
return setTimeout(function() {
|
|
alert(b),
|
|
c.resolve()
|
|
}, 0),
|
|
c.promise()
|
|
}
|
|
,
|
|
b.deferredConfirm = function(b) {
|
|
var c = a.Deferred();
|
|
return setTimeout(function() {
|
|
var a = confirm(b);
|
|
c.resolve(a)
|
|
}, 0),
|
|
c.promise()
|
|
}
|
|
,
|
|
b.Closed = {
|
|
blank: /^[\s\u00A0\u3000]*$/,
|
|
open_spinner: '<span class=loading-spinner></span>',
|
|
lights: function() {
|
|
$('#darkness').prop('disabled', function(a, b) { return !b });
|
|
document.cookie = "light=" + $('#darkness').prop('disabled') + "; path=/; expires=Fri, 31 Dec 9999 23:59:59 UTC"
|
|
},
|
|
prlinkConf: function() {
|
|
$('#container').prepend('<div class="dialog linkc none"><div class=dialog-inner><div class=window><h1 class=window-title>Confirm link</h1><div class=window-body><p class=window-body-content>Are you sure you want to visit <b>'+ass+'</b>?</p><div class=form-buttons><button class="olv-modal-close-button gray-button" type=button data-event-type=ok onclick="$(\'.linkc\').remove()">No</button><button class="olv-modal-close-button black-button" type=button onclick="Olv.Net.lo(\''+ass+'\');$(\'.linkc\').remove()">Yes</button></div></div></div></div></div>');
|
|
var g = new Olv.ModalWindow($('.linkc'));g.open();
|
|
},
|
|
changesel: function(a) {
|
|
$("li#global-menu-" + a).addClass("selected");
|
|
}
|
|
/*,
|
|
chksum: function(r) {
|
|
for(var e=0,t=new Array(256),a=0;256!=a;++a)e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=a)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1,t[a]=e;for(var o,c="undefined"!=typeof Int32Array?new Int32Array(t):t,f=-1^0,A=0,d=r.length;A<d;)(e=r.charCodeAt(A++))<128?f=f>>>8^c[255&(f^e)]:e<2048?f=(f=f>>>8^c[255&(f^(192|e>>6&31))])>>>8^c[255&(f^(128|63&e))]:e>=55296&&e<57344?(e=64+(1023&e),o=1023&r.charCodeAt(A++),f=(f=(f=(f=f>>>8^c[255&(f^(240|e>>8&7))])>>>8^c[255&(f^(128|e>>2&63))])>>>8^c[255&(f^(128|o>>6&15|(3&e)<<4))])>>>8^c[255&(f^(128|63&o))]):f=(f=(f=f>>>8^c[255&(f^(224|e>>12&15))])>>>8^c[255&(f^(128|e>>6&63))])>>>8^c[255&(f^(128|63&e))];
|
|
return (-1^f) + '----/'
|
|
}
|
|
*/
|
|
},
|
|
b.Net = {
|
|
ajax: function(c) {
|
|
var d = a.ajax(c)
|
|
, e = b.Net._pageId
|
|
, f = d.then(function(c, d, f) {
|
|
var g = b.Net._pageId === e
|
|
/*, h = c && "object" == typeof c && !c.success || !g*/
|
|
, i = [c, d, f, g];
|
|
return a.Deferred().resolveWith(this, i)
|
|
}, function(c, d) {
|
|
var f = b.Net.getDataFromXHR(c);
|
|
void 0 === f && (f = c.responseText);
|
|
var g = b.Net._pageId === e;
|
|
return a.Deferred().rejectWith(this, [f, d, c, g])
|
|
});
|
|
return f.fail(b.Net.errorFeedbackHandler),
|
|
f.promise(d),
|
|
d
|
|
},
|
|
_pageId: 1,
|
|
getDataFromXHR: function(b) {
|
|
var c = b.responseText
|
|
, d = b.getResponseHeader("Content-Type");
|
|
if (c && d && /^application\/json(?:;|$)/.test(d))
|
|
try {
|
|
return a.parseJSON(c)
|
|
} catch (e) {}
|
|
return void 0
|
|
},
|
|
getErrorFromXHR: function(a) {
|
|
var c = b.Net.getDataFromXHR(a)
|
|
, d = c && c.errors && c.errors[0];
|
|
if (d && "object" == typeof d)
|
|
return d;
|
|
var e = a.status;
|
|
if((!('responseText' in a) || a.responseText.length < 2) && e == 400) {
|
|
if(innerWidth <= 480) {
|
|
errmsg += a.responseText.substr(0, 400);
|
|
} else {
|
|
errmsg += a.responseText.substr(0, 1000);
|
|
}
|
|
return {
|
|
error_code: "Bad Request",
|
|
message: errmsg
|
|
}}
|
|
switch(e) {
|
|
case 400:
|
|
if(a.getResponseHeader('Content-Type').indexOf('html') < 0) {
|
|
if(innerWidth <= 480) {
|
|
errmsg = a.responseText.substr(0, 400);
|
|
} else {
|
|
errmsg = a.responseText.substr(0, 1000);
|
|
}
|
|
} else {
|
|
errmsg = "There was an error with your request.";
|
|
}
|
|
return {
|
|
error_code: "Bad Request",
|
|
message: errmsg
|
|
}
|
|
case 404:
|
|
return {
|
|
error_code: "Not Found",
|
|
message: "The resource or action couldn't be found.\n"
|
|
}
|
|
break;
|
|
case 403:
|
|
return {
|
|
error_code: "Not Allowed (Forbidden)",
|
|
message: "Try refreshing the page or logging back in.\n"
|
|
}
|
|
break;
|
|
case 500:
|
|
errmsg = "An error has been encountered in the server.\n";
|
|
if(a.getResponseHeader('Content-Type').indexOf('html') < 0) {
|
|
errmsg += "Error information is available; please send this to an administrator:\n";
|
|
if(innerWidth <= 480) {
|
|
errmsg += a.responseText.substr(0, 400);
|
|
} else {
|
|
errmsg += a.responseText.substr(0, 1000);
|
|
}
|
|
}
|
|
return {
|
|
error_code: "Internal server error",
|
|
message: errmsg
|
|
}
|
|
break;
|
|
case 503:
|
|
return {
|
|
error_code: "Service temporarily unavailable",
|
|
message: "Unfortunately, it's down now. Come back later, or try reloading for now.\n"
|
|
}
|
|
break;
|
|
case 420:
|
|
return {
|
|
error_code: "Service is probably down",
|
|
message: "You've just recieved an error code that's usually recieved after a shutdown or some kind of service downage. So, don't refresh!\n"
|
|
}
|
|
break;
|
|
case 502:
|
|
return {
|
|
error_code: "Bad gateway",
|
|
message: "There's an issue with the application server right now. Wait for it to come back later, and inform an admin about this (because they probably don't do and therefore cannot fix it).\n"
|
|
}
|
|
break;
|
|
case 521:
|
|
return {
|
|
error_code: "Web server is down",
|
|
message: "Oops, something has probably gone terminally wrong. Come back later?\n"
|
|
}
|
|
break;
|
|
default:
|
|
return e ? 500 > e ? {
|
|
error_code: e,
|
|
message: b.loc("olv.portal.error.failed_to_connect.for_offdevice")
|
|
} : {
|
|
error_code: 1219999,
|
|
message: b.loc("olv.portal.error.500.for_offdevice")
|
|
} : {
|
|
error_code: "Connection error",
|
|
message: "Couldn't connect to the server, try again later."
|
|
}
|
|
break;
|
|
}
|
|
|
|
},
|
|
_isLeavingPage: !1,
|
|
willLeavePage: function() {
|
|
b.Net._isLeavingPage = !0,
|
|
setTimeout(function() {
|
|
b.Net._isLeavingPage = !1
|
|
}, 100)
|
|
},
|
|
errorFeedbackHandler: function(a, c, d, e) {
|
|
if ("abort" !== c && e && (d.status || !b.Net._isLeavingPage)) {
|
|
var f = this
|
|
, g = arguments;
|
|
setTimeout(function() {
|
|
b.Net._errorFeedbackHandler.apply(f, g)
|
|
}, d.status ? 0 : 1507)
|
|
}
|
|
},
|
|
_errorFeedbackHandler: function(c, d, e, f) {
|
|
var g = b.Net.getErrorFromXHR(e);
|
|
this.silent || b.ErrorViewer.open(g),
|
|
a(document).trigger("olv:ajax:error", [g, d, e])
|
|
},
|
|
get: function(a, c, d, e) {
|
|
return b.Net.ajax({
|
|
method: "GET",
|
|
url: a,
|
|
data: c,
|
|
success: d,
|
|
dataType: e,
|
|
beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()}
|
|
})
|
|
},
|
|
post: function(a, c, d, e) {
|
|
return b.Net.ajax({
|
|
method: "POST",
|
|
url: a,
|
|
data: c,
|
|
success: d,
|
|
dataType: e,
|
|
beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()}
|
|
})
|
|
},
|
|
go: function(a) {
|
|
$.pjax({url: a, container: pjax_container});
|
|
},
|
|
lo: function(cation) {
|
|
location.href = cation;
|
|
},
|
|
reload: function() {
|
|
$.pjax.reload(pjax_container);
|
|
}
|
|
},
|
|
b.Browsing = {
|
|
setup: function() {
|
|
a(document).on("click", "[data-href]", this.onDataHrefClick),
|
|
a(window).on("click submit", this.onMayLeavePage)
|
|
},
|
|
onDataHrefClick: function(c) {
|
|
if (a(c.target).attr("data-href")) {
|
|
b.Net.go($(this).attr("data-href"));
|
|
return;
|
|
}
|
|
if (!c.isDefaultPrevented() && !a(c.target).closest("a,button").length) {
|
|
var d = a(this);
|
|
if (!d.hasClass("disabled")) {
|
|
var e = d.attr("data-href");
|
|
b.Net.go(e);
|
|
}
|
|
}
|
|
},
|
|
onMayLeavePage: function(c) {
|
|
c.isDefaultPrevented() || "click" === c.type && !a(c.target).closest("[href]").length || b.Net.willLeavePage()
|
|
}
|
|
},
|
|
b.init.done(function() {
|
|
b.Browsing.setup()
|
|
}),
|
|
b.Utils = {},
|
|
b.Utils.toJSONString = "undefined" != typeof JSON ? JSON.stringify : function() {
|
|
function a(a) {
|
|
return "\\u" + (65536 + a.charCodeAt(0)).toString(16).substring(1)
|
|
}
|
|
function b(c) {
|
|
switch (typeof c) {
|
|
case "string":
|
|
return '"' + c.replace(/[\u0000-\u001f\"\\\u2028\u2029]/g, a) + '"';
|
|
case "number":
|
|
case "boolean":
|
|
return "" + c;
|
|
case "object":
|
|
if (!c)
|
|
return "null";
|
|
var d = Object.prototype.toString.call(c).slice(8, -1);
|
|
switch (d) {
|
|
case "String":
|
|
case "Number":
|
|
case "Boolean":
|
|
return b(c.valueOf());
|
|
case "Array":
|
|
for (var e = [], f = 0; f < c.length; f++)
|
|
e.push(b(c[f]));
|
|
return "[" + e.join(",") + "]";
|
|
case "Object":
|
|
var e = [];
|
|
for (var f in c)
|
|
c.hasOwnProperty(f) && e.push(b(f) + ":" + b(c[f]));
|
|
return "{" + e.join(",") + "}"
|
|
}
|
|
return "null"
|
|
}
|
|
return "null"
|
|
}
|
|
return b
|
|
}(),
|
|
b.Utils._staticRoot = null,
|
|
b.Utils.staticURL = function(c) {
|
|
if (/^https?:/.test(c))
|
|
return c;
|
|
var d = b.Utils._staticRoot;
|
|
return null === d && document.getElementById("main-body") && (d = b.Utils._staticRoot = (a("#main-body").attr("data-static-root") || "").replace(/\/$/, "")),
|
|
(d || "") + c.replace(/^(?!\/)/, "/")
|
|
}
|
|
,
|
|
b.Utils.isIE8AndEarlierStyle = !!document.createStyleSheet && "undefined" == typeof document.documentElement.style.opacity,
|
|
b.Utils.isIEStyle = !!window.TextRange,
|
|
b.Utils.addPlatformClass = function() {
|
|
var c = a(document.documentElement)
|
|
, d = navigator.userAgent
|
|
, e = /\bWin/.test(d) ? "win" : /\bMac/.test(d) ? "mac" : "other";
|
|
c.addClass("os-" + e),
|
|
b.Utils.isIE8AndEarlierStyle && c.addClass("ie8-earlier"),
|
|
b.Utils.isIEStyle && c.addClass("ie")
|
|
}
|
|
,
|
|
b.Utils.addPlatformClass(),
|
|
b.Utils.fixWebFontLoadTiming = function() {
|
|
var a = document.createStyleSheet();
|
|
a.cssText = ":before, :after { content: none !important; }",
|
|
setTimeout(function() {
|
|
var b = a.owningElement;
|
|
b.parentNode.removeChild(b)
|
|
}, 20)
|
|
}
|
|
,
|
|
b.Utils.isIE8AndEarlierStyle && b.init.done(b.Utils.fixWebFontLoadTiming),
|
|
b.Utils.triggerHandlers = {
|
|
keypress: function(b) {
|
|
13 !== b.which || b.isDefaultPrevented() || (b.preventDefault(),
|
|
a(this).click())
|
|
},
|
|
mouseup: function(a) {
|
|
this.blur()
|
|
}
|
|
},
|
|
b.init.done(function(a) {
|
|
a(document).on(b.Utils.triggerHandlers, ".trigger")
|
|
}),
|
|
b.Content = {},
|
|
b.Content.autopagerize = function(c, d) {
|
|
function e() {
|
|
if (!(k._disabledCount || h.scrollTop() + h.height() + 200 < f.offset().top + f.outerHeight())) {
|
|
// remove existing post-list-loading element because this houses the load more posts button that isn't used when this code is running.
|
|
a('.post-list-loading').remove();
|
|
var d = a("<div/>").attr("class", "post-list-loading").append(a(b.Closed.open_spinner)).appendTo(f);
|
|
i = a.ajax({
|
|
url: g,
|
|
headers: {
|
|
"X-AUTOPAGERIZE": !0
|
|
}
|
|
}).done(function(b) {
|
|
var h = a("<div>" + b + "</div>").find(c);
|
|
g = h.attr("data-next-page-url") || "",
|
|
g || j.resolve(),
|
|
f.trigger("olv:autopagerize", [h, g, d]),
|
|
h.children().each(function() {
|
|
this.id && a("#" + this.id).length && a(this).detach()
|
|
}),
|
|
f.attr("data-next-page-url", g),
|
|
f.append(h.children()),
|
|
g && setTimeout(e, 0);
|
|
if(c == ".js-post-list") {
|
|
setupPolls();
|
|
}
|
|
if($(c).hasClass("has-masonry")) {
|
|
$(".js-post-list").imagesLoaded(function() {
|
|
$(".js-post-list").masonry("reloadItems").masonry();
|
|
});
|
|
}
|
|
}).always(function() {
|
|
d.remove(),
|
|
i = null
|
|
}),
|
|
k.disable(i);
|
|
}
|
|
}
|
|
var f = a(c)
|
|
, g = f.attr("data-next-page-url");
|
|
if (g) {
|
|
a("#main-body").addClass("is-autopagerized");
|
|
var h = a(window)
|
|
, i = null
|
|
, j = a.Deferred()
|
|
, k = b.Content.autopagerize;
|
|
h.on("scroll", e),
|
|
j.done(function() {
|
|
h.off("scroll", e),
|
|
i && i.abort(),
|
|
a("#main-body").removeClass("is-autopagerized")
|
|
}),
|
|
setTimeout(e, 0),
|
|
d.done(j.resolve)
|
|
}
|
|
}
|
|
,
|
|
b.Content.autopagerize._disabledCount = 0,
|
|
b.Content.autopagerize.disable = function(a) {
|
|
var c = b.Content.autopagerize;
|
|
c._disabledCount++,
|
|
a.always(function() {
|
|
c._disabledCount--
|
|
})
|
|
}
|
|
,
|
|
b.Content.preloadImages = function() {
|
|
for (var a = arguments.length, b = a; b--; ) {
|
|
var c = document.createElement("img");
|
|
c.src = arguments[b]
|
|
}
|
|
}
|
|
,
|
|
b.Form = {
|
|
toggleDisabled: function(c, d) {
|
|
var e = void 0 === d;
|
|
return c.each(function() {
|
|
var c = a(this)
|
|
, f = e ? !b.Form.isDisabled(c) : d;
|
|
if (c.toggleClass("disabled", f),
|
|
"undefined" != typeof this.form)
|
|
c.prop("disabled", f);
|
|
else {
|
|
var g = f ? "href" : "data-disabled-href"
|
|
, h = f ? "data-disabled-href" : "href"
|
|
, i = c.attr(g);
|
|
void 0 !== i && (c.removeAttr(g),
|
|
c.attr(h, i))
|
|
}
|
|
}),
|
|
c
|
|
},
|
|
isDisabled: function(a) {
|
|
return a.length && "undefined" != typeof a[0].form ? a.prop("disabled") : a.hasClass("disabled")
|
|
},
|
|
disable: function(a, c) {
|
|
return b.Form.toggleDisabled(a, !0),
|
|
c.always(function() {
|
|
b.Form.toggleDisabled(a, !1)
|
|
}),
|
|
a
|
|
},
|
|
disableSoon: function(a, c) {
|
|
return setTimeout(function() {
|
|
"pending" === c.state() && b.Form.toggleDisabled(a, !0)
|
|
}, 0),
|
|
c.always(function() {
|
|
b.Form.toggleDisabled(a, !1)
|
|
}),
|
|
a
|
|
},
|
|
emulateInputEvent: function(b, c) {
|
|
if (b.length && "undefined" == typeof b[0].oninput) {
|
|
var d = a.map(b, function(a) {
|
|
return a.value
|
|
})
|
|
, e = setInterval(function() {
|
|
for (var c = 0, e = b.length; e > c; c++) {
|
|
var f = b[c].value;
|
|
f !== d[c] && (d[c] = f,
|
|
a(b[c]).trigger("input"))
|
|
}
|
|
}, 100);
|
|
c.always(function() {
|
|
clearInterval(e)
|
|
})
|
|
}
|
|
},
|
|
submit: function(b, c) {
|
|
b.trigger("olv:form:submit", [c || a()]);
|
|
if(a('input[type=file]').length) {
|
|
var d = new FormData(b[0])
|
|
d.append('screen', $('input[type=file]')[0].files[0])
|
|
sucky = true
|
|
} else {
|
|
var d = b.serializeArray()
|
|
sucky = false
|
|
}
|
|
var e = c && c.is("input, button") && c.prop("name");
|
|
e && d.push({
|
|
name: e,
|
|
value: c.val()
|
|
});
|
|
var f = {
|
|
method: b.prop("method"),
|
|
url: b.attr("action"),
|
|
data: d
|
|
};
|
|
if(sucky) {
|
|
f.processData = false;
|
|
f.contentType = false;
|
|
}
|
|
return this.send(f, c)
|
|
},
|
|
get: function(a, b, c) {
|
|
var d = {
|
|
method: "GET",
|
|
url: a,
|
|
data: b
|
|
};
|
|
return this.send(d, c)
|
|
},
|
|
_csrfmiddlewaretoken: null,
|
|
csrfmiddlewaretoken: function() {
|
|
return null === b.Form._csrfmiddlewaretoken && (b.Form._csrfmiddlewaretoken = a("body").attr("csrf-token")),
|
|
b.Form._csrfmiddlewaretoken
|
|
},
|
|
csrftoken: function(a) {
|
|
a.csrfmiddlewaretoken = b.Form.csrfmiddlewaretoken()
|
|
return a
|
|
},
|
|
post: function(c, d, e) {
|
|
d || (d = {}),
|
|
a.isArray(d) ? d.push({
|
|
name: "csrfmiddlewaretoken",
|
|
value: b.Form.csrfmiddlewaretoken()
|
|
}) : d.csrfmiddlewaretoken = b.Form.csrfmiddlewaretoken();
|
|
var f = {
|
|
method: "POST",
|
|
url: c,
|
|
data: d
|
|
};
|
|
return this.send(f, e)
|
|
},
|
|
send: function(c, d) {
|
|
var e = b.Net.ajax(c);
|
|
return a(document).trigger("olv:form:send", [e, c, d || a()]),
|
|
d && (b.Form.disableSoon(d, e),
|
|
d.addClass("loading"),
|
|
e.always(function() {
|
|
d.removeClass("loading")
|
|
})),
|
|
e
|
|
},
|
|
updateParentClass: function(c) {
|
|
switch (c.type) {
|
|
case "radio":
|
|
var d = a(c.form ? c.form.elements[c.name] : 'input[name="' + c.name + '"]');
|
|
d.each(function() {
|
|
a(this).parent().toggleClass("checked", this.checked)
|
|
}),
|
|
b.Utils.isIE8AndEarlierStyle && d.parent().addClass("changing").removeClass("changing");
|
|
break;
|
|
case "checkbox":
|
|
a(c).parent().toggleClass("checked", c.checked)
|
|
}
|
|
},
|
|
setup: function() {
|
|
a(document).on("click", "input", function(a) {
|
|
a.isDefaultPrevented() || b.Form.updateParentClass(this)
|
|
})
|
|
},
|
|
setupForPage: function() {
|
|
a("input:checked").each(function() {
|
|
b.Form.updateParentClass(this)
|
|
})
|
|
},
|
|
reset: function(c) {
|
|
c.each(function() {
|
|
this.reset(),
|
|
a(this).find("input").each(function() {
|
|
b.Form.updateParentClass(this)
|
|
})
|
|
})
|
|
},
|
|
validateValueLength: function(b) {
|
|
var c = a(this);
|
|
c.find("[minlength], [maxlength]").each(function() {
|
|
var c = a(this)
|
|
, d = +c.attr("minlength");
|
|
isNaN(d) && (d = -(1 / 0));
|
|
var e = +c.attr("maxlength");
|
|
isNaN(e) && (e = 1 / 0);
|
|
var f = c.val();
|
|
return f.length >= d && f.length <= e ? void 0 : void b.preventDefault()
|
|
})
|
|
}
|
|
},
|
|
b.init.done(b.Form.setup),
|
|
b.router.connect("", b.Form.setupForPage),
|
|
b.Guest = {
|
|
isGuest: function() {
|
|
return a("main-body").hasClass("guest")
|
|
}
|
|
},
|
|
b.DecreasingTimer = function(a, b, c) {
|
|
this.callback_ = a,
|
|
this.initialInterval_ = b || 1e4,
|
|
this.maxInterval_ = c || 1 / 0,
|
|
this.interval_ = this.initialInterval_,
|
|
this.timeouts_ = []
|
|
}
|
|
,
|
|
b.DecreasingTimer.prototype.resetInterval = function() {
|
|
this.interval_ = this.initialInterval_,
|
|
this.clearAllTimeouts(),
|
|
this.invoke()
|
|
}
|
|
,
|
|
b.DecreasingTimer.prototype.clearAllTimeouts = function() {
|
|
a(this.timeouts_).each(a.proxy(function(a, b) {
|
|
this.clearTimeout(b)
|
|
}, this))
|
|
}
|
|
,
|
|
b.DecreasingTimer.prototype.clearTimeout = function(a) {
|
|
for (var b = 0, c = this.timeouts_.length; c > b; ++b)
|
|
if (this.timeouts_[b] == a) {
|
|
clearTimeout(this.timeouts_[b]),
|
|
this.timeouts_.splice(b, 1);
|
|
break
|
|
}
|
|
}
|
|
,
|
|
b.DecreasingTimer.prototype.invoke = function() {
|
|
this.callback_();
|
|
var b;
|
|
b = setTimeout(a.proxy(function() {
|
|
this.invoke(),
|
|
this.clearTimeout(b)
|
|
}, this), this.interval_),
|
|
this.timeouts_.push(b),
|
|
this.interval_ = Math.min(Math.floor(1.5 * this.interval_), this.maxInterval_)
|
|
}
|
|
,
|
|
b.UpdateChecker = function(a, c) {
|
|
this._settings = {},
|
|
b.DecreasingTimer.call(this, this.callback_, a, c)
|
|
}
|
|
,
|
|
b.UpdateChecker.prototype = new b.DecreasingTimer,
|
|
b.UpdateChecker.getInstance = function() {
|
|
return void 0 == b.UpdateChecker.instance && (b.UpdateChecker.instance = new b.UpdateChecker(2e4,18e5)),
|
|
b.UpdateChecker.instance
|
|
}
|
|
,
|
|
b.UpdateChecker.prototype.callback_ = function() {
|
|
if(!websocketsEnabled || first) {
|
|
first = false;
|
|
var c = {};
|
|
a.each(this._settings, a.proxy(function(d) {
|
|
void 0 != this._settings[d].pathname && this._settings[d].pathname != location.pathname ? delete this._settings[d] : a.each(this._settings[d].params, a.proxy(function(a, d) {
|
|
c[a] = b.Utils.toJSONString(d)
|
|
}, this))
|
|
}, this));
|
|
b.Net.ajax({
|
|
url: "/check_update.json",
|
|
silent: !0,
|
|
cache: !1
|
|
}).done(a.proxy(function(b) {
|
|
a(this).triggerHandler("update", [b]);
|
|
}, this));
|
|
}
|
|
}
|
|
,
|
|
b.UpdateChecker.prototype.onUpdate = function(a, b, c, d) {
|
|
this._settings[a] = {
|
|
params: b,
|
|
update: c
|
|
},
|
|
d && (this._settings[a].pathname = location.pathname)
|
|
}
|
|
,
|
|
b.OpenTruncatedTextButton = {},
|
|
b.OpenTruncatedTextButton.setup = function(b) {
|
|
var c = a(b);
|
|
c.on("click", ".js-open-truncated-text-button", function(a) {
|
|
a.preventDefault(),
|
|
c.find(".js-truncated-text, .js-open-truncated-text-button").addClass("none"),
|
|
c.find(".js-full-text").removeClass("none")
|
|
})
|
|
}
|
|
,
|
|
b.ModalWindowManager = {},
|
|
b.ModalWindowManager._windows = [],
|
|
b.ModalWindowManager.currentWindow = null,
|
|
b.ModalWindowManager.closeAll = function() {
|
|
//b.ModalWindowManager._windows = [];
|
|
|
|
for (; this.currentWindow; )
|
|
this.currentWindow.close()
|
|
|
|
}
|
|
,
|
|
b.ModalWindowManager.closeUntil = function(a) {
|
|
if (a.guard)
|
|
for (var b; (b = this.currentWindow) && (b.close(),
|
|
b !== a); )
|
|
;
|
|
}
|
|
,
|
|
b.ModalWindowManager.register = function(a) {
|
|
var b = this._windows;
|
|
b.length ? b[b.length - 1].element.removeClass("active-dialog") : this.toggleMask(!0),
|
|
a.element.addClass("active-dialog"),
|
|
b.push(a),
|
|
this.currentWindow = a
|
|
}
|
|
,
|
|
b.ModalWindowManager.unregister = function(a) {
|
|
if (this.currentWindow !== a)
|
|
throw new Error("Failed to unregister modal window");
|
|
var b = this._windows;
|
|
b.pop().element.removeClass("active-dialog");
|
|
var c = b.length ? b[b.length - 1] : null;
|
|
c ? c.element.addClass("active-dialog") : this.toggleMask(!1),
|
|
this.currentWindow = c
|
|
}
|
|
,
|
|
b.ModalWindowManager._mask = null,
|
|
b.ModalWindowManager.toggleMask = function(b) {
|
|
if(a(".mask").length) {
|
|
a('body').css('position', '');
|
|
a(".mask").remove();
|
|
} else {
|
|
if(fixe) {
|
|
a('body').css('position', 'fixed');
|
|
}
|
|
a("#main-body").append("<div class=mask>");
|
|
}
|
|
}
|
|
,
|
|
b.ModalWindowManager.setup = function() {
|
|
a(document).on("click", "[data-modal-open]", function(c) {
|
|
var d = a(this);
|
|
if (!b.Form.isDisabled(d) && !c.isDefaultPrevented()) {
|
|
c.preventDefault();
|
|
var e = a.Event("olv:modalopen");
|
|
if (d.trigger(e),
|
|
!e.isDefaultPrevented()) {
|
|
var f = a(d.attr("data-modal-open"));
|
|
f.attr("data-is-template") && (f = f.clone().removeAttr("id"));
|
|
var g = new b.ModalWindow(f,this);
|
|
g.open()
|
|
}
|
|
}
|
|
}),
|
|
a(document).on("click", ".olv-modal-close-button", function(a) {
|
|
if (!a.isDefaultPrevented()) {
|
|
a.preventDefault();
|
|
var c = b.ModalWindowManager.currentWindow;
|
|
c && c.close()
|
|
}
|
|
}),
|
|
a(document).on("olv:modal", function(a, c, d) {
|
|
b.Content.autopagerize.disable(d)
|
|
})
|
|
}
|
|
,
|
|
b.init.done(function() {
|
|
b.ModalWindowManager.setup()
|
|
}),
|
|
a(document).on("olv:pagechange", function() {
|
|
b.ModalWindowManager.closeAll();
|
|
}),
|
|
b.ModalWindow = function(b, c) {
|
|
this.element = a(b),
|
|
this.triggerElement = a(c),
|
|
this.temporary = !this.element.parent().length;
|
|
var d = a.trim(this.element.attr("data-modal-types"));
|
|
this.types = d ? d.split(/\s+/) : [],
|
|
this.guard = null
|
|
}
|
|
,
|
|
b.ModalWindow.prototype.open = function() {
|
|
return this.guard ? void 0 : (document.activeElement && document.activeElement.blur(),
|
|
b.ModalWindowManager.register(this),
|
|
b.Form.toggleDisabled(this.triggerElement, !0),
|
|
this.element.addClass("modal-window-open").removeClass("none"),
|
|
this.temporary && this.element.appendTo(document.getElementById("main-body")),
|
|
this.triggerOpenHandlers(a.Deferred()),
|
|
this)
|
|
}
|
|
,
|
|
b.ModalWindow.prototype.triggerOpenHandlers = function(a) {
|
|
this.guard = a;
|
|
for (var b, c = [this, a.promise()], d = 0; b = this.types[d]; d++)
|
|
this.element.trigger("olv:modal:" + b, c);
|
|
this.element.trigger("olv:modal", c)
|
|
}
|
|
,
|
|
b.ModalWindow.prototype.close = function() {
|
|
return this.guard ? (this.guard.resolve(),
|
|
this.guard = null,
|
|
b.ModalWindowManager.unregister(this),
|
|
this.temporary && this.element.remove(),
|
|
this.element.addClass("none").removeClass("modal-window-open"),
|
|
b.Form.toggleDisabled(this.triggerElement, !1),
|
|
this) : void 0
|
|
}
|
|
,
|
|
b.SimpleDialog = {
|
|
_element: null,
|
|
element: function() {
|
|
var b = this._element || (this._element = a("<div>", {
|
|
"class": "dialog"
|
|
}).append(a("<div>", {
|
|
"class": "dialog-inner"
|
|
}).append(a("<div>", {
|
|
"class": "window"
|
|
}).append(a("<h1>", {
|
|
"class": "window-title"
|
|
}), a("<div>", {
|
|
"class": "window-body"
|
|
}).append(a("<p>", {
|
|
"class": "window-body-content"
|
|
}), a("<div>", {
|
|
"class": "form-buttons"
|
|
}).append(a("<button>", {
|
|
"class": "cancel-button gray-button",
|
|
type: "button",
|
|
"data-event-type": "cancel"
|
|
}), a("<button>", {
|
|
"class": "ok-button black-button",
|
|
type: "button",
|
|
"data-event-type": "ok"
|
|
})))))));
|
|
return b.clone()
|
|
},
|
|
htmlLineBreak: function(a) {
|
|
var b = {
|
|
"<": "<",
|
|
">": ">",
|
|
"&": "&",
|
|
'"': """
|
|
};
|
|
return a.replace(/[<>&\"]/g, function(a) {
|
|
return b[a]
|
|
}).replace(/\n|\r\n?/g, function(a) {
|
|
return "<br>" + a
|
|
})
|
|
},
|
|
create: function(c) {
|
|
var d = this.element()
|
|
, e = new b.ModalWindow(d)
|
|
, f = a.trim(c.modalTypes || "");
|
|
e.types = f ? f.split(/\s+/) : [],
|
|
d.find(".window-title").text(c.title || "");
|
|
var g = this.htmlLineBreak(c.body || "");
|
|
d.find(".window-body-content").html(g),
|
|
d.find(".ok-button").text(c.okLabel || b.loc("olv.portal.ok"));
|
|
var h = d.find(".cancel-button");
|
|
c.isConfirm ? h.text(c.cancelLabel || b.loc("olv.portal.cancel")) : h.detach();
|
|
var i = a.Deferred()
|
|
, j = {
|
|
ok: !0,
|
|
cancel: !1
|
|
};
|
|
return d.find("button").on("click", function(b) {
|
|
if (!b.isDefaultPrevented()) {
|
|
b.preventDefault();
|
|
var c = a(this).attr("data-event-type")
|
|
, d = a.Event(c);
|
|
a(e).trigger(d),
|
|
d.isDefaultPrevented() || (e.close(),
|
|
i.resolveWith(e, [j[c]]))
|
|
}
|
|
}),
|
|
i.promise(e),
|
|
e
|
|
},
|
|
show: function(a) {
|
|
var b = this.create(a);
|
|
return b.open(),
|
|
b.element.find(".ok-button")[0].focus(),
|
|
b
|
|
}
|
|
},
|
|
b.showMessage = function(c, d, e) {
|
|
var f = a.extend({
|
|
title: c,
|
|
body: d
|
|
}, e);
|
|
return b.SimpleDialog.show(f)
|
|
}
|
|
,
|
|
b.showConfirm = function(c, d, e) {
|
|
var f = a.extend({
|
|
title: c,
|
|
body: d,
|
|
isConfirm: !0
|
|
}, e);
|
|
return b.SimpleDialog.show(f)
|
|
}
|
|
,
|
|
b.ErrorViewer = {
|
|
open: function(a) {
|
|
a = a || {};
|
|
if(!(Number.isInteger(a.error_code))) {
|
|
return b.showMessage(a.error_code, a.message);
|
|
}
|
|
|
|
var c = +a.error_code
|
|
, d = a.message || a.msgid && b.loc(a.msgid);
|
|
c || (c = 0,
|
|
d = d || b.loc("olv.portal.error.500.for_offdevice"));
|
|
// NOTE: This (OFFICIAL) regex is for ***-**** type errors
|
|
var e = String(c).match(/^([0-9]{3})([0-9]{4})$/);
|
|
e && (c = e[1] + "-" + e[2]);
|
|
if(c == 0) {
|
|
var f = 'Error';
|
|
} else {
|
|
var f = b.loc("olv.portal.error.code", c);
|
|
}
|
|
return b.showMessage(f, d || "")
|
|
}
|
|
},
|
|
b.Entry = {},
|
|
b.Entry.checkEvent = function(c) {
|
|
// Non-WebKit browsers will probably fail this anyway
|
|
if(!webkit) return true;
|
|
var d = c.originalEvent;
|
|
//console.log(d);
|
|
// d.composed and d.isTrusted are indicators don't work on iOS 9 Safari
|
|
// d.webkitForce and d.timestamp work on Safari only
|
|
//console.log(d.detail, d.webkitForce, d.timestamp);
|
|
if(d.clientX && d.clientY && d.pageX && d.pageY && d.screenX && d.screenY && d.which && d.detail) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
},
|
|
b.Entry.incrementReplyCount = function(b) {
|
|
var c = a("div.post-meta div.reply");
|
|
if (0 !== !c.length && void 0 != b && 0 != b) {
|
|
var d = c.find(".reply-count")
|
|
, e = +d.text() + b;
|
|
d.text(e),
|
|
a(".no-reply-content").toggleClass("none", 0 !== e)
|
|
}
|
|
}
|
|
,
|
|
b.Entry.setupEditButtons = function(c) {
|
|
function d(c) {
|
|
var d = b.Form.post(c.action, {
|
|
format: "html"
|
|
}, c.button).done(function(b) {
|
|
a("#main-body").replaceWith(a(a.parseHTML(b)).find("#main-body"))
|
|
});
|
|
return c.modal.element.trigger("olv:entry:post:delete", c),
|
|
d
|
|
}
|
|
function e(c) {
|
|
var d = b.Form.post(c.action, null, c.button).done(function() {
|
|
var b = a("#post-content, #post-permalink-comments");
|
|
c.option.prop("disabled", !0);
|
|
var d = function() {
|
|
b.find(".spoiler-status").fadeIn(400, function() {
|
|
a(this).addClass("spoiler")
|
|
})
|
|
};
|
|
c.modal.guard.done(function() {
|
|
setTimeout(d, 0)
|
|
})
|
|
});
|
|
return d
|
|
}
|
|
function f(a) {
|
|
a.modal.close();
|
|
var c = b.showConfirm(b.loc("olv.portal.profile_post"), b.loc("olv.portal.profile_post.confirm_update"), {
|
|
okLabel: b.loc("olv.portal.profile_post.confirm_update.yes"),
|
|
cancelLabel: b.loc("olv.portal.cancel")
|
|
}).done(function(c) {
|
|
if (c) {
|
|
var d = this;
|
|
d.element.find("button").prop("disabled", !0),
|
|
b.Form.post(a.action, null, a.button, !0).done(function() {
|
|
a.modal.triggerElement.trigger("olv:entry:profile-post:set"),
|
|
d.close(),
|
|
b.showConfirm(b.loc("olv.portal.profile_post"), b.loc("olv.portal.profile_post.done"), {
|
|
okLabel: b.loc("olv.portal.user.search.go"),
|
|
cancelLabel: b.loc("olv.portal.close")
|
|
}).done(function(a) {
|
|
a && (b.Net.go("/users/@me"))
|
|
})
|
|
})
|
|
}
|
|
});
|
|
return c
|
|
}
|
|
function g(a, c, g) {
|
|
function h() {
|
|
var a = k.find(":selected");
|
|
l.text(a.text());
|
|
var c = a.attr("data-action");
|
|
j.attr("action", c),
|
|
b.Form.toggleDisabled(m, !c)
|
|
}
|
|
function i(a) {
|
|
if (!b.Form.isDisabled(m) && !a.isDefaultPrevented()) {
|
|
a.preventDefault();
|
|
var g, h = {
|
|
action: j.attr("action"),
|
|
button: m,
|
|
modal: c,
|
|
option: k.find(":selected")
|
|
}, i = k.val();
|
|
g = "delete" == i ? d(h) : "painting-profile-post" === i || "screenshot-profile-post" === i ? f(h) : e(h),
|
|
g.always(function() {
|
|
c.close()
|
|
})
|
|
}
|
|
}
|
|
var j = (c.triggerElement,
|
|
c.element.find("form.edit-post-form"))
|
|
, k = j.find('select[name="edit-type"]')
|
|
, l = j.find("span.select-button-content")
|
|
, m = j.find(".post-button");
|
|
k.val(""),
|
|
h(),
|
|
k.on("change", h),
|
|
m.on("click", i),
|
|
g.done(function() {
|
|
k.off("change", h),
|
|
m.off("click", i)
|
|
})
|
|
}
|
|
a(document).on("olv:modal:edit-post", g),
|
|
c.done(function() {
|
|
a(document).off("olv:modal:edit-post", g)
|
|
})
|
|
}
|
|
,
|
|
b.Entry.setupMoreRepliesButtons = function(c) {
|
|
function d(c) {
|
|
c.preventDefault();
|
|
var d = a(this);
|
|
if (!f && !b.Form.isDisabled(d)) {
|
|
var g = d.text();
|
|
d.text("").append(a(b.Closed.open_spinner)),
|
|
f = b.Form.get(d.attr("data-fragment-url"), null, d).done(function(b) {
|
|
var c = a(a.parseHTML(b));
|
|
if (d.hasClass("newest-replies-button") || d.hasClass("oldest-replies-button"))
|
|
return e.find(".more-button, .reply-list, .info-reply-list").remove(),
|
|
void e.append(c);
|
|
var f = c.filter(".reply-list").children().filter(function() {
|
|
return !a("#" + this.id).length
|
|
});
|
|
if (d.hasClass("all-replies-button") && (d.remove(),
|
|
e.find(".reply-list:not(.info-reply-list)").prepend(f)),
|
|
d.hasClass("newer-replies-button") || d.hasClass("older-replies-button")) {
|
|
var g = d.hasClass("newer-replies-button") ? "newer" : "older"
|
|
, h = c.filter("." + g + "-replies-button");
|
|
h.length ? d.replaceWith(h) : e.find(".more-button").remove(),
|
|
e.find(".reply-list:not(.info-reply-list)")["newer" == g ? "append" : "prepend"](f)
|
|
}
|
|
}).always(function() {
|
|
d.text(g),
|
|
f = null
|
|
}),
|
|
d.trigger("olv:entry:reply:button")
|
|
}
|
|
}
|
|
var e = a("#reply-content")
|
|
, f = null;
|
|
a(document).on("click", ".more-button", d),
|
|
c.done(function() {
|
|
a(document).off("click", ".more-button", d),
|
|
f && f.abort()
|
|
})
|
|
}
|
|
,
|
|
b.Entry.setupHiddenContents = function(h) {
|
|
function c(b) {
|
|
if (!b.isDefaultPrevented()) {
|
|
b.preventDefault();
|
|
var c = a(this)
|
|
, d = (!!c.closest(".post").length,
|
|
c.closest(".hidden"));
|
|
d.removeClass("hidden"),
|
|
d.filter("[data-href-hidden]").add(d.find("[data-href-hidden]")).each(function() {
|
|
var b = a(this);
|
|
b.attr(b.is("a") ? "href" : "data-href", b.attr("data-href-hidden"))
|
|
}),
|
|
c.closest(".hidden-content").remove()
|
|
}
|
|
}
|
|
a(document).on("click", ".hidden-content-button", c),
|
|
h.done(function() {
|
|
a(document).off("click", ".hidden-content-button", c)
|
|
})
|
|
a('.link-confirm').on('click', function(g) {
|
|
ass = a(this).attr('href');
|
|
g.preventDefault();
|
|
b.Closed.prlinkConf();
|
|
});
|
|
setupPolls();
|
|
}
|
|
,
|
|
b.Entry.toggleYeah = function(a) {
|
|
var c = b.Entry.isYeahAdded(a)
|
|
, d = !c
|
|
, e = a.attr("data-action");
|
|
c && (e += "u"),
|
|
a.trigger("olv:entry:yeah:toggle", [d]);
|
|
var f = b.Form.post(e, null, a).done(function() {
|
|
a.trigger("olv:entry:yeah:toggle:done", [d])
|
|
}).fail(function() {
|
|
a.trigger("olv:entry:yeah:toggle:fail", [c])
|
|
});
|
|
return f
|
|
}
|
|
,
|
|
b.Entry.isYeahAdded = function(a) {
|
|
return a.hasClass("yeah-added")
|
|
}
|
|
,
|
|
b.Entry.onYeahClick = function(c) {
|
|
if (b.Entry.checkEvent(c)) {
|
|
if (!c.isDefaultPrevented()) {
|
|
c.preventDefault();
|
|
var d = a(this);
|
|
b.Form.isDisabled(d) || b.Entry.toggleYeah(d)
|
|
}
|
|
}
|
|
}
|
|
,
|
|
b.Entry.onYeahToggle = function(c, d) {
|
|
var e = a(this);
|
|
e.toggleClass("yeah-added", d);
|
|
var f = e.attr("data-feeling") || "normal";
|
|
e.find(".yeah-button-text").text(b.loc("olv.portal.miitoo." + f + (d ? ".delete" : "")));
|
|
var g;
|
|
g = +e.attr("data-is-in-reply-list") ? e.closest(".reply-meta").find(".yeah-count") : e.closest(".post-meta").find(".yeah-count"),
|
|
g.text(+g.text() + (d ? 1 : -1));
|
|
var h = a(document).find("#js-my-yeah-count");
|
|
if (h[0] && h.text(+h.text() + (d ? 1 : -1)),
|
|
b.Utils.isIE8AndEarlierStyle) {
|
|
var i = e.closest(".post-meta").find(".yeah");
|
|
i.addClass("changing"),
|
|
setTimeout(function() {
|
|
i.removeClass("changing")
|
|
}, 0)
|
|
}
|
|
}
|
|
,
|
|
b.Entry.setupYeahButtons = function(c) {
|
|
a(document).on("olv:entry:yeah:toggle olv:entry:yeah:toggle:fail", ".yeah-button", b.Entry.onYeahToggle),
|
|
a(document).on("click", ".yeah-button", b.Entry.onYeahClick),
|
|
c.done(function() {
|
|
a(document).off("olv:entry:yeah:toggle olv:entry:yeah:toggle:fail", ".yeah-button", b.Entry.onYeahToggle),
|
|
a(document).off("click", ".yeah-button", b.Entry.onYeahClick)
|
|
})
|
|
}
|
|
,
|
|
b.Entry.setupPostYeahButton = function(c) {
|
|
function d(c, d) {
|
|
b.Entry.onYeahToggle.apply(this, arguments);
|
|
var e = a(c.target);
|
|
if (!+e.attr("data-is-in-reply-list")) {
|
|
var f = a("#yeah-content")
|
|
, g = +e.closest(".post-meta").find(".yeah-count").text();
|
|
f.find(".visitor").toggle(d),
|
|
f.find(".extra").toggle(!d),
|
|
f.toggleClass("none", 0 === g)
|
|
}
|
|
}
|
|
a(document).on("olv:entry:yeah:toggle olv:entry:yeah:toggle:fail", ".yeah-button", d),
|
|
a(document).on("click", ".yeah-button", b.Entry.onYeahClick),
|
|
c.done(function() {
|
|
a(document).off("click", ".yeah-button", b.Entry.onYeahClick),
|
|
a(document).off("olv:entry:yeah:toggle olv:entry:yeah:toggle:fail", ".yeah-button", d)
|
|
})
|
|
}
|
|
,
|
|
b.Entry.setupBodyLanguageSelector = function(b) {
|
|
function c(b) {
|
|
var c = a(b.target)
|
|
, d = c.val();
|
|
a("#body-language-" + d).toggleClass("none", !1).siblings(".multi-language-body").toggleClass("none", !0)
|
|
}
|
|
a(document).on("change", "#body-language-selector", c),
|
|
b.done(function() {
|
|
a(document).off("change", "#body-language-selector", c)
|
|
})
|
|
}
|
|
,
|
|
b.Entry.setupMoreContentButton = function(c) {
|
|
function d(b) {
|
|
b.preventDefault();
|
|
var c = a(b.target);
|
|
c.prev().find(".wrapped").removeClass("none"),
|
|
c.remove()
|
|
}
|
|
var e = a("#post-content.official-user.post-subtype-default .post-content-text");
|
|
e && 0 != e.length && (e.each(function() {
|
|
var c = a(this)
|
|
, d = c.text().match(/([\s\S]+)(\n+---+\n[\s\S]+)/);
|
|
if (d) {
|
|
c.text(d[1]);
|
|
var e = a('<span class="wrapped none"></span>').text(d[2]);
|
|
c.append(e);
|
|
var f = a('<a href="#" class="more-content-button"></a>');
|
|
f.text(b.loc("olv.portal.read_more_content")),
|
|
c.after(f)
|
|
}
|
|
}),
|
|
a(document).on("click", ".more-content-button", d),
|
|
c.done(function() {
|
|
a(document).off("click", ".more-content-button", d)
|
|
}))
|
|
}
|
|
,
|
|
a(document).on("olv:modal:report", function(a, c, d) {
|
|
var e = c.element.find("form")
|
|
, f = e.find(".post-button");
|
|
f.on("click", function(a) {
|
|
b.Form.isDisabled(f) || a.isDefaultPrevented() || (a.preventDefault(),
|
|
b.Form.submit(e, f).done(function() {
|
|
c.close(),
|
|
c.triggerElement.trigger("olv:report:done");
|
|
var a = e.attr("action");
|
|
/\/violations$/.test(a) ? b.showMessage("", b.loc("olv.portal.dialog.report_violation_done")) : /\/violators$/.test(a) && b.showMessage("", b.loc("olv.portal.dialog.report_violation_done"))
|
|
}))
|
|
}),
|
|
d.done(function() {
|
|
f.off("click")
|
|
})
|
|
}),
|
|
a(document).on("olv:modal:report-violator", function(a, c, d) {
|
|
function e() {
|
|
var a = !!f.val();
|
|
g.css("display", a ? "" : "none"),
|
|
b.Form.toggleDisabled(h, !a),
|
|
"" == g.val() && g.val(" ").val("")
|
|
}
|
|
var f = c.element.find('select[name="type"]')
|
|
, g = c.element.find('textarea[name="body"]')
|
|
, h = c.element.find(".post-button");
|
|
e(),
|
|
f.on("change", e),
|
|
d.done(function() {
|
|
f.off("change", e)
|
|
})
|
|
}),
|
|
a(document).on("olv:modal:report-violation", function(c, d, e) {
|
|
function f() {
|
|
var b = a(m[0].options[m[0].selectedIndex]);
|
|
p.text(b.text());
|
|
var c = !!m.val();
|
|
n.css("display", c ? "" : "none")
|
|
}
|
|
function g() {
|
|
var c = a(m[0].options[m[0].selectedIndex])
|
|
, d = !!c.attr("data-body-required")
|
|
, e = !!m.val()
|
|
, f = d && /^\s*$/.test(n.val()) || !e;
|
|
b.Form.toggleDisabled(o, f)
|
|
}
|
|
var h = !!d.triggerElement.attr("data-is-post")
|
|
, i = !!d.triggerElement.attr("data-is-message")
|
|
, j = b.loc(h ? "olv.portal.report.report_violation" : i ? "olv.portal.report.report_violation_message" : "olv.portal.report.report_violation_comment", d.triggerElement.attr("data-screen-name"))
|
|
, k = b.loc(h ? "olv.portal.report.report_post_id" : i ? "olv.portal.report.report_message_id" : "olv.portal.report.report_comment_id", d.triggerElement.attr("data-support-text"));
|
|
d.element.find(".window-title").text(j),
|
|
d.element.find(".post-id").text(k),
|
|
d.element.find("form").attr("action", d.triggerElement.attr("data-action"));
|
|
var l = "1" === d.triggerElement.attr("data-can-report-spoiler")
|
|
, m = l ? d.element.find("select.can-report-spoiler") : d.element.find("select.cannot-report-spoiler");
|
|
d.element.find('select[name="type"]').hide().prop("disabled", !0),
|
|
m.show().prop("disabled", !1);
|
|
var n = d.element.find('textarea[name="body"]')
|
|
, o = d.element.find(".post-button")
|
|
, p = d.element.find("span.select-button-content");
|
|
n.attr("placeholder", n.attr("data-placeholder")),
|
|
f(),
|
|
g(),
|
|
n.on("input", g),
|
|
m.on("change", f),
|
|
m.on("change", g),
|
|
b.Form.emulateInputEvent(n, e),
|
|
e.done(function() {
|
|
n.off("input", g),
|
|
m.off("change", f),
|
|
m.off("change", g)
|
|
})
|
|
}),
|
|
b.EntryForm = {},
|
|
b.EntryForm.setupAlbumImageSelector = function(b, c) {
|
|
function d(a) {
|
|
g.toggleClass("none")
|
|
}
|
|
function e(a) {
|
|
g.addClass("none")
|
|
}
|
|
function f(c) {
|
|
var d = a(c.target)
|
|
, e = d.attr("data-album-image-preview-src");
|
|
b.find('input[name="album_image_id"]').val(d.attr("data-album-image-id")),
|
|
b.find(".js-album-image-preview").attr("src", e),
|
|
b.find(".js-album-preview-wrapper").toggleClass("none", 0 == e.length),
|
|
b.find('textarea[name="body"]').toggleClass("with-image", e.length > 0),
|
|
b.trigger("olv:entryform:updatescreenshot")
|
|
}
|
|
if (b.length) {
|
|
var g = b.find(".js-album-image-selector")
|
|
, h = b.find(".js-album-list-pager");
|
|
if (h.length) {
|
|
var i = function(a) {
|
|
var c = parseInt(h.attr("data-max-page-number"));
|
|
a > c || 1 > a || (b.find(".js-album-selector-page[data-page-number=" + a + "]").removeClass("none").siblings(".js-album-selector-page").addClass("none"),
|
|
h.toggleClass("back-button-disabled", 1 === a),
|
|
h.toggleClass("next-button-disabled", a === c),
|
|
h.attr("data-current-page-number", a),
|
|
h.find(".js-curent-page-number").text(a))
|
|
}
|
|
, j = function(a) {
|
|
h.hasClass("back-button-disabled") || i(parseInt(h.attr("data-current-page-number")) - 1)
|
|
}
|
|
, k = function(a) {
|
|
h.hasClass("next-button-disabled") || i(parseInt(h.attr("data-current-page-number")) + 1)
|
|
}
|
|
, l = b.find(".js-page-back-button");
|
|
l.on("click", j);
|
|
var m = b.find(".js-page-next-button");
|
|
m.on("click", k),
|
|
i(1),
|
|
c.done(function() {
|
|
l.off("click", j),
|
|
m.off("click", k)
|
|
})
|
|
}
|
|
var n = b.find(".js-toggle-album-image-selector");
|
|
n.on("click", d);
|
|
var o = g.find(".js-close-album-image-selector");
|
|
o.on("click", e);
|
|
var p = b.find(".js-album-image-link");
|
|
p.on("click", f);
|
|
var q = function(a) {
|
|
b.find('input[name="album_image_id"]').val(""),
|
|
b.find(".js-album-image-preview").attr("src", ""),
|
|
b.find(".js-album-preview-wrapper").addClass("none"),
|
|
b.find('textarea[name="body"]').removeClass("with-image")
|
|
};
|
|
b.on("reset", q),
|
|
c.done(function() {
|
|
n.off("click", d),
|
|
o.off("click", e),
|
|
p.off("click", f),
|
|
b.off("reset", q)
|
|
})
|
|
}
|
|
}
|
|
,
|
|
b.EntryForm.setupSubmission = function(c, d) {
|
|
function e(d) {
|
|
var e = a(this);
|
|
b.Form.isDisabled(e) || !b.Entry.checkEvent(d) || d.isDefaultPrevented() || (d.preventDefault(),
|
|
b.Form.submit(c, e).done(function(a) {
|
|
if (b.Form.reset(c),
|
|
"topic" === c.attr("data-post-subtype") && !c.attr("data-is-identified")) {
|
|
var d = c.find('textarea[name="body"]');
|
|
d.prop("disabled", !0),
|
|
d.attr("placeholder", d.attr("data-open-topic-post-existing-placeholder"))
|
|
}
|
|
e.trigger("olv:entryform:post:done", arguments)
|
|
}).fail(function() {
|
|
e.trigger("olv:entryform:post:fail", arguments)
|
|
}).always(function() {
|
|
c.find('textarea[name="body"]').trigger("input")
|
|
}))
|
|
}
|
|
function f(a) {
|
|
return 13 !== a.which
|
|
}
|
|
function g(a) {
|
|
b.Form.isDisabled(h) && a.preventDefault()
|
|
}
|
|
if (c.length) {
|
|
c.on("keypress", "input:not(.allow_submit)", f);
|
|
var h = c.find('input[type="submit"], button[type="submit"]');
|
|
h.on("click", e),
|
|
c.on("submit", g),
|
|
d.done(function() {
|
|
c.off("keypress", "input:not(.allow_submit)", f),
|
|
h.off("click", e),
|
|
c.off("submit", g)
|
|
})
|
|
}
|
|
}
|
|
,
|
|
b.EntryForm.onTopicPostCreated = function(b, c) {
|
|
var d = a(".js-post-list").children(".post").attr("data-href");
|
|
b.find(".js-existing-open-topic-post-link").attr("href", d);
|
|
var e = a("#post-form");
|
|
e.hasClass("for-identified-user") || (b.find(".js-cannnot-topic-post").removeClass("none"),
|
|
b.find(".js-feeling-selector").addClass("none"),
|
|
b.find(".js-topic-categories-container").addClass("none"),
|
|
b.find(".js-post-form-spoiler").addClass("none"),
|
|
b.find('input[type="text"],textarea').prop("readonly", !0)),
|
|
b.toggleClass("folded")
|
|
}
|
|
,
|
|
b.EntryForm.setupFormStatus = function(c, d) {
|
|
function e(l) {
|
|
var d = l.filter(function() {
|
|
return !b.Closed.blank.test(a(this).val())
|
|
});
|
|
return d.length === l.length
|
|
}
|
|
function f(c) {
|
|
var d = h.filter("[data-required]:visible")
|
|
, f = (d.length > 0 || (a("input[name=image]").val().length > 0 && !a(".file-button").attr("disabled")) || (a("input[name=repost]").length ? a("input[name=repost]").val().length > 0 : false)) && e(d)
|
|
, g = i.filter(function() {
|
|
return !a(this).val()
|
|
}).length > 0;
|
|
//Olv.Form.toggleDisabled will make the disabled button disabled IF parameter #2 equals true, will make it un-disabled if it's false (first parameter is the send button)
|
|
if(!a(".file-button").attr("disabled")) {
|
|
b.Form.toggleDisabled(k, !f && !j.val() && !a("input[name=image]").val().length > 0 && (a("input[name=repost]").length ? !a("input[name=repost]").val().length > 0 : true) || g);
|
|
}
|
|
}
|
|
function g(a) {
|
|
c.trigger("olv:entryform:reset")
|
|
}
|
|
if (c.length) {
|
|
var h = c.find('input[type="text"], textarea')
|
|
, i = c.find("select[data-required]")
|
|
, j = c.find('input[name="painting"]').siblings("input:file")
|
|
, k = c.find('input[type="submit"], button[type="submit"]');
|
|
h.on("input", f),
|
|
j.on("change", f),
|
|
i.on("change", f),
|
|
c.on("reset", g);
|
|
var l = h.filter(":visible").first();
|
|
b.Form.emulateInputEvent(l, d),
|
|
h.filter(":visible").first().trigger("input"),
|
|
d.done(function() {
|
|
h.off("input", f),
|
|
j.off("change", f),
|
|
c.off("reset", g),
|
|
i.off("change", f)
|
|
})
|
|
}
|
|
}
|
|
,
|
|
b.EntryForm.setupFoldedForm = function(a, b) {
|
|
function c(b) {
|
|
var c = d.offset().top;
|
|
a.removeClass("folded");
|
|
var e = d.offset().top - c;
|
|
window.scrollBy(0, e)
|
|
}
|
|
if (a.hasClass("folded")) {
|
|
var d = a.find("[data-open-folded-form]");
|
|
if (d.is(document.activeElement) || d.val() !== d.prop("defaultValue"))
|
|
return void a.removeClass("folded");
|
|
if ("#js_open_post_form" == location.hash)
|
|
return location.hash = "",
|
|
void a.removeClass("folded");
|
|
d.one("focus", c),
|
|
b.done(function() {
|
|
d.off("focus", c)
|
|
})
|
|
}
|
|
}
|
|
,
|
|
b.EntryForm.setupIdentifiedUserForm = function(c, d) {
|
|
function e() {
|
|
c.find('textarea[name="body"]').trigger("input")
|
|
}
|
|
function f(a) {
|
|
var d = "1" == c.find('input[name="is_multi_language"]:checked').val();
|
|
c.find('input[name="is_multi_language"]').val([d ? "1" : "0"]),
|
|
c.find(".language-id-selector").toggleClass("none", !d),
|
|
c.find(".language-bodies").toggleClass("none", !d),
|
|
c.find('input[name="painting"]').parent().toggleClass("none", d),
|
|
c.find('textarea[name="body"]').toggleClass("none", d),
|
|
g();
|
|
e()
|
|
}
|
|
function g(b) {
|
|
l.each(function(b, d) {
|
|
c.find(".js-language-body-" + a(d).val()).toggleClass("none", !d.checked)
|
|
}),
|
|
e()
|
|
}
|
|
function h(d) {
|
|
/*var e = a(d.target).siblings().filter("input")
|
|
, f = d.target.files[0];
|
|
if (!f)
|
|
return void e.val("");
|
|
var g = new FileReader;
|
|
g.onload = function(a) {
|
|
var b = a.target.result.split(",")[1];
|
|
e.val(b);
|
|
e.trigger("olv:entryform:fileselect", c);
|
|
c.find('textarea[name="body"]').trigger("input")
|
|
}
|
|
,*/
|
|
/*b.Form.toggleDisabled(j, !0),
|
|
g.readAsDataURL(f)*/
|
|
}
|
|
function i(a) {
|
|
k.siblings().filter("input[type=hidden]").val(""),
|
|
f()
|
|
}
|
|
var j = c.find('input[type="submit"]')
|
|
, k = c.find(".file-button")
|
|
, l = c.find('input[name="language_ids"]')
|
|
, m = c.find('input[name="is_multi_language"]');
|
|
"undefined" == typeof FileReader && b.Form.toggleDisabled(k, !0),
|
|
k.on("change", h),
|
|
l.on("change", g),
|
|
m.on("change", f),
|
|
c.on("olv:entryform:post:done", i),
|
|
f(),
|
|
d.done(function() {
|
|
k.off("change", h),
|
|
l.off("change", g),
|
|
m.off("change", f),
|
|
c.off("olv:entryform:post:done", b.Form.reset(c))
|
|
})
|
|
}
|
|
,
|
|
-1 != navigator.userAgent.indexOf("iPhone;") && b.init.done(function(a) {
|
|
setTimeout(function() {
|
|
0 === window.pageYOffset && window.scrollBy(0, 1)
|
|
}, 100)
|
|
}),
|
|
b.Community = {},
|
|
b.Community.setupFavoriteButtons = function(c) {
|
|
function d(a, c) {
|
|
a.toggleClass("checked", c),
|
|
b.Utils.isIEStyle && a.addClass("changing").removeClass("changing")
|
|
}
|
|
function e(c) {
|
|
var e = a(this);
|
|
if (!b.Form.isDisabled(e) && !c.isDefaultPrevented()) {
|
|
c.preventDefault();
|
|
var f = e.hasClass("checked");
|
|
d(e);
|
|
var g = e.attr(f ? "data-action-unfavorite" : "data-action-favorite");
|
|
b.Form.post(g, null, e).done(function() {
|
|
f = !f,
|
|
e.trigger("olv:community:favorite:toggle", [f])
|
|
}).fail(function() {
|
|
d(e, f)
|
|
})
|
|
}
|
|
}
|
|
a(document).on("click", ".favorite-button", e),
|
|
c.done(function() {
|
|
a(document).off("click", ".favorite-button", e)
|
|
})
|
|
}
|
|
,
|
|
b.Community.setupAgeGateDialog = function(c) {
|
|
function d(a, b, c) {
|
|
if (isNaN(a) || isNaN(b) || isNaN(c))
|
|
return !1;
|
|
var d = new Date(a,b - 1,c);
|
|
return d.getFullYear() !== a || d.getMonth() + 1 !== b || d.getDate() !== c ? !1 : !0
|
|
}
|
|
function e(a, b, c) {
|
|
var d = new Date
|
|
, e = 100 * b + c > 100 * (d.getMonth() + 1) + d.getDate() ? 1 : 0;
|
|
return d.getFullYear() - a - e
|
|
}
|
|
function f(a, b, c) {
|
|
return e(a, b, c) >= 18
|
|
}
|
|
function g(b, c) {
|
|
var d = r[c]
|
|
, e = a(b[0].options[b[0].selectedIndex]);
|
|
isNaN(e.val()) && (b.find('[value="' + d + '"]').prop("selected", !0),
|
|
b.trigger("change"),
|
|
i(),
|
|
e.remove())
|
|
}
|
|
function h(b) {
|
|
var c = a(b.currentTarget);
|
|
g(c, c.attr("name"))
|
|
}
|
|
function i() {
|
|
var b = +o.val()
|
|
, c = +p.val()
|
|
, d = +q.val();
|
|
if (!isNaN(c)) {
|
|
var e = new Date(d,c,0).getDate()
|
|
, f = +o.find("option").last().val();
|
|
if (f > e)
|
|
o.find("option").slice(e - f).remove();
|
|
else if (e > f)
|
|
for (var g = f + 1; e >= g; g++)
|
|
o.append(a("<option>").val(g).text(g));
|
|
!isNaN(b) && b > e && (o.find('[value="' + e + '"]').prop("selected", !0),
|
|
o.trigger("change"))
|
|
}
|
|
}
|
|
function j() {
|
|
a(".age-gate-dialog").remove(),
|
|
a("#main-body").children().show();
|
|
//b.Cookie.set("age_gate_done", "1")
|
|
}
|
|
function k(a) {
|
|
i()
|
|
}
|
|
function l(c) {
|
|
var e = +q.val()
|
|
, g = +p.val()
|
|
, h = +o.val();
|
|
/*
|
|
b.Cookie.get("age_gate_done") ? j() : d(e, g, h) ? f(e, g, h) ? j() : (a(".age-gate").addClass("none"),
|
|
a(".back-dialog").removeClass("none")) : b.deferredAlert(b.loc("olv.portal.age_gate.select_label"))
|
|
*/
|
|
}
|
|
function m(a) {
|
|
// Why do we need this
|
|
//history.back()
|
|
}
|
|
a("#main-body").children().filter(function() {
|
|
return !a(this).hasClass("age-gate-dialog")
|
|
}).hide();
|
|
var n = a(".age-gate-dialog")
|
|
, o = n.find(".day")
|
|
, p = n.find(".month")
|
|
, q = n.find(".year")
|
|
, r = {
|
|
year: 1990,
|
|
month: 1,
|
|
day: 1
|
|
};
|
|
a(document).on("click", ".age-confirm-button", l),
|
|
a(document).on("mousedown", ".age-gate select", h),
|
|
a(document).on("change", ".age-gate select", k),
|
|
a(document).on("click", ".cancel-button", m),
|
|
c.done(function() {
|
|
a(document).off("click", ".age-confirm-button", l),
|
|
a(document).off("mousedown", ".age-gate select", h),
|
|
a(document).off("change", ".age-gate select", k),
|
|
a(document).off("click", ".cancel-button", m)
|
|
})
|
|
}
|
|
,
|
|
b.Community.setupHotDiaryPostSlideShow = function(b) {
|
|
function c(a, b) {
|
|
var c = 0;
|
|
return function() {
|
|
function d(a, b, d) {
|
|
var e = b + d;
|
|
if (b >= a.length)
|
|
return c = 0,
|
|
a[0];
|
|
if (e < a.length) {
|
|
var f = a[e];
|
|
return f
|
|
}
|
|
return a[0]
|
|
}
|
|
for (var e = [], f = 0; a > f; f++)
|
|
e = e.concat(d(b, c, f));
|
|
return c++,
|
|
e
|
|
}
|
|
}
|
|
function d(a, b) {
|
|
setTimeout(function() {
|
|
a.addClass(g)
|
|
}, 0),
|
|
setTimeout(function() {
|
|
b.removeClass(g)
|
|
}, 0)
|
|
}
|
|
function e(b) {
|
|
var c = b()
|
|
, e = a(c[0])
|
|
, f = a(c[1]);
|
|
d(e, f)
|
|
}
|
|
function f(c, d) {
|
|
a(document).on("transitionend", c, function(a) {
|
|
e(d)
|
|
})
|
|
}
|
|
var g = "invisible"
|
|
, h = a("#community-eyecatch-main")
|
|
, i = h.find(".js-eyecatch-diary-post")
|
|
, j = c(2, i.get())
|
|
, k = [".js-eyecatch-diary-post", ":not(." + g + ")"].join("");
|
|
setTimeout(function() {
|
|
e(j)
|
|
}, 1e3),
|
|
f(k, j)
|
|
}
|
|
,
|
|
b.Community.setupCommunitySidebar = function(a) {
|
|
b.Community.setupFavoriteButtons(a),
|
|
b.OpenTruncatedTextButton.setup(".js-community-description")
|
|
}
|
|
,
|
|
b.Community.setupPostFilter = function(b) {
|
|
function c(b) {
|
|
if (!b.isDefaultPrevented()) {
|
|
b.preventDefault();
|
|
var c = a(this).find('select[name="post"]').val();
|
|
window.location.href = c
|
|
}
|
|
}
|
|
var d = a("#post-filter-select-page form");
|
|
d.on("submit", c),
|
|
b.done(function() {
|
|
d.off("submit", c)
|
|
})
|
|
}
|
|
,
|
|
b.User = {},
|
|
b.User.setupFollowButton = function(c, d) {
|
|
function e(c) {
|
|
var e = a(this);
|
|
b.Form.isDisabled(e) || !b.Entry.checkEvent(c) || (b.Form.post(e.attr("data-action"), null, e).done(function(b) {
|
|
e.addClass("none").siblings().removeClass("none");
|
|
// !! DO THIS WHEN A FOLLOW LIMIT IS IMPLEMENTO
|
|
//e.hasClass("relationship-button") && (d.noReloadOnFollow && b.can_follow_more === !0 || b.Net.reload()),
|
|
"following_count" in b && a(e).trigger("olv:visitor:following-count:change", [b.following_count])
|
|
}),
|
|
c.preventDefault())
|
|
}
|
|
function f(c) {
|
|
var d = a(this)
|
|
, e = d.siblings();
|
|
if (!b.Form.isDisabled(d)) {
|
|
var f = b.showConfirm(b.loc("olv.portal.unfollow"), b.loc("olv.portal.followlist.confirm_unfollow_with_name", d.attr("data-screen-name")), {
|
|
cancelLabel: b.loc("olv.portal.cancel"),
|
|
okLabel: b.loc("olv.portal.button.remove"),
|
|
modalTypes: "unfollow"
|
|
});
|
|
f.done(function(a) {
|
|
a && b.Form.post(d.attr("data-action"), null, d).done(function() {
|
|
// Maybe don't use the b.Net.reload() here
|
|
d.hasClass("relationship-button") ? b.Net.reload() : (d.addClass("none"),
|
|
e.removeClass("none"),
|
|
b.Form.toggleDisabled(e, !1))
|
|
})
|
|
}),
|
|
c.preventDefault()
|
|
}
|
|
}
|
|
d = a.extend({
|
|
noReloadOnFollow: !1,
|
|
container: document
|
|
}, d);
|
|
var g = a(d.container);
|
|
g.on("click", ".toggle-button .follow-button", e),
|
|
g.on("click", ".toggle-button .unfollow-button", f),
|
|
c.done(function() {
|
|
g.off("click", ".toggle-button .follow-button", e),
|
|
g.off("click", ".toggle-button .unfollow-button", f)
|
|
})
|
|
}
|
|
,
|
|
b.User.setupUserSidebar = function(a) {
|
|
b.OpenTruncatedTextButton.setup(".profile-comment"),
|
|
b.User.setupFollowButton(a, {
|
|
container: "#sidebar"
|
|
})
|
|
|
|
}
|
|
,
|
|
b.Global = {},
|
|
b.Global.atOutsideOfMyMenu = function(b) {
|
|
var c = a(b);
|
|
return !c.hasClass("js-open-global-my-menu") && "global-my-menu" !== c.attr("id")
|
|
}
|
|
,
|
|
b.Global.setupMyMenu = function() {
|
|
var c = a("#global-my-menu");
|
|
a(".js-open-global-my-menu").on("click", function(a) {
|
|
a.preventDefault(),
|
|
c.toggleClass("none");
|
|
}),
|
|
a(document).on("click", function(a) {
|
|
!c.hasClass("none") && b.Global.atOutsideOfMyMenu(a.target) && c.addClass("none")
|
|
})
|
|
$('.my-menu-account-setting').on('click', function(e) {
|
|
e.preventDefault();
|
|
$.ajax({
|
|
url: '/settings/account',
|
|
success: function(a) {
|
|
yeah_notifications = a[0] ? ' checked' : '';
|
|
lights_off = $('#darkness').prop('disabled') ? '' : ' checked';
|
|
online_status = a[1] ? ' checked' : '';
|
|
hide_last_seen = a[2] ? ' checked' : '';
|
|
group_permissions = a[3] ? ' checked' : '';
|
|
websockets_enabled = a[4] ? ' checked' : '';
|
|
$('#wrapper').prepend('<div class="dialog acc-set none"><div class=dialog-inner><div class=window><h1 class=window-title>Account preferences</h1><div class=window-body><form id=feedback-form><p class=window-body-content>Change your account preferences here.</p><br><input type=checkbox value=1 name=yeah_notifications' + yeah_notifications + '> Enable notifications for Yeahs<br><input type=checkbox onclick=Olv.Closed.lights()' + lights_off + '> Enable dark mode<br><input type=checkbox value=1 name=hide_online' + online_status + '> Hide my online status from others<br><input type=checkbox value=1 name=hide_last_seen' + hide_last_seen + '> Hide my time last seen from others<br><input type=checkbox value=1 name=group_permissions' + group_permissions + '> Only accept group chat invites from users I follow<br><input type=checkbox value=1 name=websockets_enabled' + websockets_enabled + ' onclick=toggleWebsocketses()> Enable live page updates via websockets</form><div class=form-buttons><button class="olv-modal-close-button gray-button" type=button data-event-type=ok onclick="$(\'.acc-set\').remove()">Cancel</button><button class="black-button ac-send" type="button">Save</button></div></div></div></div></div>');
|
|
var g = new b.ModalWindow($('.acc-set'));
|
|
g.open();
|
|
$('.ac-send').on('click', function() {
|
|
b.Form.post('/settings/account', $('#feedback-form').serializeArray())
|
|
g.close();
|
|
$('.acc-set').remove();
|
|
})
|
|
},
|
|
error: function() {
|
|
b.showMessage('', "Can't open your account preferences because getting your current preferences failed.")
|
|
}
|
|
});
|
|
});
|
|
}
|
|
,
|
|
b.init.done(function() {
|
|
$('#wrapper').attr('class', $('#main-body').attr('class'));
|
|
b.Global.setupMyMenu()
|
|
}),
|
|
b.init.done(function(a) {
|
|
if (a("#global-menu-news").length) {
|
|
a("#global-menu-news > a").on("click", function(b) {
|
|
first = true;
|
|
});
|
|
var c = b.UpdateChecker.getInstance();
|
|
a(c).on("update", function(b, d) {
|
|
a.each(c._settings, function(b, c) {
|
|
var e = !0;
|
|
a.each(c.params, function(a, b) {
|
|
void 0 === d[a] && (this.success = !1)
|
|
}),
|
|
e && c.update.call(void 0, d, c.params);
|
|
getNewFaviconBadge();
|
|
})
|
|
}),
|
|
c.onUpdate("check_update", {
|
|
n: {},
|
|
msg: {}
|
|
}, function(b, c) {
|
|
// If the response is blank, set both of the counts as 0.
|
|
if(!b || b.length > 2) {
|
|
b = [unescape('\x00'), unescape('\x00')];
|
|
}
|
|
|
|
// Notification
|
|
var d = a("#global-menu-news"), e = d.find(".badge");
|
|
0 === e.length && (e = a("<span>", {"class": "badge"}),
|
|
e.hide().appendTo(d.find("a")));
|
|
var f = 0;
|
|
f += b["n"];
|
|
e.text(f);
|
|
e.toggle(f > 0);
|
|
|
|
// Message
|
|
var g = a("#global-menu-message"), h = g.find(".badge");
|
|
0 === h.length && (h = a("<span>", {
|
|
"class": "badge"
|
|
}),
|
|
h.hide().appendTo(g.find("a")));
|
|
var j = 0;
|
|
j += b["msg"];
|
|
h.text(j),
|
|
h.toggle(j > 0);
|
|
}),
|
|
a(document).on("pjax:complete", function(a) {
|
|
c.resetInterval()
|
|
}),
|
|
c.invoke()
|
|
}
|
|
}),
|
|
b.router.connect("^/activity$", function(c, d, e) {
|
|
b.Closed.changesel("feed");
|
|
function f() {
|
|
var c = a("#post-form");
|
|
b.Form.setupForPage(),
|
|
b.EntryForm.setupSubmission(c, e),
|
|
b.EntryForm.setupFormStatus(c, e),
|
|
b.EntryForm.setupFoldedForm(c, e);
|
|
if($('#post-form').length) {
|
|
setupPostForm2();
|
|
}
|
|
b.User.setupFollowButton(e),
|
|
c.hasClass("for-identified-user") && b.EntryForm.setupIdentifiedUserForm(c, e),
|
|
c.on("olv:entryform:post:done", g),
|
|
e.done(function() {
|
|
a("form.search").off("submit", b.Form.validateValueLength);
|
|
setupPolls();
|
|
});
|
|
}
|
|
function g(b, c) {
|
|
var d = a(".js-post-list");
|
|
d.length || (d = a("<div>", {
|
|
"class": "list post-list js-post-list"
|
|
}).replaceAll(".no-content"));
|
|
var e = a(a.parseHTML(c)).filter("*");
|
|
e.hide().fadeIn(400).prependTo(d);
|
|
a(".no-post-content").addClass("none");
|
|
var f = a(window);
|
|
f.scrollTop(e.offset().top + e.outerHeight() / 2 - f.height() / 2)
|
|
}
|
|
$('form.search').on('submit', function(s) {
|
|
s.preventDefault();
|
|
b.Net.go($(this).attr('action') + '?'+$(this).serialize());
|
|
});
|
|
b.Entry.setupYeahButtons(e);
|
|
a("form.search").on("submit", b.Form.validateValueLength);
|
|
var h, i, j = a(".content-loading-window");
|
|
if (j.length) {
|
|
var k = d.search.substring(1);
|
|
k && (k = "&" + k),
|
|
h = b.Net.ajax({
|
|
type: "GET",
|
|
url: window.location.href,/*
|
|
url: d.pathname + "?" + a.param({
|
|
fragment: "activityfeed"
|
|
}) + k,*/
|
|
silent: !0, beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()},
|
|
}).done(function(l) {
|
|
a("#js-main").html(l),
|
|
a(document).trigger("olv:activity:success", [l, c, d])
|
|
pf = $('div.post-form')
|
|
if(pf.length) {
|
|
$('#js-main').prepend($('div.post-form'))
|
|
pf.removeClass('none')
|
|
f()
|
|
}
|
|
b.Content.autopagerize(".js-post-list", e),
|
|
b.Entry.setupHiddenContents(e);
|
|
}).fail(function() {
|
|
setTimeout(function() {
|
|
j.remove(),
|
|
a(".content-load-error-window").removeClass("none")
|
|
}, 5e3)
|
|
});
|
|
|
|
/*
|
|
var l = "friend" !== b.Cookie.get("view_activity_filter");
|
|
i = l ? b.Net.ajax({
|
|
type: "GET",
|
|
url: "/my/latest_following_related_profile_posts",
|
|
silent: !0
|
|
}) : a.Deferred().resolve().promise()
|
|
*/
|
|
|
|
} else
|
|
h = a.Deferred().resolve().promise(),
|
|
//i = a.Deferred().resolve().promise();
|
|
h.then(function() {
|
|
f()
|
|
});
|
|
/*
|
|
a.when(h).done(function(b) {
|
|
var d = a(a.parseHTML(a.trim(c[0])));
|
|
e.each(function(b, c) {
|
|
var e = d.get(b);
|
|
e && (a(c).html(e),
|
|
f.push(c))
|
|
}),
|
|
a(f).removeClass("none")
|
|
}),
|
|
e.done(function() {
|
|
h.abort && h.abort()
|
|
})
|
|
*/
|
|
|
|
$('div.post-filter > form > input[type=checkbox]').on('click', function() {
|
|
b.Net.go(d.pathname + "?" + $(this).attr('name') + "=" + $(this).attr('value'))
|
|
});
|
|
}),
|
|
b.router.connect("^(?:/|/communities)$", function(c, d, e) {
|
|
b.Closed.changesel("community");
|
|
/*
|
|
if(a("#header-news").length) {
|
|
o = a("#header-news");
|
|
l = a(".header-news-button").attr("href") + "/read.json";
|
|
a(".close-button").on("click", function(s) {
|
|
s.preventDefault();
|
|
a.post(o);
|
|
alert("POSTed to " + l);
|
|
o.remove();
|
|
});
|
|
o.on("click", function(){
|
|
a.post(o);
|
|
alert("POSTed to " + l);
|
|
b.Net.go(o.attr("href"));
|
|
});
|
|
}
|
|
*/
|
|
function f(b) {
|
|
a(".tab-body").addClass("none"),
|
|
a("#tab-" + b + "-body").removeClass("none"),
|
|
a(".platform-tab a").removeClass("selected"),
|
|
a("#tab-" + b).addClass("selected")
|
|
}
|
|
function g(c) {
|
|
var d = a(this);
|
|
if (!b.Form.isDisabled(d) && !c.isDefaultPrevented()) {
|
|
c.preventDefault();
|
|
var e = a(this).attr("data-platform");
|
|
f(e);
|
|
//b.Cookie.set("view_platform", e)
|
|
}
|
|
}
|
|
function h(b) {
|
|
if (!b.isDefaultPrevented()) {
|
|
b.preventDefault();
|
|
var c = a(this).find('select[name="category"]').val();
|
|
window.location.href = c
|
|
}
|
|
}
|
|
//var i = b.Cookie.get("view_platform");
|
|
//i && f(i),
|
|
// !! RE-ENABLE THIS WHEN WE WAND the HoT Diary Post Slide Show
|
|
//b.Community.setupHotDiaryPostSlideShow(e),
|
|
a(".platform-tab a").on("click", g),
|
|
a(".filter-select-page form").on("submit", h),
|
|
a("form.search").on("submit", b.Form.validateValueLength),
|
|
e.done(function() {
|
|
a(".platform-tab a").off("click", g),
|
|
a(".filter-select-page form").off("submit", h),
|
|
a("form.search").off("submit", b.Form.validateValueLength)
|
|
})
|
|
$('form.search').on('submit', function(s) {
|
|
s.preventDefault();
|
|
b.Net.go($(this).attr('action') + '?'+$(this).serialize())
|
|
})
|
|
}),
|
|
b.router.connect("^/communities/all$", function(c, d, e) {
|
|
/* AAAAAAAAAAAAAAAAAAAAA BURN IT WITH FIRE
|
|
b.Closed.changesel("community");
|
|
gsl = function(e) {
|
|
e.preventDefault();
|
|
$('.community-switcher-tab.selected').removeClass('selected');
|
|
$(this).addClass('selected');
|
|
cl = $(this).attr('class').split(' ')[1],
|
|
$('.' + cl).removeClass('none')
|
|
$('.communities:not(.none):not(.'+ cl +')').addClass('none')
|
|
}
|
|
$('.community-switcher-tab.gen').on('click',gsl),
|
|
$('.community-switcher-tab.game').on('click',gsl),
|
|
$('.community-switcher-tab.special').on('click',gsl);
|
|
*/
|
|
b.Content.autopagerize('.community-list', e);
|
|
}),
|
|
b.router.connect("^/communities.search$", function(c) {
|
|
$('form.search').on('submit', function(s) {
|
|
s.preventDefault();
|
|
b.Net.go($(this).attr('action') + '?'+$(this).serialize())
|
|
})
|
|
$("form.search").off("submit", b.Form.validateValueLength);
|
|
}),
|
|
b.router.connect("^/(identified_user_posts|notifications)+$", function(a, c, d) {
|
|
b.Guest.isGuest() || b.User.setupFollowButton(d),
|
|
b.Content.autopagerize(".js-post-list", d)
|
|
}),
|
|
b.router.connect("/notifications(\/)?$", function(a, c, d) {
|
|
first = true;
|
|
b.Closed.changesel("news");
|
|
}),
|
|
b.router.connect('/notifications/friend_requests(\/)?$', function(a, c, d) {
|
|
first = true;
|
|
b.Closed.changesel("news");
|
|
$('.received-request-button').on('click', function(a) {
|
|
a.preventDefault()
|
|
fr = new b.ModalWindow($('div[data-modal-types=accept-friend-request][uuid='+ $(this).parent().parent().attr('id') +']'));fr.open();
|
|
})
|
|
$('div[data-modal-types=accept-friend-request] .ok-button.post-button').on('click', function(a){
|
|
a.preventDefault();
|
|
b.Form.toggleDisabled($(this), true);
|
|
b.Form.post($(a.target).parents().eq(4).attr('data-action')).done(function(){
|
|
b.Form.toggleDisabled($(this), false);
|
|
fr.close();
|
|
b.Net.reload();
|
|
})
|
|
})
|
|
$('div[data-modal-types=accept-friend-request] .cancel-button').on('click', function(a){
|
|
a.preventDefault();
|
|
b.showConfirm('Reject Friend Request', 'Are you sure you really want to reject '+ b.SimpleDialog.htmlLineBreak($(a.target).parents().eq(4).attr('data-screen-name')) +'\'s friend request?', {
|
|
cancelLabel: "No",
|
|
okLabel: "Yes"
|
|
})
|
|
$('.ok-button.black-button').on('click', function() {
|
|
b.Form.toggleDisabled($(this), true);
|
|
b.Form.post($(a.target).parents().eq(4).attr('data-reject-action')).done(function(){
|
|
b.Form.toggleDisabled($(this), false);
|
|
fr.close();
|
|
b.Net.reload()
|
|
})
|
|
})
|
|
})
|
|
}),
|
|
b.router.connect("^/messages(\/)?$", function(a, c, d) {
|
|
b.Closed.changesel("message");
|
|
b.Content.autopagerize(".list-content-with-icon-and-text", d);
|
|
|
|
$('form.search').on('submit', function(s) {
|
|
s.preventDefault();
|
|
b.Net.go($(this).attr('action') + '?'+$(this).serialize());
|
|
});
|
|
|
|
$('h2 > span > input[type=checkbox]').on('click', function() {
|
|
b.Net.go(location.pathname + "?" + $(this).attr('name') + "=" + $(this).attr('value'))
|
|
});
|
|
|
|
}),
|
|
b.router.connect("^/conversations/(create|([0-9]+)/edit)$", function(a, c, d) {
|
|
$(".follow-button").on("click", function() {
|
|
if($("#members .input").length <= 10) {
|
|
$(this).addClass("none");
|
|
$(this).siblings(".follow-done-button").removeClass("none");
|
|
$(this).siblings(".input").attr("name", "user" + ($("#members .input").length + 1));
|
|
$(this).parents(".trigger").appendTo("#members");
|
|
checkGroupForm();
|
|
} else {
|
|
Olv.showMessage("Error", "You can only add a maximum of 10 users to a friend group.");
|
|
}
|
|
});
|
|
$(".follow-done-button").on("click", function() {
|
|
$(this).addClass("none");
|
|
$(this).siblings(".follow-button").removeClass("none");
|
|
$(this).parents(".trigger").appendTo("#friends");
|
|
checkGroupForm();
|
|
});
|
|
checkGroupForm();
|
|
}),
|
|
b.router.connect("^/(messages|conversations)/([^\/]+)/?$", function(a, c, d) {
|
|
b.Closed.changesel("message");
|
|
b.Content.autopagerize(".list.messages", d)
|
|
var ff = $('#post-form')
|
|
b.EntryForm.setupSubmission(ff, d),
|
|
b.EntryForm.setupFormStatus(ff, d),
|
|
b.EntryForm.setupFoldedForm(ff, d),
|
|
b.EntryForm.setupIdentifiedUserForm(ff, d)
|
|
ff.on("olv:entryform:post:done", g)
|
|
function g(k, c) {
|
|
var p = $(".list.messages");
|
|
p.length || (p = $("<div>", {
|
|
"class": "list post-list js-post-list"
|
|
}).replaceAll(".no-content"));
|
|
var e = $($.parseHTML(c)).filter("*");
|
|
e.hide().fadeIn(400).prependTo(p);
|
|
msg_rm_load();
|
|
$(".no-content").remove();
|
|
var f = $(window);
|
|
f.scrollTop(e.offset().top + e.outerHeight() / 2 - f.height() / 2)
|
|
}
|
|
$("form.search.folded input").on("click", function() {
|
|
$(this).parents("form.search.folded").removeClass("folded");
|
|
});
|
|
if($("#post-form").length) {
|
|
var mode_post = 0;
|
|
$("label.textarea-menu-memo > input").on("click", function() {
|
|
if(openDrawboardModal()) {
|
|
var menu = $("div.textarea-with-menu");
|
|
var memo = $("div.textarea-memo");
|
|
var text = $("div.textarea-container");
|
|
if(menu.hasClass("active-text")) {
|
|
menu.removeClass("active-text");
|
|
menu.addClass("active-memo");
|
|
memo.removeClass("none");
|
|
text.addClass("none");
|
|
$(".character-count").addClass("none");
|
|
}
|
|
if($("#drawing").length) {
|
|
b.Form.toggleDisabled($("input.post-button"), false);
|
|
} else {
|
|
b.Form.toggleDisabled($("input.post-button"), true);
|
|
}
|
|
mode_post = 1;
|
|
|
|
setupDrawboard();
|
|
}
|
|
});
|
|
$("label.textarea-menu-text").on("click", switchtext);
|
|
var maxlength;
|
|
if($(".textarea-text").attr("maxlength")) {
|
|
maxlength = $(".textarea-text").attr("maxlength");
|
|
} else {
|
|
maxlength = 2000;
|
|
}
|
|
$(".textarea-text").on("input", function() { // © 2016 Miiverse+ https://openuserjs.org/scripts/PF2M/Miiverse+
|
|
var length = $(this).val().length;
|
|
var remaining = maxlength - length;
|
|
$(".character-count").text(remaining);
|
|
if(remaining < 200) {
|
|
$(".character-count").addClass("red");
|
|
} else {
|
|
$(".character-count").removeClass("red");
|
|
}
|
|
});
|
|
|
|
$(".post-button").on("click", switchtext);
|
|
|
|
function switchtext() {
|
|
var menu = $("div.textarea-with-menu");
|
|
menu.removeClass("active-memo");
|
|
menu.addClass("active-text");
|
|
$("div.textarea-container").removeClass("none");
|
|
$("div.textarea-memo").addClass("none");
|
|
$(".character-count").removeClass("none");
|
|
mode_post = 0;
|
|
if($("textarea[name=body]").val().length > 0 || $("input[name=image]").val().length > 0) {
|
|
Olv.Form.toggleDisabled($("input.post-button"), false);
|
|
Olv.Form.toggleDisabled($("input.reply-button"), false);
|
|
} else {
|
|
Olv.Form.toggleDisabled($("input.post-button"), true);
|
|
Olv.Form.toggleDisabled($("input.reply-button"), true);
|
|
}
|
|
}
|
|
}
|
|
|
|
function msg_rm_load() {
|
|
var rm_btn = $('.rm-post-button')
|
|
if(rm_btn.length) {
|
|
rm_btn.off().on('click',function(){
|
|
var thingy = $(this);
|
|
b.showConfirm("Delete Message", "Delete this message?")
|
|
$('.ok-button').on('click',function() {
|
|
b.Form.post(thingy.attr('data-action'));
|
|
thingy.parent().parent().remove();
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
msg_rm_load();
|
|
|
|
$('button.msg-update').on('click',function(e){
|
|
b.Net.reload();
|
|
});
|
|
}),
|
|
b.router.connect("^/communities/(?:favorites|played)$", function(a, c, d) {
|
|
b.Closed.changesel("community");
|
|
b.Content.autopagerize(".community-list", d)
|
|
}),
|
|
b.router.connect("^/communities/search$", function(c, d, e) {
|
|
b.Closed.changesel("community");
|
|
a("form.search").on("submit", b.Form.validateValueLength),
|
|
e.done(function() {
|
|
a("form.search").off("submit", b.Form.validateValueLength)
|
|
})
|
|
}),
|
|
b.router.connect("^/communities/[0-9]+(/diary|/new|/hot|/in_game|/old)?$", function(c, d, e) {
|
|
b.Closed.changesel("community");
|
|
function f() {
|
|
var b = a(".multi_timeline-topic-filter");
|
|
b.addClass("open")
|
|
}
|
|
function g(b, c) {
|
|
var d = a(b.currentTarget).attr("data-post-list-container-selector")
|
|
, e = !!d
|
|
, f = e ? d + " .js-post-list" : ".js-post-list"
|
|
, g = a(f);
|
|
e ? g.hasClass("empty") && g.removeClass("empty").children().remove() : g.length || (g = a("<div>", {
|
|
"class": "list post-list js-post-list"
|
|
}).replaceAll(".no-content"));
|
|
var h = a(a.parseHTML(c)).filter("*");
|
|
h.hide().fadeIn(400).prependTo(g);
|
|
a(".no-post-content").addClass("none");
|
|
if(!h.hasClass("pinned")) {
|
|
a(".pinned:not(.repost)").prependTo(g);
|
|
}
|
|
var i = a(window);
|
|
i.scrollTop(h.offset().top + h.outerHeight() / 2 - i.height() / 2);
|
|
setupPolls();
|
|
}
|
|
b.Entry.setupHiddenContents(e),
|
|
b.Content.autopagerize(".js-post-list", e),
|
|
b.Community.setupPostFilter(e);
|
|
var h = a("#post-form");
|
|
b.Guest.isGuest() || (b.Entry.setupYeahButtons(e),
|
|
b.EntryForm.setupSubmission(h, e),
|
|
b.EntryForm.setupFormStatus(h, e),
|
|
b.EntryForm.setupFoldedForm(h, e),
|
|
b.EntryForm.setupAlbumImageSelector(h, e),
|
|
h.hasClass("for-identified-user") && b.EntryForm.setupIdentifiedUserForm(h, e),
|
|
a(".toggle-button").length && b.User.setupFollowButton(e),
|
|
a(document).on("click", ".js-topic-post-button", f),
|
|
e.done(function() {
|
|
a(document).off("click", ".js-topic-post-button", f)
|
|
})),
|
|
a(".age-gate-dialog").length && b.Community.setupAgeGateDialog(e),
|
|
h.on("olv:entryform:post:done", g),
|
|
e.done(function() {
|
|
h.off("olv:entryform:post:done", g)
|
|
});
|
|
$("form.search.folded input").on("click", function() {
|
|
$(this).parents("form.search.folded").removeClass("folded");
|
|
});
|
|
// I might do this again later
|
|
/*
|
|
$('button.reload-btn').on('click',function(e){
|
|
NProgress.start();
|
|
$.ajax({
|
|
url: window.location.href,
|
|
headers: {
|
|
"X-AUTOPAGERIZE": !0
|
|
}
|
|
}).done(function(m) {
|
|
NProgress.done();
|
|
$('.js-post-list').replaceWith(m);
|
|
});
|
|
});
|
|
*/
|
|
}),
|
|
b.router.connect("^/communities/[0-9]+(/artwork(/hot|/new)?|/topic(/new|/open)?)$", function(c, d, e) {
|
|
b.Closed.changesel("community");
|
|
function f(d, f) {
|
|
var h = a(".js-post-list");
|
|
h.length || (h = a("<div>", {
|
|
"class": "list multi-timeline-post-list js-post-list"
|
|
}).replaceAll(".no-content"));
|
|
var i = a(a.parseHTML(f)).filter("*");
|
|
i.hide().fadeIn(400).prependTo(h),
|
|
/^\/topic(?:\/(?:new|open))?$/.test(c[1]) && (b.EntryForm.onTopicPostCreated(g, e),
|
|
b.EntryForm.setupFoldedForm(g, e));
|
|
var j = a(window);
|
|
j.scrollTop(i.offset().top + i.outerHeight() / 2 - j.height() / 2)
|
|
}
|
|
b.Entry.setupHiddenContents(e),
|
|
b.Content.autopagerize(".js-post-list", e),
|
|
b.Community.setupPostFilter(e);
|
|
var g = a("#post-form");
|
|
b.Guest.isGuest() || (b.Entry.setupYeahButtons(e),
|
|
b.EntryForm.setupSubmission(g, e),
|
|
b.EntryForm.setupFormStatus(g, e),
|
|
b.EntryForm.setupFoldedForm(g, e),
|
|
b.EntryForm.setupAlbumImageSelector(g, e),
|
|
g.hasClass("for-identified-user") && b.EntryForm.setupIdentifiedUserForm(g, e),
|
|
a(".toggle-button").length && b.User.setupFollowButton(e)),
|
|
a(".age-gate-dialog").length && b.Community.setupAgeGateDialog(e),
|
|
g.on("olv:entryform:post:done", f),
|
|
e.done(function() {
|
|
g.off("olv:entryform:post:done", f)
|
|
})
|
|
}),
|
|
b.router.connect(/^\/posts\/([0-9A-Za-z\-_]+)$/, function(c, d, e) {
|
|
function f(c, d) {
|
|
var e = a(window)
|
|
, f = a(a.parseHTML(d)).filter("*");
|
|
f.hide().fadeIn(400).appendTo(".reply-list"),
|
|
e.scrollTop(f.offset().top + f.outerHeight() / 2 - e.height() / 2),
|
|
b.Entry.incrementReplyCount(1)
|
|
}
|
|
function g(c, d) {
|
|
var e = a(c.target);
|
|
e.attr("data-is-post") ? b.Form.toggleDisabled(e, !0) : e.remove()
|
|
}
|
|
b.Entry.setupHiddenContents(e),
|
|
b.Entry.setupMoreRepliesButtons(e);
|
|
var h = a("#reply-form");
|
|
b.Guest.isGuest() || (b.Entry.setupPostYeahButton(e),
|
|
b.Entry.setupEditButtons(e),
|
|
b.EntryForm.setupSubmission(h, e),
|
|
b.EntryForm.setupFormStatus(h, e),
|
|
b.EntryForm.setupAlbumImageSelector(h, e),
|
|
h.hasClass("for-identified-user") && b.EntryForm.setupIdentifiedUserForm(h, e)),
|
|
b.Entry.setupBodyLanguageSelector(e),
|
|
b.Entry.setupMoreContentButton(e),
|
|
a(document).on("olv:entryform:post:done", f),
|
|
a(document).on("olv:report:done", g),
|
|
e.done(function() {
|
|
a(document).off("olv:entryform:post:done", f),
|
|
a(document).off("olv:report:done", g)
|
|
})
|
|
if($('.edit-post-button').length) {
|
|
var t = $("#edit-form");
|
|
var submit_btn = $('#edit-form div.form-buttons button.post-button.black-button')
|
|
function et() {
|
|
$('#post-edit').toggleClass('none')
|
|
$('#the-post').toggleClass('none')
|
|
}
|
|
$('.cancel-button').on('click',function(){et()})
|
|
b.EntryForm.setupFormStatus(t, e);
|
|
$('.edit-post-button').on('click', function(){
|
|
if($('.reply-content-memo').length) {
|
|
b.showMessage("Error", "You can't edit a drawing.");
|
|
} else {
|
|
et();
|
|
}
|
|
});
|
|
submit_btn.on('click', function(a) {
|
|
a.preventDefault();
|
|
b.Form.toggleDisabled($(this), true);
|
|
cereal = t.serializeArray();
|
|
b.Form.post(t.attr('data-action'), cereal).done(function() {
|
|
$('.post-content-text').html(cereal.body); b.Net.reload();
|
|
})
|
|
});
|
|
}
|
|
rm_btn = $('.rm-post-button')
|
|
if(rm_btn.length) {
|
|
rm_btn.on('click',function() {
|
|
b.showConfirm("Delete Post", "Delete this post?")
|
|
$('.ok-button').on('click',function(){
|
|
b.Form.post(rm_btn.attr('data-action')).done(function() {
|
|
window.location.reload();
|
|
});
|
|
})
|
|
})
|
|
}
|
|
setupRepostButton();
|
|
fav_btn = $('.profile-post-button')
|
|
if(fav_btn.length) {
|
|
if(fav_btn.hasClass('done')) {
|
|
fav_btn.on('click',function() {
|
|
b.showConfirm("Favorite Post", "Unset your favorite post?")
|
|
$('.ok-button').on('click', function() {
|
|
b.Form.post(fav_btn.attr('data-action')).done(fav_btn.removeClass('done', b.Net.reload()))
|
|
})
|
|
})
|
|
}
|
|
else {
|
|
fav_btn.on('click',function(){
|
|
b.showConfirm("Profile post", "Set this as your profile picture?")
|
|
$('.ok-button').on('click',function(){
|
|
b.Form.post(fav_btn.attr('data-action')).done(fav_btn.addClass('done'),b.Net.reload())
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
if($("#reply-form").length) {
|
|
var mode_post = 0;
|
|
$("label.textarea-menu-memo > input").on("click", function() {
|
|
if(openDrawboardModal()) {
|
|
var menu = $("div.textarea-with-menu");
|
|
var memo = $("div.textarea-memo");
|
|
var text = $("div.textarea-container");
|
|
if(menu.hasClass("active-text")) {
|
|
menu.removeClass("active-text");
|
|
menu.addClass("active-memo");
|
|
memo.removeClass("none");
|
|
text.addClass("none");
|
|
$(".character-count").addClass("none");
|
|
}
|
|
b.Form.toggleDisabled($("input.reply-button"), false);
|
|
mode_post = 1;
|
|
|
|
setupDrawboard();
|
|
}
|
|
});
|
|
$("label.textarea-menu-text").on("click", switchtext);
|
|
var maxlength;
|
|
if($(".textarea-text").attr("maxlength")) {
|
|
maxlength = $(".textarea-text").attr("maxlength");
|
|
} else {
|
|
maxlength = 2000;
|
|
}
|
|
$(".textarea-text").on("input", function() { // © 2016 Miiverse+ https://openuserjs.org/scripts/PF2M/Miiverse+
|
|
var length = $(this).val().length;
|
|
var remaining = maxlength - length;
|
|
$(".character-count").text(remaining);
|
|
if(remaining < 200) {
|
|
$(".character-count").addClass("red");
|
|
} else {
|
|
$(".character-count").removeClass("red");
|
|
}
|
|
});
|
|
|
|
$(".reply-button").on("click", switchtext);
|
|
|
|
function switchtext() {
|
|
var menu = $("div.textarea-with-menu");
|
|
menu.removeClass("active-memo");
|
|
menu.addClass("active-text");
|
|
$("div.textarea-container").removeClass("none");
|
|
$("div.textarea-memo").addClass("none");
|
|
$(".character-count").removeClass("none");
|
|
mode_post = 0;
|
|
}
|
|
}
|
|
}),
|
|
b.router.connect(/^\/comments\/([0-9A-Za-z\-_]+)$/, function(c, d, e) {
|
|
function f(c, d) {
|
|
var e = a(c.target);
|
|
e.attr("data-is-post") ? b.Form.toggleDisabled(e, !0) : e.remove()
|
|
}
|
|
var g = a("#reply-form");
|
|
b.Guest.isGuest() || (b.Entry.setupPostYeahButton(e),
|
|
b.Entry.setupEditButtons(e),
|
|
b.EntryForm.setupSubmission(g, e),
|
|
b.EntryForm.setupFormStatus(g, e)),
|
|
b.Entry.setupBodyLanguageSelector(e),
|
|
a(document).on("olv:report:done", f),
|
|
e.done(function() {
|
|
a(document).off("olv:report:done", f)
|
|
});
|
|
|
|
if($('.edit-post-button').length) {
|
|
var t = $("#edit-form");
|
|
var submit_btn = $('#edit-form div.form-buttons button.post-button.black-button')
|
|
function et() {
|
|
$('#post-edit').toggleClass('none')
|
|
$('#the-post').toggleClass('none')
|
|
}
|
|
$('.cancel-button').on('click',function(){et()})
|
|
b.EntryForm.setupFormStatus(t, e);
|
|
$('.edit-post-button').on('click', function() {
|
|
if($('.post-content-memo').length) {
|
|
b.showMessage("Error", "You can't edit a drawing.");
|
|
} else {
|
|
et();
|
|
}
|
|
});
|
|
submit_btn.on('click',function(a) {
|
|
a.preventDefault()
|
|
b.Form.toggleDisabled($(this), true)
|
|
cereal = t.serializeArray()
|
|
b.Form.post(t.attr('data-action'), cereal).done(function() {
|
|
$('.post-content-text').html(cereal.body); b.Net.reload()
|
|
})
|
|
})
|
|
}
|
|
rm_btn = $('.rm-post-button')
|
|
if(rm_btn.length) {
|
|
rm_btn.on('click',function(){
|
|
b.showConfirm("Delete Comment", "Delete this comment?")
|
|
$('.ok-button').on('click',function(){
|
|
b.Form.post(rm_btn.attr('data-action')).done(function(){
|
|
window.location.reload();
|
|
});
|
|
})
|
|
})
|
|
}
|
|
}),
|
|
b.router.connect("^/users\.search$", function(c, d, e) {
|
|
b.Closed.changesel("feed");
|
|
b.Content.autopagerize("#searched-user-list", e),
|
|
b.Guest.isGuest() || b.User.setupFollowButton(e),
|
|
a("form.search").on("submit", function(s) {
|
|
b.Form.validateValueLength(s),
|
|
s.preventDefault();
|
|
b.Net.go($(this).attr('action') + '?'+$(this).serialize())
|
|
}),
|
|
e.done(function() {
|
|
a("form.search").off("submit", b.Form.validateValueLength)
|
|
})
|
|
}),
|
|
b.router.connect("^/users/[^\/]+/(yeahs|posts|comments)$", function(a, c, d) {
|
|
b.Content.autopagerize(".js-post-list", d);
|
|
$("form.search.folded input").on("click", function() {
|
|
$(this).parents("form.search.folded").removeClass("folded");
|
|
});
|
|
}),
|
|
b.router.connect("^/users/[^\/]+(/friends|/following|/followers)$", function(a, c, d) {
|
|
b.Content.autopagerize("#friend-list-content", d)
|
|
}),
|
|
b.router.connect("^/users/[^\/]+(/diary)$", function(c, d, e) {
|
|
function f(b, c) {
|
|
var e = a(".js-post-list");
|
|
e.find(".no-content").addClass("none");
|
|
var f = a(a.parseHTML(c)).filter("*");
|
|
f.hide().fadeIn(400).prependTo(e),
|
|
i.remove();
|
|
// Why do we need to replace state????????
|
|
//window.history.replaceState(window.history.state, "", d.href.replace(/\?.*/, ""));
|
|
var g = a(document).find("#js-my-post-count");
|
|
g[0] && g.text(+g.text() + 1);
|
|
var h = a(window);
|
|
h.scrollTop(f.offset().top + f.outerHeight() / 2 - h.height() / 2)
|
|
}
|
|
function g(a, b) {
|
|
i.remove()
|
|
}
|
|
function h(c, d) {
|
|
b.Form.toggleDisabled(a(c.target), !0)
|
|
}
|
|
b.Entry.setupHiddenContents(e),
|
|
b.Content.autopagerize(".js-post-list", e);
|
|
var i = a("#post-form");
|
|
b.Guest.isGuest() || (b.Entry.setupYeahButtons(e),
|
|
b.EntryForm.setupSubmission(i, e),
|
|
b.EntryForm.setupFormStatus(i, e),
|
|
i.hasClass("for-identified-user") && b.EntryForm.setupIdentifiedUserForm(i, e)),
|
|
a(document).on("olv:report:done", h),
|
|
i.on("olv:entryform:post:done", f);
|
|
var j = i.find(".cancel-button");
|
|
j.on("click", g),
|
|
e.done(function() {
|
|
//showButton.off("click"),
|
|
a(document).off("olv:report:done", h),
|
|
i.off("olv:entryform:post:done", f),
|
|
j.off("click", g)
|
|
})
|
|
}),
|
|
b.router.connect("^/users/[^\/]+(/friends|/following|/followers|/yeahs|/posts|/comments)?$", function(c, d, e) {
|
|
if(a("#edit-profile-settings").length) {
|
|
b.Closed.changesel('mymenu');
|
|
}
|
|
function f(c, d) {
|
|
b.Form.toggleDisabled(a(c.target), !0)
|
|
}
|
|
function g(b, c) {
|
|
a("#user-content.is-visitor").length && a("#js-following-count").text(c)
|
|
}
|
|
b.User.setupFollowButton(e, {
|
|
container: ".main-column",
|
|
noReloadOnFollow: !0
|
|
});
|
|
|
|
$('.block-button.block').on('click', function(a) {
|
|
a.preventDefault()
|
|
fr = new b.ModalWindow($('div[data-modal-types=post-block]'));fr.open();
|
|
});
|
|
$('.block-button.unblock').on('click', function(a) {
|
|
a.preventDefault()
|
|
fr = new b.ModalWindow($('div[data-modal-types=post-unblock]'));fr.open();
|
|
});
|
|
$('div[data-modal-types=post-block] input.post-button').on('click', function(g){
|
|
g.preventDefault();
|
|
b.Form.toggleDisabled($(this), true);
|
|
b.Form.post($('div[data-modal-types=post-block] form').attr('data-action')).done(function() {
|
|
fr.close();
|
|
b.Form.toggleDisabled($(this), false);
|
|
b.Net.reload();
|
|
});
|
|
});
|
|
$('div[data-modal-types=post-unblock] input.post-button').on('click', function(g){
|
|
g.preventDefault();
|
|
b.Form.toggleDisabled($(this), true);
|
|
b.Form.post($('div[data-modal-types=post-unblock] form').attr('data-action')).done(function() {
|
|
fr.close();
|
|
b.Form.toggleDisabled($(this), false);
|
|
b.Net.reload();
|
|
});
|
|
});
|
|
|
|
|
|
$('.friend-button.create').on('click', function(a) {
|
|
a.preventDefault()
|
|
fr = new b.ModalWindow($('div[data-modal-types=post-friend-request]'));fr.open();
|
|
})
|
|
$('div[data-modal-types=post-friend-request] input.post-button').on('click', function(g){
|
|
g.preventDefault();
|
|
b.Form.toggleDisabled($(this), true);
|
|
b.Form.post($('.friend-button.create').attr('data-action'), $('div[data-modal-types=post-friend-request] form').serializeArray()).done(function() {
|
|
fr.close();
|
|
b.Form.toggleDisabled($(this), false);
|
|
b.Net.reload()
|
|
})
|
|
})
|
|
|
|
$('.friend-button.accept').on('click', function(g) {
|
|
g.preventDefault()
|
|
fr = new b.ModalWindow($('div[data-modal-types=accept-friend-request]'));fr.open();
|
|
})
|
|
$('div[data-modal-types=accept-friend-request] .ok-button.post-button').on('click', function(g){
|
|
g.preventDefault();
|
|
b.Form.toggleDisabled($(this), true);
|
|
b.Form.post($('div[data-modal-types=accept-friend-request]').attr('data-action')).done(function(){
|
|
b.Form.toggleDisabled($(this), false);
|
|
fr.close();
|
|
b.Net.reload();
|
|
})
|
|
})
|
|
$('div[data-modal-types=accept-friend-request] .cancel-button').on('click', function(g){
|
|
g.preventDefault();
|
|
b.showConfirm('Reject Friend Request', 'Are you sure you really want to reject '+ b.SimpleDialog.htmlLineBreak($('div[data-modal-types=accept-friend-request]').attr('data-screen-name')) +'\'s friend request?', {
|
|
cancelLabel: "No",
|
|
okLabel: "Yes"
|
|
})
|
|
$('.ok-button.black-button').on('click', function(g) {
|
|
b.Form.post($('div[data-modal-types=accept-friend-request]').attr('data-reject-action')).done(function(){
|
|
fr.close();
|
|
b.Net.reload()
|
|
})
|
|
})
|
|
})
|
|
$('.friend-button.cancel').on('click', function(g) {
|
|
g.preventDefault()
|
|
b.showConfirm('Cancel Friend Request', 'Are you sure you really want to cancel your friend request to '+ b.SimpleDialog.htmlLineBreak($('.friend-button.cancel').attr('data-screen-name')) +'?', {
|
|
cancelLabel: "No",
|
|
okLabel: "Yes"
|
|
})
|
|
$('.ok-button.black-button').on('click', function(g) {
|
|
b.Form.post($('.friend-button.cancel').attr('data-action')).done(function(){
|
|
b.Net.reload()
|
|
})
|
|
})
|
|
})
|
|
$('.friend-button.delete').on('click', function(g) {
|
|
g.preventDefault()
|
|
b.showConfirm('Unfriend', 'Are you sure you really want to unfriend '+ b.SimpleDialog.htmlLineBreak($('.friend-button.delete').attr('data-screen-name')) +"? Your messages will not be deleted.", {
|
|
cancelLabel: "No",
|
|
okLabel: "Yes"
|
|
})
|
|
$('.ok-button.black-button').on('click', function(g) {
|
|
b.Form.toggleDisabled($(this), true);
|
|
b.Form.post($('.friend-button.delete').attr('data-action')).done(function(){
|
|
b.Form.toggleDisabled($(this), false);
|
|
b.Net.reload();
|
|
})
|
|
})
|
|
})
|
|
b.User.setupUserSidebar(e)
|
|
b.Entry.setupHiddenContents(e),
|
|
a(document).on("olv:report:done", f),
|
|
a(document).on("olv:visitor:following-count:change", g),
|
|
e.done(function() {
|
|
//showButton.off("click"),
|
|
a(document).off("olv:report:done", f),
|
|
a(document).off("olv:visitor:following-count:change", g)
|
|
}),
|
|
b.Entry.setupYeahButtons(e)
|
|
}),
|
|
b.router.connect("^/users/[^\/]+/favorites$", function(a, c, d) {
|
|
b.Content.autopagerize(".community-list", d)
|
|
}),
|
|
b.router.connect("^/signup$", function(c, d, e) {
|
|
// Is there an NNID field?
|
|
// TODO: Make this way better and don't have this duplicated like it is now
|
|
if($('h3.label.nnid').length) {
|
|
inp = $('input[type=text][name=nnid]')
|
|
icon = $('h3.label.nnid > label > img')
|
|
function getmiim() {
|
|
if(b.Closed.blank.test(inp.val())) {
|
|
icon.addClass('none');
|
|
icon.attr('src', '');
|
|
$('p.red').html(null);
|
|
return false;
|
|
}
|
|
if(!inp.val().match(/^[^\/]{6,16}$/)) {
|
|
$('p.red').html('The NNID provided is invalid.')
|
|
return false;
|
|
} else {
|
|
$('p.red').html(null);
|
|
}
|
|
$.ajax({
|
|
url: inp.attr('data-action'),
|
|
type: 'POST', data: b.Form.csrftoken({'a': inp.val()}),
|
|
success: function(a) {
|
|
if(a == '') {
|
|
icon.addClass('none');
|
|
icon.attr('src', '');
|
|
$('input[name=mh]').val('');
|
|
} else {
|
|
icon.removeClass('none');
|
|
icon.attr('src', 'https://mii-secure.cdn.nintendo.net/' + a + '_normal_face.png');
|
|
$('input[name=mh]').val(a);
|
|
}
|
|
}, error: function(a) {
|
|
$('p.red').html(a.responseText);
|
|
icon.addClass('none');
|
|
icon.attr('src', '');
|
|
$('input[name=mh]').val('');
|
|
},
|
|
beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()}
|
|
})
|
|
}
|
|
var timer;
|
|
inp.on('input', function() {
|
|
clearTimeout(timer);
|
|
timer = setTimeout(getmiim, 500);
|
|
})
|
|
}
|
|
}),
|
|
b.router.connect("^/reset/$", function(d, c, f) {
|
|
$("form[method=post]").on("submit", function(e) {
|
|
e.preventDefault();
|
|
$.ajax({
|
|
type: 'POST', url: window.location.href, data: $("form").serialize(),
|
|
success: function(s) {
|
|
$("p.red").addClass("green"),$("p.red").text(s)
|
|
},
|
|
error: function(s) {
|
|
$("p.red").text(s.responseText)
|
|
},
|
|
beforeSend: function() {
|
|
NProgress.start();
|
|
},
|
|
complete: function() {
|
|
NProgress.done();
|
|
}
|
|
});
|
|
})
|
|
}),
|
|
b.router.connect("^/server$", function() {
|
|
$('button.reload-btn').on('click',function(e){
|
|
NProgress.start();
|
|
var thing = $.getJSON(window.location.href, { json: '1' }, function(tt) {
|
|
NProgress.done();
|
|
$('#guide > div > ul > li:nth-child(1) > strong').html(tt['communities']),
|
|
$('#guide > div > ul > li:nth-child(2) > strong').html(tt['posts']),
|
|
$('#guide > div > ul > li:nth-child(3) > strong').html(tt['users']),
|
|
$('#guide > div > ul > li:nth-child(4) > strong').html(tt['comments']),
|
|
$('#guide > div > ul > li:nth-child(5) > strong').html(tt['messages']),
|
|
$('#guide > div > ul > li:nth-child(6) > strong').html(tt['yeahs']),
|
|
$('#guide > div > ul > li:nth-child(7) > strong').html(tt['complaints']),
|
|
$('#guide > div > ul > li:nth-child(8) > strong').html(tt['notifications']),
|
|
$('#guide > div > ul > li:nth-child(9) > strong').html(tt['follows']),
|
|
$('#guide > div > ul > li:nth-child(10) > strong').html(tt['friendships']);
|
|
});
|
|
})
|
|
}),
|
|
b.router.connect("^/blocked$", function() {
|
|
$('.received-request-button').on('click', function(a) {
|
|
a.preventDefault()
|
|
fr = new b.ModalWindow($('div#' + a.originalEvent.target.getAttribute('data-user-id')));fr.open();
|
|
});
|
|
$('div[data-modal-types=post-unblock] input.post-button').on('click', function(g){
|
|
g.preventDefault();
|
|
b.Form.toggleDisabled($(this), true);
|
|
b.Form.post(g.target.form.dataset.action).done(function() {
|
|
fr.close();
|
|
b.Form.toggleDisabled($(this), false);
|
|
b.Net.reload();
|
|
});
|
|
});
|
|
}),
|
|
b.router.connect("^/man/?$", function(c, d, e) {
|
|
$('li.setting-pruge1 > form > button').click(function(a) {
|
|
a.preventDefault();
|
|
if(confirm("Really? This is PERMANENT!!!!!!!!")) {
|
|
Olv.Form.post(location.href, $('li.setting-pruge1 > form').serializeArray()).done(function(response) {
|
|
Olv.showMessage('', response);
|
|
});
|
|
}
|
|
});
|
|
$('li.setting-pruge2 > form > button').click(function(a) {
|
|
a.preventDefault();
|
|
if(confirm("Really? This is recoverable.")) {
|
|
Olv.Form.post(location.href, $('li.setting-pruge2 > form').serializeArray()).done(function(response) {
|
|
Olv.showMessage('', response);
|
|
});
|
|
}
|
|
});
|
|
$('li.setting-pruge3 > form > button').click(function(a) {
|
|
a.preventDefault();
|
|
if(confirm("Really? Friendships can't be recovered.")) {
|
|
Olv.Form.post(location.href, $('li.setting-pruge3 > form').serializeArray()).done(function(response) {
|
|
Olv.showMessage('', response);
|
|
});
|
|
}
|
|
});
|
|
$('li.setting-pruge4 > form > button').click(function(a) {
|
|
a.preventDefault();
|
|
if(confirm("Really? This is permanent.")) {
|
|
Olv.Form.post(location.href, $('li.setting-pruge4 > form').serializeArray()).done(function(response) {
|
|
Olv.showMessage('', response);
|
|
});
|
|
}
|
|
});
|
|
$('li.setting-pruge5 > form > button').click(function(a) {
|
|
a.preventDefault();
|
|
if(confirm("Really? This is permanent.")) {
|
|
Olv.Form.post(location.href, $('li.setting-pruge5 > form').serializeArray()).done(function(response) {
|
|
Olv.showMessage('', response);
|
|
});
|
|
}
|
|
});
|
|
$('li.setting-pruge6 > form > button').click(function(a) {
|
|
a.preventDefault();
|
|
if(confirm("Really? This is permanent.")) {
|
|
Olv.Form.post(location.href, $('li.setting-pruge6 > form').serializeArray()).done(function(response) {
|
|
Olv.showMessage('', response);
|
|
});
|
|
}
|
|
});
|
|
$('li.setting-unpurge1 > form > button').click(function(a) {
|
|
a.preventDefault();
|
|
if(confirm("Really? This is permanent.")) {
|
|
Olv.Form.post(location.href, $('li.setting-unpurge1 > form').serializeArray()).done(function(response) {
|
|
Olv.showMessage('', response);
|
|
});
|
|
}
|
|
});
|
|
}),
|
|
b.router.connect("^/man/users$", function(c, d, e) {
|
|
function openUserModal(user) {
|
|
$('#user-man-template > div > div > h1.window-title').text('Manage "' + user.username + '"');
|
|
$('div.user-info').html(user.html);
|
|
$('input[name=username]').val(user.username);
|
|
$('input[name=email]').val(user.email);
|
|
$('input[name=addr]').val(user.addr);
|
|
$('form.goodform').attr('data-action', user.manager);
|
|
if(user.is_active) {
|
|
$('input[name=active]').prop('checked', true);
|
|
} else {
|
|
$('input[name=active]').prop('checked', false);
|
|
}
|
|
|
|
var g = new b.ModalWindow($('#user-man-template'));g.open();
|
|
$('form.goodform').submit(function(a) {
|
|
a.preventDefault();
|
|
//alert('doing it');
|
|
b.Form.post($('form.goodform').attr('data-action'), $('form.goodform').serializeArray()).done(g.close());
|
|
})
|
|
}
|
|
b.Form.get('/man/users_list' + location.search).done(function(a) {
|
|
$('.user-loads').html(a);
|
|
b.Content.autopagerize('#user-man-list', e);
|
|
$('button.user-manage').on('click',function() {
|
|
NProgress.start();
|
|
b.Form.get($(this).parent().parent().attr('data-action')).done(function(a) {
|
|
NProgress.done();
|
|
openUserModal(a);
|
|
b.print(a);
|
|
});
|
|
});
|
|
});
|
|
}),
|
|
b.router.connect("^/settings/profile$", function(c, d, e) {
|
|
b.Closed.changesel('mymenu')
|
|
// If we are on profile settings..
|
|
if(c[0][10] == 'p') {
|
|
$('.get-ipinfo').on('click', function(e){
|
|
e.preventDefault();
|
|
$.ajax({url: '/region',
|
|
method: 'post',
|
|
data: {csrfmiddlewaretoken: Olv.Form.csrfmiddlewaretoken},
|
|
beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()},
|
|
success: function(a) {
|
|
$('input[name=country]').val($.trim(a))
|
|
b.showMessage('Region', "Your region has been recieved as \"" + $.trim(a) + "\". Please note that this was taken from your IP. If it's inaccurate, you might be using a proxy.\n\nThis information has not been saved. Please be sure you want to share your region when you save.")
|
|
}, error: function() {
|
|
b.showMessage('Region', "Failed to get your region for some reason.")
|
|
}
|
|
})
|
|
})
|
|
|
|
var maxlength;
|
|
if($(".textarea-text").attr("maxlength")) {
|
|
maxlength = $(".textarea-text").attr("maxlength");
|
|
} else {
|
|
maxlength = 2000;
|
|
}
|
|
$(".character-count").text(maxlength - $(".textarea-text").val().length);
|
|
$(".textarea-text").on("input", function() { // © 2016 Miiverse+ https://openuserjs.org/scripts/PF2M/Miiverse+
|
|
var length = $(this).val().length;
|
|
var remaining = maxlength - length;
|
|
$(".character-count").text(remaining);
|
|
if(remaining < 200) {
|
|
$(".character-count").addClass("red");
|
|
} else {
|
|
$(".character-count").removeClass("red");
|
|
}
|
|
});
|
|
|
|
inp = $('input[type=text][name=nnid]')
|
|
function getmiimtwo() {
|
|
if(!inp.val().match(/^[^\/]{6,16}$/)) {
|
|
$('p.error').html('The NNID provided is invalid.')
|
|
return false
|
|
} else {
|
|
$('p.error').html(null)
|
|
}
|
|
$.ajax({
|
|
url: inp.attr('data-action'),
|
|
type: 'POST', data: b.Form.csrftoken({'a': inp.val()}),
|
|
success: function(a) {
|
|
if(a == '') {
|
|
$('.nnid-icon.mii').attr('src', '');
|
|
} else {
|
|
$('.nnid-icon.mii').attr('src', 'https://mii-secure.cdn.nintendo.net/' + a + '_normal_face.png');
|
|
}
|
|
$('input[name=mh]').val(a);
|
|
}, error: function(a) {
|
|
$('p.error').html(a.responseText);
|
|
},
|
|
beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()}
|
|
})
|
|
}
|
|
var timer;
|
|
inp.on('input', function() {
|
|
clearTimeout(timer);
|
|
if(inp.val()) {
|
|
timer = setTimeout(getmiimtwo, 500);
|
|
}
|
|
})
|
|
|
|
$(".migration .migrate-button:visible").on("click", function() {
|
|
var popup = '<div class="dialog migrate none"><div class=dialog-inner><div class=window><h1 class=window-title>Import Posts</h1><div class=window-body><form id=feedback-form><p>To begin, first enter your login details.';
|
|
if($(this).hasClass("password-required")) {
|
|
popup += ' These will not be stored.';
|
|
}
|
|
popup += '</p><label>Username: <input type=text name=username placeholder=Username required><br></label>';
|
|
if($(this).hasClass("password-required")) {
|
|
popup += '<br><label>Password: <input type=password name=password placeholder=Password required><br></label>';
|
|
}
|
|
popup += '</form><div class=form-buttons><button class="olv-modal-close-button gray-button" type=button data-event-type=ok onclick="$(\'.migrate\').remove()">Cancel</button><button class="black-button migrate-send" data-action="' + $(this).attr('data-action') + '" type="button">Save</button></div></div></div></div></div>';
|
|
$('#wrapper').prepend(popup);
|
|
var g = new b.ModalWindow($('.migrate'));
|
|
g.open();
|
|
$('.migrate-send').on('click', function() {
|
|
b.Form.post($(this).attr('data-action'), Olv.Form.csrftoken($('#feedback-form').serializeArray())).done(function() {
|
|
Olv.showMessage("Success", "Post import complete!");
|
|
});
|
|
g.close();
|
|
$('.migrate').remove();
|
|
});
|
|
});
|
|
$(".past-imports-button").on("click", function() {
|
|
var g = new b.ModalWindow($('.past-imports'));
|
|
g.open();
|
|
$(".past-imports .migrate-button").on('click', function() {
|
|
b.Form.post($(this).attr('data-action'), Olv.Form.csrftoken([]));
|
|
$(this).parents(".migration").remove();
|
|
});
|
|
$(".past-imports .post-button").on("click", function() {
|
|
g.close();
|
|
});
|
|
});
|
|
|
|
$('input[name=avatar][value=0]').change(function() {
|
|
$('.setting-avatar > .icon-container > .nnid-icon.mii').addClass('none');
|
|
$('.nnid-icon.avatar').removeClass('none');
|
|
})
|
|
$('input[name=avatar][value=1]').change(function() {
|
|
$('.setting-avatar > .icon-container > .nnid-icon.mii').removeClass('none');
|
|
$('.nnid-icon.avatar').addClass('none');
|
|
})
|
|
function changeColor(color, theme) {
|
|
if(theme) {
|
|
if($("#theme").length == 0) {
|
|
$("head").append("<style id=theme temp class=delet></style>");
|
|
$("head").append("<link rel=stylesheet href=/assets/css/color.css class=delet>");
|
|
} else {
|
|
$("#theme:not([temp])").attr("temp", $("#theme").text());
|
|
}
|
|
var tc = tinycolor(color);
|
|
var hsv = tc.toHsv();
|
|
$("#theme").text(":root{--theme:" + color + ";--theme-light:" + formatHSL(hsv.h, hsv.s * 0.1, hsv.v) + ";--theme-dark:" + formatHSL(hsv.h, hsv.s, hsv.v * 0.25) + ";--theme-darker:" + formatHSL(hsv.h, hsv.s, hsv.v * 0.125) + "}");
|
|
$(document).on("pjax:end", function() {
|
|
$("#theme[temp]").text($("#theme[temp]").attr("temp"));
|
|
$(".delet").remove();
|
|
});
|
|
} else {
|
|
$('#sidebar-profile-body .nick-name').attr('style', 'color:' + color);
|
|
}
|
|
}
|
|
$(".color-value").on("change", function() {
|
|
if($(this).attr("name") == "theme") {
|
|
changeColor($(this).val(), true);
|
|
} else {
|
|
changeColor($(this).val(), false);
|
|
}
|
|
});
|
|
if(!supportsColorInput()) {
|
|
$(".color-thing").removeClass("none");
|
|
$(".color-value").attr("type", "hidden");
|
|
$('.color-thing').click(function(a) {
|
|
a.preventDefault();
|
|
$(this).spectrum({
|
|
color: $(this).siblings('.color-value'),
|
|
preferredFormat: "hex",
|
|
showInput: true,
|
|
flat: true,
|
|
change: function(color) {
|
|
$(this).siblings('.color-value').val(color).change();
|
|
}
|
|
});
|
|
$('div.form-buttons > input').click(function(a) {
|
|
$(this).spectrum('destroy');
|
|
});
|
|
});
|
|
}
|
|
$('.default-color').click(function(a) {
|
|
a.preventDefault();
|
|
$(this).siblings('.color-thing').spectrum('destroy');
|
|
$(this).siblings('.color-value').val('').change();
|
|
if($(this).siblings('.color-value').attr('name') == "theme") {
|
|
$(this).siblings('.color-value').val('#8000ff');
|
|
} else {
|
|
$(this).siblings('.color-value').val('#000000');
|
|
}
|
|
if($(this).siblings('.color-value').attr('name') == 'theme') {
|
|
$("#theme:not([temp])").attr("temp", $("#theme").text());
|
|
$("#theme").text(":root {--theme:#8000ff;--theme-light:#f0f0ff;}");
|
|
$(document).on("pjax:end", function() {
|
|
$("#theme[temp]").text($("#theme[temp]").attr("temp"));
|
|
});
|
|
} else {
|
|
$('#sidebar-profile-body .nick-name').attr('style', '');
|
|
}
|
|
b.showMessage("", "Color reset to default.");
|
|
});
|
|
$(".apply-button").on("click", function(){
|
|
$("#theme").removeAttr("temp");
|
|
$(".delete").removeAttr("delet");
|
|
});
|
|
$('input[name=background_url]').on('input', function(a) {
|
|
var val = a.target.value;
|
|
if(!val) {
|
|
$('style#background').html(' ')
|
|
return
|
|
}
|
|
var siz = $('input[type=range]').val();
|
|
console.log('#wrapper{background-image:url(' + val + ')!important;background-size:' + siz + '%}')
|
|
$('style#background').html('#wrapper{background-image:url(' + val + ')!important;background-size:' + siz + '%}');
|
|
})
|
|
$('input[type=range]').on('change', function(a) {
|
|
var val = $('input[name=background_url]').val();
|
|
if(!val) {
|
|
$('style#background').html(' ')
|
|
return
|
|
}
|
|
var siz = a.target.value;
|
|
console.log('#wrapper{background-image:url(' + val + ')!important;background-size:' + siz + '%}')
|
|
$('style#background').html('#wrapper{background-image:url(' + val + ')!important;background-size:' + siz + '%}');
|
|
})
|
|
// }
|
|
}
|
|
b.User.setupUserSidebar(e)
|
|
function f(c) {
|
|
var d = a(this)
|
|
, e = d.closest("form");
|
|
b.Form.isDisabled(d) || c.isDefaultPrevented() || (c.preventDefault(),
|
|
b.Form.submit(e, d).done(function(a) {
|
|
b.Net.reload()
|
|
}))
|
|
}
|
|
function g(c) {
|
|
var d = a(this);
|
|
b.showConfirm(b.loc("olv.portal.profile_post"), b.loc("olv.portal.profile_post.confirm_remove"), {
|
|
okLabel: b.loc("olv.portal.button.remove"),
|
|
cancelLabel: b.loc("olv.portal.stop")
|
|
}).done(function(a) {
|
|
a && b.Form.post("/settings/profile_post.unset.json", null, d).done(function() {
|
|
d.trigger("olv:entry:profile-post:remove"),
|
|
d.remove()
|
|
})
|
|
})
|
|
}
|
|
function h(b) {
|
|
var c = a()
|
|
, d = a()
|
|
, e = a("#favorite-game-genre select");
|
|
e.each(function() {
|
|
var b = a(this)
|
|
, d = b.find("option[value=" + b.val() + "]").attr("data-is-configurable")
|
|
, f = null != d && "0" != d;
|
|
if (f) {
|
|
var g = e.filter(function() {
|
|
return !a(this).is(b)
|
|
});
|
|
g.each(function() {
|
|
var d = a(this)
|
|
, e = d.find("option[value=" + b.val() + "]");
|
|
c = c.add(e)
|
|
})
|
|
}
|
|
}),
|
|
d = e.find("option").filter(function() {
|
|
return !a(this).is(c)
|
|
}),
|
|
c.prop("disabled", !0),
|
|
d.prop("disabled", !1)
|
|
}
|
|
h(),
|
|
a(document).on("click", ".apply-button", f),
|
|
a(document).on("click", "#profile-post", g),
|
|
a(document).on("change", "#favorite-game-genre select", h),
|
|
e.done(function() {
|
|
a(document).off("click", ".apply-button", f),
|
|
a(document).off("click", "#profile-post", g),
|
|
a(document).off("change", "#favorite-game-genre select", h)
|
|
})
|
|
}),
|
|
b.router.connect("^(/users/[^\/]+/communities/(favorites|played)|/my_menu)", function(a, c, d) {
|
|
b.Closed.changesel('community');
|
|
b.User.setupUserSidebar(d)
|
|
}),
|
|
b.router.connect("^/communities/[0-9]+", function(a, c, d) {
|
|
b.Closed.changesel("community");
|
|
if($("#post-form").length) {
|
|
setupPostForm2()
|
|
}
|
|
b.Community.setupCommunitySidebar(d);
|
|
}),
|
|
b.router.connect("^/admin$", function(a, c, d) {
|
|
$(".js-post-list").imagesLoaded(function() {
|
|
$(".js-post-list").addClass("has-masonry");
|
|
$(".js-post-list").masonry({itemSelector: ".post:not(.repost)", "gutter": 8});
|
|
Olv.Entry.setupHiddenContents(d);
|
|
Olv.Content.autopagerize(".js-post-list", d);
|
|
});
|
|
$(".report-action-button").on("click", function() {
|
|
$(this).siblings(".report-action-button").addBack().addClass("none");
|
|
$(this).parents(".form-buttons").append("<span class=loading-spinner></span>");
|
|
var america = this;
|
|
Olv.Form.post($(this).attr("data-action"), []).done(function() {
|
|
$(america).parents(".report").addClass("none");
|
|
$(".js-post-list").masonry();
|
|
}).fail(function() {
|
|
$(america).siblings(".report-action-button").addBack().removeClass("none");
|
|
$(america).siblings(".loading-spinner").remove();
|
|
});
|
|
});
|
|
}),
|
|
/*
|
|
b.router.connect("^/news/.*$", function(c, d, e) {
|
|
b.Closed.changesel("news");
|
|
}),
|
|
*/
|
|
b.init.done(function(a) {
|
|
a(document).on("olv:modal:report-violation olv:modal:report-violator", function(a, b, c) {
|
|
function d() {
|
|
var a = g.find("option:selected").attr("data-track-action");
|
|
e.attr("data-track-action", a)
|
|
}
|
|
var e = b.element.find(".post-button")
|
|
, f = b.triggerElement.attr("data-can-report-spoiler")
|
|
, g = "1" === f ? b.element.find("select.can-report-spoiler") : "0" === f ? b.element.find("select.cannot-report-spoiler") : b.element.find('select[name="type"]')
|
|
, h = b.triggerElement.attr("data-track-label")
|
|
, i = b.triggerElement.attr("data-url-id") || "";
|
|
e.attr("data-track-label", h),
|
|
e.attr("data-url-id", i),
|
|
g.on("change", d),
|
|
c.done(function() {
|
|
g.off("change", d)
|
|
})
|
|
});
|
|
var c = function(a) {
|
|
var b = a.find("input[type=submit]")
|
|
, c = a.find('input[name="album_image_id"]').length && a.find('input[name="album_image_id"]').val().length > 0
|
|
, d = a.find('input[name="screenshot"]').length && a.find('input[name="screenshot"]').val().length > 0;
|
|
b.attr("data-post-with-screenshot", c || d ? "screenshot" : "nodata")
|
|
};
|
|
a(document).on("olv:entryform:updatescreenshot", function(b) {
|
|
var d = a(b.target);
|
|
c(d)
|
|
}),
|
|
a(document).on("olv:entryform:fileselect", function(b, c) {
|
|
var d = a(b.target)
|
|
, e = a(c).find('input[type="submit"]');
|
|
"screenshot" === d.attr("name") ? e.attr("data-post-with-screenshot", "screenshot") : "painting" === d.attr("name") && e.attr("data-post-content-type", "draw")
|
|
}),
|
|
a(document).on("olv:entryform:reset", function(b) {
|
|
a(".preview-container").css("display", "none");
|
|
var d = a(b.target)
|
|
, e = d.find("input[type=submit]");
|
|
e.attr("data-post-content-type", "text"),
|
|
setTimeout(function() {
|
|
c(d)
|
|
}, 0)
|
|
if($("input[name=painting]").val()) {
|
|
$("#drawing").remove();
|
|
$("input[name=painting]").attr("value", "");
|
|
}
|
|
if($("input[name=image]").val()) {
|
|
$("input[name=image]").attr("value", "");
|
|
}
|
|
$(".repost-notice").remove();
|
|
$("input[name=repost]").remove();
|
|
})
|
|
a(document).on("olv:entryform:post:done", function(b) {
|
|
var d = $("span.remaining-today-post-count");
|
|
if(d.length) {
|
|
d.text(+(d.text()) - 1);
|
|
}
|
|
})
|
|
}))
|
|
}
|
|
).call(this, jQuery, Olv);
|
|
// TODO: Make this locale way better, remove unnecessary things, actually use stuff from this
|
|
Olv.Locale.Data={
|
|
"olv.portal.age_gate.select_label":{value:"Please enter your date of birth."},"olv.portal.album.delete_confirm":{value:"Are you sure you want to delete this?"},"olv.portal.button.remove":{value:"Yes"},"olv.portal.cancel":{value:"Cancel"},"olv.portal.close":{value:"Close"},"olv.portal.dialog.apply_settings_done":{value:"Settings saved."},"olv.portal.dialog.report_spoiler_done":{value:"Spoiler reported. Thank you for your help!"},"olv.portal.dialog.report_violation_done":{value:"Violation reported. Thank you for your help!"},"olv.portal.edit.action.close_topic_post":{value:"Close for Comments"},"olv.portal.edit.action.close_topic_post.confirm":{value:"It will no longer be possible to post comments on this discussion. Is that OK? (This action cannot be reversed.)"},"olv.portal.edit.edit_post":{value:"Edit Post"},"olv.portal.edit.edit_reply":{value:"Edit Comment"},"olv.portal.error.500.for_offdevice":{value:"An error occurred.\nPlease try again later."},"olv.portal.error.album_limit_exceeded":{value:"Unable to save because the maximum number of screenshots that can be saved has been reached. Please delete some saved screenshots, and then try again."},"olv.portal.error.code":{args:[1],value:"Error Code: %s"},"olv.portal.error.code %1":{args:[1],value:"Error Code: %s"},"olv.portal.error.code [_1]":{args:[1],value:"Error Code: %s"},"olv.portal.error.daily_post_limit_exceeded":{value:"You have already exceeded the number of posts that you can contribute in a single day. Please try again tomorrow."},"olv.portal.error.failed_to_connect.for_offdevice":{value:"An error occurred."},"olv.portal.error.network_unavailable.for_offdevice":{value:"Cannot connect to the Internet. Please check your network connection and try again."},"olv.portal.error.post_time_restriction":{args:[],value:"Multiple posts cannot be made in such a short period of time. Please try posting again later."},"olv.portal.error.post_time_restriction %1":{args:[],value:"Multiple posts cannot be made in such a short period of time. Please try posting again later."},"olv.portal.error.post_time_restriction [_1]":{args:[],value:"Multiple posts cannot be made in such a short period of time. Please try posting again later."},"olv.portal.followlist.confirm_unfollow_with_name":{args:[1],value:"Remove %s from your follow list?"},"olv.portal.followlist.confirm_unfollow_with_name %1":{args:[1],value:"Remove %s from your follow list?"},"olv.portal.followlist.confirm_unfollow_with_name [_1]":{args:[1],value:"Remove %s from your follow list?"},"olv.portal.miitoo.4":{value:"Yeah..."},"olv.portal.miitoo.4.delete":{value:"Unyeah"},"olv.portal.miitoo.1":{value:"Yeah!"},"olv.portal.miitoo.1.delete":{value:"Unyeah"},"olv.portal.miitoo.2":{value:"Yeah♥"},"olv.portal.miitoo.2.delete":{value:"Unyeah"},"olv.portal.miitoo.0":{value:"Yeah!"},"olv.portal.miitoo.0.delete":{value:"Unyeah"},"olv.portal.miitoo.5":{value:"Yeah..."},"olv.portal.miitoo.5.delete":{value:"Unyeah"},"olv.portal.miitoo.3":{value:"Yeah!?"},"olv.portal.miitoo.3.delete":{value:"Unyeah"},"olv.portal.miitoo.6":{value:"Epic!"},"olv.portal.miitoo.6.delete":{value:"Unepic"},"olv.portal.miitoo.7":{value:"Nyeah~♥"},"olv.portal.miitoo.7.delete":{value:"Unnyeah"},"olv.portal.miitoo.8":{value:"Yes!"},"olv.portal.miitoo.8.delete":{value:"Unyes"},"olv.portal.miitoo.9":{value:"olv.portal.miitoo."},"olv.portal.miitoo.9.delete":{value:"olv.portal.miitoo.delete"},"olv.portal.ok":{value:"OK"},"olv.portal.post.delete_confirm":{value:"Delete this post?"},"olv.portal.profile_post":{value:"Favorite Post"},"olv.portal.profile_post.confirm_remove":{value:"Remove this post from your profile?\nThe original post will not be deleted."},"olv.portal.profile_post.confirm_update":{value:"Set this post as your favorite?\nPlease note, it will replace any existing favorite post."},"olv.portal.profile_post.confirm_update.yes":{value:"OK"},"olv.portal.profile_post.done":{value:"Your favorite post has been set.\nWould you like to view your profile?"},"olv.portal.read_more_content":{value:"Read More"},"olv.portal.reply.delete_confirm":{value:"Delete this comment?"},"olv.portal.report.report_comment_id":{args:[1],value:"Comment ID: %s"},"olv.portal.report.report_comment_id %1":{args:[1],value:"Comment ID: %s"},"olv.portal.report.report_comment_id [_1]":{args:[1],value:"Comment ID: %s"},"olv.portal.report.report_post_id":{args:[1],value:"Post ID: %s"},"olv.portal.report.report_post_id %1":{args:[1],value:"Post ID: %s"},"olv.portal.report.report_post_id [_1]":{args:[1],value:"Post ID: %s"},"olv.portal.report.report_spoiler":{args:[],value:"Report Spoilers to Indigo Administrators"},"olv.portal.report.report_spoiler %1":{args:[],value:"Report Spoilers to Indigo Administrators"},"olv.portal.report.report_spoiler [_1]":{args:[],value:"Report Spoilers to Indigo Administrators"},"olv.portal.report.report_spoiler_comment":{args:[],value:"Report Spoilers to Indigo Administrators"},"olv.portal.report.report_spoiler_comment %1":{args:[],value:"Report Spoilers to Indigo Administrators"},"olv.portal.report.report_spoiler_comment [_1]":{args:[],value:"Report Spoilers to Indigo Administrators"},"olv.portal.report.report_violation":{args:[],value:"Report Violation to Indigo Administrators"},"olv.portal.report.report_violation %1":{args:[],value:"Report Violation to Indigo Administrators"},"olv.portal.report.report_violation [_1]":{args:[],value:"Report Violation to Indigo Administrators"},"olv.portal.report.report_violation_comment":{args:[],value:"Report Violation to Indigo Administrators"},"olv.portal.report.report_violation_comment %1":{args:[],value:"Report Violation to Indigo Administrators"},"olv.portal.report.report_violation_comment [_1]":{args:[],value:"Report Violation to Indigo Administrators"},"olv.portal.report.report_violation_message":{args:[],value:"Report Violation to Indigo Administrators"},"olv.portal.report.report_violation_message %1":{args:[],value:"Report Violation to Indigo Administrators"},"olv.portal.report.report_violation_message [_1]":{args:[],value:"Report Violation to Indigo Administrators"},"olv.portal.setup":{value:"Set Up"},"olv.portal.show_more_content":{value:"View Entire Post"},"olv.portal.stop":{value:"Cancel"},"olv.portal.unfollow":{value:"Unfollow"},"olv.portal.user.search.go":{value:"View Profile"},"olv.portal.yes":{value:"Yes"}};
|
|
$(document).pjax("a",pjax_container),$(document).on('pjax:timeout',function(){return false});
|
|
$(document).on('pjax:error', function(event, xhr, textStatus, errorThrown, options) {
|
|
Olv.Net.errorFeedbackHandler(event, textStatus, xhr, options);
|
|
if(textStatus != 'abort')
|
|
history.back();
|
|
return false;
|
|
});
|
|
if(loading_animate) {
|
|
$(document).on('pjax:send',function(){NProgress.start()});
|
|
$(document).on('pjax:complete', function(){NProgress.done()});
|
|
}
|
|
|
|
$(document).on('pjax:complete',function(){
|
|
Olv.init.done();
|
|
});
|
|
|
|
function recalculateVotes(pollOptions) {
|
|
var voteArray = [];
|
|
for(var j = 0; j < pollOptions.length; j++) {
|
|
voteArray.push(parseInt(pollOptions.eq(j).attr('votes')));
|
|
}
|
|
add = function(a, b){ return a + b; }
|
|
var voteCount = voteArray.reduce(add, 0)
|
|
pollOptions.siblings('.poll-votes').text(voteCount + ' vote' + (voteCount == 1 ? '' : 's'));
|
|
for(var i = 0; i < pollOptions.length; i++) {
|
|
var voteArrayCopy = voteArray;
|
|
voteArrayCopy.slice(i, 1);
|
|
var otherNumbers = voteArrayCopy.reduce(add, 0);
|
|
var percentage = Math.abs(100 - (((otherNumbers - voteArray[i]) / otherNumbers) * 100));
|
|
if(Number.isNaN(percentage)) {
|
|
percentage = 0;
|
|
}
|
|
pollOptions.eq(i).children('.poll-background').attr('style', 'width:' + percentage + '%');
|
|
pollOptions.eq(i).children('.percentage').html(Math.round(percentage) + "%<span class=vote-count> (" + voteArray[i] + " vote" + (voteArray[i] == 1 ? '' : 's') + ")</span>");
|
|
}
|
|
if(voteCount > 0) {
|
|
pollOptions.parents(".post-poll").addClass("has-votes");
|
|
} else {
|
|
pollOptions.parents(".post-poll").removeClass("has-votes");
|
|
}
|
|
}
|
|
|
|
function setupPolls() {
|
|
if($('.post-poll').length) {
|
|
add = function(a, b) { return a + b; }
|
|
$('.post-poll .poll-option').off().on('click', function() {
|
|
if(!$("body").attr("sess-usern")) {
|
|
Olv.showMessage("Error", "You must be logged in to vote on a poll.");
|
|
return;
|
|
}
|
|
if(!$(this).hasClass('selected')) {
|
|
$(this).siblings('.poll-option.selected').attr('votes', $(this).siblings('.poll-option.selected').attr('votes') - 1);
|
|
$(this).siblings('.poll-option.selected').removeClass('selected');
|
|
$(this).addClass('selected');
|
|
$(this).attr('votes', parseInt($(this).attr('votes')) + 1);
|
|
recalculateVotes($(this).siblings('.poll-option').addBack());
|
|
Olv.Form.post($(this).parents('.post-poll').attr('data-action'), {'option': parseInt($(this).attr("option-id"))});
|
|
} else {
|
|
$(this).removeClass('selected');
|
|
$(this).attr('votes', $(this).attr('votes') - 1);
|
|
recalculateVotes($(this).siblings('.poll-option').addBack());
|
|
Olv.Form.post($(this).parents('.post-poll').attr('data-action'), {'option': '0'});
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function setupRepostButton() {
|
|
repost_btn = $('.repost-button')
|
|
if(repost_btn.length) {
|
|
repost_btn.on('click', function() {
|
|
$('#wrapper').prepend('<div class="dialog repost-dialog none"><div class=dialog-inner><div class=window><h1 class=window-title>Repost</h1><div class=window-body><form class=repost-form method=get>Please select a community to repost to.<div class=overflow-scroll><ul class="list-content-with-icon-and-text recent-community-list"><span class="loading-spinner"></span></ul></div><input type=hidden name=repost value=' + repost_btn.attr('post') + '><div class=form-buttons><button class="olv-modal-close-button gray-button" type=button data-event-type=ok onclick="$(\'.repost-dialog\').remove()">Cancel</button><button type=submit class="black-button repost-send disabled" disabled>Save</button></div></form></div></div></div></div>');
|
|
var g = new Olv.ModalWindow($('.repost-dialog'));
|
|
g.open();
|
|
function getCommunities(success) {
|
|
$(".loading-spinner").remove();
|
|
$(".recent-community-list").append($(success).find("li"));
|
|
$(".recent-community-list .trigger").off().on("click", function() {
|
|
$(this).siblings(".trigger").removeClass("selected");
|
|
$(this).addClass("selected");
|
|
$(".repost-form").attr("action", $(this).attr("data-action"));
|
|
Olv.Form.toggleDisabled($(".repost-send"), false);
|
|
});
|
|
if($(success).attr("data-next-page-url").length) {
|
|
$(".recent-community-list").attr("data-next-page-url", $(success).attr("data-next-page-url"));
|
|
function loadMoreCommunities(event) {
|
|
if($(".overflow-scroll")[0].scrollHeight - $(".overflow-scroll").scrollTop() == $(".overflow-scroll").height()) {
|
|
$(this).off();
|
|
var recentCommunityList = $(this).children(".recent-community-list");
|
|
recentCommunityList.append('<span class="loading-spinner"></span>');
|
|
$.get(recentCommunityList.attr("data-next-page-url"), getCommunities).fail(failGetCommunities);
|
|
}
|
|
}
|
|
$(".overflow-scroll").on("scroll", loadMoreCommunities);
|
|
}
|
|
}
|
|
function failGetCommunities() {
|
|
$(".loading-spinner").remove();
|
|
$(".recent-community-list").append("<p>Failed to get community list. Refresh the page or try again later.</p>");
|
|
}
|
|
$.get("/communities/recent", getCommunities).fail(failGetCommunities);
|
|
});
|
|
}
|
|
}
|
|
|
|
function formatHSL(h, s, v) {
|
|
var tc = tinycolor({h: h, s: s, v: v});
|
|
hsl = tc.toHsl();
|
|
return 'hsl(' + hsl.h + ', ' + hsl.s * 100 + '%, ' + hsl.l * 100 + '%)';
|
|
}
|
|
|
|
var supportsColorInput = function() { // Taken from Modernizr: https://stackoverflow.com/questions/7787552/check-with-javascript-for-html5-type-color-support
|
|
var inputElem = document.createElement('input'), bool, docElement = document.documentElement, smile = ':)';
|
|
inputElem.setAttribute('type', 'color');
|
|
bool = inputElem.type !== 'text';
|
|
if(bool) {
|
|
inputElem.value = smile;
|
|
inputElem.style.cssText = 'position:absolute;visibility:hidden;';
|
|
docElement.appendChild(inputElem);
|
|
docElement.offsetWidth;
|
|
bool = inputElem.value != smile;
|
|
docElement.removeChild(inputElem);
|
|
}
|
|
return bool;
|
|
}
|
|
|
|
// https://stackoverflow.com/a/29853395
|
|
!function(o,n){var t=function(){var n=o(":target"),t=71;n.length>0&&o("html, body").stop().animate({scrollTop:n.offset().top-t},200)};o(n).on("hashchange load",function(){t()})}(jQuery,window);
|
|
|
|
function updateTime() {
|
|
var timestamps = $('.update');
|
|
for(var i = 0; i < timestamps.length; i++) {
|
|
var timestamp = timestamps.eq(i);
|
|
var since = new Date().getTime() - timestamp.attr('time');
|
|
var time = new Date(since);
|
|
var timestampText;
|
|
if(time < 1000) {
|
|
timestampText = 'Less than a second ago';
|
|
} else if(time < 2000) {
|
|
timestampText = '1 second ago';
|
|
} else if(time < 60000) {
|
|
timestampText = Math.floor(since / 1000) + ' seconds ago';
|
|
} else if(time < 120000) {
|
|
timestampText = '1 minute ago';
|
|
} else if(time < 3600000) {
|
|
timestampText = Math.floor(since / 1000 / 60) + ' minutes ago';
|
|
} else if(time < 7200000) {
|
|
timestampText = '1 hour ago';
|
|
} else if(time < 86400000) {
|
|
timestampText = Math.floor(since / 1000 / 60 / 60) + ' hours ago';
|
|
} else if(time < 172800000) {
|
|
timestampText = '1 day ago';
|
|
} else if(time < 345600000) {
|
|
timestampText = Math.floor(since / 1000 / 60 / 60 / 24) + ' days ago';
|
|
} else {
|
|
var dateTime = new Date(parseInt(timestamp.attr('time')));
|
|
var twelveHourClockTime = dateTime.getHours() % 12;
|
|
if(twelveHourClockTime === 0) {
|
|
twelveHourClockTime = 12;
|
|
}
|
|
timestampText = (dateTime.getMonth() + 1).toString().padStart(2, "0") + "/" +
|
|
dateTime.getDate().toString().padStart(2, "0") + "/" +
|
|
dateTime.getFullYear() + " " +
|
|
twelveHourClockTime + ":" +
|
|
dateTime.getMinutes().toString().padStart(2, "0") + " " +
|
|
(dateTime.getHours() >= 12 ? "PM" : "AM");
|
|
|
|
timestamp.removeClass('update');
|
|
}
|
|
// only update the timestamp in the dom if it actually changed
|
|
if(timestamp[0].innerHTML != timestampText) {
|
|
timestamp.text(timestampText);
|
|
}
|
|
}
|
|
}
|
|
updateTime();
|
|
setTimeout(setInterval(updateTime, 1000), 1000 - (new Date().getTime() % 1000));
|
|
|
|
function toggleWebsocketses() {
|
|
if(!$("#websockets").length) {
|
|
$("#websockets").remove();
|
|
$('<script>').attr('src', "/assets/js/websocket.js").attr("id", "websockets").appendTo('head');
|
|
} else {
|
|
toggleWebsockets();
|
|
}
|
|
}
|
|
|
|
var first = true;
|
|
var favicon = new Favico({animation: 'none', bgColor: '#fc951e'});
|
|
function getNewFaviconBadge() {
|
|
favicon.badge(parseInt($("#global-menu-message .badge").text()) + parseInt($("#global-menu-news .badge").text()));
|
|
}
|
|
getNewFaviconBadge();
|
|
|
|
/* function ap() {
|
|
if($('.adx').length) {
|
|
try {
|
|
(adsbygoogle = window.adsbygoogle || []).push({});
|
|
}
|
|
catch(error) {
|
|
console.log(error)
|
|
}
|
|
}
|
|
if($('.ad-rm').length) {$('.ad-rm').click(function(e){e.preventDefault();$('.adx').remove();document.cookie='noad=o'});}
|
|
}
|
|
|
|
$(document).ready(ap);
|
|
$(document).on('pjax:success', ap); */
|