diff --git a/builds/4chan-X.js b/builds/4chan-X.js
index bb6ee1054..bdbe4e7fd 100644
--- a/builds/4chan-X.js
+++ b/builds/4chan-X.js
@@ -113,7 +113,8 @@
__slice = [].slice,
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
+ __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
+ __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
Config = {
main: {
@@ -7744,9 +7745,9 @@
vg: "http://nth.pensivenonsen.se/",
c: "//archive.nyafuu.org/"
};
- o.adv = o.asp = o.cm = o.i = o.n = o.o = o.p = o.s = o.t = o.trv = o.y = o.e;
+ o.adv = o.asp = o.cm = o.i = o.n = o.o = o.p = o.s = o.t = o.trv = o.y = o.lgbt = o.s4s = o.e;
o.gd = o.jp = o.m = o.q = o.tg = o.vp = o.vr = o.wsg = o.a;
- o.fa = o.lit = o.s4s = o.ck;
+ o.fa = o.lit = o.ck;
o.k = o.toy = o.x = o.an;
o.g = o.mu = o.cgl;
o.w = o.wg = o.c;
@@ -7842,7 +7843,7 @@
},
'FoolzaShit': {
base: 'http://archive.foolzashit.com',
- boards: ["adv", "asp", "cm", "e", "i", "n", "o", "p", "s", "t", "trv", "y"],
+ boards: ["adv", "asp", "cm", "e", "i", "lgbt", "n", "o", "p", "s", "s4s", "t", "trv", "y"],
type: 'foolfuuka'
},
'Warosu': {
@@ -7900,11 +7901,20 @@
PSAHiding = {
init: function() {
- var entry;
-
if (!Conf['Announcement Hiding']) {
return;
}
+ $.addClass(doc, 'hide-announcement');
+ return $.on(d, '4chanXInitFinished', this.setup);
+ },
+ setup: function() {
+ var btn, entry, items, psa;
+
+ $.off(d, '4chanXInitFinished', PSAHiding.setup);
+ if (!(psa = $.id('globalMessage'))) {
+ $.rmClass(doc, 'hide-announcement');
+ return;
+ }
entry = {
type: 'header',
el: $.el('a', {
@@ -7914,27 +7924,11 @@
}),
order: 50,
open: function() {
- var _ref;
-
- if ((_ref = $.id('globalMessage')) != null ? _ref.hidden : void 0) {
- return true;
- }
- return false;
+ return psa.hidden;
}
};
$.event('AddMenuEntry', entry);
$.on(entry.el, 'click', PSAHiding.toggle);
- $.addClass(doc, 'hide-announcement');
- return $.on(d, '4chanXInitFinished', this.setup);
- },
- setup: function() {
- var btn, psa;
-
- $.off(d, '4chanXInitFinished', PSAHiding.setup);
- if (!(psa = $.id('globalMessage'))) {
- $.rmClass(doc, 'hide-announcement');
- return;
- }
PSAHiding.btn = btn = $.el('a', {
innerHTML: '[ - ]',
title: 'Hide announcement.',
@@ -7942,45 +7936,47 @@
href: 'javascript:;'
});
$.on(btn, 'click', PSAHiding.toggle);
- $.get('hiddenPSAs', [], function(item) {
- PSAHiding.sync(item['hiddenPSAs']);
+ items = {
+ hiddenPSA: 0,
+ hiddenPSAs: null
+ };
+ $.get(items, function(_arg) {
+ var hiddenPSA, hiddenPSAs, _ref;
+
+ hiddenPSA = _arg.hiddenPSA, hiddenPSAs = _arg.hiddenPSAs;
+ if (hiddenPSAs) {
+ $["delete"]('hiddenPSAs');
+ if (_ref = psa.textContent.replace(/\W+/g, '').toLowerCase(), __indexOf.call(hiddenPSAs, _ref) >= 0) {
+ hiddenPSA = +$.id('globalMessage').dataset.utc;
+ $.set('hiddenPSA', hiddenPSA);
+ }
+ }
+ PSAHiding.sync(hiddenPSA);
$.before(psa, btn);
return $.rmClass(doc, 'hide-announcement');
});
- return $.sync('hiddenPSAs', PSAHiding.sync);
+ return $.sync('hiddenPSA', PSAHiding.sync);
},
toggle: function(e) {
- var hide, text;
+ var UTC;
- hide = $.hasClass(this, 'hide-announcement');
- text = PSAHiding.trim($.id('globalMessage'));
- return $.get('hiddenPSAs', [], function(_arg) {
- var hiddenPSAs, i;
-
- hiddenPSAs = _arg.hiddenPSAs;
- if (hide) {
- hiddenPSAs.push(text);
- hiddenPSAs = hiddenPSAs.slice(-5);
- } else {
- $.event('CloseMenu');
- i = hiddenPSAs.indexOf(text);
- hiddenPSAs.splice(i, 1);
- }
- PSAHiding.sync(hiddenPSAs);
- return $.set('hiddenPSAs', hiddenPSAs);
- });
+ if ($.hasClass(this, 'hide-announcement')) {
+ UTC = +$.id('globalMessage').dataset.utc;
+ $.set('hiddenPSA', UTC);
+ } else {
+ $.event('CloseMenu');
+ $["delete"]('hiddenPSA');
+ }
+ return PSAHiding.sync(UTC);
},
- sync: function(hiddenPSAs) {
+ sync: function(UTC) {
var hr, psa;
psa = $.id('globalMessage');
- psa.hidden = PSAHiding.btn.hidden = hiddenPSAs.contains(PSAHiding.trim(psa)) ? true : false;
+ psa.hidden = PSAHiding.btn.hidden = UTC && UTC >= +psa.dataset.utc ? true : false;
if ((hr = psa.nextElementSibling) && hr.nodeName === 'HR') {
return hr.hidden = psa.hidden;
}
- },
- trim: function(psa) {
- return psa.textContent.replace(/\W+/g, '').toLowerCase();
}
};
diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js
index 3d0049811..6716955c6 100644
--- a/builds/4chan-X.user.js
+++ b/builds/4chan-X.user.js
@@ -113,7 +113,8 @@
__slice = [].slice,
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
+ __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
+ __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
Config = {
main: {
@@ -7753,9 +7754,9 @@
vg: "http://nth.pensivenonsen.se/",
c: "//archive.nyafuu.org/"
};
- o.adv = o.asp = o.cm = o.i = o.n = o.o = o.p = o.s = o.t = o.trv = o.y = o.e;
+ o.adv = o.asp = o.cm = o.i = o.n = o.o = o.p = o.s = o.t = o.trv = o.y = o.lgbt = o.s4s = o.e;
o.gd = o.jp = o.m = o.q = o.tg = o.vp = o.vr = o.wsg = o.a;
- o.fa = o.lit = o.s4s = o.ck;
+ o.fa = o.lit = o.ck;
o.k = o.toy = o.x = o.an;
o.g = o.mu = o.cgl;
o.w = o.wg = o.c;
@@ -7851,7 +7852,7 @@
},
'FoolzaShit': {
base: 'http://archive.foolzashit.com',
- boards: ["adv", "asp", "cm", "e", "i", "n", "o", "p", "s", "t", "trv", "y"],
+ boards: ["adv", "asp", "cm", "e", "i", "lgbt", "n", "o", "p", "s", "s4s", "t", "trv", "y"],
type: 'foolfuuka'
},
'Warosu': {
@@ -7909,11 +7910,20 @@
PSAHiding = {
init: function() {
- var entry;
-
if (!Conf['Announcement Hiding']) {
return;
}
+ $.addClass(doc, 'hide-announcement');
+ return $.on(d, '4chanXInitFinished', this.setup);
+ },
+ setup: function() {
+ var btn, entry, items, psa;
+
+ $.off(d, '4chanXInitFinished', PSAHiding.setup);
+ if (!(psa = $.id('globalMessage'))) {
+ $.rmClass(doc, 'hide-announcement');
+ return;
+ }
entry = {
type: 'header',
el: $.el('a', {
@@ -7923,27 +7933,11 @@
}),
order: 50,
open: function() {
- var _ref;
-
- if ((_ref = $.id('globalMessage')) != null ? _ref.hidden : void 0) {
- return true;
- }
- return false;
+ return psa.hidden;
}
};
$.event('AddMenuEntry', entry);
$.on(entry.el, 'click', PSAHiding.toggle);
- $.addClass(doc, 'hide-announcement');
- return $.on(d, '4chanXInitFinished', this.setup);
- },
- setup: function() {
- var btn, psa;
-
- $.off(d, '4chanXInitFinished', PSAHiding.setup);
- if (!(psa = $.id('globalMessage'))) {
- $.rmClass(doc, 'hide-announcement');
- return;
- }
PSAHiding.btn = btn = $.el('a', {
innerHTML: '[ - ]',
title: 'Hide announcement.',
@@ -7951,45 +7945,47 @@
href: 'javascript:;'
});
$.on(btn, 'click', PSAHiding.toggle);
- $.get('hiddenPSAs', [], function(item) {
- PSAHiding.sync(item['hiddenPSAs']);
+ items = {
+ hiddenPSA: 0,
+ hiddenPSAs: null
+ };
+ $.get(items, function(_arg) {
+ var hiddenPSA, hiddenPSAs, _ref;
+
+ hiddenPSA = _arg.hiddenPSA, hiddenPSAs = _arg.hiddenPSAs;
+ if (hiddenPSAs) {
+ $["delete"]('hiddenPSAs');
+ if (_ref = psa.textContent.replace(/\W+/g, '').toLowerCase(), __indexOf.call(hiddenPSAs, _ref) >= 0) {
+ hiddenPSA = +$.id('globalMessage').dataset.utc;
+ $.set('hiddenPSA', hiddenPSA);
+ }
+ }
+ PSAHiding.sync(hiddenPSA);
$.before(psa, btn);
return $.rmClass(doc, 'hide-announcement');
});
- return $.sync('hiddenPSAs', PSAHiding.sync);
+ return $.sync('hiddenPSA', PSAHiding.sync);
},
toggle: function(e) {
- var hide, text;
+ var UTC;
- hide = $.hasClass(this, 'hide-announcement');
- text = PSAHiding.trim($.id('globalMessage'));
- return $.get('hiddenPSAs', [], function(_arg) {
- var hiddenPSAs, i;
-
- hiddenPSAs = _arg.hiddenPSAs;
- if (hide) {
- hiddenPSAs.push(text);
- hiddenPSAs = hiddenPSAs.slice(-5);
- } else {
- $.event('CloseMenu');
- i = hiddenPSAs.indexOf(text);
- hiddenPSAs.splice(i, 1);
- }
- PSAHiding.sync(hiddenPSAs);
- return $.set('hiddenPSAs', hiddenPSAs);
- });
+ if ($.hasClass(this, 'hide-announcement')) {
+ UTC = +$.id('globalMessage').dataset.utc;
+ $.set('hiddenPSA', UTC);
+ } else {
+ $.event('CloseMenu');
+ $["delete"]('hiddenPSA');
+ }
+ return PSAHiding.sync(UTC);
},
- sync: function(hiddenPSAs) {
+ sync: function(UTC) {
var hr, psa;
psa = $.id('globalMessage');
- psa.hidden = PSAHiding.btn.hidden = hiddenPSAs.contains(PSAHiding.trim(psa)) ? true : false;
+ psa.hidden = PSAHiding.btn.hidden = UTC && UTC >= +psa.dataset.utc ? true : false;
if ((hr = psa.nextElementSibling) && hr.nodeName === 'HR') {
return hr.hidden = psa.hidden;
}
- },
- trim: function(psa) {
- return psa.textContent.replace(/\W+/g, '').toLowerCase();
}
};
diff --git a/builds/crx/script.js b/builds/crx/script.js
index e9928ecff..aa87866b9 100644
--- a/builds/crx/script.js
+++ b/builds/crx/script.js
@@ -7737,9 +7737,9 @@
vg: "http://nth.pensivenonsen.se/",
c: "//archive.nyafuu.org/"
};
- o.adv = o.asp = o.cm = o.i = o.n = o.o = o.p = o.s = o.t = o.trv = o.y = o.e;
+ o.adv = o.asp = o.cm = o.i = o.n = o.o = o.p = o.s = o.t = o.trv = o.y = o.lgbt = o.s4s = o.e;
o.gd = o.jp = o.m = o.q = o.tg = o.vp = o.vr = o.wsg = o.a;
- o.fa = o.lit = o.s4s = o.ck;
+ o.fa = o.lit = o.ck;
o.k = o.toy = o.x = o.an;
o.g = o.mu = o.cgl;
o.w = o.wg = o.c;
@@ -7835,7 +7835,7 @@
},
'FoolzaShit': {
base: 'http://archive.foolzashit.com',
- boards: ["adv", "asp", "cm", "e", "i", "n", "o", "p", "s", "t", "trv", "y"],
+ boards: ["adv", "asp", "cm", "e", "i", "lgbt", "n", "o", "p", "s", "s4s", "t", "trv", "y"],
type: 'foolfuuka'
},
'Warosu': {
@@ -7893,11 +7893,20 @@
PSAHiding = {
init: function() {
- var entry;
-
if (!Conf['Announcement Hiding']) {
return;
}
+ $.addClass(doc, 'hide-announcement');
+ return $.on(d, '4chanXInitFinished', this.setup);
+ },
+ setup: function() {
+ var btn, entry, items, psa;
+
+ $.off(d, '4chanXInitFinished', PSAHiding.setup);
+ if (!(psa = $.id('globalMessage'))) {
+ $.rmClass(doc, 'hide-announcement');
+ return;
+ }
entry = {
type: 'header',
el: $.el('a', {
@@ -7907,27 +7916,11 @@
}),
order: 50,
open: function() {
- var _ref;
-
- if ((_ref = $.id('globalMessage')) != null ? _ref.hidden : void 0) {
- return true;
- }
- return false;
+ return psa.hidden;
}
};
$.event('AddMenuEntry', entry);
$.on(entry.el, 'click', PSAHiding.toggle);
- $.addClass(doc, 'hide-announcement');
- return $.on(d, '4chanXInitFinished', this.setup);
- },
- setup: function() {
- var btn, psa;
-
- $.off(d, '4chanXInitFinished', PSAHiding.setup);
- if (!(psa = $.id('globalMessage'))) {
- $.rmClass(doc, 'hide-announcement');
- return;
- }
PSAHiding.btn = btn = $.el('a', {
innerHTML: '[ - ]',
title: 'Hide announcement.',
@@ -7935,45 +7928,47 @@
href: 'javascript:;'
});
$.on(btn, 'click', PSAHiding.toggle);
- $.get('hiddenPSAs', [], function(item) {
- PSAHiding.sync(item['hiddenPSAs']);
+ items = {
+ hiddenPSA: 0,
+ hiddenPSAs: null
+ };
+ $.get(items, function(_arg) {
+ var hiddenPSA, hiddenPSAs, _ref;
+
+ hiddenPSA = _arg.hiddenPSA, hiddenPSAs = _arg.hiddenPSAs;
+ if (hiddenPSAs) {
+ $["delete"]('hiddenPSAs');
+ if (_ref = psa.textContent.replace(/\W+/g, '').toLowerCase(), __indexOf.call(hiddenPSAs, _ref) >= 0) {
+ hiddenPSA = +$.id('globalMessage').dataset.utc;
+ $.set('hiddenPSA', hiddenPSA);
+ }
+ }
+ PSAHiding.sync(hiddenPSA);
$.before(psa, btn);
return $.rmClass(doc, 'hide-announcement');
});
- return $.sync('hiddenPSAs', PSAHiding.sync);
+ return $.sync('hiddenPSA', PSAHiding.sync);
},
toggle: function(e) {
- var hide, text;
+ var UTC;
- hide = $.hasClass(this, 'hide-announcement');
- text = PSAHiding.trim($.id('globalMessage'));
- return $.get('hiddenPSAs', [], function(_arg) {
- var hiddenPSAs, i;
-
- hiddenPSAs = _arg.hiddenPSAs;
- if (hide) {
- hiddenPSAs.push(text);
- hiddenPSAs = hiddenPSAs.slice(-5);
- } else {
- $.event('CloseMenu');
- i = hiddenPSAs.indexOf(text);
- hiddenPSAs.splice(i, 1);
- }
- PSAHiding.sync(hiddenPSAs);
- return $.set('hiddenPSAs', hiddenPSAs);
- });
+ if ($.hasClass(this, 'hide-announcement')) {
+ UTC = +$.id('globalMessage').dataset.utc;
+ $.set('hiddenPSA', UTC);
+ } else {
+ $.event('CloseMenu');
+ $["delete"]('hiddenPSA');
+ }
+ return PSAHiding.sync(UTC);
},
- sync: function(hiddenPSAs) {
+ sync: function(UTC) {
var hr, psa;
psa = $.id('globalMessage');
- psa.hidden = PSAHiding.btn.hidden = hiddenPSAs.contains(PSAHiding.trim(psa)) ? true : false;
+ psa.hidden = PSAHiding.btn.hidden = UTC && UTC >= +psa.dataset.utc ? true : false;
if ((hr = psa.nextElementSibling) && hr.nodeName === 'HR') {
return hr.hidden = psa.hidden;
}
- },
- trim: function(psa) {
- return psa.textContent.replace(/\W+/g, '').toLowerCase();
}
};
diff --git a/package.json b/package.json
index 11c95ce9a..ee6b548bd 100644
--- a/package.json
+++ b/package.json
@@ -28,7 +28,7 @@
"grunt-contrib-compress": "~0.5.0",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-copy": "~0.4.1",
- "grunt-contrib-watch": "~0.4.1",
+ "grunt-contrib-watch": "~0.4.2",
"grunt-shell": "~0.2.2"
},
"repository": {
diff --git a/src/Archive/Redirect.coffee b/src/Archive/Redirect.coffee
index e78d568bf..d3bbcb09f 100644
--- a/src/Archive/Redirect.coffee
+++ b/src/Archive/Redirect.coffee
@@ -21,9 +21,9 @@ Redirect =
vg: "http://nth.pensivenonsen.se/"
c: "//archive.nyafuu.org/"
- o.adv = o.asp = o.cm = o.i = o.n = o.o = o.p = o.s = o.t = o.trv = o.y = o.e
+ o.adv = o.asp = o.cm = o.i = o.n = o.o = o.p = o.s = o.t = o.trv = o.y = o.lgbt = o.s4s = o.e
o.gd = o.jp = o.m = o.q = o.tg = o.vp = o.vr = o.wsg = o.a
- o.fa = o.lit = o.s4s = o.ck
+ o.fa = o.lit = o.ck
o.k = o.toy = o.x = o.an
o.g = o.mu = o.cgl
o.w = o.wg = o.c
@@ -103,7 +103,7 @@ Redirect =
type: 'foolfuuka'
'FoolzaShit':
base: 'http://archive.foolzashit.com'
- boards: ["adv", "asp", "cm", "e", "i", "n", "o", "p", "s", "t", "trv", "y"]
+ boards: ["adv", "asp", "cm", "e", "i", "lgbt", "n", "o", "p", "s", "s4s", "t", "trv", "y"]
type: 'foolfuuka'
'Warosu':
base: '//fuuka.warosu.org'
diff --git a/src/Miscellaneous/AnnouncementHiding.coffee b/src/Miscellaneous/AnnouncementHiding.coffee
index b0dd838a6..99b13b23d 100644
--- a/src/Miscellaneous/AnnouncementHiding.coffee
+++ b/src/Miscellaneous/AnnouncementHiding.coffee
@@ -2,6 +2,16 @@ PSAHiding =
init: ->
return if !Conf['Announcement Hiding']
+ $.addClass doc, 'hide-announcement'
+
+ $.on d, '4chanXInitFinished', @setup
+ setup: ->
+ $.off d, '4chanXInitFinished', PSAHiding.setup
+
+ unless psa = $.id 'globalMessage'
+ $.rmClass doc, 'hide-announcement'
+ return
+
entry =
type: 'header'
el: $.el 'a',
@@ -9,23 +19,9 @@ PSAHiding =
className: 'show-announcement'
href: 'javascript:;'
order: 50
- open: ->
- if $.id('globalMessage')?.hidden
- return true
- false
+ open: -> psa.hidden
$.event 'AddMenuEntry', entry
-
- $.on entry.el, 'click', PSAHiding.toggle
- $.addClass doc, 'hide-announcement'
-
- $.on d, '4chanXInitFinished', @setup
-
- setup: ->
- $.off d, '4chanXInitFinished', PSAHiding.setup
-
- unless psa = $.id 'globalMessage'
- $.rmClass doc, 'hide-announcement'
- return
+ $.on entry.el, 'click', PSAHiding.toggle
PSAHiding.btn = btn = $.el 'a',
innerHTML: '[ - ]'
@@ -34,34 +30,35 @@ PSAHiding =
href: 'javascript:;'
$.on btn, 'click', PSAHiding.toggle
- $.get 'hiddenPSAs', [], (item) ->
- PSAHiding.sync item['hiddenPSAs']
+ # XXX remove hiddenPSAs workaround in the future.
+ items =
+ hiddenPSA: 0
+ hiddenPSAs: null
+
+ $.get items, ({hiddenPSA, hiddenPSAs}) ->
+ if hiddenPSAs
+ $.delete 'hiddenPSAs'
+ if psa.textContent.replace(/\W+/g, '').toLowerCase() in hiddenPSAs
+ hiddenPSA = +$.id('globalMessage').dataset.utc
+ $.set 'hiddenPSA', hiddenPSA
+ PSAHiding.sync hiddenPSA
$.before psa, btn
$.rmClass doc, 'hide-announcement'
- $.sync 'hiddenPSAs', PSAHiding.sync
-
+ $.sync 'hiddenPSA', PSAHiding.sync
toggle: (e) ->
- hide = $.hasClass @, 'hide-announcement'
- text = PSAHiding.trim $.id 'globalMessage'
- $.get 'hiddenPSAs', [], ({hiddenPSAs}) ->
- if hide
- hiddenPSAs.push text
- hiddenPSAs = hiddenPSAs[-5..]
- else
- $.event 'CloseMenu'
- i = hiddenPSAs.indexOf text
- hiddenPSAs.splice i, 1
- PSAHiding.sync hiddenPSAs
- $.set 'hiddenPSAs', hiddenPSAs
-
- sync: (hiddenPSAs) ->
+ if $.hasClass @, 'hide-announcement'
+ UTC = +$.id('globalMessage').dataset.utc
+ $.set 'hiddenPSA', UTC
+ else
+ $.event 'CloseMenu'
+ $.delete 'hiddenPSA'
+ PSAHiding.sync UTC
+ sync: (UTC) ->
psa = $.id 'globalMessage'
- psa.hidden = PSAHiding.btn.hidden = if hiddenPSAs.contains PSAHiding.trim(psa)
- true
+ psa.hidden = PSAHiding.btn.hidden = if UTC and UTC >= +psa.dataset.utc
+ true
else
false
if (hr = psa.nextElementSibling) and hr.nodeName is 'HR'
hr.hidden = psa.hidden
- trim: (psa) ->
- psa.textContent.replace(/\W+/g, '').toLowerCase()