diff --git a/src/Filtering/PostHiding.coffee b/src/Filtering/PostHiding.coffee
index ffee654e4..36da5697d 100755
--- a/src/Filtering/PostHiding.coffee
+++ b/src/Filtering/PostHiding.coffee
@@ -35,12 +35,9 @@ PostHiding =
href: 'javascript:;'
$.on apply, 'click', PostHiding.menu.hide
- thisPost = $.el 'label',
- innerHTML: ' This post'
- replies = $.el 'label',
- innerHTML: " Hide replies"
- makeStub = $.el 'label',
- innerHTML: " Make stub"
+ thisPost = UI.checkbox 'thisPost', ' This post', true
+ replies = UI.checkbox 'replies', ' Hide replies', Conf['Recursive Hiding']
+ makeStub = UI.checkbox 'makeStub', ' Make stub', Conf['Stubs']
$.event 'AddMenuEntry',
type: 'post'
@@ -71,10 +68,8 @@ PostHiding =
href: 'javascript:;'
$.on apply, 'click', PostHiding.menu.show
- thisPost = $.el 'label',
- innerHTML: ' This post'
- replies = $.el 'label',
- innerHTML: " Show replies"
+ thisPost = UI.checkbox 'thisPost', ' This post', false
+ replies = UI.checkbox 'replies', ' Show replies', false
hideStubLink = $.el 'a',
textContent: 'Hide stub'
href: 'javascript:;'
diff --git a/src/Filtering/ThreadHiding.coffee b/src/Filtering/ThreadHiding.coffee
index 615deedf8..e53efbcbc 100755
--- a/src/Filtering/ThreadHiding.coffee
+++ b/src/Filtering/ThreadHiding.coffee
@@ -80,8 +80,7 @@ ThreadHiding =
href: 'javascript:;'
$.on apply, 'click', ThreadHiding.menu.hide
- makeStub = $.el 'label',
- innerHTML: " Make stub"
+ makeStub = UI.checkbox 'Stubs', ' Make stub'
$.event 'AddMenuEntry',
type: 'post'
diff --git a/src/General/Header.coffee b/src/General/Header.coffee
index 6fbb23b68..206377653 100755
--- a/src/General/Header.coffee
+++ b/src/General/Header.coffee
@@ -6,22 +6,14 @@ Header =
className: 'menu-button'
innerHTML: ''
- barFixedToggler = $.el 'label',
- innerHTML: ' Fixed Header'
- headerToggler = $.el 'label',
- innerHTML: ' Auto-hide header'
- scrollHeaderToggler = $.el 'label',
- innerHTML: ' Auto-hide header on scroll'
- barPositionToggler = $.el 'label',
- innerHTML: ' Bottom header'
- linkJustifyToggler = $.el 'label',
- innerHTML: " Centered links"
- customNavToggler = $.el 'label',
- innerHTML: ' Custom board navigation'
- footerToggler = $.el 'label',
- innerHTML: " Hide bottom board list"
- shortcutToggler = $.el 'label',
- innerHTML: " Shortcut Icons"
+ barFixedToggler = UI.checkbox 'Fixed Header', ' Fixed Header'
+ headerToggler = UI.checkbox 'Header auto-hide', ' Auto-hide header'
+ scrollHeaderToggler = UI.checkbox 'Header auto-hide on scroll', ' Auto-hide header on scroll'
+ barPositionToggler = UI.checkbox 'Bottom Header', ' Bottom header'
+ linkJustifyToggler = UI.checkbox 'Centered links', ' Centered links'
+ customNavToggler = UI.checkbox 'Custom Board Navigation', ' Custom board navigation'
+ footerToggler = UI.checkbox 'Bottom Board List', ' Hide bottom board list'
+ shortcutToggler = UI.checkbox 'Shortcut Icons', ' Shortcut Icons'
editCustomNav = $.el 'a',
textContent: 'Edit custom board navigation'
href: 'javascript:;'
diff --git a/src/General/Index.coffee b/src/General/Index.coffee
index 5f1b054a9..5580932da 100644
--- a/src/General/Index.coffee
+++ b/src/General/Index.coffee
@@ -40,21 +40,14 @@ Index =
$.on input, 'change', $.cb.value
$.on input, 'change', @cb.sort
- repliesEntry =
- el: $.el 'label',
- innerHTML: ' Show replies'
- anchorEntry =
- el: $.el 'label',
- innerHTML: ' Anchor hidden threads'
- title: 'Move hidden threads at the end of the index.'
- refNavEntry =
- el: $.el 'label',
- innerHTML: ' Refreshed navigation'
- title: 'Refresh index when navigating through pages.'
+ repliesEntry = el: UI.checkbox 'Show Replies', ' Show replies'
+ anchorEntry = el: UI.checkbox 'Anchor Hidden Threads', ' Anchor hidden threads'
+ refNavEntry = el: UI.checkbox 'Refreshed Navigation', ' Refreshed navigation'
+ anchorEntry.el.title = 'Move hidden threads at the end of the index.'
+ refNavEntry.el.title = 'Refresh index when navigating through pages.'
for label in [repliesEntry, anchorEntry, refNavEntry]
input = label.el.firstChild
{name} = input
- input.checked = Conf[name]
$.on input, 'change', $.cb.checked
switch name
when 'Show Replies'
diff --git a/src/General/Settings.coffee b/src/General/Settings.coffee
index dbf8d60ba..a2aefd8f5 100755
--- a/src/General/Settings.coffee
+++ b/src/General/Settings.coffee
@@ -95,8 +95,11 @@ Settings =
innerHTML: ""
for key, arr of obj
description = arr[1]
- div = $.el 'div',
- innerHTML: ": #{description}"
+ div = $.el 'div'
+ $.add div, [
+ UI.checkbox key, key, false
+ $.el 'span', class: 'description', textContent: ": #{description}"
+ ]
input = $ 'input', div
$.on input, 'change', $.cb.checked
items[key] = Conf[key]
diff --git a/src/General/UI.coffee b/src/General/UI.coffee
index 361e2fa17..6d3aad8fa 100755
--- a/src/General/UI.coffee
+++ b/src/General/UI.coffee
@@ -373,9 +373,17 @@ UI = do ->
<% } %>
@cb.call @ if @cb
+ checkbox = (name, text, checked) ->
+ checked = Conf[name] unless checked?
+ label = $.el 'label'
+ input = $.el 'input', {type: 'checkbox', name, checked}
+ $.add label, [input, $.tn text]
+ label
+
return {
- dialog: dialog
- Menu: Menu
- hover: hoverstart
+ dialog: dialog
+ Menu: Menu
+ hover: hoverstart
+ checkbox: checkbox
}
diff --git a/src/Images/FappeTyme.coffee b/src/Images/FappeTyme.coffee
index 200907e1d..a48b934e8 100755
--- a/src/Images/FappeTyme.coffee
+++ b/src/Images/FappeTyme.coffee
@@ -4,9 +4,8 @@ FappeTyme =
for type in ["Fappe", "Werk"] when Conf["#{type} Tyme"]
lc = type.toLowerCase()
- el = $.el 'label',
- innerHTML: " #{type} Tyme"
- title: "#{type} Tyme"
+ el = UI.checkbox lc, " #{type} Tyme", false
+ el.title = "#{type} Tyme"
FappeTyme[lc] = input = el.firstElementChild
$.on input, 'change', FappeTyme.cb.toggle.bind input
@@ -34,4 +33,4 @@ FappeTyme =
toggle: ->
Conf[@name] = !Conf[@name]
FappeTyme.cb.set @name
- $.cb.checked.call FappeTyme[@name]
\ No newline at end of file
+ $.cb.checked.call FappeTyme[@name]
diff --git a/src/Images/Gallery.coffee b/src/Images/Gallery.coffee
index d5223e664..cecdfa8bd 100644
--- a/src/Images/Gallery.coffee
+++ b/src/Images/Gallery.coffee
@@ -258,12 +258,10 @@ Gallery =
subEntries: subEntries
createSubEntry: (name) ->
- label = $.el 'label',
- innerHTML: " #{name}"
+ label = UI.checkbox name, " #{name}"
input = label.firstElementChild
if name in ['Fit Width', 'Fit Height', 'Hide Thumbnails']
$.on input, 'change', Gallery.cb.setFitness
- input.checked = Conf[name]
$.event 'change', null, input
$.on input, 'change', $.cb.checked
el: label
diff --git a/src/Miscellaneous/CatalogLinks.coffee b/src/Miscellaneous/CatalogLinks.coffee
index cf9b52e62..9d2afc6e3 100755
--- a/src/Miscellaneous/CatalogLinks.coffee
+++ b/src/Miscellaneous/CatalogLinks.coffee
@@ -1,10 +1,8 @@
CatalogLinks =
init: ->
return unless Conf['Catalog Links']
- CatalogLinks.el = el = $.el 'label',
- id: 'toggleCatalog'
- href: 'javascript:;'
- innerHTML: " Catalog Links"
+ CatalogLinks.el = el = UI.checkbox 'Header catalog links', ' Catalog Links'
+ el.id = 'toggleCatalog'
input = $ 'input', el
$.on input, 'change', @toggle
diff --git a/src/Monitoring/ThreadUpdater.coffee b/src/Monitoring/ThreadUpdater.coffee
index 9568fec01..d1aa85a9d 100755
--- a/src/Monitoring/ThreadUpdater.coffee
+++ b/src/Monitoring/ThreadUpdater.coffee
@@ -27,10 +27,8 @@ ThreadUpdater =
subEntries = []
for name, conf of Config.updater.checkbox
- checked = if Conf[name] then 'checked' else ''
- el = $.el 'label',
- title: "#{conf[1]}"
- innerHTML: " #{name}"
+ el = UI.checkbox name, " #{name}"
+ el.title = conf[1]
input = el.firstElementChild
$.on input, 'change', $.cb.checked
if input.name is 'Scroll BG'
diff --git a/src/Monitoring/ThreadWatcher.coffee b/src/Monitoring/ThreadWatcher.coffee
index 537114790..27706ddd1 100755
--- a/src/Monitoring/ThreadWatcher.coffee
+++ b/src/Monitoring/ThreadWatcher.coffee
@@ -302,11 +302,9 @@ ThreadWatcher =
createSubEntry: (name, desc) ->
entry =
type: 'thread watcher'
- el: $.el 'label',
- innerHTML: " #{name}"
- title: desc
+ el: UI.checkbox name, " #{name}"
+ entry.el.title = desc
input = entry.el.firstElementChild
- input.checked = Conf[name]
$.on input, 'change', $.cb.checked
$.on input, 'change', ThreadWatcher.refresh if name is 'Current Board'
entry