diff options
42 files changed, 385 insertions, 709 deletions
diff --git a/cgi/templates/board.html b/cgi/templates/board.html index 43cefd9..7173fde 100644 --- a/cgi/templates/board.html +++ b/cgi/templates/board.html @@ -107,11 +107,9 @@ <ul> #{postarea_desc} <?py if supported_filetypes: ?> - <li>Archivos permitidos: <span id="filetypes">#{', '.join(supported_filetypes).upper()}</span>. Hasta <span id="maxsize">#{maxsize}</span>KB. Miniaturas: #{maxdimensions}x#{maxdimensions}px</li> + <li>Archivos permitidos: #{', '.join(supported_filetypes).upper()}. Hasta #{maxsize}KB. Miniaturas: #{maxdimensions}x#{maxdimensions}px</li> <?py #endif ?> - <?py if not replythread: ?> <li><a href="/cgi/catalog/${board}">Catálogo de hilos</a> (Orden: <a href="/cgi/catalog/${board}?sort=1">Nuevo</a>/<a href="/cgi/catalog/${board}?sort=2">Viejo</a>/<a href="/cgi/catalog/${board}?sort=3">Más</a>/<a href="/cgi/catalog/${board}?sort=4">Menos</a>)</li> - <?py #endif ?> <?py if int(maxage) != 0: ?> <li>Los hilos son automáticamente eliminados a los <b>#{maxage}</b> días de edad.</li> <?py #endif ?> @@ -131,14 +129,14 @@ <input type="hidden" name="board" value="#{board}" /> <?py if threads: ?> <?py for thread in threads: ?> + <div id="t#{thread['id']}" class="thread" data-length="#{thread['length']}"> <?py if not replythread: ?> - <span id="unhide#{thread['id']}#{board}" style="display:none;">Hilo <a href="#{boards_url}#{board}/res/#{thread['id']}.html">#{thread['id']}</a> oculto. <a class="tt" href="#">Ver hilo</a></span> + <span class="unhide" style="display:none;">Hilo <a href="#{boards_url}#{board}/res/#{thread['id']}.html">#{thread['id']}</a> oculto. <a class="tt" href="#">Ver hilo</a></span> <?py #endif ?> - <div id="thread#{thread['id']}#{board}" class="thread" data-length="#{thread['length']}"> <?py for post in thread['posts']: ?> <?py if int(post['parentid']) != 0: ?> <table><tr><td class="ell">…</td> - <td class="reply" id="reply#{post['id']}"> + <td class="reply" id="p#{post['id']}"> <?py elif post['file']: ?> <?py if post['image_width'] != '0': ?> <div class="fs"><span>Nombre de archivo:</span><a href="#{images_url}#{board}/src/#{post['file']}" class="expimg" target="_blank" data-id="#{post['id']}" data-thumb="#{images_url}#{board}/thumb/#{post['thumb']}" data-w="#{post['image_width']}" data-h="#{post['image_height']}" data-tw="#{post['thumb_width']}" data-th="#{post['thumb_height']}">#{post['file']}</a>-(#{post['file_size']} B, #{post['image_width']}x#{post['image_height']}) diff --git a/cgi/templates/board.jp.html b/cgi/templates/board.jp.html index a595780..f463dee 100644 --- a/cgi/templates/board.jp.html +++ b/cgi/templates/board.jp.html @@ -107,11 +107,9 @@ <ul> #{postarea_desc} <?py if supported_filetypes: ?> - <li>添付可能:<span id="filetypes">#{', '.join(supported_filetypes).upper()}</span>. <span id="maxsize">#{maxsize}</span>KBまで. #{maxdimensions}x#{maxdimensions}以上は縮小.</li> + <li>添付可能:#{', '.join(supported_filetypes).upper()}. #{maxsize}KBまで. #{maxdimensions}x#{maxdimensions}以上は縮小.</li> <?py #endif ?> - <?py if not replythread: ?> <li><a href="#{cgi_url}catalog/${board}">カタログ</a> (ソート:<a href="/cgi/catalog/${board}?sort=1">新順</a>/<a href="/cgi/catalog/${board}?sort=2">古順</a>/<a href="/cgi/catalog/${board}?sort=3">多順</a>/<a href="/cgi/catalog/${board}?sort=4">少順</a>)</li> - <?py #endif ?> <?py if int(maxage) != 0: ?> <li>スレは<b>#{maxage}</b>日間経つと自動的に消されられます.</li> <?py #endif ?> @@ -131,14 +129,14 @@ <input type="hidden" name="board" value="#{board}" /> <?py if threads: ?> <?py for thread in threads: ?> + <div id="t#{thread['id']}" class="thread" data-length="#{thread['length']}"> <?py if not replythread: ?> - <span id="unhide#{thread['id']}#{board}" style="display:none">スレ<a href="#{boards_url}#{board}/res/#{thread['id']}.html">#{thread['id']}</a>は隠しました. <a class="tt" href="#">スレを表示</a></span> + <span class="unhide" style="display:none;">スレ<a href="#{boards_url}#{board}/res/#{thread['id']}.html">#{thread['id']}</a>は隠しました. <a class="tt" href="#">スレを表示</a></span> <?py #endif ?> - <div id="thread#{thread['id']}#{board}" class="thread" data-length="#{thread['length']}"> <?py for post in thread['posts']: ?> <?py if int(post['parentid']) != 0: ?> <table><tr><td class="ell">…</td> - <td class="reply" id="reply#{post['id']}"> + <td class="reply" id="p#{post['id']}"> <?py elif post['file']: ?> <?py if post['image_width'] != '0': ?> <div class="fs"><span>画像ファイル名:</span><a href="#{images_url}#{board}/src/#{post['file']}" class="expimg" target="_blank" data-id="#{post['id']}" data-thumb="#{images_url}#{board}/thumb/#{post['thumb']}" data-w="#{post['image_width']}" data-h="#{post['image_height']}" data-tw="#{post['thumb_width']}" data-th="#{post['thumb_height']}">#{post['file']}</a>-(#{post['file_size']} B, #{post['image_width']}x#{post['image_height']}) diff --git a/cgi/templates/catalog.html b/cgi/templates/catalog.html index 4faa2d2..8c0d80e 100644 --- a/cgi/templates/catalog.html +++ b/cgi/templates/catalog.html @@ -2,29 +2,31 @@ <div id="ctrl"> [<a href="#{boards_url}#{board}/">Volver al IB</a>] [Orden: - <a class="cat_sort" data-sort="0" href="?sort=0">#{"<b>Normal</b>" if i_sort == "" else "Normal"}</a> - <a class="cat_sort" data-sort="1" href="?sort=1">#{"<b>Nuevo</b>" if i_sort == "1" else "Nuevo"}</a> - <a class="cat_sort" data-sort="2" href="?sort=2">#{"<b>Viejo</b>" if i_sort == "2" else "Viejo"}</a> - <a class="cat_sort" data-sort="3" href="?sort=3">#{"<b>Más</b>" if i_sort == "3" else "Más"}</a> - <a class="cat_sort" data-sort="4" href="?sort=4">#{"<b>Menos</b>" if i_sort == "4" else "Menos"}</a>] - [Tamaño: <a id="cat_size" href="#">Pequeño</a>] - [Texto: <a id="cat_hide" href="#">Ocultar</a>] - [Buscar: <input id="cat_search" type="text"><input type="hidden" name="board" value="#{board}" /> + <a href="?sort=0">#{"<b>Normal</b>" if i_sort == "" else "Normal"}</a> + <a href="?sort=1">#{"<b>Nuevo</b>" if i_sort == "1" else "Nuevo"}</a> + <a href="?sort=2">#{"<b>Viejo</b>" if i_sort == "2" else "Viejo"}</a> + <a href="?sort=3">#{"<b>Más</b>" if i_sort == "3" else "Más"}</a> + <a href="?sort=4">#{"<b>Menos</b>" if i_sort == "4" else "Menos"}</a>] + [Tamaño: <a id="cat-size" href="#">Pequeño</a>] + [Texto: <a id="cat-hide" href="#">Ocultar</a>] + [Filtrar: <input id="cat-srch" type="text"> + <span id="hid-label" style="display:none;">[Hilos ocultos: <a id="hid-num" href="#"></a>]</span> </div> <div class="extramode">Modo Catálogo</div> <div id="catalog" style="margin:1em auto;"> <?py i = 1 ?> - <?py for thread in threads: ?><div id="cat#{thread['id']}#{board}" class="thread" data-num="${i}" data-id="#{thread['id']}" data-res="${thread['length']}"> + <?py for thread in threads: ?> + <div id="t#{thread['id']}" class="thread"> <?py if thread['thumb'] != '': ?> - <a href="#{boards_url}#{board}/res/#{thread['id']}.html" rel="nofollow"><img src="#{images_url}#{board}/cat/#{thread['thumb']}" alt="#{thread['id']}" /></a><br /> + <a href="#{boards_url}#{board}/res/#{thread['id']}.html" rel="nofollow"><img src="#{images_url}#{board}/cat/#{thread['thumb']}" alt="#{thread['id']}" /></a> <?py #endif ?> - <div class="replies">Respuestas: ${thread['length']}</div> <?py if thread['thumb'] != '': ?> - <p><span class="subj">${thread['subject']}</span><br />${thread['message']}</p> + <p><strong class="subj">${thread['subject']} <span>(${thread['length']})</span></strong><br />${thread['message']}</p> <?py else: ?> - <p><a href="#{boards_url}#{board}/res/#{thread['id']}.html" rel="nofollow" class="subj">${thread['subject']}</a><br />${thread['message']}</p> + <p><a href="#{boards_url}#{board}/res/#{thread['id']}.html" rel="nofollow"><strong class="subj">${thread['subject']} <span>(${thread['length']})</span></strong></a><br />${thread['message']}</p> <?py #endif ?> <?py i += 1 ?> - </div><?py #endfor ?> + </div> + <?py #endfor ?> </div> <?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/txt_archive.html b/cgi/templates/txt_archive.html index 6749352..2b5caa3 100644 --- a/cgi/templates/txt_archive.html +++ b/cgi/templates/txt_archive.html @@ -44,15 +44,11 @@ <h3>#{thread['subject']} <span>(${(str(thread['length'])+" respuestas") if thread['length'] > 1 else "Una respuesta"})</span></h3> <?py for post in thread['posts']: ?> <?py if post['IS_DELETED'] == '1': ?> - <h4 class="deleted">#{post['num']} : Mensaje eliminado por el usuario.</h4> + <div class="reply deleted" data-n="#{post['num']}"><h4>#{post['num']} : Mensaje eliminado por usuario.</h4></div> <?py elif post['IS_DELETED'] == '2': ?> - <h4 class="deleted">#{post['num']} : Mensaje eliminado por miembro del staff.</h4> + <div class="reply deleted" data-n="#{post['num']}"><h4>#{post['num']} : Mensaje eliminado por staff.</h4></div> <?py else: ?> - <?py if post['num'] == 1: ?> - <div class="reply first" data-n="#{post['num']}"> - <?py else: ?> - <div class="reply" data-n="#{post['num']}"> - <?py #endif ?> + <div class="reply#{' first' if post['num'] == 1 else ''}" data-n="#{post['num']}"> <h4>#{post['num']} : <?py if post['email']: ?> <?py if post['tripcode']: ?> @@ -95,4 +91,4 @@ <div class="end">weabot.py ver <?py include('templates/revision.html') ?> Bienvenido a Internet BBS/IB</div> <a name="bottom"></a> </body> -</html> +</html>
\ No newline at end of file diff --git a/cgi/templates/txt_board.en.html b/cgi/templates/txt_board.en.html index 1f7de9c..8c94361 100644 --- a/cgi/templates/txt_board.en.html +++ b/cgi/templates/txt_board.en.html @@ -45,11 +45,11 @@ <h2><small>[#{titer}:#{thread['length']}]</small><a href="#{boards_url}#{board}/read/#{thread['timestamp']}/#{'l50' if thread['length'] > 50 else ''}">#{thread['posts'][0]['subject']}</a></h2> <?py for post in thread['posts']: ?> <?py if post['IS_DELETED'] == '1': ?> - <h4 class="deleted">#{post['num']} : Post deleted by user.</h4> + <div class="reply deleted" id="p#{post['id']}" data-n="#{post['num']}"><h4>#{post['num']} : Post deleted by user.</h4></div> <?py elif post['IS_DELETED'] == '2': ?> - <h4 class="deleted">#{post['num']} : Post deleted by staff.</h4> + <div class="reply deleted" id="p#{post['id']}" data-n="#{post['num']}"><h4>#{post['num']} : Post deleted by staff.</h4></div> <?py else: ?> - <div class="reply#{' first' if post['num'] == 1 else ''}" data-n="#{post['num']}"> + <div class="reply#{' first' if post['num'] == 1 else ''}" id="p#{post['id']}" data-n="#{post['num']}"> <h4>#{post['num']} : <?py if post['email']: ?> <?py if post['tripcode']: ?> diff --git a/cgi/templates/txt_board.html b/cgi/templates/txt_board.html index a165ac1..7b0207b 100644 --- a/cgi/templates/txt_board.html +++ b/cgi/templates/txt_board.html @@ -46,11 +46,11 @@ <h2><span>[#{titer}:#{thread['length']}]</span><a href="#{boards_url}#{board}/read/#{thread['timestamp']}/#{'l50' if thread['length'] > 50 else ''}">#{thread['posts'][0]['subject']}</a></h2> <?py for post in thread['posts']: ?> <?py if post['IS_DELETED'] == '1': ?> - <h4 class="deleted">#{post['num']} : Mensaje eliminado por usuario.</h4> + <div class="reply deleted" id="p#{post['id']}" data-n="#{post['num']}"><h4>#{post['num']} : Mensaje eliminado por usuario.</h4></div> <?py elif post['IS_DELETED'] == '2': ?> - <h4 class="deleted">#{post['num']} : Mensaje eliminado por staff.</h4> + <div class="reply deleted" id="p#{post['id']}" data-n="#{post['num']}"><h4>#{post['num']} : Mensaje eliminado por staff.</h4></div> <?py else: ?> - <div class="reply#{' first' if post['num'] == 1 else ''}" data-id="#{post['id']}" data-n="#{post['num']}"> + <div class="reply#{' first' if post['num'] == 1 else ''}" id="p#{post['id']}" data-n="#{post['num']}"> <h4>#{post['num']} : <?py if post['email']: ?> <?py if post['tripcode']: ?> diff --git a/cgi/templates/txt_error.html b/cgi/templates/txt_error.html index 8a16a63..d8ae7cd 100644 --- a/cgi/templates/txt_error.html +++ b/cgi/templates/txt_error.html @@ -20,7 +20,8 @@ ul {padding-left:40px;} <body> <div class="h err">ERROR: #{error}</div> <blockquote> - Host <b>${info['host']}</b><br> + Host <b>${info['host']}</b> + <br> <blockquote> Nombre: <b>${info['name']}</b><br> E-mail: ${info['email']}<br> @@ -39,9 +40,10 @@ ul {padding-left:40px;} [<a href="#{boards_url}#{board}">Ir a la sección</a>]<br /> [<a href="#{cgi_url}threadlist/#{board}">Ir a la lista de hilos</a>]<br /> </b> - </ul><br> - <div class="h sub2">Contacto</div> - <ul style="line-height:1.5;"> + </ul> + <br> + <div class="h sub2">Contacto</div> + <ul style="line-height:1.5;"> Cualquier problema con el sitio por favor hacerlo llegar al staff de BaI.<br /> Para ello contáctanos en la <a href="/bai/">sección de discusión</a>. </ul> diff --git a/cgi/templates/txt_thread.en.html b/cgi/templates/txt_thread.en.html index 84c3fc1..45f8f8e 100644 --- a/cgi/templates/txt_thread.en.html +++ b/cgi/templates/txt_thread.en.html @@ -27,16 +27,12 @@ <h3>#{thread['subject']} <span>(${(str(thread['length'])+" replies") if thread['length']>1 else "1 reply"})</span></h3> <?py for post in thread['posts']: ?> <?py if post['IS_DELETED'] == '1': ?> - <h4 class="deleted">#{post['num']} : Post deleted by user.</h4> + <div class="reply deleted" id="p#{post['id']}" data-n="#{post['num']}"><h4>#{post['num']} : Post deleted by user.</h4></div> <?py elif post['IS_DELETED'] == '2': ?> - <h4 class="deleted">#{post['num']} : Post deleted by staff.</h4> + <div class="reply deleted" id="p#{post['id']}" data-n="#{post['num']}"><h4>#{post['num']} : Post deleted by staff.</h4></div> <?py else: ?> - <?py if post['num'] == 1: ?> - <div class="reply first" data-n="#{post['num']}"> - <?py else: ?> - <div class="reply" data-n="#{post['num']}"> - <?py #endif ?> - <h4><a href="#" class="num">#{post['num']}</a> : + <div class="reply#{' first' if post['num'] == 1 else ''}" id="p#{post['id']}" data-n="#{post['num']}"> + <h4>#{post['num']} : <?py if post['email']: ?> <?py if post['tripcode']: ?> <a href="mailto:#{post['email']}"><span class="name"><b>#{post['name']}</b> #{post['tripcode']}</span></a> diff --git a/cgi/templates/txt_thread.html b/cgi/templates/txt_thread.html index 1d70f59..18293c1 100644 --- a/cgi/templates/txt_thread.html +++ b/cgi/templates/txt_thread.html @@ -27,16 +27,12 @@ <h3>#{thread['subject']} <span>(${(str(thread['length'])+" respuestas") if thread['length']>1 else "Una respuesta"})</span></h3> <?py for post in thread['posts']: ?> <?py if post['IS_DELETED'] == '1': ?> - <h4 class="deleted">#{post['num']} : Mensaje eliminado por usuario.</h4> + <div class="reply deleted" id="p#{post['id']}" data-n="#{post['num']}"><h4>#{post['num']} : Mensaje eliminado por usuario.</h4></div> <?py elif post['IS_DELETED'] == '2': ?> - <h4 class="deleted">#{post['num']} : Mensaje eliminado por staff.</h4> + <div class="reply deleted" id="p#{post['id']}" data-n="#{post['num']}"><h4>#{post['num']} : Mensaje eliminado por staff.</h4></div> <?py else: ?> - <?py if post['num'] == 1: ?> - <div class="reply first" data-n="#{post['num']}"> - <?py else: ?> - <div class="reply" data-n="#{post['num']}"> - <?py #endif ?> - <h4><a href="#" class="num">#{post['num']}</a> : + <div class="reply#{' first' if post['num'] == 1 else ''}" id="p#{post['id']}" data-n="#{post['num']}"> + <h4>#{post['num']} : <?py if post['email']: ?> <?py if post['tripcode']: ?> <a href="mailto:#{post['email']}"><span class="name"><b>#{post['name']}</b> #{post['tripcode']}</span></a> diff --git a/static/css/another.css b/static/css/another.css index d635e08..ca684d1 100644 --- a/static/css/another.css +++ b/static/css/another.css @@ -2,7 +2,7 @@ html, body { background: #181818; color: #d8d8d8; - font-size: 13px; + font-size: 10pt; } .rep { @@ -19,9 +19,9 @@ a { text-decoration: none; } -a:hover { +a:focus { color: #86c1b9; - text-decoration: none; + text-decoration: underline; } hr { @@ -30,6 +30,10 @@ hr { margin-bottom: 10px; } +#main_nav { + font-size: 10pt; +} + .form textarea { width: 295px; min-width: 295px; @@ -50,7 +54,6 @@ textarea { } .postblock { - font-size: 12px; padding: 3px 5px; width: 100px; background: #282828; @@ -59,10 +62,6 @@ textarea { font-weight: normal; } -.rules { - font-size: 11px; -} - .fs { font-size: 11px; } @@ -81,19 +80,6 @@ td #text { font-size: 10pt; } -blockquote { - font-size: 13px; - margin-left: 1.8em; - padding-right: 3em; - padding-bottom: 0.3em; -} - -.logo { - font-size: 18pt; - margin: 0px; - padding-bottom: 2em; -} - .postform { font-size: 10pt; } @@ -102,12 +88,10 @@ blockquote { background-color: #282828; border: 1px solid; border-color: #383838 #282828 #282828 #383838; - padding: 0px 7px 7px 7px; } .subj { color: #3b7335; - font-weight: bold; } .thread .fs { @@ -121,14 +105,9 @@ blockquote { color: #181818; } -#main_nav { - font-size: 9pt; -} - .pg, .pg span { border: none; - font-size: 10pt; } .pg span input { @@ -191,16 +170,6 @@ blockquote { color: #f8f8f8; } -#catalog .thread:hover { - background: #373a44; - box-shadow: 0 0 5px 5px #373a44; -} - -#catalog .replies { - color: #909090; - font-weight: bold; -} - .yt { background: #292c33; border: 1px solid #5e6b7d; diff --git a/static/css/buri.css b/static/css/buri.css index 032a07f..02df6c4 100644 --- a/static/css/buri.css +++ b/static/css/buri.css @@ -45,7 +45,6 @@ a:hover .name b, } .subj { color: #0f0c5d; - font-weight: bold; } .name { color: #228854; @@ -74,14 +73,6 @@ a:hover .name b, background: #0f8fe1; color: #000; } -#catalog .thread:hover { - background: #d6daf0; - box-shadow: 0 0 5px 5px #d6daf0; -} -#catalog .replies { - color: #555555; - font-weight: bold; -} .yt { background: #e3e6f5; border: 1px solid #c1c6e7; diff --git a/static/css/cyber.css b/static/css/cyber.css index 5039610..ecc5e41 100644 --- a/static/css/cyber.css +++ b/static/css/cyber.css @@ -95,7 +95,6 @@ input[type="submit"]:active { } .subj { color: #7b68ee; - font-weight: bold; } .name { color: #fbde2d; @@ -162,13 +161,6 @@ input[type="submit"]:active { border-radius: 0; box-shadow: none; } -#catalog .thread:hover { - background: #383838; -} -#catalog .replies { - color: #428c29; - font-weight: bold; -} .yt { background: #222; border: 1px solid; diff --git a/static/css/dickgirl.css b/static/css/dickgirl.css index b33d7ef..32fc960 100644 --- a/static/css/dickgirl.css +++ b/static/css/dickgirl.css @@ -41,7 +41,6 @@ a:hover .name, } .subj { color: #de9d7f; - font-weight: bold; } .name { color: #afd775; @@ -69,14 +68,6 @@ a:hover .name, background: #aaf; color: #fff; } -#catalog .thread:hover { - background: #3b6b94; - box-shadow: 0 0 5px 5px #3b6b94; -} -#catalog .replies { - color: #aaa; - font-weight: bold; -} .yt { background: #2f587a; border: 1px solid #1b2933; diff --git a/static/css/easymodo.css b/static/css/easymodo.css index d874fd2..cee15b0 100644 --- a/static/css/easymodo.css +++ b/static/css/easymodo.css @@ -52,7 +52,6 @@ a:hover .name b, } .subj { color: #0f0c5d; - font-weight: bold; } .name { color: #228854; @@ -78,14 +77,6 @@ a:hover .name b, .managertable th { background: #b8caba; } -#catalog .thread:hover { - background: #d6f0da; - box-shadow: 0 0 5px 5px #d6f0da; -} -#catalog .replies { - color: #707070; - font-weight: bold; -} .yt { background: #c2d6c5; border: 1px solid #7a877c; diff --git a/static/css/fennec.css b/static/css/fennec.css index 39bbb3a..8c7ede7 100644 --- a/static/css/fennec.css +++ b/static/css/fennec.css @@ -37,7 +37,6 @@ hr { } .subj { color: #900100; - font-weight: bold; } .name { color: #b30a09; @@ -61,14 +60,6 @@ hr { background: #fec; border: 1px solid #edd88d; } -#catalog .thread:hover { - background: #edd88d; - box-shadow: 0 0 5px 5px #edd88d; -} -#catalog .replies { - color: #909090; - font-weight: bold; -} .yt { background: #fec; border: 1px solid #ec4b55; diff --git a/static/css/futaba.css b/static/css/futaba.css index 1588cd1..3a1757b 100644 --- a/static/css/futaba.css +++ b/static/css/futaba.css @@ -38,7 +38,6 @@ a:hover .name b, } .subj { color: #cc1105; - font-weight: bold; } .name { color: #228854; @@ -68,14 +67,6 @@ a:hover .name b, background: #aaaa66; color: #400000; } -#catalog .thread:hover { - background: #f0e0d6; - box-shadow: 0 0 5px 5px #f0e0d6; -} -#catalog .replies { - color: #909090; - font-weight: bold; -} .yt { background: #f2e5dd; border: 1px solid #e7cfc1; diff --git a/static/css/guro.css b/static/css/guro.css index 6c00cc7..56c3a69 100644 --- a/static/css/guro.css +++ b/static/css/guro.css @@ -53,7 +53,6 @@ input[type="button"]:active { } .subj { color: #0f0c5d; - font-weight: bold; } .name { color: #117743; @@ -83,14 +82,6 @@ hr { border-top: 1px solid #d9af9e; height: 0; } -#catalog .thread:hover { - background: #d9af9e; - box-shadow: 0 0 5px 5px #d9af9e; -} -#catalog .replies { - color: #555; - font-weight: bold; -} .yt { background: #c39e8e; border: 1px solid #8d6656; diff --git a/static/css/ib.css b/static/css/ib.css index b1bcefe..66ba8ae 100644 --- a/static/css/ib.css +++ b/static/css/ib.css @@ -98,8 +98,12 @@ textarea { margin: 4px 0; } .reply .info { + line-height: 1; padding-right: 50px; } +.subj { + font-weight: bold; +} .hsbn { font-size: 120%; } @@ -113,9 +117,6 @@ textarea { vertical-align: top; width: 20px; } -.deleted { - color: #777; -} .reflink a { color: inherit; text-decoration: none; @@ -124,6 +125,29 @@ textarea { #q-p .fs { margin-left: 20px; } +.deleted { + color: #777; +} +.thread.hidden > div, .thread.hidden > table, .thread.hidden > a, .thread.hidden > blockquote, +.reply.hidden input, .reply.hidden blockquote, .reply.hidden .thumb, .reply.hidden .fs, .reply.hidden .quoted, +#catalog .hidden { + display: none; +} +.res .thread.hidden > div, .res .thread.hidden > blockquote, #catalog .hidden a { + display: block; +} +.res .thread.hidden > a { + display: inline; +} +.res .thread.hidden > table { + display: table; +} +.reply.hidden .info { + opacity: 0.7; +} +.thread.hidden .unhide { + display: inline !important; +} .pg { border: 1px solid; border-spacing: 2px; @@ -153,7 +177,7 @@ textarea { font-size: 12px; line-height: 1; margin: 0 -1px; - padding: 4px; + padding: 2px 4px; } .thumbpreview { display: inline-block; @@ -166,50 +190,66 @@ textarea { #catalog { text-align: center; } -#cat_search { +#cat-srch { border: 1px inset gray; padding: 0; - width: 125px; + width: 126px; } #catalog .thread { - border-radius: 4px; display: inline-block; font-size: 14px; - margin: 5px; + line-height: 16px; + margin: 0 .25em .5em; overflow: hidden; - padding: 2px; + padding: .2em; position: relative; vertical-align: top; - max-height: 275px; - width: 175px; + max-height: 256px; + width: 165px; } #catalog.enlarged .thread { - margin: 10px 5px; - max-height: 375px; - width: 275px; + margin: 0 .5em 1em; + max-height: 350px; + width: 265px; } #catalog .thread a img { - border-radius: 3px; - margin-bottom: 2px; + border-radius: 4px; + margin-bottom: 4px; } #catalog.enlarged .thread a img { - min-width: 150px; - min-height: 150px; + min-width: 128px; + min-height: 128px; max-width: 250px; max-height: 250px; } #catalog .subj { font-size: 16px; + font-weight: bold; +} +#catalog .subj span { + font-weight: normal; } #catalog p { margin: 0; } +#catalog.notxt p { + display: none; +} +#catalog .hidden { + display: none; +} +#catalog.showhid .thread.hidden { + display: inline-block; +} +#catalog.showhid .thread { + display: none; +} .yt { font-size: 12px; display: inline-block; line-height: 13px; margin: 2px 0; - padding: 5px; + padding: 4px; text-decoration: none; } .yt b { @@ -220,7 +260,7 @@ textarea { height: 60px; overflow: hidden; float: left; - margin-right: 5px; + margin-right: 4px; } .yt .pvw img { margin-top: -15px; @@ -255,12 +295,9 @@ textarea { .managertable .message { display: block; } - .managertable .message.vip { font-family: Mona, Monapo, IPAMonaPGothic, "MS PGothic", YOzFontAA97; - font-size: 14px; } - .managertable .actions { display: block; margin-top: 0.5em; @@ -344,4 +381,4 @@ textarea { display: block; width: 100%; } -} +}
\ No newline at end of file diff --git a/static/css/kraut.css b/static/css/kraut.css index f0e0b1c..45818fa 100644 --- a/static/css/kraut.css +++ b/static/css/kraut.css @@ -50,7 +50,6 @@ a:hover .name, } .subj { color: #c33; - font-weight: bold; } .name { color: #33c; @@ -86,14 +85,6 @@ a:hover .name, background: #313370; color: #fff; } -#catalog .thread:hover { - background: #aac; - box-shadow: 0 0 5px 5px #aac; -} -#catalog .replies { - color: #888; - font-weight: bold; -} .yt { background: #99b; border: 1px solid #313370; diff --git a/static/css/night.css b/static/css/night.css index 4057ed3..725fa99 100644 --- a/static/css/night.css +++ b/static/css/night.css @@ -37,7 +37,6 @@ a:hover .name, .subj { background: inherit; color: #962e5f; - font-weight: bold; } .name { color: #5f962e; @@ -64,14 +63,6 @@ hr { border-top: 1px solid #979ea3; height: 0; } -#catalog .thread:hover { - background: #2f3d48; - box-shadow: 0 0 5px 5px #2f3d48; -} -#catalog .replies { - color: #909090; - font-weight: bold; -} .yt { background: #52626d; border: 1px solid #131d25; diff --git a/static/css/photon.css b/static/css/photon.css index e3dfb84..8a72339 100644 --- a/static/css/photon.css +++ b/static/css/photon.css @@ -41,7 +41,6 @@ a:hover .name b, } .subj { color: #111; - font-weight: bold; } .name { color: #f30; @@ -72,14 +71,6 @@ hr { border-top: 1px solid #bbb; height: 0; } -#catalog .thread:hover { - background: #ddd; - box-shadow: 0 0 5px 5px #ddd; -} -#catalog .replies { - color: #888; - font-weight: bold; -} .yt { background: #e9e9e9; border: 1px solid #bbb; diff --git a/static/css/putaba.css b/static/css/putaba.css index a3ee9e2..74d5254 100644 --- a/static/css/putaba.css +++ b/static/css/putaba.css @@ -117,9 +117,8 @@ hr, color: #789922; } .subj { - font-weight: bold; - color: #909; background: #cf0; + color: #909; letter-spacing: -1px; } .name { @@ -170,14 +169,6 @@ input[type="submit"].psei { .managertable th { background: #ddd; } -#catalog .thread:hover { - background: #e6e6e6; -} -#catalog .replies { - background: #00ffff; - color: #909090; - font-weight: bold; -} .yt { background: #f7f7f7; border: 1px solid #999; diff --git a/static/css/red.css b/static/css/red.css index e5698dd..3efa130 100644 --- a/static/css/red.css +++ b/static/css/red.css @@ -46,7 +46,6 @@ a:hover .name, } .subj { color: #cc1105; - font-weight: bold; } .highlight { background: #f0e0d6; @@ -59,17 +58,6 @@ a:hover .name, background: #fa4a4a; color: #400000; } -#catalog .thread:hover { - background: #fbb; -} -#catalog .thread:hover { - background: #fbb; - box-shadow: 0 0 5px 5px #fbb; -} -#catalog .replies { - color: #909090; - font-weight: bold; -} .yt { background: #fed8d8; border: 1px solid #fe9b9b; diff --git a/static/css/rene.css b/static/css/rene.css index a4f3b86..a93500c 100644 --- a/static/css/rene.css +++ b/static/css/rene.css @@ -40,7 +40,6 @@ a:hover .name, } .subj { color: #a6b8d8; - font-weight: bold; } .name, .omitted { @@ -69,14 +68,6 @@ hr { border-top: 1px dotted #696969; height: 0; } -#catalog .thread:hover { - background: #373a44; - box-shadow: 0 0 5px 5px #373a44; -} -#catalog .replies { - color: #909090; - font-weight: bold; -} .yt { background: #292c33; border: 1px solid #5e6b7d; diff --git a/static/css/txt/4am.css b/static/css/txt/4am.css index 1b448f3..4147600 100644 --- a/static/css/txt/4am.css +++ b/static/css/txt/4am.css @@ -9,13 +9,11 @@ a, a .name, #n2 { color: #81a2be; - text-decoration: none; } -a:hover, +a:active, a:focus, #n2:active { color: #4d6172; - text-decoration: underline; } hr { border: 1px inset #111; @@ -110,10 +108,7 @@ h4 .date, color: #4e4e4e; } .msg { - margin: 4px 40px 0; -} -.reply { - margin-bottom: 24px; + margin: 4px 40px 24px; } a.thumb { margin-top: 4px; @@ -129,15 +124,15 @@ a.thumb { .yt:hover { text-decoration: none; } -.deleted { - color: #999; +.deleted h4 { + color: #555; margin-bottom: 24px; } #q-p { background: #222; border: 1px solid #999; } -#q-p .reply { +#q-p .msg { margin-bottom: 8px; } .lastposts #n2 { diff --git a/static/css/txt/amber.css b/static/css/txt/amber.css index 87f74cb..2a3e4ec 100644 --- a/static/css/txt/amber.css +++ b/static/css/txt/amber.css @@ -101,7 +101,8 @@ button:active { box-shadow: 0 0 10px; } .outerbox, -.innerbox { +.innerbox, +.mainpage .thread { border: 1px solid #f9690e; } #threadlist { @@ -111,10 +112,6 @@ button:active { border-right: 1px solid #f9690e; border-bottom: 1px solid #f9690e; } -.mainpage .thread, -.thread .innerbox { - border: 1px solid #f9690e; -} .thread .innerbox, .threadpage, #q-p { @@ -130,13 +127,7 @@ button:active { .q { color: #d4b300; } -.deleted { - background: none; - border-color: #f9690e; - border-style: solid; - border-width: 1px 0; - color: inherit; -} + .yt { background: #000; border: 1px solid #f9690e; @@ -160,10 +151,9 @@ form .msg { #q-p .reply { border: 3px double #f9690e; margin: 0; - padding-bottom: 1em; } #q-p .reply h4 { - padding: 0 1px; + padding: 0; } #footer a { color: #f9690e; @@ -175,10 +165,10 @@ form .msg { background: #251002; } @media (max-width: 600px) { - div.msg { - margin: 0.5em 0.5em 0; - } .mainpage .postform { padding: 0.5em; } + .mainpage .msg { + margin: 0.5em; + } } diff --git a/static/css/txt/ayashii.css b/static/css/txt/ayashii.css index bc385ae..ac94b4e 100644 --- a/static/css/txt/ayashii.css +++ b/static/css/txt/ayashii.css @@ -36,7 +36,7 @@ h4:before { color: #fffffe; display: inline-block; font-size: 16px; - width: 40px; + width: 32px; } .first h4:before { content: none; @@ -98,9 +98,10 @@ h3 { border: 1px inset gray; } .reply { - clear: both; - margin-bottom: 1em; - overflow: hidden; + margin-bottom: 0.5em; +} +.hidden { + padding-bottom: 0.5em; } .reply:last-child { border: 0; @@ -115,12 +116,6 @@ h3 { .del a { color: #fff; } -.first .msg { - margin: 1em 40px; -} -.msg { - margin: 1em 60px; -} .q { color: #99b3b3; } @@ -135,7 +130,6 @@ h3 { } #size { color: #fff; - margin-top: -0.5em; } #q-p { background: #004040; @@ -164,19 +158,13 @@ form .msg { } @media (max-width: 600px) { body.mainpage { - margin-left: 8px; - margin-right: 8px; + margin-left: 4px; + margin-right: 4px; } h2 span { - margin-left: 0; - float: none; + font-size: initial; } h4:before { - font-size: 12px; - width: 20px; - } - div.msg, - .first .msg { - margin: 0.5em 0 0.5em 20px; + display: none; } } diff --git a/static/css/txt/baisano.css b/static/css/txt/baisano.css index 11e3112..3e0bf40 100644 --- a/static/css/txt/baisano.css +++ b/static/css/txt/baisano.css @@ -30,10 +30,10 @@ h3 span { .mainpage h4:hover { background: #ffefef; } -h4.hidden { +.hidden h4 { background: #ccc; } -.mainpage h4.hidden:hover { +.mainpage .hidden h4:hover { background: #dcc; } #main_nav { @@ -94,7 +94,7 @@ a.thumb { background: #efefef; border: 1px solid #999; } -#q-p .reply { +#q-p .msg { margin-bottom: 8px; } #createbox { diff --git a/static/css/txt/bbs.css b/static/css/txt/bbs.css index c82c01a..87269eb 100644 --- a/static/css/txt/bbs.css +++ b/static/css/txt/bbs.css @@ -156,7 +156,7 @@ label { font-size: 14px; line-height: 1; max-height: 16em; - overflow-y: scroll; + overflow-y: auto; } #threadlist a { -webkit-flex: 1 1 auto; @@ -204,6 +204,9 @@ a.thumb { margin: 1em 20px; text-decoration: none; } +.hidden .msg, .hidden .thumb, .hidden .quoted { + display: none; +} a.yt { margin: 2px 0; display: inline-block; @@ -250,7 +253,7 @@ a.yt b { color: #f00; font-family: arial, sans-serif; font-weight: bold; - margin-bottom: 0.5em; + margin: 0.5em 0; } #createbox input, #createbox textarea { @@ -260,6 +263,9 @@ a.yt b { text-align: right; white-space: nowrap; } +.postform { + margin-top: 0.5em; +} form .msg { margin: 0; padding: 8px 2px; @@ -302,6 +308,9 @@ form .msg { line-height: 12px; } @media (max-width: 600px) { + body.threadpage { + margin: 4px; + } br { line-height: 0.5em; } @@ -360,7 +369,8 @@ form .msg { .postform input[type="submit"] { padding: 0.5em; } - .postform span > * { + .postform span > input, + .postform span > span { display: table-cell; white-space: nowrap; } diff --git a/static/css/txt/bios.css b/static/css/txt/bios.css index 638297e..b6f912d 100644 --- a/static/css/txt/bios.css +++ b/static/css/txt/bios.css @@ -5,17 +5,16 @@ textarea, color: #fff; } a, -a .name, .lastposts #n2 { color: #ff0; text-decoration: none; } a:focus, a:active, -a:active .name, #n2:active { background: #f00; color: #fff; + outline: 0; } .mainpage .threadlinks a:before, #threadlinks a:before, @@ -64,7 +63,7 @@ h2, h3 { background: #fff; color: #00a; - margin: 0; + margin: 0 0 1px 0; padding: 2px 8px; } h3 span { @@ -160,21 +159,26 @@ h3 span { border-style: double; border-width: 4px 4px 1px; } -.reply, -.deleted { - border-top: 1px solid #fff; - padding: 0.5em 0.75em 0; +h4 { + background: #fff; + color: #00a; + padding: 0 0.5em; +} +h4 a, +a .name { + color: #000; } -.threadpage .reply, -.threadpage .deleted { - padding: 0.5em 0.5em 0; +h4 a:active, +h4 a:focus, +a:active .name, +a:focus .name { + color: #fff; } .name em { background: #fff; color: #00f; } .q, -.deleted, .abbrev { color: #5cf; } @@ -195,10 +199,8 @@ h3 span { #q-p { background: #00a; border: 1px solid #fff; -} -#q-p .reply { - border: 0; - padding: 0; + box-shadow: 1em 1em #000; + paddding: 0; } .lastposts { border-color: #fff; @@ -242,4 +244,7 @@ form .msg { h2 { margin-bottom: 0.5em; } + .mainpage .msg { + margin: 0.5em; + } }
\ No newline at end of file diff --git a/static/css/txt/blue moon.css b/static/css/txt/blue moon.css index 6841015..bcc9e32 100644 --- a/static/css/txt/blue moon.css +++ b/static/css/txt/blue moon.css @@ -44,7 +44,6 @@ h3 { } h4 { background: #ddd; - padding-bottom: 0.2em; } hr { display: none; @@ -131,6 +130,7 @@ h5 { border-left: 10px solid #ddd; color: #000; margin-bottom: 0; + overflow: hidden; } .first { border-top: 0.2em solid #ddd; @@ -174,11 +174,8 @@ a.thumb { background: #eee; border: 1px solid gray; } -.deleted { - background: #ddd; +.deleted h4 { color: #afafaf; - margin-bottom: 0; - padding: 3px 10px; } #q-p { background: #fff; @@ -236,9 +233,6 @@ form .msg { h3 { margin: 0.5em 0; } - h4 { - padding-bottom: 0; - } .threadpage .thread { padding: 1px 4px 4px; } @@ -249,7 +243,6 @@ form .msg { div.reply { border-left-width: 4px; border-right-width: 4px; - margin: 0; } .threadpage .postform { border-width: 4px; diff --git a/static/css/txt/ciber.css b/static/css/txt/ciber.css index 3dc11e5..7eef9fa 100644 --- a/static/css/txt/ciber.css +++ b/static/css/txt/ciber.css @@ -166,8 +166,7 @@ select { .threadpage, #q-p, form .msg { - background: #000 - url(" data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAIAAAAW4yFwAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAWSURBVHjaYrDk0GLm/88FAAAA//8DAATaAYeGqOFRAAAAAElFTkSuQmCC"); + background: #000 url(" data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAIAAAAW4yFwAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAWSURBVHjaYrDk0GLm/88FAAAA//8DAATaAYeGqOFRAAAAAElFTkSuQmCC"); } .thread .innerbox { padding: 0; @@ -207,10 +206,6 @@ form .msg { #q-p .reply { border: 3px double #2a4a75; margin: 0; - padding-bottom: 1em; -} -#q-p .reply h4 { - padding: 1px; } #footer { color: #0c0; @@ -229,10 +224,10 @@ form .msg { text-shadow: 0 0 8px; } @media (max-width: 600px) { - div.msg { - margin: 0.5em 0.5em 0; - } .mainpage .postform { padding: 0.5em; } + .mainpage .msg { + margin: 0.5em; + } } diff --git a/static/css/txt/cuteanarchy.css b/static/css/txt/cuteanarchy.css index 3e4e97c..524a81b 100644 --- a/static/css/txt/cuteanarchy.css +++ b/static/css/txt/cuteanarchy.css @@ -137,10 +137,6 @@ h3 span { box-shadow: 7px 7px 0px 0px rgba(204, 188, 180, 1); } -.reply { - margin-bottom: 24px; -} - .threadpage .thread { color: #5d475a; } @@ -152,7 +148,7 @@ a .name, text-decoration: none; } -.name { +.name, .hidden { color: #7ca380; text-shadow: 2px 0 11px #ffd7c6; background-image: url("/static/css/img/bg1.gif"); @@ -172,7 +168,7 @@ a .name, } h4 .date { - font-size: small; + font-size: smaller; font-family: "Courier New", Courier, monospace; vertical-align: middle; } @@ -183,7 +179,7 @@ h4 .date, } .msg { - margin: 4px 40px 0; + margin: 4px 40px 24px; } a.thumb { @@ -210,18 +206,12 @@ a.thumb { } #q-p { - /*border: 1px solid #999*/ background: #ffd9c6; border: 1px solid #efc9d8; border-radius: 3px; color: #66564f; } -#q-p .reply { - margin: 0; - padding-bottom: 1em; -} - .lastposts #n2 { text-decoration: none; } diff --git a/static/css/txt/futanari.css b/static/css/txt/futanari.css index 9ddc487..1a0b80d 100644 --- a/static/css/txt/futanari.css +++ b/static/css/txt/futanari.css @@ -100,10 +100,7 @@ button:active { color: #fff; } .msg { - margin: 4px 40px 0; -} -.reply { - margin-bottom: 24px; + margin: 4px 40px 24px; } .q { color: #aac; @@ -145,8 +142,8 @@ form .msg { background: #1b3345; border: 1px solid #3b6b94; } -#q-p .reply { - margin-bottom: 1em; +#q-p .msg { + margin-bottom: 8px; } .lastposts { background: #5b8bb4; @@ -163,12 +160,11 @@ form .msg { } @media (max-width: 600px) { .thread .innerbox { - padding: 8px; + padding: 4px; } .innerbox, .postform, .mainpage .postform { - padding: 8px; - padding-left: 8px; + padding: 4px; } } diff --git a/static/css/txt/gamer.css b/static/css/txt/gamer.css index 84f868a..37f4c9e 100644 --- a/static/css/txt/gamer.css +++ b/static/css/txt/gamer.css @@ -13,19 +13,13 @@ a:active, a:active .name { color: #fff; } -h1, -h2, -h3, -h5, +h1,h2,h3,h5, #threads th { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6AAAdTAAAOpgAAA6lwAAF2+XqZnUAAAAcklEQVR4nGIU5PBmwAG4GDlwSQEEEBMuCfwAIIDI1AYQQGRqAwggMrUBBBCZ2gACiExtAAFEpjaAACJTG0AAseCJ02//f+CSAgggMm0DCCAytQEEEJnaAAKITG0AAUSmNoAAIlMbQACRqQ0ggMjUBhBgAI7NA51r0FSIAAAAAElFTkSuQmCC"); color: #fff; text-shadow: 1px 1px #002; } -h1, -h2, -h3, -h5 { +h1,h2,h3,h5 { font-size: 18px; margin: -7px -7px 8px; padding: 8px; @@ -34,10 +28,6 @@ h2 a { color: #fff; font-size: 18px; } -h3 span { - font-weight: bold; - margin-left: 4px; -} hr { display: none; } @@ -114,7 +104,8 @@ h4 a, } .outerbox, .thread, -.threadpage .postform { +.threadpage .postform, +#q-p { background: #050505 url("../img/g_p.gif"); border: 6px solid transparent; -moz-border-image: url("../img/g_b.gif") 6 6 round round; @@ -140,15 +131,15 @@ h4 .date, color: #aaa; } .q { - color: #666; + color: #6f6f6f; } .yt { background: #000; border: 1px solid #111; } -.deleted { +.deleted, .hidden { color: #afafaf; - margin-bottom: 24px; + margin-bottom: 0.5em; } .msg hr { display: block; @@ -163,12 +154,9 @@ h4 .date, form .msg { border: 1px dotted #111; } -#q-p { - background: #efefef; - border: 1px solid #999; -} -#q-p .reply { - margin-bottom: 8px; +#q-p .reply:first-child { + border-top: 0; + padding-top: 0; } #size { color: #ff0; @@ -192,16 +180,23 @@ form .msg { } @media (max-width: 600px) { body.threadpage { - margin: 2px; + margin: 0; } - #threadlinks, - .threadlinks { - padding: 4px; + h1,h2,h3,h5 { + margin: -3px -3px -1px; + } + .innerbox, + .threadpage .thread, + .threadpage .postform { + padding: 3px; } + #threadlinks, + .threadpage .threadlinks, .mainpage .threadlinks { - margin-top: 0.5em; + margin: 0; + padding: .5em 0; } .mainpage .postform { padding: 0.5em 0 0; } -} +}
\ No newline at end of file diff --git a/static/css/txt/headline.css b/static/css/txt/headline.css index b09b78e..1d9b186 100644 --- a/static/css/txt/headline.css +++ b/static/css/txt/headline.css @@ -117,13 +117,14 @@ button:active { #size { color: #d60; } -.deleted { +.deleted h4 { color: #afafaf; } #q-p { background: #fff; border: 1px solid #bbb; border-bottom: 2px solid #bbb; + padding: 0; } .lastposts { padding: 8px; @@ -152,12 +153,12 @@ form .msg { } @media (max-width: 600px) { .thread .innerbox { - padding: 8px; + padding: 4px; } .innerbox, .postform, .mainpage .postform { - padding: 8px; - padding-left: 8px; + padding: 4px; + padding-left: 4px; } } diff --git a/static/css/txt/postal.css b/static/css/txt/postal.css index 9ffd124..8c5ca73 100644 --- a/static/css/txt/postal.css +++ b/static/css/txt/postal.css @@ -156,10 +156,10 @@ h4 { background: #eee; border: 1px solid #ccc; } -.deleted { +/*.deleted { background: #f7f3e6; color: #aaa; -} +}*/ #q-p { background: #fff; border: 1px solid #ccc; @@ -199,14 +199,18 @@ form .msg { } @media (max-width: 600px) { body.threadpage { - margin: 0 0 8px; + margin: 0 0 4px; } - body > hr { + body.threadpage > hr { top: -8px; left: 0; right: 0; } + .threadpage .thread { + padding: 4px 4px 1em; + } #createbox .innerbox { + margin: 4px; padding: 0; } } diff --git a/static/css/txt/ventanas.css b/static/css/txt/ventanas.css index 6ca4e1a..c98e872 100644 --- a/static/css/txt/ventanas.css +++ b/static/css/txt/ventanas.css @@ -57,15 +57,11 @@ h3 span { color: #555; text-decoration: underline; } -h4 { - padding-top: 0.5em; -} hr { border: 0; } hr, -h4, -.deleted { +.reply { border-top: 2px groove white; } .mainpage .first h4 { @@ -176,7 +172,10 @@ select:focus { #thread_nav a:hover { background: #ddd; } -. { +.reply { + padding-top: 0.5em; +} +.hidden, .deleted { margin-bottom: 0.5em; } .name, @@ -199,20 +198,13 @@ select:focus { } .deleted { color: gray; - margin-bottom: 0.5em; - padding-top: 0.5em; } #q-p { box-shadow: 5px 5px #000; - padding: 0; + padding-top: 0; } -#q-p .reply { - padding: 0.5em; - margin-bottom: 0.5em; -} -#q-p .reply:first-child h4 { +#q-p .reply:first-child { border: 0; - padding: 0; } .postform, .formpad { diff --git a/static/css/vndb.css b/static/css/vndb.css index 1b104a2..5f161fc 100644 --- a/static/css/vndb.css +++ b/static/css/vndb.css @@ -64,7 +64,6 @@ input[type="submit"]:active { } .subj { color: #7bd; - font-weight: bold; } .ell, .name, @@ -100,14 +99,6 @@ hr { border-top: 1px solid #258; height: 0; } -#catalog .thread:hover { - background: rgba(7, 28, 47, 0.92); - box-shadow: 0 0 5px 5px rgba(7, 28, 47, 0.9); -} -#catalog .replies { - color: #258; - font-weight: bold; -} .yt, .yt:hover { background: #0d2741; diff --git a/static/js/aquiencitas.js b/static/js/aquiencitas.js index 4284f0a..93f5323 100644 --- a/static/js/aquiencitas.js +++ b/static/js/aquiencitas.js @@ -54,13 +54,13 @@ function getPostDivs(e) { return divs; } else { ele = document.getElementById( - "reply" + e.getAttribute("href").split("#")[1] + "p" + e.getAttribute("href").split("#")[1] ); return [ele]; } } function get_pid(e) { - return is_bbs ? e.dataset.n : e.id.substr(5); + return is_bbs ? e.dataset.n : e.id.substr(1); } function fill_links(e) { var divs = getPostDivs(e); @@ -144,12 +144,9 @@ function quotePreview() { if (localStorage.getItem("shobon_on") == "false") { return; } - if ( - localStorage.getItem("shobon_preview") == "false" && - localStorage.getItem("shobon_backlink") == "false" - ) { - return; - } + var showprev = localStorage.getItem("shobon_preview"); + var showlink = localStorage.getItem("shobon_backlink"); + if (showprev == "false" && showlink == "false") return; var i, q, replies, quotes; @@ -160,10 +157,10 @@ function quotePreview() { if (is_bbs) replies = document.getElementsByClassName("msg"); else replies = document.getElementsByTagName("blockquote"); - urls = window.location.pathname.split("/"); - cur_url = urls[0] + "/" + urls[1] + "/" + urls[2] + "/" + urls[3]; + var urls = window.location.pathname.split("/"); + cur_url = "/" + ((urls[2]) ? urls[1] + "/" + urls[2] + "/" + urls[3] : urls[1]); - for (x = 0; x < replies.length; x++) { + for (var x = 0; x < replies.length; x++) { quotes = replies[x].getElementsByTagName("a"); linklist = {}; @@ -171,12 +168,12 @@ function quotePreview() { q = quotes[i]; if (q.textContent.length < 3 || !q.textContent.startsWith(">>")) continue; - if (localStorage.getItem("shobon_preview") != "false") { + if (showprev != "false") { q.addEventListener("mouseover", who_are_you_quoting, false); q.addEventListener("mouseout", remove_quote_preview, false); } - if (localStorage.getItem("shobon_backlink") != "false") { + if (showlink != "false") { fill_links(q); } } diff --git a/static/js/weabot.js b/static/js/weabot.js index 9ab84f3..3371437 100644 --- a/static/js/weabot.js +++ b/static/js/weabot.js @@ -1,6 +1,9 @@ var style_cookie = "weabot_style_ib"; +if (localStorage.hasOwnProperty(style_cookie)) { + setTheme(localStorage.getItem(style_cookie)); +} -function set_stylesheet(styletitle) { +function setTheme(styletitle) { var css = document.getElementById("css"); if (css) { css.href = "/static/css/" + styletitle.toLowerCase() + ".css"; @@ -8,11 +11,6 @@ function set_stylesheet(styletitle) { } } -if (style_cookie && localStorage.hasOwnProperty(style_cookie)) { - set_stylesheet(localStorage.getItem(style_cookie)); -} - -var hiddenthreads = Array(); /* IE/Opera fix, because they need to go learn a book on how to use indexOf with arrays */ if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/) { @@ -69,7 +67,7 @@ function checkhighlight() { function highlight(post) { var hl = document.getElementsByClassName("reply highlight"); if (hl.length) { hl[0].className = "reply"; } - var reply = document.getElementById("reply" + post); + var reply = document.getElementById("p" + post); if (reply) { reply.className = "reply highlight"; var match = /^([^#]*)/.exec(document.location.toString()); @@ -188,27 +186,6 @@ function filePreview(e) { }; } -function togglethread(e) { - if (e.parentElement.id.startsWith("unhide")) { - var threadid = e.parentElement.id.substr(6); - } else if (e.parentElement.parentElement.id.startsWith("thread")) { - var threadid = e.parentElement.parentElement.id.substr(6); - } else { - return; - } - if (hiddenthreads.toString().indexOf(threadid) !== -1) { - document.getElementById("unhide" + threadid).style.display = "none"; - document.getElementById("thread" + threadid).removeAttribute("style"); - hiddenthreads.splice(hiddenthreads.indexOf(threadid), 1); - } else { - document.getElementById("unhide" + threadid).removeAttribute("style"); - document.getElementById("thread" + threadid).style.display = "none"; - hiddenthreads.push(threadid); - } - if (hiddenthreads == "") localStorage.removeItem("hiddenthreads"); - else localStorage.setItem("hiddenthreads", hiddenthreads.join("!")); -} - function saveInputs(e) { var e = e || window.event; var form = e.target || e.srcElement; @@ -224,7 +201,8 @@ function setInputs(id) { fielda.value = weabot.name; if (typeof fielda !== "undefined" && !fieldb.value && weabot.email) fieldb.value = weabot.email; - if (!password.value) password.value = getPassword(); + if (!password.value) + password.value = getPassword(); addEventListener("submit", saveInputs); } } @@ -232,10 +210,10 @@ function setInputs(id) { function getPassword() { if (weabot.password) return weabot.password; + var pass = ""; - var char = - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?!-_."; - while (pass.length < 10) { + var char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?!-_."; + for (var i=0; i<10; i++) { pass += char[Math.floor(Math.random() * char.length)]; } weabot.password = pass; @@ -243,154 +221,51 @@ function getPassword() { return pass; } -function catSort(type) { - for (var i = 0; i < srt.length; i++) srt[i].innerHTML = srt[i].innerText; - srt[type].innerHTML = "<b>" + srt[type].innerText + "</b>"; - var cont = document.getElementById("catalog"); - var elem = document.getElementsByClassName("thread"); - var arr = Array.prototype.slice.call(elem); - if (type == 0) - arr.sort(function(a, b) { return a.dataset.num - b.dataset.num; }); - else if (type == 1) - arr.sort(function(a, b) { return b.dataset.id - a.dataset.id; }); - else if (type == 2) - arr.sort(function(a, b) { return a.dataset.id - b.dataset.id; }); - else if (type == 3) - arr.sort(function(a, b) { return b.dataset.res - a.dataset.res; }); - else if (type == 4) - arr.sort(function(a, b) { return a.dataset.res - b.dataset.res; }); - for (var j = 0; j < arr.length; j++) cont.appendChild(arr[j]); - localStorage.setItem("catalog", JSON.stringify(opcs)); -} - function catSearch() { - var filter = document.getElementById("cat_search").value.toLowerCase(); + var filter = this.value.toLowerCase(); var nodes = document.getElementsByTagName("p"); - for (i = 0; i < nodes.length; i++) { + for (var i = 0; i < nodes.length; i++) { if (nodes[i].innerText.toLowerCase().includes(filter)) nodes[i].parentNode.removeAttribute("style"); else nodes[i].parentNode.style.display = "none"; } } -function catThumbs(big) { - var btn = document.getElementById("cat_size"); - var cat = document.getElementById("catalog"); - var threads = document.getElementsByClassName("thread"); - if (opcs.big) { - cat.className = "enlarged"; - for (j = 0; j < threads.length; j++) { - img = threads[j].getElementsByTagName("a")[0]; - img.innerHTML = img.innerHTML.replace("/cat/", "/thumb/"); - } - btn.innerText = "Grande"; +function togglePost(e) { + if (e.tagName == "DIV") { + var post = e.parentElement; } else { - cat.removeAttribute("class"); - for (j = 0; j < threads.length; j++) { - img = threads[j].getElementsByTagName("a")[0]; - img.innerHTML = img.innerHTML.replace("/thumb/", "/cat/"); - } - btn.innerText = "Pequeño"; + var post = e.parentElement.parentElement; } - localStorage.setItem("catalog", JSON.stringify(opcs)); -} - -function catTeasers(teaser) { - var btn = document.getElementById("cat_hide"); - if (!teaser) { - var style = document.createElement("style"); - style.id = "teaser_style"; - style.type = "text/css"; - style.innerText = "#catalog p {display:none}"; - document.head.appendChild(style); - btn.innerText = "Mostrar"; + + var pid = post.id.slice(1); + var typ = post.id.charAt(0); + var itm = "hid-" + typ + "-" + document.body.dataset.brd; + + var hidp = localStorage.getItem(itm); + var hid = Array(); + if (hidp) hid = hidp.split("!"); + + if (post.classList.contains("hidden")) { + if (hid.includes(pid)) hid.splice(hid.indexOf(pid), 1); } else { - var style = document.getElementById("teaser_style"); - if (style) style.parentNode.removeChild(style); - btn.innerText = "Ocultar"; + if (!hid.includes(pid)) hid.push(pid); } - localStorage.setItem("catalog", JSON.stringify(opcs)); -} - -function catMenu(e) { - var brd = document.getElementsByName("board")[0].value; - var id = this.dataset.id; - this.insertAdjacentHTML("afterbegin", - '<div id="thread_ctrl" style="margin-bottom:3px;">[<a href="/cgi/report/' + - brd + "/" + id + '">Denunciar</a>] [<a href="#" class="hh">Ocultar</a>]'); - this.getElementsByClassName("hh")[0].addEventListener("click", function(e) { - document.getElementById("cat" + id + brd).style.display = "none"; - hiddenthreads.push(id + brd); - localStorage.setItem("hiddenthreads", hiddenthreads.join("!")); - if (document.getElementById("hidden_label")) { - hidden_num++; - document.getElementById("hidden_num").innerText = hidden_num; - } else { - hidden_num = 1; - catHidden(); - } - }); -} - -function catMenuClose(e) { - document.getElementById("thread_ctrl").remove(); -} - -function catHidden() { - var menu = document.getElementById("ctrl"); - menu.insertAdjacentHTML( - "beforeend", - ' <span id="hidden_label">[Hilos ocultos: <span id="hidden_num">' + - hidden_num + - "</span> - " - ); - var lbl = document.getElementById("hidden_label"); - var shw = document.createElement("a"); - shw.href = "#"; - shw.innerText = "Deshacer"; - shw.addEventListener("click", function(e) { - e.preventDefault(); - for (var i = 0; i < hiddenthreads.length; i++) { - try { - document.getElementById("cat" + hiddenthreads[i]).removeAttribute("style"); - } catch (err) { - continue; - } - } - lbl.parentElement.removeChild(lbl); - hidden_num = 0; - var aux = hiddenthreads.join("!"); - var exp = new RegExp( - "\\b[0-9]+" + document.getElementsByName("board")[0].value + "\\b", - "g" - ); - aux = aux.replace(exp, "!"); - aux = aux.replace(/!+/g, "!"); - aux = aux.replace(/(^!|!$)/g, ""); - if (aux == "") { - localStorage.removeItem("hiddenthreads"); - hiddenthreads = []; - } else { - localStorage.setItem("hiddenthreads", aux); - hiddenthreads = aux.split("!"); - } - }); - lbl.appendChild(shw); - lbl.appendChild(document.createTextNode("]")); -} + post.classList.toggle("hidden"); -function applyTheme() { - var newTheme = document.getElementById("styles").value; - set_stylesheet(newTheme); + localStorage.setItem(itm, hid.join("!")); } document.addEventListener("DOMContentLoaded", function(e) { + var board = document.body.dataset.brd; checkhighlight(); - if (localStorage.hasOwnProperty("weabot")) + + if (localStorage.hasOwnProperty("weabot")) { weabot = JSON.parse(localStorage.getItem("weabot")); - else weabot = { name: null, email: null, password: null }; - - board = document.body.dataset.brd; + } else { + weabot = { name: null, email: null, password: null }; + } + var a = document.getElementById("main_nav").getElementsByTagName("a"); for (var i = 0; i < a.length; i++) { if (a[i].getAttribute("href") == "/" + board + "/") { @@ -399,36 +274,21 @@ document.addEventListener("DOMContentLoaded", function(e) { } } - if (localStorage.hasOwnProperty("hiddenthreads")) { - hiddenthreads = localStorage.getItem("hiddenthreads").split("!"); - if (document.getElementById("catalog")) { - hidden_num = 0; - for (var i = 0; i < hiddenthreads.length; i++) { - try { - document.getElementById("cat" + hiddenthreads[i]).style.display = "none"; - hidden_num++; - } catch (err) { - continue; - } - } - if (hidden_num) { - catHidden(); - } - } else { - for (var i = 0; i < hiddenthreads.length; i++) { - try { - document.getElementById("unhide" + hiddenthreads[i]).removeAttribute("style"); - document.getElementById("thread" + hiddenthreads[i]).style.display = "none"; - } catch (err) { - continue; - } + for (var i=0; i<2; i++) { + var type = "pt".charAt(i); + var hidp = localStorage.getItem("hid-" + type + "-" + board); + if (hidp) { + var hid = hidp.split("!"); + for (var j = 0; j < hid.length; j++) { + var post = document.getElementById(type+hid[j]); + if (post) post.classList.add("hidden"); } } } var styleSelect = document.getElementById("styles"); if (styleSelect) { - styleSelect.addEventListener("change", applyTheme, false); + styleSelect.addEventListener("change", function(e) { setTheme(this.value); }); styleSelect.value = localStorage.getItem(style_cookie); } @@ -440,47 +300,46 @@ document.addEventListener("DOMContentLoaded", function(e) { var del = document.getElementById("delform"); if (del) del.password.value = weabot.password; - window.addEventListener("hashchange", checkhighlight); - - if (document.getElementById("catalog")) { - srt = document.getElementsByClassName("cat_sort"); - for (var i = 0; i < srt.length; i++) { - srt[i].innerHTML = srt[i].innerText; - srt[i].addEventListener("click", function(e) { - e.preventDefault(); - opcs.sort = this.dataset.sort; - catSort(opcs.sort); - }); + var cat = document.getElementById("catalog"); + if (cat) { + if (j>0) { + document.getElementById("hid-label").removeAttribute("style"); + document.getElementById("hid-num").innerText = j; } - document.getElementById("cat_size").addEventListener("click", function(e) { + + document.getElementById("cat-size").addEventListener("click", function(e) { e.preventDefault(); - opcs.big = !opcs.big; - catThumbs(opcs.big); + var thumb = cat.getElementsByTagName("img"); + if (cat.classList.contains("enlarged")) { + for (var i = 0; i < thumb.length; i++) { + thumb[i].src = thumb[i].src.replace("/thumb/", "/cat/"); + } + } else { + for (var i = 0; i < thumb.length; i++) { + thumb[i].src = thumb[i].src.replace("/cat/", "/thumb/"); + } + } + cat.classList.toggle("enlarged"); + this.innerText = (this.innerText == "Pequeño") ? "Grande" : "Pequeño"; }); - document.getElementById("cat_hide").addEventListener("click", function(e) { + + document.getElementById("cat-hide").addEventListener("click", function(e) { e.preventDefault(); - opcs.teaser = !opcs.teaser; - catTeasers(opcs.teaser); + cat.classList.toggle("notxt"); + this.innerText = (this.innerText == "Ocultar") ? "Mostrar" : "Ocultar"; }); - document.getElementById("cat_search").addEventListener("keyup", catSearch); - if (localStorage.hasOwnProperty("catalog")) { - opcs = JSON.parse(localStorage.getItem("catalog")); - if ((match = /\?sort=([0-9])/.exec(document.location.toString()))) - opcs.sort = match[1]; - catSort(opcs.sort); - catThumbs(opcs.big); - catTeasers(opcs.teaser); - } else { - opcs = { sort: 1, big: false, teaser: true }; - localStorage.setItem("catalog", JSON.stringify(opcs)); - } - var thr = document.getElementsByClassName("thread"); - for (var i = 0; i < thr.length; i++) { - thr[i].addEventListener("mouseenter", catMenu); - thr[i].addEventListener("mouseleave", catMenuClose); - } + + document.getElementById("cat-srch").addEventListener("keyup", catSearch); + + document.getElementById("hid-num").addEventListener("click", function(e) { + e.preventDefault(); + cat.classList.toggle("showhid"); + }); + } else { + window.addEventListener("hashchange", checkhighlight); } }); + document.addEventListener("click", function(e) { var cn = e.target.className; if (cn == "num") { @@ -488,14 +347,22 @@ document.addEventListener("click", function(e) { postClick(e.target.textContent); return; } - if (cn == "tt") { + if (cn == "expimg") { e.preventDefault(); - togglethread(e.target); + expandimg(e.target); return; } - if (cn == "expimg") { + if (cn == "tt") { e.preventDefault(); - expandimg(e.target); + togglePost(e.target); return; } }, false); + +document.addEventListener("dblclick", function(e) { + if (e.target.closest(".info")) { + e.preventDefault(); + togglePost(e.target.closest(".info")); + return; + } +}, false);
\ No newline at end of file diff --git a/static/js/weabotxt.js b/static/js/weabotxt.js index df4bc56..fec445d 100644 --- a/static/js/weabotxt.js +++ b/static/js/weabotxt.js @@ -1,11 +1,9 @@ var style_cookie = "weabot_style_txt"; -if (style_cookie && localStorage.hasOwnProperty(style_cookie)) { - set_stylesheet(localStorage.getItem(style_cookie)); +if (localStorage.hasOwnProperty(style_cookie)) { + setTheme(localStorage.getItem(style_cookie)); } -var hiddenposts = Array(); - -function set_stylesheet(styletitle) { +function setTheme(styletitle) { var css = document.getElementById("css"); if (css) css.href = "/static/css/txt/" + styletitle.toLowerCase() + ".css"; localStorage.setItem(style_cookie, styletitle); @@ -28,9 +26,8 @@ if (!Array.prototype.indexOf) { function getPassword() { if (weabot.password) return weabot.password; var pass = ""; - var char = - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?!-_."; - while (pass.length < 10) { + var char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?!-_."; + for (var i=0; i<11; i++) { pass += char[Math.floor(Math.random() * char.length)]; } weabot.password = pass; @@ -135,6 +132,24 @@ function previewPost(e) { xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlhttp.send(text); } +function get_xmlhttp() { + var xmlhttp; + try { + xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e1) { + try { + xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); + } catch (e1) { + xmlhttp = null; + } + } + if (!xmlhttp && typeof XMLHttpRequest != "undefined") + xmlhttp = new XMLHttpRequest(); + return xmlhttp; +} +function is_ie() { + return document.all && !document.opera; +} function listSort(e) { e.preventDefault(); @@ -178,52 +193,23 @@ function searchSubjects(e) { } } -function get_xmlhttp() { - var xmlhttp; - try { - xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); - } catch (e1) { - try { - xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); - } catch (e1) { - xmlhttp = null; - } - } - if (!xmlhttp && typeof XMLHttpRequest != "undefined") - xmlhttp = new XMLHttpRequest(); - return xmlhttp; -} - -function is_ie() { - return document.all && !document.opera; -} - -function showpost(post) { - post.children[0].classList.remove("hidden"); - post.children[1].removeAttribute("style"); -} -function hidepost(post) { - post.children[0].classList.add("hidden"); - post.children[1].style.display = "none"; -} -function togglepost(e) { - e.preventDefault(); - var post = this.parentElement; - var postid = board + this.getElementsByClassName("date")[0].dataset.unix; - if (post.children[1].style.display == "none") { - showpost(post); - if (hiddenposts.includes(postid)) - hiddenposts.splice(hiddenposts.indexOf(postid), 1); +function togglePost(e) { + var post = e.parentElement; + var pid = post.id.slice(1); + + var hidp = localStorage.getItem("hid-p-"+board); + var hid = Array(); + if (hidp) hid = hidp.split("!"); + + if (post.classList.contains("hidden")) { + post.classList.remove("hidden"); + if (hid.includes(pid)) hid.splice(hid.indexOf(pid), 1); } else { - hidepost(post); - if (!hiddenposts.includes(postid)) hiddenposts.push(postid); + post.classList.add("hidden"); + if (!hid.includes(pid)) hid.push(pid); } - localStorage.setItem("hiddenposts", hiddenposts.join("!")); -} -function applyTheme() { - var newTheme = document.getElementById("styles").value; - set_stylesheet(newTheme); + localStorage.setItem("hid-p-"+board, hid.join("!")); } document.addEventListener("DOMContentLoaded", function() { @@ -232,6 +218,7 @@ document.addEventListener("DOMContentLoaded", function() { else weabot = { name: null, email: null, password: null }; board = document.body.dataset.brd; + var head = document.getElementById("main_nav"); if (head) { var b = head.getElementsByTagName("a"); @@ -250,7 +237,7 @@ document.addEventListener("DOMContentLoaded", function() { var styleSelect = document.getElementById("styles"); if (styleSelect) { - styleSelect.addEventListener("change", applyTheme, false); + styleSelect.addEventListener("change", function(e) { setTheme(this.value); }); styleSelect.value = localStorage.getItem(style_cookie); } @@ -262,16 +249,13 @@ document.addEventListener("DOMContentLoaded", function() { document.getElementById("l_sr").addEventListener("keyup", searchSubjects); } - if (localStorage.hasOwnProperty("hiddenposts")) - hiddenposts = localStorage.getItem("hiddenposts").split("!"); - - var dt = document.getElementsByClassName("date"); - for (var i = 0; i < dt.length; i++) { - if (hiddenposts.includes(board + dt[i].dataset.unix)) { - console.log(dt[i].dataset.unix); - hidepost(dt[i].parentElement.parentElement); + var hidp = localStorage.getItem("hid-p-"+board); + if (hidp) { + var hid = hidp.split("!"); + for (var i = 0; i < hid.length; i++) { + var post = document.getElementById("p"+hid[i]); + if (post) post.classList.add("hidden"); } - dt[i].parentElement.addEventListener("dblclick", togglepost); } }); @@ -287,4 +271,12 @@ document.addEventListener("click", function(e) { deletePost(e.target); return; } +}, false); + +document.addEventListener("dblclick", function(e) { + if (e.target.closest("h4")) { + e.preventDefault(); + togglePost(e.target.closest("h4")); + return; + } }, false);
\ No newline at end of file |