diff --git a/README.md b/README.md index c640aa97..e1f5482d 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,7 @@ git submodule init git submodule update ``` -To enable oekaki, add all the scripts listed in `js/oekaki.js` to your `instance-config.php`. +To enable oekaki, add all the scripts listed in `js/wpaint.js` to your `instance-config.php`. WebM support ------------ @@ -135,12 +135,11 @@ Some pages like `/faq.html` need to be pre-generated: ``` $ php faq.php > faq.html ``` -======= + vichan API ---------- vichan provides by default a 4chan-compatible JSON API. For documentation on this, see: https://github.com/vichan-devel/vichan-API/ . ->>>>>>> 3b2f4481029ba3e98d1da79f5fe1cba08ef7f8ac License -------- diff --git a/js/auto-reload.js b/js/auto-reload.js index 583a43e8..663b495e 100644 --- a/js/auto-reload.js +++ b/js/auto-reload.js @@ -8,6 +8,7 @@ * Copyright (c) 2012 Michael Save * Copyright (c) 2013-2014 Marcin Ɓabanowski * Copyright (c) 2013 undido + * Copyright (c) 2014 Fredrick Brennan * * Usage: * $config['additional_javascript'][] = 'js/jquery.min.js'; @@ -136,6 +137,8 @@ $(document).ready(function(){ poll_interval = setTimeout(poll, poll_interval_delay); poll_current_time = poll_interval_delay; + + return false; }; $(window).scroll(function() { @@ -153,11 +156,11 @@ $(document).ready(function(){ end_of_page = true; }).trigger('scroll'); - $('#update_thread').on('click', function(e) {e.preventDefault(); poll();}); + $('#update_thread').on('click', poll); setInterval(timer_update, 1000); setInterval(decrement_timer, 1000); - poll_interval = setInterval(poll, poll_interval_delay); + poll_interval = setTimeout(poll, poll_interval_delay); timer_update(); }); diff --git a/js/catalog-link.js b/js/catalog-link.js index 899e6859..5c5d9b13 100644 --- a/js/catalog-link.js +++ b/js/catalog-link.js @@ -16,11 +16,11 @@ function catalog() { var board = $("input[name='board']"); if (board.length>0) { -if (window.location.href.indexOf("/res/")==-1){ //if we are inside a thread -var catalog_url = 'catalog.html'; +if (window.location.pathname.indexOf("/res/")>0){ //if we are inside a thread +var catalog_url = '../catalog.html'; } else { -var catalog_url = '../catalog.html'; +var catalog_url = 'catalog.html'; } var pages = document.getElementsByClassName('pages')[0]; var bottom = document.getElementsByClassName('boardlist bottom')[0] diff --git a/js/no-animated-gif.js b/js/no-animated-gif.js index 7e777d87..45a55f97 100644 --- a/js/no-animated-gif.js +++ b/js/no-animated-gif.js @@ -13,7 +13,10 @@ */ function unanimate_gif(e) { - var c = $(''); + if (active_page === "catalog") + var c = $(''); + else + var c = $(''); $(e).parent().prepend(c); c.attr('width', $(e).width()); c.attr('height',$(e).height()); @@ -32,7 +35,7 @@ function unanimate_gif(e) { } function no_animated_gif() { - var anim_gifs = $('img.post-image[src$=".gif"]'); + var anim_gifs = $('img.post-image[src$=".gif"], img.thread-image[src$=".gif"]'); localStorage.no_animated_gif = true; $('#no-animated-gif>a').text(_('Animate GIFs')); $('#no-animated-gif>input').prop('checked', true); @@ -48,7 +51,7 @@ function animated_gif() { $('#no-animated-gif>input').prop('checked', false); } -if (active_page == 'thread' || active_page == 'index' || active_page == 'ukko') { +if (active_page == 'thread' || active_page == 'index' || active_page == 'ukko' || active_page == 'catalog') { $(function(){ var selector, event; if (window.Options && Options.get_tab('general')) { diff --git a/js/post-hover.js b/js/post-hover.js index 2808b8e7..0becfb70 100644 --- a/js/post-hover.js +++ b/js/post-hover.js @@ -58,8 +58,8 @@ onready(function(){ // link links to itself or to op; ignore } else if($post.is(':visible') && - $post.offset().top + $post.height() >= $(window).scrollTop() && - $post.offset().top <= $(window).scrollTop() + $(window).height()) { + $post.offset().top >= $(window).scrollTop() && + $post.offset().top + $post.height() <= $(window).scrollTop() + $(window).height()) { // post is in view $post.addClass('highlighted'); } else { diff --git a/stylesheets/catalog.css b/stylesheets/catalog.css deleted file mode 100644 index 29ff4cbf..00000000 --- a/stylesheets/catalog.css +++ /dev/null @@ -1,75 +0,0 @@ -img { - float:none!important; - margin: auto; - margin-bottom: 12px; - /*max-height: 150px; - max-width: 200px;*/ - box-shadow: 0 0 4px rgba(0, 0, 0, 0.55); - border: 2px solid rgba(153, 153, 153, 0); -} - -/* -img:hover { - border: 2px solid rgba(153, 153, 153, 0.27); -} -*/ - -div.threads{ - text-align: center; - margin-left: -20px; -} - -div.thread { - display: inline-block; - vertical-align: top; - margin-bottom:25px; - margin-left: 20px; - margin-right: 15px; - text-align:center; - font-weight:normal; - width:205px; - overflow:hidden; - position: relative; - font-size:11px; - padding: 15px; - background: rgba(182, 182, 182, 0.12); - border: 2px solid rgba(111, 111, 111, 0.34); - max-height:300px; -} - -div.thread:hover { - background: #D6DAF0; - border-color: #B7C5D9; -} - -div.grid-size-small { - width: 200px; - max-width: 200px; - max-height: 350px; -} - -div.grid-size-large { - width: 300px; - max-width: 300px; - max-height: 450px; -} - -img.thread-image { - height: auto; - max-width: 100%; -} - -@media (max-width: 420px) { - ul#Grid { - padding-left: 18px; - } - div.thread { - width: auto; - margin-left: 0; - margin-right: 0; - - } - div.threads { - overflow: hidden; - } -} \ No newline at end of file diff --git a/stylesheets/style.css b/stylesheets/style.css index 827974b5..109fccc7 100644 --- a/stylesheets/style.css +++ b/stylesheets/style.css @@ -7,9 +7,11 @@ body { padding-left: 5px; padding-right: 5px; } + table * { margin: 0; } + a, a:visited { text-decoration: underline; color: #34345C; @@ -22,10 +24,13 @@ a.post_no { margin: 0; padding: 0; } + p.intro a.post_no { color: inherit; } -p.intro a.post_no, p.intro a.email, p.intro a.post_anchor { +p.intro a.post_no, +p.intro a.email, +p.intro a.post_anchor { margin: 0; } p.intro a.email span.name { @@ -41,6 +46,7 @@ p.intro time, p.intro a.ip-link, p.intro a.capcode { direction: ltr; unicode-bidi: embed; } + h2 { color: #AF0A0F; font-size: 11pt; @@ -110,14 +116,14 @@ form table tr td div label { font-size: 10px; } .file { - float: left; - margin-right: 2px; + float: left; + margin-right: 2px; } .file:not(.multifile) .post-image { - float: left; + float: left; } .file:not(.multifile) { - float: none; + float: none; } p.fileinfo { display: block; @@ -214,7 +220,8 @@ div.post.reply div.body a { color: #D00; } div.post { - max-width: 97%; + max-width: 95%; + padding-left:20px; } div.post div.body { word-wrap: break-word; @@ -508,7 +515,6 @@ pre { .theme-catalog div.thread img { float:none!important; margin: auto; - margin-bottom: 12px; max-height: 150px; max-width: 200px; box-shadow: 0 0 4px rgba(0, 0, 0, 0.55); @@ -517,105 +523,123 @@ pre { .theme-catalog div.thread { display: inline-block; vertical-align: top; - margin-bottom:25px; - margin-left: 20px; - margin-right: 15px; text-align:center; font-weight:normal; - width:205px; + margin-top: 2px; + margin-bottom: 2px; + padding: 2px; + height:300px; + width:205px; overflow:hidden; position: relative; font-size:11px; - padding: 15px; max-height:300px; - background: rgba(182, 182, 182, 0.12); - border: 2px solid rgba(111, 111, 111, 0.34); + background: rgba(182, 182, 182, 0.12); + border: 2px solid rgba(111, 111, 111, 0.34); + max-height:300px; + background: rgba(182, 182, 182, 0.12); + border: 2px solid rgba(111, 111, 111, 0.34); + background: rgba(182, 182, 182, 0.12); + border: 2px solid rgba(111, 111, 111, 0.34); } .theme-catalog div.thread strong { - display: block; + display: block; } .theme-catalog div.threads{ - text-align: center; - margin-left: -20px; + text-align: center; + margin-left: -20px; +} + +div.thread:hover { + background: #D6DAF0; + border-color: #B7C5D9; } .theme-catalog div.grid-size-vsmall img { - max-width: 100%; - max-height: 100px; + max-height: 64px; + max-width: 100px; } .theme-catalog div.grid-size-vsmall { - width: 100px; - max-width: 100px; - max-height: 150px; -} + width: 100px; + max-width: 100px; + max-height: 150px; +} + +.theme-catalog div.grid-size-small img { + max-height: 128px; + max-width: 225px; +} .theme-catalog div.grid-size-small { - width: 200px; - max-width: 200px; - max-height: 350px; -} + width: 200px; + max-width: 225px; + max-height: 300px; +} + +.theme-catalog div.grid-size-large img { + max-height: 148px; + max-width: 300px; +} .theme-catalog div.grid-size-large { - width: 300px; - max-width: 300px; - max-height: 450px; -} + width: 300px; + max-width: 300px; + max-height: 450px; +} .theme-catalog img.thread-image { - height: auto; - max-width: 100%; + height: auto; + max-width: 100%; } @media (max-width: 420px) { - .theme-catalog ul#Grid { - padding-left: 18px; - } - .theme-catalog div.thread { - width: auto; - margin-left: 0; - margin-right: 0; + .theme-catalog ul#Grid { + padding-left: 18px; + } + .theme-catalog div.thread { + width: auto; + margin-left: 0; + margin-right: 0; - } - .theme-catalog div.threads { - overflow: hidden; - } + } + .theme-catalog div.threads { + overflow: hidden; + } } -@include url("tooltipster/tooltipster.css"); - .compact-boardlist { - padding: 3px; - padding-bottom: 0; + padding: 3px; + padding-bottom: 0; } .compact-boardlist .cb-item { - display: inline-block; - vertical-align: middle; + display: inline-block; + vertical-align: middle; } .compact-boardlist .cb-icon { - padding-bottom: 1px; + padding-bottom: 1px; } .compact-boardlist .cb-fa { - font-size: 21px; - padding: 2px; - padding-top: 0; + font-size: 21px; + padding: 2px; + padding-top: 0; } .compact-boardlist .cb-cat { - padding: 5px 6px 8px 6px; + padding: 5px 6px 8px 6px; } /* styles also used by watch.js */ .cb-menuitem { - display: table-row; + display: table-row; } .cb-menuitem span { - padding: 5px; - display: table-cell; - text-align: left; - border-top: 1px solid rgba(0, 0, 0, 0.5); + padding: 5px; + display: table-cell; + text-align: left; + border-top: 1px solid rgba(0, 0, 0, 0.5); } .cb-menuitem span.cb-uri { - text-align: right; + text-align: right; } .boardlist:not(.compact-boardlist) #watch-pinned::before { @@ -625,17 +649,17 @@ pre { content: " ] "; } .boardlist:not(.compact-boardlist) #watch-pinned { - display: inline; + display: inline; } .boardlist:not(.compact-boardlist) #watch-pinned a { margin-left: 3pt; } .boardlist:not(.compact-boardlist) #watch-pinned a:first-child { - margin-left: 0pt; + margin-left: 0pt; } .compact-boardlist #watch-pinned { - display: inline-block; + display: inline-block; vertical-align: middle; } @@ -668,7 +692,7 @@ pre { background-color: #d6daf0; border: 1px solid black; display: inline-block; - position: relative; + position: relative; margin-top: 20px; width: 600px; height: 300px; @@ -691,6 +715,7 @@ pre { .options_tab_icon { padding: 5px; color: black; + cursor: pointer; } .options_tab_icon.active { color: red; @@ -723,3 +748,13 @@ pre { .mentioned { word-wrap: break-word; } + +code > pre { +/* Better code tags */ + background:black; + max-width:inherit; +} + +code > pre > span.pln { + color:grey; +} diff --git a/stylesheets/tooltipster/tooltipster.css b/stylesheets/tooltipster/tooltipster.css deleted file mode 100644 index e5c609cc..00000000 --- a/stylesheets/tooltipster/tooltipster.css +++ /dev/null @@ -1,274 +0,0 @@ -/* This is the default Tooltipster theme (feel free to modify or duplicate and create multiple themes!): */ -.tooltipster-default { - border-radius: 5px; - border: 2px solid #000; - background: #4c4c4c; - color: #fff; -} - -/* Use this next selector to style things like font-size and line-height: */ -.tooltipster-default .tooltipster-content { - font-family: Arial, sans-serif; - font-size: 14px; - line-height: 16px; - padding: 8px 10px; - overflow: hidden; -} - -/* This next selector defines the color of the border on the outside of the arrow. This will automatically match the color and size of the border set on the main tooltip styles. Set display: none; if you would like a border around the tooltip but no border around the arrow */ -.tooltipster-default .tooltipster-arrow .tooltipster-arrow-border { - /* border-color: ... !important; */ -} - - -/* If you're using the icon option, use this next selector to style them */ -.tooltipster-icon { - cursor: help; - margin-left: 4px; -} - - - - - - - - -/* This is the base styling required to make all Tooltipsters work */ -.tooltipster-base { - padding: 0; - font-size: 0; - line-height: 0; - position: absolute; - left: 0; - top: 0; - z-index: 9999999; - pointer-events: none; - width: auto; - overflow: visible; -} -.tooltipster-base .tooltipster-content { - overflow: hidden; -} - - -/* These next classes handle the styles for the little arrow attached to the tooltip. By default, the arrow will inherit the same colors and border as what is set on the main tooltip itself. */ -.tooltipster-arrow { - display: block; - text-align: center; - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; - z-index: -1; -} -.tooltipster-arrow span, .tooltipster-arrow-border { - display: block; - width: 0; - height: 0; - position: absolute; -} -.tooltipster-arrow-top span, .tooltipster-arrow-top-right span, .tooltipster-arrow-top-left span { - border-left: 8px solid transparent !important; - border-right: 8px solid transparent !important; - border-top: 8px solid; - bottom: -7px; -} -.tooltipster-arrow-top .tooltipster-arrow-border, .tooltipster-arrow-top-right .tooltipster-arrow-border, .tooltipster-arrow-top-left .tooltipster-arrow-border { - border-left: 9px solid transparent !important; - border-right: 9px solid transparent !important; - border-top: 9px solid; - bottom: -7px; -} - -.tooltipster-arrow-bottom span, .tooltipster-arrow-bottom-right span, .tooltipster-arrow-bottom-left span { - border-left: 8px solid transparent !important; - border-right: 8px solid transparent !important; - border-bottom: 8px solid; - top: -7px; -} -.tooltipster-arrow-bottom .tooltipster-arrow-border, .tooltipster-arrow-bottom-right .tooltipster-arrow-border, .tooltipster-arrow-bottom-left .tooltipster-arrow-border { - border-left: 9px solid transparent !important; - border-right: 9px solid transparent !important; - border-bottom: 9px solid; - top: -7px; -} -.tooltipster-arrow-top span, .tooltipster-arrow-top .tooltipster-arrow-border, .tooltipster-arrow-bottom span, .tooltipster-arrow-bottom .tooltipster-arrow-border { - left: 0; - right: 0; - margin: 0 auto; -} -.tooltipster-arrow-top-left span, .tooltipster-arrow-bottom-left span { - left: 6px; -} -.tooltipster-arrow-top-left .tooltipster-arrow-border, .tooltipster-arrow-bottom-left .tooltipster-arrow-border { - left: 5px; -} -.tooltipster-arrow-top-right span, .tooltipster-arrow-bottom-right span { - right: 6px; -} -.tooltipster-arrow-top-right .tooltipster-arrow-border, .tooltipster-arrow-bottom-right .tooltipster-arrow-border { - right: 5px; -} -.tooltipster-arrow-left span, .tooltipster-arrow-left .tooltipster-arrow-border { - border-top: 8px solid transparent !important; - border-bottom: 8px solid transparent !important; - border-left: 8px solid; - top: 50%; - margin-top: -7px; - right: -7px; -} -.tooltipster-arrow-left .tooltipster-arrow-border { - border-top: 9px solid transparent !important; - border-bottom: 9px solid transparent !important; - border-left: 9px solid; - margin-top: -8px; -} -.tooltipster-arrow-right span, .tooltipster-arrow-right .tooltipster-arrow-border { - border-top: 8px solid transparent !important; - border-bottom: 8px solid transparent !important; - border-right: 8px solid; - top: 50%; - margin-top: -7px; - left: -7px; -} -.tooltipster-arrow-right .tooltipster-arrow-border { - border-top: 9px solid transparent !important; - border-bottom: 9px solid transparent !important; - border-right: 9px solid; - margin-top: -8px; -} - - -/* Some CSS magic for the awesome animations - feel free to make your own custom animations and reference it in your Tooltipster settings! */ - -.tooltipster-fade { - opacity: 0; - -webkit-transition-property: opacity; - -moz-transition-property: opacity; - -o-transition-property: opacity; - -ms-transition-property: opacity; - transition-property: opacity; -} -.tooltipster-fade-show { - opacity: 1; -} - -.tooltipster-grow { - -webkit-transform: scale(0,0); - -moz-transform: scale(0,0); - -o-transform: scale(0,0); - -ms-transform: scale(0,0); - transform: scale(0,0); - -webkit-transition-property: -webkit-transform; - -moz-transition-property: -moz-transform; - -o-transition-property: -o-transform; - -ms-transition-property: -ms-transform; - transition-property: transform; - -webkit-backface-visibility: hidden; -} -.tooltipster-grow-show { - -webkit-transform: scale(1,1); - -moz-transform: scale(1,1); - -o-transform: scale(1,1); - -ms-transform: scale(1,1); - transform: scale(1,1); - -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - -moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - -ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - -o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -} - -.tooltipster-swing { - opacity: 0; - -webkit-transform: rotateZ(4deg); - -moz-transform: rotateZ(4deg); - -o-transform: rotateZ(4deg); - -ms-transform: rotateZ(4deg); - transform: rotateZ(4deg); - -webkit-transition-property: -webkit-transform, opacity; - -moz-transition-property: -moz-transform; - -o-transition-property: -o-transform; - -ms-transition-property: -ms-transform; - transition-property: transform; -} -.tooltipster-swing-show { - opacity: 1; - -webkit-transform: rotateZ(0deg); - -moz-transform: rotateZ(0deg); - -o-transform: rotateZ(0deg); - -ms-transform: rotateZ(0deg); - transform: rotateZ(0deg); - -webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 1); - -webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4); - -moz-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4); - -ms-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4); - -o-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4); - transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4); -} - -.tooltipster-fall { - top: 0; - -webkit-transition-property: top; - -moz-transition-property: top; - -o-transition-property: top; - -ms-transition-property: top; - transition-property: top; - -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - -moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - -ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - -o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -} -.tooltipster-fall-show { -} -.tooltipster-fall.tooltipster-dying { - -webkit-transition-property: all; - -moz-transition-property: all; - -o-transition-property: all; - -ms-transition-property: all; - transition-property: all; - top: 0px !important; - opacity: 0; -} - -.tooltipster-slide { - left: -40px; - -webkit-transition-property: left; - -moz-transition-property: left; - -o-transition-property: left; - -ms-transition-property: left; - transition-property: left; - -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - -moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - -ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - -o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); - transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -} -.tooltipster-slide.tooltipster-slide-show { -} -.tooltipster-slide.tooltipster-dying { - -webkit-transition-property: all; - -moz-transition-property: all; - -o-transition-property: all; - -ms-transition-property: all; - transition-property: all; - left: 0px !important; - opacity: 0; -} - - -/* CSS transition for when contenting is changing in a tooltip that is still open. The only properties that will NOT transition are: width, height, top, and left */ -.tooltipster-content-changing { - opacity: 0.5; - -webkit-transform: scale(1.1, 1.1); - -moz-transform: scale(1.1, 1.1); - -o-transform: scale(1.1, 1.1); - -ms-transform: scale(1.1, 1.1); - transform: scale(1.1, 1.1); -} diff --git a/templates/index.html b/templates/index.html index 9f9a6117..178c1ed0 100644 --- a/templates/index.html +++ b/templates/index.html @@ -94,6 +94,5 @@ -