From 2d14dd5a6169021524381fc031ad2e4338da4454 Mon Sep 17 00:00:00 2001 From: name Date: Mon, 11 Dec 2017 03:29:58 -0800 Subject: [PATCH] Site software autodetection. --- src/main/Main.coffee | 5 +---- src/site/SW.tinyboard.coffee | 5 +++++ src/site/Site.coffee | 19 +++++++++++++++---- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/Main.coffee b/src/main/Main.coffee index ec6b2e234..8af3d8b40 100644 --- a/src/main/Main.coffee +++ b/src/main/Main.coffee @@ -103,7 +103,7 @@ Main = for key, val of Conf Conf[key] = items[key] ? val - Main.initFeatures() + Site.init Main.initFeatures upgrade: (items) -> {previousversion} = items @@ -116,9 +116,6 @@ Main = new Notice 'info', el, 15 initFeatures: -> - Site.init() - return unless Site.software - {hostname, search} = location pathname = location.pathname.split /\/+/ g.BOARD = new Board pathname[1] unless hostname is 'www.4chan.org' diff --git a/src/site/SW.tinyboard.coffee b/src/site/SW.tinyboard.coffee index 6abb12a38..c4d3b5337 100644 --- a/src/site/SW.tinyboard.coffee +++ b/src/site/SW.tinyboard.coffee @@ -1,6 +1,11 @@ SW.tinyboard = isOPContainerThread: true + detect: -> + for script in $$ 'script:not([src])', d.head + return true if /\bvar configRoot=".*?"/.test(script.textContent) + false + selectors: board: 'form[name="postcontrols"]' thread: 'div[id^="thread_"]' diff --git a/src/site/Site.coffee b/src/site/Site.coffee index 5cc652656..d8fadf8fa 100644 --- a/src/site/Site.coffee +++ b/src/site/Site.coffee @@ -1,5 +1,5 @@ Site = - init: -> + init: (cb) -> swDict = {} for line in Conf['siteSoftware'].split('\n') when line[0] isnt '#' [hostname, software] = line.split(' ') @@ -7,7 +7,18 @@ Site = {hostname} = location while hostname and hostname not of swDict hostname = hostname.replace(/^[^.]*\.?/, '') - return unless hostname - @hostname = hostname - @software = swDict[hostname] + if hostname + @set hostname, swDict[hostname] + cb() + else + $.onExists doc, 'body', => + for software of SW + if SW[software].detect?() + @set location.hostname.replace(/^www\./, ''), software + Conf['siteSoftware'] += "\n#{@hostname} #{@software}" + $.set 'siteSoftware', Conf['siteSoftware'] + cb() + return + + set: (@hostname, @software) -> $.extend @, SW[@software]