This commit is contained in:
James Campos 2011-04-20 17:57:11 -07:00
parent 57125d17e0
commit 7d9a5160b6
2 changed files with 50 additions and 46 deletions

View File

@ -59,7 +59,7 @@
*/ */
(function() { (function() {
var $, $$, NAMESPACE, Recaptcha, anonymize, config, d, expandComment, expandThread, fav, g, imageHover, imgExpand, imgGif, imgPreloading, keybinds, localize, log, main, nav, nodeInserted, options, qr, quickReport, redirect, replyHiding, sauce, threadHiding, titlePost, ui, unread, updater, watcher, _config, _ref; var $, $$, Favicon, NAMESPACE, Recaptcha, anonymize, config, d, expandComment, expandThread, g, imageHover, imgExpand, imgGif, imgPreloading, keybinds, localize, log, main, nav, nodeInserted, options, qr, quickReport, redirect, replyHiding, sauce, threadHiding, titlePost, ui, unread, updater, watcher, _config, _ref;
var __slice = Array.prototype.slice; var __slice = Array.prototype.slice;
if (typeof console != "undefined" && console !== null) { if (typeof console != "undefined" && console !== null) {
log = function(arg) { log = function(arg) {
@ -1389,9 +1389,9 @@
input = inputs[_i]; input = inputs[_i];
id = input.name; id = input.name;
if (id in watchedBoard) { if (id in watchedBoard) {
src = fav["default"]; src = Favicon["default"];
} else { } else {
src = fav.empty; src = Favicon.empty;
} }
favicon = $.el('img', { favicon = $.el('img', {
src: src, src: src,
@ -1428,7 +1428,7 @@
var favicon, id; var favicon, id;
favicon = $('img.favicon', thread); favicon = $('img.favicon', thread);
id = favicon.nextSibling.name; id = favicon.nextSibling.name;
if (favicon.src === fav.empty) { if (favicon.src === Favicon.empty) {
return watcher.watch(thread); return watcher.watch(thread);
} else { } else {
return watcher.unwatch(g.BOARD, id); return watcher.unwatch(g.BOARD, id);
@ -1441,7 +1441,7 @@
$.remove(div); $.remove(div);
if (input = $("input[name=\"" + id + "\"]")) { if (input = $("input[name=\"" + id + "\"]")) {
favicon = input.previousSibling; favicon = input.previousSibling;
favicon.src = fav.empty; favicon.src = Favicon.empty;
} }
watched = $.getValue('watched', {}); watched = $.getValue('watched', {});
delete watched[board][id]; delete watched[board][id];
@ -1450,10 +1450,10 @@
watch: function(thread) { watch: function(thread) {
var favicon, id, props, tc, watched, _name; var favicon, id, props, tc, watched, _name;
favicon = $('img.favicon', thread); favicon = $('img.favicon', thread);
if (favicon.src === fav["default"]) { if (favicon.src === Favicon["default"]) {
return; return;
} }
favicon.src = fav["default"]; favicon.src = Favicon["default"];
id = favicon.nextSibling.name; id = favicon.nextSibling.name;
tc = $('span.filetitle', thread).textContent || $('blockquote', thread).textContent; tc = $('span.filetitle', thread).textContent || $('blockquote', thread).textContent;
props = { props = {
@ -1606,7 +1606,7 @@
node: function(root) { node: function(root) {
unread.replies = unread.replies.concat($$('td[id]', root)); unread.replies = unread.replies.concat($$('td[id]', root));
unread.updateTitle(); unread.updateTitle();
return unread.updateFavicon(); return Favicon.update();
}, },
scroll: function(e) { scroll: function(e) {
var bottom, height, i, reply, _len, _ref; var bottom, height, i, reply, _len, _ref;
@ -1625,27 +1625,35 @@
unread.replies = unread.replies.slice(i); unread.replies = unread.replies.slice(i);
unread.updateTitle(); unread.updateTitle();
if (unread.replies.length === 0) { if (unread.replies.length === 0) {
return unread.updateFavicon(); return Favicon.update();
} }
} }
}, },
updateTitle: function() { updateTitle: function() {
return d.title = d.title.replace(/\d+/, unread.replies.length); return d.title = d.title.replace(/\d+/, unread.replies.length);
}, }
updateFavicon: function() { };
Favicon = {
dead: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAACVBMVEUAAAAAAAD/AAA9+90tAAAAAXRSTlMAQObYZgAAADtJREFUCB0FwUERxEAIALDszMG730PNSkBEBSECoU0AEPe0mly5NWprRUcDQAdn68qtkVsj3/84z++CD5u7CsnoBJoaAAAAAElFTkSuQmCC',
deadHalo: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAWUlEQVR4XrWSAQoAIAgD/f+njSApsTqjGoTQ5oGWPJMOOs60CzsWwIwz1I4PUIYh+WYEMGQ6I/txw91kP4oA9BdwhKp1My4xQq6e8Q9ANgDJjOErewFiNesV2uGSfGv1/HYAAAAASUVORK5CYII=',
"default": ((_ref = $('link[rel="shortcut icon"]', d.head)) != null ? _ref.href : void 0) || '',
empty: 'data:image/gif;base64,R0lGODlhEAAQAJEAAAAAAP///9vb2////yH5BAEAAAMALAAAAAAQABAAAAIvnI+pq+D9DBAUoFkPFnbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw==',
haloSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAZklEQVR4XrWRQQoAIQwD+6L97j7Ih9WTQQxhDqJQCk4Mranuvqod6LgwawSqSuUmWSPw/UNlJlnDAmA2ARjABLYj8ZyCzJHHqOg+GdAKZmKPIQUzuYrxicHqEgHzP9g7M0+hj45sAnRWxtPj3zSPAAAAAElFTkSuQmCC',
haloNSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEUAAABmzDP///8AAABet0i+AAAAAXRSTlMAQObYZgAAAExJREFUeF4tyrENgDAMAMFXKuQswQLBG3mOlBnFS1gwDfIYLpEivvjq2MlqjmYvYg5jWEzCwtDSQlwcXKCVLrpFbvLvvSf9uZJ2HusDtJAY7Tkn1oYAAAAASUVORK5CYII=',
update: function() {
var clone, favicon, href, l; var clone, favicon, href, l;
l = unread.replies.length; l = unread.replies.length;
if (g.dead) { if (g.dead) {
if (l > 0) { if (l > 0) {
href = fav.deadHalo; href = Favicon.headHalo;
} else { } else {
href = fav.dead; href = Favicon.dead;
} }
} else { } else {
if (l > 0) { if (l > 0) {
href = fav.halo; href = Favicon.halo;
} else { } else {
href = fav["default"]; href = Favicon["default"];
} }
} }
favicon = $('link[rel="shortcut icon"]', d.head); favicon = $('link[rel="shortcut icon"]', d.head);
@ -1961,18 +1969,10 @@
callbacks: [], callbacks: [],
flavors: ['http://regex.info/exif.cgi?url=', 'http://iqdb.org/?url=', 'http://tineye.com/search?url='].join('\n') flavors: ['http://regex.info/exif.cgi?url=', 'http://iqdb.org/?url=', 'http://tineye.com/search?url='].join('\n')
}; };
fav = {
dead: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAACVBMVEUAAAAAAAD/AAA9+90tAAAAAXRSTlMAQObYZgAAADtJREFUCB0FwUERxEAIALDszMG730PNSkBEBSECoU0AEPe0mly5NWprRUcDQAdn68qtkVsj3/84z++CD5u7CsnoBJoaAAAAAElFTkSuQmCC',
deadHalo: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAWUlEQVR4XrWSAQoAIAgD/f+njSApsTqjGoTQ5oGWPJMOOs60CzsWwIwz1I4PUIYh+WYEMGQ6I/txw91kP4oA9BdwhKp1My4xQq6e8Q9ANgDJjOErewFiNesV2uGSfGv1/HYAAAAASUVORK5CYII=',
"default": ((_ref = $('link[rel="shortcut icon"]', d.head)) != null ? _ref.href : void 0) || '',
empty: 'data:image/gif;base64,R0lGODlhEAAQAJEAAAAAAP///9vb2////yH5BAEAAAMALAAAAAAQABAAAAIvnI+pq+D9DBAUoFkPFnbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw==',
haloSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAZklEQVR4XrWRQQoAIQwD+6L97j7Ih9WTQQxhDqJQCk4Mranuvqod6LgwawSqSuUmWSPw/UNlJlnDAmA2ARjABLYj8ZyCzJHHqOg+GdAKZmKPIQUzuYrxicHqEgHzP9g7M0+hj45sAnRWxtPj3zSPAAAAAElFTkSuQmCC',
haloNSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEUAAABmzDP///8AAABet0i+AAAAAXRSTlMAQObYZgAAAExJREFUeF4tyrENgDAMAMFXKuQswQLBG3mOlBnFS1gwDfIYLpEivvjq2MlqjmYvYg5jWEzCwtDSQlwcXKCVLrpFbvLvvSf9uZJ2HusDtJAY7Tkn1oYAAAAASUVORK5CYII='
};
main = { main = {
init: function() { init: function() {
var callback, navtopr, pathname, temp, tzOffset, _i, _len, _ref; var callback, navtopr, pathname, temp, tzOffset, _i, _len, _ref;
fav.halo = /ws/.test(fav["default"]) ? fav.haloSFW : fav.haloNSFW; Favicon.halo = /ws/.test(Favicon["default"]) ? Favicon.haloSFW : Favicon.haloNSFW;
pathname = location.pathname.substring(1).split('/'); pathname = location.pathname.substring(1).split('/');
g.BOARD = pathname[0], temp = pathname[1]; g.BOARD = pathname[0], temp = pathname[1];
if (temp === 'res') { if (temp === 'res') {

View File

@ -1096,9 +1096,9 @@ watcher =
for input in inputs for input in inputs
id = input.name id = input.name
if id of watchedBoard if id of watchedBoard
src = fav.default src = Favicon.default
else else
src = fav.empty src = Favicon.empty
favicon = $.el 'img', favicon = $.el 'img',
src: src src: src
className: 'favicon' className: 'favicon'
@ -1127,9 +1127,9 @@ watcher =
toggle: (thread) -> toggle: (thread) ->
favicon = $ 'img.favicon', thread favicon = $ 'img.favicon', thread
id = favicon.nextSibling.name id = favicon.nextSibling.name
if favicon.src == fav.empty if favicon.src == Favicon.empty
watcher.watch thread watcher.watch thread
else # favicon.src == fav.default else # favicon.src == Favicon.default
watcher.unwatch g.BOARD, id watcher.unwatch g.BOARD, id
unwatch: (board, id) -> unwatch: (board, id) ->
@ -1139,7 +1139,7 @@ watcher =
if input = $ "input[name=\"#{id}\"]" if input = $ "input[name=\"#{id}\"]"
favicon = input.previousSibling favicon = input.previousSibling
favicon.src = fav.empty favicon.src = Favicon.empty
watched = $.getValue 'watched', {} watched = $.getValue 'watched', {}
delete watched[board][id] delete watched[board][id]
@ -1147,9 +1147,9 @@ watcher =
watch: (thread) -> watch: (thread) ->
favicon = $ 'img.favicon', thread favicon = $ 'img.favicon', thread
return if favicon.src is fav.default return if favicon.src is Favicon.default
favicon.src = fav.default favicon.src = Favicon.default
id = favicon.nextSibling.name id = favicon.nextSibling.name
tc = $('span.filetitle', thread).textContent or $('blockquote', thread).textContent tc = $('span.filetitle', thread).textContent or $('blockquote', thread).textContent
props = props =
@ -1255,7 +1255,7 @@ unread =
node: (root) -> node: (root) ->
unread.replies = unread.replies.concat $$ 'td[id]', root unread.replies = unread.replies.concat $$ 'td[id]', root
unread.updateTitle() unread.updateTitle()
unread.updateFavicon() Favicon.update()
scroll: (e) -> scroll: (e) ->
height = d.body.clientHeight height = d.body.clientHeight
@ -1268,28 +1268,39 @@ unread =
unread.replies = unread.replies[i..] unread.replies = unread.replies[i..]
unread.updateTitle() unread.updateTitle()
if unread.replies.length is 0 if unread.replies.length is 0
unread.updateFavicon() Favicon.update()
updateTitle: -> updateTitle: ->
d.title = d.title.replace /\d+/, unread.replies.length d.title = d.title.replace /\d+/, unread.replies.length
updateFavicon: -> Favicon =
dead: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAACVBMVEUAAAAAAAD/AAA9+90tAAAAAXRSTlMAQObYZgAAADtJREFUCB0FwUERxEAIALDszMG730PNSkBEBSECoU0AEPe0mly5NWprRUcDQAdn68qtkVsj3/84z++CD5u7CsnoBJoaAAAAAElFTkSuQmCC'
deadHalo: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAWUlEQVR4XrWSAQoAIAgD/f+njSApsTqjGoTQ5oGWPJMOOs60CzsWwIwz1I4PUIYh+WYEMGQ6I/txw91kP4oA9BdwhKp1My4xQq6e8Q9ANgDJjOErewFiNesV2uGSfGv1/HYAAAAASUVORK5CYII='
default: $('link[rel="shortcut icon"]', d.head)?.href or '' #no favicon in `post successful` page
empty: 'data:image/gif;base64,R0lGODlhEAAQAJEAAAAAAP///9vb2////yH5BAEAAAMALAAAAAAQABAAAAIvnI+pq+D9DBAUoFkPFnbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw=='
haloSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAZklEQVR4XrWRQQoAIQwD+6L97j7Ih9WTQQxhDqJQCk4Mranuvqod6LgwawSqSuUmWSPw/UNlJlnDAmA2ARjABLYj8ZyCzJHHqOg+GdAKZmKPIQUzuYrxicHqEgHzP9g7M0+hj45sAnRWxtPj3zSPAAAAAElFTkSuQmCC'
haloNSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEUAAABmzDP///8AAABet0i+AAAAAXRSTlMAQObYZgAAAExJREFUeF4tyrENgDAMAMFXKuQswQLBG3mOlBnFS1gwDfIYLpEivvjq2MlqjmYvYg5jWEzCwtDSQlwcXKCVLrpFbvLvvSf9uZJ2HusDtJAY7Tkn1oYAAAAASUVORK5CYII='
update: ->
l = unread.replies.length l = unread.replies.length
if g.dead if g.dead
if l > 0 if l > 0
href = fav.deadHalo href = Favicon.headHalo
else else
href = fav.dead href = Favicon.dead
else else
if l > 0 if l > 0
href = fav.halo href = Favicon.halo
else else
href = fav.default href = Favicon.default
#XXX `favicon.href = href` doesn't work
favicon = $ 'link[rel="shortcut icon"]', d.head favicon = $ 'link[rel="shortcut icon"]', d.head
clone = favicon.cloneNode true clone = favicon.cloneNode true
clone.href = href clone.href = href
$.replace favicon, clone $.replace favicon, clone
redirect = -> redirect = ->
switch g.BOARD switch g.BOARD
when 'a', 'g', 'lit', 'sci', 'tv' when 'a', 'g', 'lit', 'sci', 'tv'
@ -1496,17 +1507,10 @@ g =
'http://iqdb.org/?url=' 'http://iqdb.org/?url='
'http://tineye.com/search?url=' 'http://tineye.com/search?url='
].join '\n' ].join '\n'
fav =
dead: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAACVBMVEUAAAAAAAD/AAA9+90tAAAAAXRSTlMAQObYZgAAADtJREFUCB0FwUERxEAIALDszMG730PNSkBEBSECoU0AEPe0mly5NWprRUcDQAdn68qtkVsj3/84z++CD5u7CsnoBJoaAAAAAElFTkSuQmCC'
deadHalo: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAWUlEQVR4XrWSAQoAIAgD/f+njSApsTqjGoTQ5oGWPJMOOs60CzsWwIwz1I4PUIYh+WYEMGQ6I/txw91kP4oA9BdwhKp1My4xQq6e8Q9ANgDJjOErewFiNesV2uGSfGv1/HYAAAAASUVORK5CYII='
default: $('link[rel="shortcut icon"]', d.head)?.href or '' #no favicon in `post successful` page
empty: 'data:image/gif;base64,R0lGODlhEAAQAJEAAAAAAP///9vb2////yH5BAEAAAMALAAAAAAQABAAAAIvnI+pq+D9DBAUoFkPFnbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw=='
haloSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAZklEQVR4XrWRQQoAIQwD+6L97j7Ih9WTQQxhDqJQCk4Mranuvqod6LgwawSqSuUmWSPw/UNlJlnDAmA2ARjABLYj8ZyCzJHHqOg+GdAKZmKPIQUzuYrxicHqEgHzP9g7M0+hj45sAnRWxtPj3zSPAAAAAElFTkSuQmCC'
haloNSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEUAAABmzDP///8AAABet0i+AAAAAXRSTlMAQObYZgAAAExJREFUeF4tyrENgDAMAMFXKuQswQLBG3mOlBnFS1gwDfIYLpEivvjq2MlqjmYvYg5jWEzCwtDSQlwcXKCVLrpFbvLvvSf9uZJ2HusDtJAY7Tkn1oYAAAAASUVORK5CYII='
main = main =
init: -> init: ->
fav.halo = if /ws/.test fav.default then fav.haloSFW else fav.haloNSFW Favicon.halo = if /ws/.test Favicon.default then Favicon.haloSFW else Favicon.haloNSFW
pathname = location.pathname.substring(1).split('/') pathname = location.pathname.substring(1).split('/')
[g.BOARD, temp] = pathname [g.BOARD, temp] = pathname
if temp is 'res' if temp is 'res'