\
@@ -1362,17 +1369,27 @@
(time = $('[name=time]', dialog)).value = conf['time'];
$.on(back, 'keyup', options.backlink);
$.on(time, 'keyup', options.time);
- _ref3 = $$('#keybinds_tab + div input', dialog);
+ favicon = $('select', dialog);
+ _ref3 = favicon.options;
for (_j = 0, _len2 = _ref3.length; _j < _len2; _j++) {
- input = _ref3[_j];
+ option = _ref3[_j];
+ if (option.textContent === conf['favicon']) {
+ option.selected = true;
+ break;
+ }
+ }
+ $.on(favicon, 'change', options.favicon);
+ _ref4 = $$('#keybinds_tab + div input', dialog);
+ for (_k = 0, _len3 = _ref4.length; _k < _len3; _k++) {
+ input = _ref4[_k];
input.type = 'text';
input.value = conf[input.name];
$.on(input, 'keydown', options.keybind);
}
indicators = {};
- _ref4 = $$('.error', dialog);
- for (_k = 0, _len3 = _ref4.length; _k < _len3; _k++) {
- indicator = _ref4[_k];
+ _ref5 = $$('.error', dialog);
+ for (_l = 0, _len4 = _ref5.length; _l < _len4; _l++) {
+ indicator = _ref5[_l];
key = indicator.firstChild.textContent;
indicator.hidden = conf[key];
indicators[key] = indicator;
@@ -1391,8 +1408,9 @@
});
$.add(overlay, dialog);
$.add(d.body, overlay);
+ options.backlink.call(back);
options.time.call(time);
- return options.backlink.call(back);
+ return options.favicon.call(favicon);
},
clearHidden: function() {
$["delete"]("hiddenReplies/" + g.BOARD + "/");
@@ -1405,20 +1423,23 @@
e.stopPropagation();
if ((key = keybinds.keyCode(e)) == null) return;
this.value = key;
- $.set(this.name, key);
- return conf[this.name] = key;
+ return $.cb.value.call(this);
},
time: function() {
- $.set('time', this.value);
- conf['time'] = this.value;
+ $.cb.value.call(this);
Time.foo();
Time.date = new Date();
return $('#timePreview').textContent = Time.funk(Time);
},
backlink: function() {
- $.set('backlink', this.value);
- conf['backlink'] = this.value;
+ $.cb.value.call(this);
return $('#backlinkPreview').textContent = conf['backlink'].replace(/%id/, '123456789');
+ },
+ favicon: function() {
+ $.cb.value.call(this);
+ Favicon["switch"]();
+ Favicon.update();
+ return this.nextElementSibling.innerHTML = "



";
}
};
@@ -2712,19 +2733,29 @@
favicon = $('link[rel="shortcut icon"]', d.head);
favicon.type = 'image/x-icon';
href = favicon.href;
- Favicon["default"] = href;
- return Favicon.unread = /ws/.test(href) ? Favicon.unreadSFW : Favicon.unreadNSFW;
+ this.SFW = /ws.ico$/.test(href);
+ this["default"] = href;
+ return this["switch"]();
+ },
+ "switch": function() {
+ switch (conf['favicon']) {
+ case 'ferongr':
+ this.unreadDead = 'data:image/gif;base64,R0lGODlhEAAQAOMHAOgLAnMFAL8AAOgLAukMA/+AgP+rq////////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw==';
+ this.unreadSFW = 'data:image/gif;base64,R0lGODlhEAAQAOMHAADX8QBwfgC2zADX8QDY8nnl8qLp8v///////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw==';
+ this.unreadNSFW = 'data:image/gif;base64,R0lGODlhEAAQAOMHAFT+ACh5AEncAFT+AFX/Acz/su7/5v///////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw==';
+ break;
+ case 'None':
+ this.unreadDead = this.unreadSFW = this.unreadNSFW = this["default"];
+ }
+ return this.unread = this.SFW ? this.unreadSFW : this.unreadNSFW;
},
empty: 'data:image/gif;base64,R0lGODlhEAAQAJEAAAAAAP///9vb2////yH5BAEAAAMALAAAAAAQABAAAAIvnI+pq+D9DBAUoFkPFnbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw==',
dead: 'data:image/gif;base64,R0lGODlhEAAQAKECAAAAAP8AAP///////yH5BAEKAAIALAAAAAAQABAAAAIvlI+pq+D9DAgUoFkPDlbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw==',
- unreadDead: 'data:image/png;base64,R0lGODlhEAAQAOMHAOgLAnMFAL8AAOgLAukMA/+AgP+rq////////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw==',
- unreadSFW: 'data:image/png;base64,R0lGODlhEAAQAOMHAADX8QBwfgC2zADX8QDY8nnl8qLp8v///////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw==',
- unreadNSFW: 'data:image/png;base64,R0lGODlhEAAQAOMHAFT+ACh5AEncAFT+AFX/Acz/su7/5v///////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw==',
update: function() {
var clone, favicon, l;
l = unread.replies.length;
favicon = $('link[rel="shortcut icon"]', d.head);
- favicon.href = g.dead ? l ? Favicon.unreadDead : Favicon.dead : l ? Favicon.unread : Favicon["default"];
+ favicon.href = g.dead ? l ? this.unreadDead : this.dead : l ? this.unread : this["default"];
if (engine === "gecko") {
clone = favicon.cloneNode(true);
return $.replace(favicon, clone);
@@ -2929,7 +2960,8 @@
innerHTML: "
"
});
imageType = $.get('imageType', 'full');
- _ref = $$('option', controls);
+ select = $('select', controls);
+ _ref = select.options;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
option = _ref[_i];
if (option.textContent === imageType) {
@@ -2937,7 +2969,6 @@
break;
}
}
- select = $('select', controls);
imgExpand.cb.typeChange.call(select);
$.on(select, 'change', $.cb.value);
$.on(select, 'change', imgExpand.cb.typeChange);
diff --git a/changelog b/changelog
index 323fd991d..216864283 100644
--- a/changelog
+++ b/changelog
@@ -1,5 +1,6 @@
master
- mayhem
+ multiple unread favicons to chose in the options
quotes are now inserted at the caret position in the QR
quotes also replace the text selection in the QR
open QR focused when using the `Open QR without post number inserted` keybind
diff --git a/script.coffee b/script.coffee
index 35ffc136d..b0c4030df 100644
--- a/script.coffee
+++ b/script.coffee
@@ -66,6 +66,7 @@ config =
].join '\n'
time: '%m/%d/%y(%a)%H:%M'
backlink: '>>%id'
+ favicon: 'ferongr'
hotkeys:
close: 'Esc'
spoiler: 'ctrl+s'
@@ -948,6 +949,12 @@ options =
Hour: %k, %H, %l (lowercase L), %I (uppercase i), %p, %P
Minutes: %M
+
Unread Count is disabled.
+
+
@@ -1009,6 +1016,12 @@ options =
(time = $ '[name=time]', dialog).value = conf['time']
$.on back, 'keyup', options.backlink
$.on time, 'keyup', options.time
+ favicon = $ 'select', dialog
+ for option in favicon.options
+ if option.textContent is conf['favicon']
+ option.selected = true
+ break
+ $.on favicon, 'change', options.favicon
#keybinds
for input in $$ '#keybinds_tab + div input', dialog
@@ -1031,8 +1044,9 @@ options =
$.add overlay, dialog
$.add d.body, overlay
- options.time.call time
options.backlink.call back
+ options.time.call time
+ options.favicon.call favicon
clearHidden: ->
#'hidden' might be misleading; it's the number of IDs we're *looking* for,
@@ -1046,18 +1060,20 @@ options =
e.stopPropagation()
return unless (key = keybinds.keyCode e)?
@value = key
- $.set @name, key
- conf[@name] = key
+ $.cb.value.call @
time: ->
- $.set 'time', @value
- conf['time'] = @value
+ $.cb.value.call @
Time.foo()
Time.date = new Date()
$('#timePreview').textContent = Time.funk Time
backlink: ->
- $.set 'backlink', @value
- conf['backlink'] = @value
+ $.cb.value.call @
$('#backlinkPreview').textContent = conf['backlink'].replace /%id/, '123456789'
+ favicon: ->
+ $.cb.value.call @
+ Favicon.switch()
+ Favicon.update()
+ @nextElementSibling.innerHTML = "



"
cooldown =
#TODO merge into qr
@@ -2103,14 +2119,22 @@ Favicon =
favicon = $ 'link[rel="shortcut icon"]', d.head
favicon.type = 'image/x-icon'
{href} = favicon
- Favicon.default = href
- Favicon.unread = if /ws/.test href then Favicon.unreadSFW else Favicon.unreadNSFW
+ @SFW = /ws.ico$/.test href
+ @default = href
+ @switch()
+
+ switch: ->
+ switch conf['favicon']
+ when 'ferongr'
+ @unreadDead = 'data:image/gif;base64,R0lGODlhEAAQAOMHAOgLAnMFAL8AAOgLAukMA/+AgP+rq////////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw=='
+ @unreadSFW = 'data:image/gif;base64,R0lGODlhEAAQAOMHAADX8QBwfgC2zADX8QDY8nnl8qLp8v///////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw=='
+ @unreadNSFW = 'data:image/gif;base64,R0lGODlhEAAQAOMHAFT+ACh5AEncAFT+AFX/Acz/su7/5v///////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw=='
+ when 'None'
+ @unreadDead = @unreadSFW = @unreadNSFW = @default
+ @unread = if @SFW then @unreadSFW else @unreadNSFW
empty: 'data:image/gif;base64,R0lGODlhEAAQAJEAAAAAAP///9vb2////yH5BAEAAAMALAAAAAAQABAAAAIvnI+pq+D9DBAUoFkPFnbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw=='
dead: 'data:image/gif;base64,R0lGODlhEAAQAKECAAAAAP8AAP///////yH5BAEKAAIALAAAAAAQABAAAAIvlI+pq+D9DAgUoFkPDlbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw=='
- unreadDead: 'data:image/png;base64,R0lGODlhEAAQAOMHAOgLAnMFAL8AAOgLAukMA/+AgP+rq////////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw=='
- unreadSFW: 'data:image/png;base64,R0lGODlhEAAQAOMHAADX8QBwfgC2zADX8QDY8nnl8qLp8v///////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw=='
- unreadNSFW: 'data:image/png;base64,R0lGODlhEAAQAOMHAFT+ACh5AEncAFT+AFX/Acz/su7/5v///////////////////////////////////yH5BAEKAAcALAAAAAAQABAAAARZ8MhJ6xwDWIBv+AM1fEEIBIVRlNKYrtpIECuGzuwpCLg974EYiXUYkUItjGbC6VQ4omXFiKROA6qSy0A8nAo9GS3YCswIWnOvLAi0be23Z1QtdSUaqXcviQAAOw=='
update: ->
l = unread.replies.length
@@ -2119,14 +2143,14 @@ Favicon =
favicon.href =
if g.dead
if l
- Favicon.unreadDead
+ @unreadDead
else
- Favicon.dead
+ @dead
else
if l
- Favicon.unread
+ @unread
else
- Favicon.default
+ @default
#XXX `favicon.href = href` doesn't work on Firefox
if engine is "gecko"
@@ -2255,11 +2279,11 @@ imgExpand =
"
"
imageType = $.get 'imageType', 'full'
- for option in $$ 'option', controls
+ select = $ 'select', controls
+ for option in select.options
if option.textContent is imageType
option.selected = true
break
- select = $ 'select', controls
imgExpand.cb.typeChange.call select
$.on select, 'change', $.cb.value
$.on select, 'change', imgExpand.cb.typeChange