favicon
This commit is contained in:
parent
57125d17e0
commit
7d9a5160b6
48
4chan_x.js
48
4chan_x.js
@ -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') {
|
||||||
|
|||||||
@ -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'
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user