aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cgi/api.py11
-rw-r--r--cgi/post.py13
-rw-r--r--cgi/templates/feed.rss25
-rw-r--r--cgi/templates/home.html34
-rw-r--r--cgi/templates/home.rss25
-rw-r--r--cgi/templates/mobile/latest.html4
-rw-r--r--cgi/templates/mobile/newest.html4
-rwxr-xr-xcgi/weabot.py7
-rw-r--r--static/js/autorefresh.js4
-rw-r--r--static/js/home.js192
10 files changed, 163 insertions, 156 deletions
diff --git a/cgi/api.py b/cgi/api.py
index 871e88f..e6968f8 100644
--- a/cgi/api.py
+++ b/cgi/api.py
@@ -93,18 +93,19 @@ def api_process(self, path_split):
data_limit = formdata.get('limit')
data_time = formdata.get('time', 0)
- limit = 30
-
if data_limit:
try:
limit = int(data_limit)
except ValueError:
raise APIError("Limit must be numeric")
- if limit > 50:
- raise APIError("Maximum limit is 50")
+ if limit > 30:
+ raise APIError("Maximum limit is 30")
+
+ threads = getLastAge(0, limit)
+ threads += getLastAge(1, limit)
+ threads = sorted(threads, key=lambda b:b['bumped'], reverse=True)
- threads = getLastAge(limit)
if threads[0]['bumped'] > int(data_time):
values['threads'] = threads
else:
diff --git a/cgi/post.py b/cgi/post.py
index c53e8a1..96b7cab 100644
--- a/cgi/post.py
+++ b/cgi/post.py
@@ -1080,11 +1080,13 @@ def cut_msg(message, limit):
def getLastAge(board_type, limit):
threads = []
+ sql = "SELECT posts.id, boards.name AS board_name, boards.subname AS board_abr, board_type, boards.dir, timestamp, bumped, length, CASE WHEN posts.subject = boards.subject THEN posts.message ELSE posts.subject END AS content FROM posts INNER JOIN boards ON boardid = boards.id WHERE parentid = 0 AND IS_DELETED = 0 AND boards.secret = 0 AND posts.locked < 3"
+
if board_type in [0, 1]:
- sql = "SELECT posts.id, boards.name AS board_fulln, boards.subname AS board_name, board_type, boards.dir, timestamp, length, CASE WHEN posts.subject = boards.subject THEN posts.message ELSE posts.subject END AS content FROM posts INNER JOIN boards ON boardid = boards.id WHERE parentid = 0 AND IS_DELETED = 0 AND boards.secret = 0 AND posts.locked < 3 AND boards.board_type = %s ORDER BY bumped DESC LIMIT %s"
+ sql += " AND boards.board_type = %s ORDER BY bumped DESC LIMIT %s"
threads = FetchAll(sql, (board_type, limit) )
else:
- sql = "SELECT posts.id, boards.name AS board_fulln, boards.subname AS board_name, board_type, boards.dir, timestamp, length, CASE WHEN posts.subject = boards.subject THEN posts.message ELSE posts.subject END AS content FROM posts INNER JOIN boards ON boardid = boards.id WHERE parentid = 0 AND IS_DELETED = 0 AND boards.secret = 0 AND posts.locked < 3 ORDER BY bumped DESC LIMIT %s"
+ sql += " ORDER BY bumped DESC LIMIT %s"
threads = FetchAll(sql, (limit,) )
for post in threads:
@@ -1098,7 +1100,7 @@ def getLastAge(board_type, limit):
return threads
def getNewPosts(limit, rss=False):
- sql = "SELECT posts.id, parentid, boardid, boards.name AS board_fulln, board_type, boards.dir, timestamp, posts.message FROM posts INNER JOIN boards ON posts.boardid = boards.id WHERE IS_DELETED = 0 AND boards.secret = 0 ORDER BY timestamp DESC LIMIT %s"
+ sql = "SELECT posts.id, parentid, boardid, boards.name AS board_name, board_type, boards.dir, timestamp, posts.message FROM posts INNER JOIN boards ON posts.boardid = boards.id WHERE IS_DELETED = 0 AND boards.secret = 0 ORDER BY timestamp DESC LIMIT %s"
posts = FetchAll(sql, (limit,))
for post in posts:
@@ -1106,6 +1108,7 @@ def getNewPosts(limit, rss=False):
if rss:
post['timestamp_formatted'] = datetime.datetime.fromtimestamp(post['timestamp']).strftime('%Y-%m-%dT%H:%M:%S%Z')
+ post['content'] = cut_msg(post['message'], 100)
if post['board_type'] == 1:
post['url'] = '/%s/read/%d/l10' % (post['dir'], getParentTimestamp(post) or post['timestamp'])
@@ -1116,7 +1119,7 @@ def getNewPosts(limit, rss=False):
def getNewThreads(limit):
threads = []
- sql = "SELECT posts.id, boards.name AS board_fulln, boards.subname AS board_name, board_type, boards.dir, timestamp, CASE WHEN posts.subject = boards.subject THEN posts.message ELSE posts.subject END AS content FROM posts INNER JOIN boards ON boardid = boards.id WHERE parentid = 0 AND IS_DELETED = 0 AND boards.secret = 0 AND boards.id <> 13 AND posts.locked = 0 ORDER BY timestamp DESC LIMIT %s"
+ sql = "SELECT posts.id, boards.name AS board_name, boards.subname AS board_abr, board_type, boards.dir, timestamp, CASE WHEN posts.subject = boards.subject THEN posts.message ELSE posts.subject END AS content FROM posts INNER JOIN boards ON boardid = boards.id WHERE parentid = 0 AND IS_DELETED = 0 AND boards.secret = 0 AND boards.id <> 13 AND posts.locked = 0 ORDER BY timestamp DESC LIMIT %s"
threads = FetchAll(sql, (limit,) )
for post in threads:
@@ -1158,7 +1161,7 @@ def regenerateHome():
f.close()
if Settings.ENABLE_RSS:
- rss_rendered = renderTemplate('home.rss', {'posts': getNewPosts(10, True)} )
+ rss_rendered = renderTemplate('feed.rss', {'posts': getNewPosts(10, True)} )
f = open(Settings.HOME_DIR + "bai.rss", "w")
try:
f.write(rss_rendered)
diff --git a/cgi/templates/feed.rss b/cgi/templates/feed.rss
new file mode 100644
index 0000000..dfce578
--- /dev/null
+++ b/cgi/templates/feed.rss
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<rss version="2.0">
+ <channel>
+ <title>Bienvenido a Internet BBS/IB</title>
+ <link>https://bienvenidoainternet.org/</link>
+ <description>El BBS/IB más activo de la esfera hispana.</description>
+ <language>es</language>
+ <webMaster>burocracia@bienvenidoainternet.org (Staff ★)</webMaster>
+ <image>
+ <url>https://bienvenidoainternet.org/rss_logo.png</url>
+ <title>Bienvenido a Internet BBS/IB</title>
+ <link>https://bienvenidoainternet.org/</link>
+ <width>144</width>
+ <height>144</height>
+ </image>
+ <?py for post in posts: ?>
+ <item>
+ <title>${post['board_name']}: #{post['content']}</title>
+ <pubDate>${post['timestamp_formatted']}</pubDate>
+ <link>https://bienvenidoainternet.org#{post['url']}</link>
+ <description>${post['content']}</description>
+ </item>
+ <?py #endfor ?>
+ </channel>
+</rss>
diff --git a/cgi/templates/home.html b/cgi/templates/home.html
index d60b719..b5d932b 100644
--- a/cgi/templates/home.html
+++ b/cgi/templates/home.html
@@ -73,25 +73,29 @@
</tr>
<tr>
<td rowspan="2" class="tab">
- <h2 id="newposts">Hilos activos <div id="counter"></div></h2>
- <h4>BBS</h4>
- <div id="postlist" class="threads">
+ <h2 id="newposts">Hilos activos <a href="bai.rss" target="_blank"><img src="/feed.png" style="width:12px;height:12px;"></a></h2>
+ <h4>BBS</h4>
+ <div id="postlistbbs" class="threads">
<?py for thread in latest_age_bbs: ?>
- <a href="${thread['url']}" class="thread"><span class="brd">[${thread['board_name']}:${'%03d' % thread['length']}]</span> #{thread['content']}</a>
+ <a href="${thread['url']}" class="thread"><span class="brd">[${thread['board_abr']}:${'%03d' % thread['length']}]</span> #{thread['content']}</a>
<?py #endfor ?>
- </div>
- <hr />
- <h4>IB</h4>
- <div id="postlist" class="threads">
+ </div>
+ <hr />
+ <h4>IB</h4>
+ <div id="postlistib" class="threads">
<?py for thread in latest_age_ib: ?>
- <a href="${thread['url']}" class="thread"><span class="brd">[${thread['board_name']}:${'%03d' % thread['length']}]</span> #{thread['content']}</a>
+ <a href="${thread['url']}" class="thread"><span class="brd">[${thread['board_abr']}:${'%03d' % thread['length']}]</span> #{thread['content']}</a>
<?py #endfor ?>
+ </div>
+ <hr />
+ <div id="ctrl"><a id="refresh" href="/home.html">Actualizar</a>
+ <span>
+ <input id="autorefresh" type="checkbox" /><label for="autorefresh">Automático</label>
+ <span id="counter"></span>
+ </span>
+ <span><input id="autosound" type="checkbox" checked="checked" disabled="disabled" /><label for="autosound">Sonido</label><audio id="machina"><source src="msn.ogg" type="audio/ogg" /></audio></span>
+ <input type="hidden" name="limit" id="limit" value="#{latest_age_num}" />
</div>
- <hr />
- <div id="ctrl"><a id="refresh" href="/home.html">Actualizar</a>
- <span><input id="autorefresh" type="checkbox" /><label for="autorefresh">Automático</label><audio id="machina"><source src="msn.ogg" type="audio/ogg" /></audio></span>
- <span><input id="autosound" type="checkbox" checked="checked" disabled="disabled" /><label for="autosound">Sonido</label><input type="hidden" name="limit" id="limit" value="#{latest_age_num}" /></span>
- <a href="bai.rss"><img src="/rss.png" style="width:12px;height:12px;margin-right:4px;">RSS</a></div>
</td>
<td id="newstab" class="tab">
<h2>Blotter</h2>
@@ -107,7 +111,7 @@
<h2>Hilos nuevos</h2>
<div id="new_ib" class="threads">
<?py for thread in new_threads: ?>
- <a href="${thread['url']}" class="thread"><span class="brd">[${thread['board_name']}]</span> #{thread['content']}</a>
+ <a href="${thread['url']}" class="thread"><span class="brd">[${thread['board_abr']}]</span> #{thread['content']}</a>
<?py #endfor ?>
</div>
</td>
diff --git a/cgi/templates/home.rss b/cgi/templates/home.rss
deleted file mode 100644
index 1e5f552..0000000
--- a/cgi/templates/home.rss
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<rss version="2.0">
- <channel>
- <title>Bienvenido a Internet BBS/IB</title>
- <link>https://bienvenidoainternet.org/</link>
- <description>El BBS/IB más activo de la esfera hispana.</description>
- <language>es</language>
- <webMaster>burocracia@bienvenidoainternet.org (Staff ★)</webMaster>
- <image>
- <url>https://bienvenidoainternet.org/rss_logo.png</url>
- <title>Bienvenido a Internet BBS/IB</title>
- <link>https://bienvenidoainternet.org/</link>
- <width>144</width>
- <height>144</height>
- </image>
-<?py for post in posts: ?>
- <item>
- <title>${post['board_fulln']}: #{post['content']}</title>
- <pubDate>${post['timestamp_formatted']}</pubDate>
- <link>https://bienvenidoainternet.org#{post['url']}</link>
- <description>${post['message']}</description>
- </item>
-<?py #endfor ?>
- </channel>
-</rss>
diff --git a/cgi/templates/mobile/latest.html b/cgi/templates/mobile/latest.html
index 50fae25..8156e69 100644
--- a/cgi/templates/mobile/latest.html
+++ b/cgi/templates/mobile/latest.html
@@ -8,13 +8,13 @@
<div class="list">
<h3 style="text-align:center">BBS</h3>
<?py for thread in latest_age_bbs: ?>
- <a href="/cgi/mobileread${thread['url']}">#{thread['content']}<div>${thread['board_fulln']} <span>R:<span>#{int(thread['length'])-1}</span></span></div></a>
+ <a href="/cgi/mobileread${thread['url']}">#{thread['content']}<div>${thread['board_name']} <span>R:<span>#{int(thread['length'])-1}</span></span></div></a>
<?py #endfor ?>
</div>
<div class="list">
<h3 style="text-align:center">IB</h3>
<?py for thread in latest_age_ib: ?>
- <a href="/cgi/mobileread${thread['url']}">#{thread['content']}<div>${thread['board_fulln']} <span>R:<span>#{int(thread['length'])-1}</span></span></div></a>
+ <a href="/cgi/mobileread${thread['url']}">#{thread['content']}<div>${thread['board_name']} <span>R:<span>#{int(thread['length'])-1}</span></span></div></a>
<?py #endfor ?>
</div>
</body>
diff --git a/cgi/templates/mobile/newest.html b/cgi/templates/mobile/newest.html
index 37fd67f..76da88b 100644
--- a/cgi/templates/mobile/newest.html
+++ b/cgi/templates/mobile/newest.html
@@ -7,8 +7,8 @@
<div class="bar"><a href="//m.bienvenidoainternet.org">Secciones</a><a href="/cgi/mobilehome">Hilos activos</a><a href="/cgi/mobilenewest" class="sel">Nuevos hilos</a></div>
<div class="list">
<?py for thread in newthreads: ?>
- <a href="/cgi/mobileread${thread['url']}">#{thread['content']}<div>${thread['board_fulln']}</div></a>
+ <a href="/cgi/mobileread${thread['url']}">#{thread['content']}<div>${thread['board_name']}</div></a>
<?py #endfor ?>
</div>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/cgi/weabot.py b/cgi/weabot.py
index 48f19f5..3ecf0f3 100755
--- a/cgi/weabot.py
+++ b/cgi/weabot.py
@@ -235,8 +235,8 @@ class weabot(object):
self.output = renderTemplate('txt_newthread.html', {}, True)
elif path_split[1] == "mobilehome":
OpenDb()
- latest_age_ib = getLastAge(0, Settings.HOME_LASTPOSTS)
- latest_age_bbs = getLastAge(1, Settings.HOME_LASTPOSTS)
+ latest_age_ib = getLastAge(0, 10)
+ latest_age_bbs = getLastAge(1, 10)
for threads in latest_age_ib:
content = threads['url']
content = content.replace('/read/', '/')
@@ -261,8 +261,7 @@ class weabot(object):
content = content.replace('.html', '')
threads['url'] = content
caught = True
- self.output = renderTemplate(
- 'newest.html', {'newthreads': newthreads}, True)
+ self.output = renderTemplate('newest.html', {'newthreads': newthreads}, True)
elif path_split[1] == "mobileread":
OpenDb()
board = setBoard(path_split[2])
diff --git a/static/js/autorefresh.js b/static/js/autorefresh.js
index af61c8b..91ac05c 100644
--- a/static/js/autorefresh.js
+++ b/static/js/autorefresh.js
@@ -252,7 +252,7 @@ function counter() {
loadJSON();
} else {
refreshTime--;
- document.getElementById("counter").innerHTML = refreshTime + 1;
+ document.getElementById("counter").textContent = refreshTime + 1;
}
}
@@ -343,7 +343,7 @@ function startCounter() {
function stopCounter(str) {
clearInterval(refreshInterval);
- document.getElementById("counter").innerHTML = str;
+ document.getElementById("counter").textContent = str;
}
function autoRefresh(e) {
diff --git a/static/js/home.js b/static/js/home.js
index 32ade31..e395638 100644
--- a/static/js/home.js
+++ b/static/js/home.js
@@ -1,35 +1,6 @@
-console.log("%c¡Es calidad BaI!", "font-size: 32px; font-weight: bold;");
-
-function set_stylesheet(styletitle) {
- opcs.style = styletitle;
- parse();
- var links = document.getElementsByTagName("link");
- var found = false;
- for (var i = 0; i < links.length; i++) {
- var rel = links[i].getAttribute("rel");
- var title = links[i].getAttribute("title");
- if (rel.indexOf("style") != -1 && title) {
- links[i].disabled = true; // IE needs this to work. IE needs to die.
- if (styletitle == title) {
- links[i].disabled = false;
- found = true;
- }
- }
- }
-}
-
-function get_active_stylesheet() {
- var links = document.getElementsByTagName("link");
- for (var i = 0; i < links.length; i++) {
- var rel = links[i].getAttribute("rel");
- var title = links[i].getAttribute("title");
- if (rel.indexOf("style") != -1 && title && !links[i].disabled) return title;
- }
- return null;
-}
+console.log("%c¡Es calidad BaI!", "font-size:25px; font-weight:bold; text-decoration:underline; font-style:italic; text-decoration-line:underline overline;");
function check_news() {
- console.log("check_news");
var last_t = opcs.last;
var items = document.getElementsByClassName("ni");
var dates = document.getElementsByClassName("ni-d");
@@ -39,14 +10,25 @@ function check_news() {
dates[i].innerHTML =
'<img src="/new.gif" style="width:18px;height:7px;"><br />' +
dates[i].innerHTML;
+ } else {
+ break;
}
opcs.last = (Date.now() / 1000) | 0;
parse();
}
+function zeropad(n, w) {
+ var n = String(n);
+ if (n.length >= w) {
+ return n;
+ } else {
+ return (String(0).repeat(w) + n).slice(n.length);
+ }
+}
+
var lastTime = 0;
var refreshInterval;
-var refreshMaxTime = 30;
+var refreshMaxTime = 10;
var refreshTime;
var unread = {};
var last_threads = 0;
@@ -56,10 +38,8 @@ var http_request = new XMLHttpRequest();
function loadJSON() {
stopCounter("...");
var data_file =
- "/cgi/api/lastage?time=" +
- lastTime +
- "&limit=" +
- document.getElementById("limit").value;
+ "/cgi/api/lastage?time=" + lastTime +
+ "&limit=" + document.getElementById("limit").value;
http_request.open("GET", data_file, true);
http_request.send();
}
@@ -72,11 +52,19 @@ function setRead(threadId) {
}
function updatePostList(threads, serverTime) {
- if (refreshMaxTime <= 120) refreshMaxTime += 5;
+ if (refreshMaxTime >= 120 && refreshMaxTime <= 270) {
+ refreshMaxTime += 30;
+ } else if (refreshMaxTime >= 60 && refreshMaxTime < 120) {
+ refreshMaxTime += 10;
+ } else if (refreshMaxTime < 60) {
+ refreshMaxTime += 5;
+ }
+
var arrayLength = threads.length;
if (!arrayLength) return;
- html = "";
+ divbbs = "";
+ divib = "";
last_threads = threads;
last_serverTime = serverTime;
@@ -87,63 +75,76 @@ function updatePostList(threads, serverTime) {
for (var i = 0; i < arrayLength; i++) {
thread = threads[i];
+
if (thread.bumped >= lastTime) {
unread[thread.id] = true;
- news.push("- " + thread.board_fulln + ": " + thread.content);
+ news.push(thread.board_name + ": " + thread.content);
new_unread = true;
}
- if (unread[thread.id]) html += '<span class="new">';
- html +=
- '<a href="' +
- thread.url +
- '" class="thread" data-brd="' +
- thread.board_fulln +
- '" data-unix="' +
- thread.timestamp +
- '" data-last="' +
- thread.bumped +
- '" data-img="' +
- thread.thumb +
- '"><span class="brd">[' +
- thread.board_name +
- ']</span> <span class="cont">' +
- thread.content +
- '</span> <span class="rep">(' +
- thread.length +
- ")</span></a>";
+
+ html =
+ '<a href="' + thread.url + '" class="thread">' +
+ '<span class="brd">[' + thread.board_abr + ':' + zeropad(thread.length, 3) + ']</span> ' +
+ thread.content + '</a>'
+
if (unread[thread.id]) {
- html += "</span>";
+ html = '<span class="new">' + html + "</span>";
newposts++;
}
+
+ if (thread.board_type == 1) {
+ divbbs += html;
+ } else {
+ divib += html;
+ }
}
- if (newposts) newTitle = "(" + newposts + ") " + newTitle;
+
+ if (newposts) {
+ newTitle = "(" + newposts + ") " + newTitle;
+ }
+
if (new_unread) {
- document.getElementById("newposts").style = "color:red";
notif(
"Bienvenido a Internet BBS/IB",
- "Hay nuevos mensajes:\n" + news.join("\n")
+ "Hay nuevos mensajes en:\n" + news.join("\n")
);
+
refreshMaxTime = 10;
+
if (document.getElementById("autosound").checked) {
document.getElementById("machina").volume = 0.6;
document.getElementById("machina").play();
}
}
- window.parent.document.title = newTitle;
+
document.title = newTitle;
- document.getElementById("postlist").innerHTML = html;
+ window.addEventListener('focus', markRead);
+
+ document.getElementById("postlistbbs").innerHTML = divbbs;
+ document.getElementById("postlistib").innerHTML = divib;
+}
+
+function markRead() {
+ document.title = bainame;
+ window.removeEventListener('focus', markRead);
}
function notif(title, msg) {
- var n = new Notification(title, { body: msg });
- setTimeout(n.close.bind(n), 10000);
+ if (Notification.permission === "granted") {
+ var n = new Notification(title, {
+ body: msg,
+ icon: 'https://bienvenidoainternet.org/favicon.ico',
+ });
+ setTimeout(n.close.bind(n), 5000);
+ }
}
function counter() {
- if (refreshTime < 1) loadJSON();
- else {
+ if (refreshTime < 1) {
+ loadJSON();
+ } else {
refreshTime--;
- document.getElementById("counter").innerHTML = "– " + (refreshTime + 1);
+ document.getElementById("counter").textContent = "(" + (refreshTime + 1) + ")";
}
}
@@ -155,18 +156,26 @@ function startCounter() {
function stopCounter(str) {
clearInterval(refreshInterval);
- document.getElementById("counter").innerHTML = str;
+ document.getElementById("counter").textContent = str;
}
function autoRefresh(e) {
if (chk.checked) {
if (chk_snd) chk_snd.disabled = false;
- Notification.requestPermission();
+
+ if (!("Notification" in window)) {
+ console.log("Alerta: Este navegador no soporta notificaciones.");
+ } else {
+ Notification.requestPermission();
+ }
+
lastTime = Math.floor(Date.now() / 1000);
refreshTime = refreshMaxTime;
startCounter();
} else {
- if (chk_snd) chk_snd.disabled = true;
+ if (chk_snd) {
+ chk_snd.disabled = true;
+ }
stopCounter("");
}
}
@@ -177,7 +186,9 @@ http_request.onreadystatechange = function() {
if (jsonObj.state == "success") {
updatePostList(jsonObj.threads, jsonObj.time);
lastTime = jsonObj.time;
- if (chk.checked) startCounter();
+ if (chk.checked) {
+ startCounter();
+ }
}
}
};
@@ -187,49 +198,38 @@ function parse() {
}
document.addEventListener("DOMContentLoaded", function() {
- console.log("1");
- window.parent.document.title = document.getElementsByTagName(
- "title"
- )[0].textContent;
+ var bainame = "Bienvenido a Internet BBS/IB";
if (localStorage.hasOwnProperty("home"))
opcs = JSON.parse(localStorage.getItem("home"));
else {
- opcs = { style: "IB", auto: false, sound: false, last: 0 };
+ opcs = { auto: false, sound: false, last: 0 };
parse();
}
- //set_stylesheet(opcs.style);
- console.log("2");
-
- //var css = document.getElementById("change_style").getElementsByTagName("a");
- //for (var j = 0; j < css.length; j++) {
- // css[j].addEventListener("click", function(e) {
- // e.preventDefault();
- // set_stylesheet(this.textContent);
- // });
- //}
- console.log("2a");
+
+ check_news();
+
document.getElementById("autorefresh").addEventListener("click", function(e) {
opcs.auto = !opcs.auto;
autoRefresh();
parse();
});
- console.log("2b");
document.getElementById("autosound").addEventListener("click", function(e) {
opcs.sound = !opcs.sound;
parse();
});
- console.log("3");
- check_news();
- console.log("4");
chk = document.getElementById("autorefresh");
chk_snd = document.getElementById("autosound");
if (opcs.auto) {
chk.checked = true;
autoRefresh();
- } else chk.checked = false;
- if (opcs.sound) chk_snd.checked = true;
- else chk_snd.checked = false;
- console.log("5");
+ } else {
+ chk.checked = false;
+ }
+ if (opcs.sound) {
+ chk_snd.checked = true;
+ } else {
+ chk_snd.checked = false;
+ }
});