From: Radek Czajka Date: Mon, 7 Aug 2023 11:20:53 +0000 (+0200) Subject: cleanup X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/759e23384cc103d4d313d9a5486644d59142fe69?ds=inline cleanup --- diff --git a/src/catalogue/static/player/openplayer.js b/src/catalogue/static/player/openplayer.js deleted file mode 100644 index 4fe27bd31..000000000 --- a/src/catalogue/static/player/openplayer.js +++ /dev/null @@ -1,18 +0,0 @@ -(function($) { - $(function() { - - - -$('.open-player').click(function(event) { - event.preventDefault(); - window.open($(this).attr('href'), - 'player', - 'width=422, height=500, scrollbars=1' - ); -}); - - - - }); -})(jQuery); - diff --git a/src/catalogue/static/player/player.css b/src/catalogue/static/player/player.css deleted file mode 100644 index 829a9a1c0..000000000 --- a/src/catalogue/static/player/player.css +++ /dev/null @@ -1,21 +0,0 @@ -#player h1 { - font-size: 2em; - margin: .5em; -} - -.player-info { - margin: 1em; -} - - -.play { - cursor: pointer; -} - -.play:hover { - color: #0D7E85; -} - -.daisy-list { - list-style: none; -} diff --git a/src/catalogue/static/player/player.js b/src/catalogue/static/player/player.js deleted file mode 100644 index 69870bb34..000000000 --- a/src/catalogue/static/player/player.js +++ /dev/null @@ -1,98 +0,0 @@ -(function($) { - $(function() { - - $(".jp-jplayer").each(function() { - var $self = $(this); - var $root = $self.parent(); - var $number = $('.number', $root); - $self.jPlayer({ - swfPath: "/static/jplayer/", - solution: "html,flash", - supplied: $self.attr('data-supplied'), - cssSelectorAncestor: "#" + $self.attr("data-player"), - - ready: function() { - var player = $(this); - var setMedia = function(elem, time=0) { - var li = $(elem).parent(); - var media = {} - - media['mp3'] = li.attr('data-mp3'); - media['oga'] = li.attr('data-ogg'); - media['id'] = li.attr('data-media-id'); - - $(".title", $root).html(li.html()); - player.jPlayer("setMedia", media); - player.jPlayer("pause", time); - return player; - }; - - $('.play-next', $root).click(function() { - var next = parseInt($number.text()) + 1; - var p = $('.jp-playlist .play:eq(' + (next - 1) + ')', $root); - if (p.length) { - setMedia(p).jPlayer("play"); - $number.text(next) - } - }); - $('.play-prev', $root).click(function() { - var next = parseInt($number.text()) - 1; - if (next < 1) - return; - var p = $('.jp-playlist .play:eq(' + (next - 1) + ')', $root); - setMedia(p).jPlayer("play"); - $number.text(next) - }); - - var initialElem = $('.jp-playlist .play', $root).first(); - var initialTime = 0; - if (Modernizr.localstorage) { - try { - audiobooks = JSON.parse(localStorage["audiobook-history"]); - } catch { - audiobooks = {}; - } - last = audiobooks[$root.attr("data-book-slug")] - // Fallback for book id; - if (!last) { - last = audiobooks[$root.attr("data-book-id")] - } - - if (last) { - initialElem = $('[data-media-id="' + last[1] + '"] .play', $root).first(); - initialTime = last[2]; - $number.text($(".jp-playlist .play", $root).index(initialElem) + 1); - } - } - setMedia(initialElem, initialTime); - }, - - timeupdate: function(event) { - if (event.jPlayer.status.currentTime && Modernizr.localstorage) { - try { - audiobooks = JSON.parse(localStorage["audiobook-history"]); - } catch { - audiobooks = {}; - } - t = event.jPlayer.status.currentTime; - if (t && event.jPlayer.status.duration - t > 10) { - audiobooks[$root.attr("data-book-slug")] = [ - Date.now(), - event.jPlayer.status.media.id, - event.jPlayer.status.currentTime - ]; - } else { - delete audiobooks[$root.attr("data-book-slug")]; - } - // Remove old book id, if present. - delete audiobooks[$root.attr("data-book-id")]; - localStorage["audiobook-history"] = JSON.stringify(audiobooks); - } - } - }); - }); - - - - }); -})(jQuery) diff --git a/src/catalogue/templates/catalogue/preview_ad_homepage.html b/src/catalogue/templates/catalogue/preview_ad_homepage.html index d3197723b..63d90da18 100644 --- a/src/catalogue/templates/catalogue/preview_ad_homepage.html +++ b/src/catalogue/templates/catalogue/preview_ad_homepage.html @@ -23,7 +23,7 @@

Dziękujemy za wsparcie — przeczytaj w prezencie już dzisiaj!

{% else %}

Aby przeczytać prapremierę, dorzuć się do Wolnych Lektur dowolną wpłatą. Ustaw stałe wsparcie, a będziesz mieć dostęp do kolejnych prapremier.

- Dorzuć się + Dorzuć się {% endif %} diff --git a/src/catalogue/templates/catalogue/snippets/audiobook_list.html b/src/catalogue/templates/catalogue/snippets/audiobook_list.html deleted file mode 100644 index 73f9f6ad3..000000000 --- a/src/catalogue/templates/catalogue/snippets/audiobook_list.html +++ /dev/null @@ -1,12 +0,0 @@ -{% load catalogue_tags %} - -{% audiobook_tree orphans books_by_parent %} -{% for author, group in books_by_author.items %} - {% if group %} - -
-

{{ author }}

- {% audiobook_tree group books_by_parent %} -
- {% endif %} -{% endfor %} diff --git a/src/catalogue/templatetags/catalogue_tags.py b/src/catalogue/templatetags/catalogue_tags.py index dd0d4026f..7f34c13b2 100644 --- a/src/catalogue/templatetags/catalogue_tags.py +++ b/src/catalogue/templatetags/catalogue_tags.py @@ -151,19 +151,6 @@ def book_tree(book_list, books_by_parent): return '' -@register.simple_tag -def audiobook_tree(book_list, books_by_parent): - text = "".join("
  • %s%s
  • " % ( - reverse("book_player", args=[book.slug]), book.title, - audiobook_tree(books_by_parent.get(book, ()), books_by_parent) - ) for book in book_list) - - if text: - return mark_safe("
      %s
    " % text) - else: - return '' - - @register.simple_tag def book_tree_texml(book_list, books_by_parent, depth=1): return mark_safe("".join(""" diff --git a/src/club/static/club/club.scss b/src/club/static/club/club.scss deleted file mode 100644 index ad63bfca8..000000000 --- a/src/club/static/club/club.scss +++ /dev/null @@ -1,213 +0,0 @@ -.plan-select { - margin-bottom: 15px; -} - -.methods { - color: #888; - line-height: 30px; -} -.methods .method { - border: 1px solid #888; - border-radius: 5px; - display: inline-block; - padding: 0 5px; -} - -.methods img { - height: 30px; - margin-right: 5px; - vertical-align: middle; -} - -.payment-method.disabled { - opacity: .5; - filter: grayscale(100%); -} - -.button { - box-sizing: border-box; - display: inline-block; - text-align: center; -} -.kwota, .inna .button, .plan-toggle, .inna input { - border: 1px solid black; - border-radius: 8px; - background: none; - cursor: pointer; - padding: 0; - margin-right: 3%; - margin-bottom: 10px; - line-height: 3em; - font-size: 20px; -} -.plan-toggle { - width: 46.5%; -} -.kwota { - width: 30%; -} -.kwota:after { - content: " zł"; -} -.kwota.yearly { - background: orange; - -} -.inna .button { - width: 63%; -} -.inna input { - width: 60%; - padding-left: 1.5%; - padding-right: 1.5%; - height: 3em !important; - text-align: center; -} -.chunk-alt { - position: relative; - overflow: hidden; -} -.chunk-alt .chunk { - top: 0; -} - -.kwota.active, .plan-toggle.active { - background: #9ACD32; -} -.inna input {display: none;} -.inna.active input {display: inline;} -.inna.active .button {display: none;} - -.ambassador { - padding: 2em; - margin-bottom: 1em; - border: 1px solid #ddd; - position: relative; - min-height: 100px; -} -.ambassador.with-photo { - padding-right: 145px; -} -.ambassador img { - border-radius: 100%; - height: 100px; - width: 100px; - position: absolute; - top: 35px; - right: 30px; -} -.ambassador div { - text-align: right; - line-height: 1.5em; -} - -.club-form-info { - line-height: 1.5em; -} - -@media screen and (max-width: 1023px) { - .club-form-info { - margin-top: 2em; - } -} - - -@media screen and (min-width: 1024px) { - .club-form-info { - border-left: 1px solid #ddd; - padding-left: 2em; - margin-left: 2em; - } - .twocol { - display: flex; - } - .twocol > form, .twocol > div { - flex: 1; - } -} - - -.methods { - .button { - border: 1px solid black; - border-radius: 10px; - padding: 10px; - margin-right: 3%; - cursor: pointer; - - &.active { - background: #9ACD3240; - } - } -} - - -label.required { - &::before { - content: " * "; - color: red; - } -} - - - -.helptext { - position: relative; - - .short { - height: 1.5em; - overflow: hidden; - position: relative; - - &:after { - content:' '; - position:absolute; - bottom:0; - width:25%; - height:20px; - background-color:transparent; - overflow: hidden; - /* assume ltr */ - right:0; - background-image:-webkit-linear-gradient(to right,rgba(255,255,255,0),#ffffff 50%); - background-image:-moz-linear-gradient(to right,rgba(255,255,255,0),#ffffff 50%); - background-image:-o-linear-gradient(to right,rgba(255,255,255,0),#ffffff 50%); - background-image:linear-gradient(to right,rgba(255,255,255,0),#ffffff 50%) - } - } - - .morelink { - position: absolute; - top: 0; - right: 0; - &:after { - content: " ↓"; - } - } -} - - -#payment-form { - textarea { - box-sizing: border-box; - padding: 8px; - width: 400px; - height: 4em; - } - input[type="text"], input[type="email"] { - box-sizing: border-box; - width: 400px; - padding: 8px; - &#id_postal_code { - width: 100px; - } - &#id_postal_town { - width: 300px; - } - } - select { - box-sizing: border-box; - width: 400px; - padding: 8px; - } -} diff --git a/src/club/static/club/form.js b/src/club/static/club/form.js deleted file mode 100644 index a32a5896e..000000000 --- a/src/club/static/club/form.js +++ /dev/null @@ -1,35 +0,0 @@ -$(function() { - - function update_methods() { - $("#payment-form .payment-method").addClass("disabled"); - $("#payment-form .payment-method input").prop("disabled", true); - var plan = $("#payment-form .plan:checked"); - if (plan.length) { - $.each( - $("#payment-form .plan:checked").attr('data-methods').trim().split(" "), - function(i, slug) { - $("#payment-method-" + slug).removeClass("disabled"); - $("#payment-method-" + slug + " input").prop("disabled", false); - } - ); - } - } - update_methods(); - $("#payment-form .plan").change(update_methods); - - - function qs(key) { - key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&"); // escape RegEx meta chars - var match = location.search.match(new RegExp("[?&]"+key+"=([^&]+)(&|$)")); - return match && decodeURIComponent(match[1].replace(/\+/g, " ")); - } - - $("#payment-form").submit(function() { - let camp = qs('pk_campaign'); - if (!camp && window.location.pathname !== "/pomagam/") { - camp = window.location.pathname; - } - let dims = camp ? {dimension1: camp} : {}; - _paq.push(['trackGoal', 12, parseFloat($("#id_amount").val()), dims]); - }); -}); diff --git a/src/funding/static/funding/funding.js b/src/funding/static/funding/funding.js deleted file mode 100644 index 765bddcad..000000000 --- a/src/funding/static/funding/funding.js +++ /dev/null @@ -1,18 +0,0 @@ -$(function() { - $('.funding .close').click(function(e) { - e.preventDefault(); - var fundNode = $(e.target).parent(); - fundNode.slideUp(function(){fundingHandle.show()}); - if(Modernizr.localstorage) - localStorage['hide-offer-id'] = fundNode.attr('data-offer-id'); - }); - - var fundingTopHeader = $('#funding-closeable'); - var fundingHandle = $('#funding-handle'); - fundingHandle.click(function(e) { - fundingTopHeader.slideDown(); - $(e.target).hide(); - if(Modernizr.localstorage) - localStorage.removeItem('hide-offer-id'); - }); -}); \ No newline at end of file diff --git a/src/wolnelektury/settings/static.py b/src/wolnelektury/settings/static.py index 15f758a6f..e91c742d4 100644 --- a/src/wolnelektury/settings/static.py +++ b/src/wolnelektury/settings/static.py @@ -32,34 +32,6 @@ PIPELINE = { ], 'output_filename': 'css/compressed/2022.css', }, - 'main': { - # styles both for mobile and for big screen - 'source_filenames': [ - 'css/import/gelasio.css', - - 'css/jquery.countdown.css', - 'jplayer/jplayer.blue.monday.css', - - 'sponsors/css/sponsors.css', - - 'annoy/banner.scss', - - 'css/ui-lightness/jquery-ui-1.8.16.custom.css', - - 'css/tlite.css', - - 'scss/main.scss', - 'club/club.scss', - ], - 'output_filename': 'css/compressed/main.css', - }, - 'book': { - 'source_filenames': [ - 'css/import/gelasio.css', - 'css/master.book.css', - ], - 'output_filename': 'css/compressed/book.css', - }, 'book_text': { 'source_filenames': [ 'css/import/gelasio.css', @@ -73,71 +45,12 @@ PIPELINE = { ], 'output_filename': 'css/compressed/book_text.css', }, - 'forum': { - 'source_filenames': [ - 'scss/forum.scss', - ], - 'output_filename': 'css/compressed/compressed/forum.css', - }, - 'picture': { - 'source_filenames': [ - 'css/import/gelasio.css', - 'css/master.book.css', - 'css/master.picture.css', - ], - 'output_filename': 'css/compressed/picture.css', - }, - 'player': { - 'source_filenames': [ - 'jplayer/jplayer.blue.monday.css', - 'player/player.css', - ], - 'output_filename': 'css/compressed/player.css', - }, - 'simple': { - 'source_filenames': ('css/simple.css',), - 'output_filename': 'css/compressed/simple.css', - }, 'widget': { 'source_filenames': ('scss/widget.scss',), 'output_filename': 'css/compressed/widget.css', }, }, 'JAVASCRIPT': { - 'base': { - 'source_filenames': ( - 'js/contrib/jquery.cycle2.min.js', - 'js/contrib/jquery.jqmodal.js', - 'js/contrib/jquery.form.js', - 'js/contrib/jquery.paging.min.js', - 'js/contrib/jquery.countdown.js', 'js/contrib/jquery.countdown-pl.js', - 'js/contrib/jquery.countdown-de.js', 'js/contrib/jquery.countdown-uk.js', - 'js/contrib/jquery.countdown-es.js', 'js/contrib/jquery.countdown-lt.js', - 'js/contrib/jquery.countdown-ru.js', 'js/contrib/jquery.countdown-fr.js', - 'js/contrib/jquery.shorten.js', - - 'js/contrib/jquery-ui-1.8.16.custom.min.js', - - 'js/contrib/tlite.min.js', - - 'jplayer/jquery.jplayer.min.js', - 'jplayer/jplayer.playlist.min.js', - 'player/player.js', - - 'js/locale.js', - 'js/dialogs.js', - 'js/base.js', - 'pdcounter/pdcounter.js', - 'sponsors/js/sponsors.js', - 'player/openplayer.js', - 'js/search.js', - 'funding/funding.js', - 'club/form.js', - - 'annoy/banner.js', - ), - 'output_filename': 'js/base.min.js', - }, '2022': { 'source_filenames': [ '2022/scripts/vendor.js', @@ -162,14 +75,6 @@ PIPELINE = { ], 'output_filename': 'js/2022.min.js' }, - 'player': { - 'source_filenames': [ - 'jplayer/jquery.jplayer.min.js', - 'jplayer/jplayer.playlist.min.js', - 'player/player.js', - ], - 'output_filename': 'js/player.min.js', - }, '2022_player': { 'source_filenames': [ 'js/contrib/jplayer/jquery.jplayer.min.js', @@ -178,23 +83,8 @@ PIPELINE = { ], 'output_filename': 'js/2022_player.min.js', }, - 'book': { - 'source_filenames': [ - 'js/contrib/jquery.eventdelegation.js', - 'js/contrib/jquery.scrollto.js', - 'js/contrib/jquery.highlightfade.js', - 'js/book_text/other.js', - 'js/book.js', - - 'js/contrib/raphael-min.js', - 'js/contrib/progressSpin.min.js', - 'js/picture.js', - ], - 'output_filename': 'js/book.min.js', - }, 'book_text': { 'source_filenames': [ - 'js/contrib/jquery.cycle2.min.js', 'js/contrib/jquery.form.js', 'js/contrib/jquery.jqmodal.js', 'js/book_text/info.js', @@ -209,22 +99,11 @@ PIPELINE = { 'js/contrib/jquery.highlightfade.js', 'js/contrib/raphael-min.js', - 'player/openplayer.js', 'js/contrib/progressSpin.min.js', 'annoy/banner.js', ], 'output_filename': 'js/book_text.js', }, - 'picture': { - 'source_filenames': [ - 'js/picture.js', - ], - 'output_filename': 'js/picture.min.js', - }, - 'book_ie': { - 'source_filenames': ('js/contrib/ierange-m2.js',), - 'output_filename': 'js/book_ie.min.js', - }, 'widget': { 'source_filenames': ( 'js/contrib/jquery.js', diff --git a/src/wolnelektury/static/css/simple.css b/src/wolnelektury/static/css/simple.css deleted file mode 100644 index f723889a2..000000000 --- a/src/wolnelektury/static/css/simple.css +++ /dev/null @@ -1,75 +0,0 @@ -/* Legacy simple style for some very old pages. */ - -html { - margin: 0; -} - -body { - margin: 0; - padding: 1em; - color: #2F4110; - background: #FFF url(/static/img/bg.png) repeat-x; - font-size: .75em; - font-family: Verdana,Arial,Helvetica,sans-serif; -} - - - -#body { - margin-top: 2em; -/* - max-width: 900px; - margin:auto; -*/ - margin-left: 400px; -} - -#logo { - float: left; - margin-left: 100px; - margin-top: 4em; -} - -h1 { - font: bold 2.2em Arial,sans-serif; - padding-top: .7em; - margin-bottom: .2em; -} - - -h2 { - font-size: 1.1em; - margin:0; -} - -a { - color: #295158; - text-decoration: none; -} - - -.plain li { - list-style: none; -} - -li { - margin: 1em; -} - -.clr { - clear: both; -} - - -.more { - text-align: right; -} - -table { - margin-top: 1em; -} - -th { - font-weight: normal; - text-align: left; -} diff --git a/src/wolnelektury/static/css/tlite.css b/src/wolnelektury/static/css/tlite.css deleted file mode 100644 index af70a05fc..000000000 --- a/src/wolnelektury/static/css/tlite.css +++ /dev/null @@ -1,83 +0,0 @@ -.tlite { - background: #111; - color: white; - font-family: sans-serif; - font-size: 0.8rem; - font-weight: normal; - text-decoration: none; - text-align: left; - padding: 0.6em 0.75rem; - border-radius: 4px; - position: absolute; - opacity: 0; - visibility: hidden; - transition: opacity 0.4s; - white-space: nowrap; - box-shadow: 0 0.5rem 1rem -0.5rem black; - z-index: 1000; - -webkit-backface-visibility: hidden; -} - -.tlite-table td, -.tlite-table th { - position: relative; -} - -.tlite-visible { - visibility: visible; - opacity: 0.9; -} - -.tlite::before { - content: ' '; - display: block; - background: inherit; - width: 10px; - height: 10px; - position: absolute; - transform: rotate(45deg); -} - -.tlite-n::before { - top: -3px; - left: 50%; - margin-left: -5px; -} - -.tlite-nw::before { - top: -3px; - left: 10px; -} - -.tlite-ne::before { - top: -3px; - right: 10px; -} - -.tlite-s::before { - bottom: -3px; - left: 50%; - margin-left: -5px; -} - -.tlite-se::before { - bottom: -3px; - right: 10px; -} - -.tlite-sw::before { - bottom: -3px; - left: 10px; -} - -.tlite-w::before { - left: -3px; - top: 50%; - margin-top: -5px; -} - -.tlite-e::before { - right: -3px; - top: 50%; - margin-top: -5px; -} diff --git a/src/wolnelektury/static/js/base.js b/src/wolnelektury/static/js/base.js deleted file mode 100644 index 01c6d4e4b..000000000 --- a/src/wolnelektury/static/js/base.js +++ /dev/null @@ -1,387 +0,0 @@ -(function($) { - $(function() { - $.fn.toggle_slide = function(p) { - var cont = $(this); - var short_el = p['short_el'] || $(':first-child', this); - var long_el = p['long_el'] || short_el.next(); - var button = p['button']; - var short_text = p['short_text']; - var long_text = p['long_text']; - - var toggle_fun = function(cont, short_el, long_el, button, short_text, long_text) { - return function () { - if (cont.hasClass('short')) { - cont.animate({"height": long_el.attr("cont_h") + 'px'}, {duration: "fast"}) - .removeClass('short'); - short_el.hide(); - long_el.show(); - if (button && long_text) button.html(long_text); - } else { - cont.animate({"height": short_el.attr("cont_h") + 'px'}, {duration: "fast"}).addClass('short'); - long_el.hide(); - short_el.show(); - if (button && short_text) button.html(short_text); - } - return false; - }; - }; - if (long_el.html().length <= short_el.html().length) - return; - - // ensure long element shown first - long_el.show();short_el.hide(); - long_el.attr("cont_h", $(this).height()).hide(); - short_el.show().attr("cont_h", $(this).height()); - $(this).addClass('short'); - - if (button && short_text) - button.html(short_text); - if (button) - button.click(toggle_fun(cont, short_el, long_el, button, short_text, long_text)); - }; - - - // Fragments - $('.fragment-with-short').each(function() { - $(this).toggle_slide({ - short_el: $('.fragment-short-text', this), - long_el: $('.fragment-long-text', this), - button: $('.toggle', this) - }) - }); - $('#description').each(function() { - $(this).toggle_slide({ - short_el: $('#description-short', this), - long_el: $('#description-long', this), - button: $(this) - }) - }); - - $('.more-expand').each(function () { - $(this).shorten({ - showChars: 150, - moreText: "więcej", - lessText: "mniej" - }); - }); - - - $('.carousel').on('cycle-before', function(event, optionHash, outgoingSlideEl, incomingSlideEl, forwardFlag) { - $("iframe", outgoingSlideEl).attr("src", ''); - $("iframe", incomingSlideEl).attr("src", $("iframe", incomingSlideEl).attr('data-src')); - }); - $('.carousel section').first().each(function() { - $("iframe", this).attr("src", $("iframe", this).attr('data-src')); - }); - - $(".carousel").each(function() { - opts = {}; - if ($('html').hasClass('media-eink')) { - opts.fx = 'none' - } - $(this).cycle(opts); - }); - - - (function() { - var $current = null; - var menu_loaded = false; - $('.hidden-box-wrapper').each(function() { - var $hidden = $('.hidden-box', this); - $('.hidden-box-trigger', this).click(function(event) { - event.preventDefault(); - if ($current == $hidden) { - $current = null; - $hidden.hide('fast'); - } else { - $current && $current.hide('fast'); - $hidden.show('fast'); - $current = $hidden; - if ($(this).hasClass('load-menu') && !menu_loaded) { - $.ajax({ - url: '/katalog/' + LANGUAGE_CODE + '.json', - dataType: "json" - }).done(function(data) { - $.each(data, function(index, value) { - var $menuitem = $('#menu-' + index); - $menuitem.html(value); - var $minisearch = $(""); - $minisearch.keyup(function() { - var s = $(this).val().toLowerCase(); - if (s) { - $("li", $menuitem).each(function() { - if ($("a", this).text().toLowerCase().indexOf(s) != -1) - $(this).show(); - else - $(this).hide(); - }); - } - else { - $("li", $menuitem).css("display", ""); - } - }); - $menuitem.prepend($minisearch); - }); - menu_loaded = true; - }); - } - } - }); - }); - /* this kinda breaks the whole page. */ - $('body').click(function(e) { - if ($current == null) return; - var p = $(e.target); - while (p.length) { - if (p == $current) - return; - if (p.hasClass('hidden-box-trigger') - || p.hasClass('simple-toggler') - || p.hasClass('mini-search')) - return; - p = p.parent(); - } - $current.hide('fast'); - $current = null; - }); - })(); - - - $('#show-menu').click(function(event) { - event.preventDefault(); - //$('#menu').toggle('fast'); - $('body').toggleClass('menu-on'); - }); - - - $('#book-list-nav').find('h2').click(function(event) { - event.preventDefault(); - $('#book-list-nav-index').toggle(); - }); - - - $('#themes-list-toggle').click(function(event) { - event.preventDefault(); - $('#themes-list').toggle('fast'); - }); - - - $('.book-list-index').click(function(){ - $('.book-list-show-index').hide('fast'); - var books_ul = $(this).parent().next().children().first(); - if(books_ul.first().is(':hidden')){ - books_ul.toggle('fast'); - } - return false; - }); - - $('.hoverclick').click(function() {$(this).closest('.hoverget').toggleClass('hover');}); - $('.hoverclick').keydown(function(event){ - var keyCode = (event.keyCode ? event.keyCode : event.which); - if (keyCode == 13) { - $(this).trigger('click'); - } - }); - - $(function(){ - $("#search").search(); - }); - - $('body').on('click', '.simple-toggler' , function(ev) { - ev.preventDefault(); - var scope = $(this).closest('.simple-toggler-scope'); - scope.find('.simple-hidden-box').each(function() { - var $this = $(this); - if ($this.is(':hidden')) { - $this.show(); - } else { - $this.hide(); - } - }); - }); - - - $('.tabbed-filter').each(function() { - var tf = this; - $('.tab').click(function() { - if ($(this).hasClass('active')) { - $(this).removeClass('active'); - $('#' + $(this).attr('data-id')).hide(); - } - else { - var $active = $('.active', tf); - $active.removeClass('active'); - $('#' + $active.attr('data-id')).hide(); - $(this).addClass('active'); - $('#' + $(this).attr('data-id')).show(); - } - }); - }); - - - $('.plain-list-paged').each(function() { - // should change on resize? - var $plc = $(this); - var $pl = $('.plain-list', this); - - var $items = $('p', $pl); - - if ($items.length > 40) { - $items.hide(); - var prev = [0, 0]; - - $('.pager', $plc).paging($items.length, { - format: '[< ncnnn >]', // define how the navigation should look like and in which order onFormat() get's called - perpage: 40, - lapping: 0, // don't overlap pages for the moment - page: 1, // start at page, can also be "null" or negative - onSelect: function (page) { - var data = this.slice; - $items.slice(prev[0], prev[1]).hide(); - $items.slice(data[0], data[1]).show(); - prev = data; - }, - onFormat: function (type) { - switch (type) { - case 'block': // n and c - return '
  • ' + - this.value + '
  • '; - case 'next': // > - return '
  • '; - case 'prev': // < - return '
  • '; - case 'first': // [ - return '
  • «
  • '; - case 'last': // ] - return '
  • »
  • '; - } - } - }); - } - }); - - /* global tlite */ - tlite(function (el) { - return $(el).hasClass('tlite-tooltip'); - }); - - /* more/less switch from https://codepen.io/JoshBlackwood/pen/pEwHe */ - // Hide the extra content initially, using JS so that if JS is disabled, no problemo: - $('.read-more-content').addClass('hide'); - $('.read-more-show, .read-more-hide').removeClass('hide'); - - // Set up the toggle effect: - $('.read-more-show').on('click', function(e) { - $(this).next('.read-more-content').removeClass('hide'); - $(this).addClass('hide'); - e.preventDefault(); - }); - - // Changes contributed by @diego-rzg - $('.read-more-hide').on('click', function(e) { - var p = $(this).parent('.read-more-content'); - p.addClass('hide'); - p.prev('.read-more-show').removeClass('hide'); // Hide only the preceding "Read More" - e.preventDefault(); - }); - - - function update_info() { - var amount = parseInt($("#id_amount").val()); - var monthly = $("#id_monthly").val() == 'True'; - if (monthly) slug = "monthly"; - else if (amount >= parseInt($("#plan-single").attr('data-min-for-year'))) slug = 'single-year'; - else slug = 'single'; - - var chunk = $('.club-form-info .chunk-' + slug); - if (chunk.css('display') == 'none') { - $('.chunk-alt').css('height', $('.chunk-alt').height()); - $('.chunk-alt .chunk').css('position', 'absolute'); - - $('.club-form-info .chunk').fadeOut(); - $('.club-form-info .chunk.chunk-' + slug).fadeIn(function() { - $('.chunk-alt .chunk').css('position', 'static'); - $('.chunk-alt').css('height', 'auto'); - }); - $('.chunk-alt').animate({height: chunk.height()}, 100); - } - } - - $("#id_amount").val($("#plan-monthly").attr('data-amount')); - - $(".button.kwota").click(function() { - var plan = $(this).closest('.plan'); - $('.kwota', plan).removeClass('active') - $('.inna', plan).removeClass('active') - $(this).addClass('active'); - - var amount = $(this).text(); - plan.attr("data-amount", amount); - $("#id_amount").val(amount); - - update_info(); - return false; - }); - - $(".plan-toggle").click(function() { - $(".plan-toggle").removeClass('active'); - $(this).addClass('active') - $(".plan").hide(); - var plan = $("#" + $(this).attr('data-plan')); - plan.show(); - $("#id_amount").val(plan.attr('data-amount')); - $("#id_monthly").val(plan.attr('data-monthly')); - - update_info(); - return false; - }); - - $(".inna .button").click(function() { - var plan = $(this).closest('.plan'); - $('.kwota', plan).removeClass('active'); - $(this).parent().addClass('active'); - $('input', plan).focus(); - - var amount = $('input', $(this).parent()).val(); - plan.attr("data-amount", amount); - $("#id_amount").val(amount); - - update_info(); - return false; - }); - - $(".inna input").on('input', function() { - var plan = $(this).closest('.plan'); - $('.kwota', plan).removeClass('active'); - var amount = $(this).val(); - plan.attr("data-amount", amount); - $("#id_amount").val(amount); - - update_info(); - return false; - }); - - $("#id_method").val('payu-re'); - $(".methods .button").click(function() { - $("#id_method").val($(this).attr('data-method')); - $(".methods .button").removeClass('active'); - $(this).addClass("active"); - }); - - - $("#skiplink-search").click(function() { - console.log('skiplink search'); - $("#search").focus(); - return false; - }); - - // experiments - $(".experiment input").on('change', function() { - let name = $(this).attr('name'); - let val = $(this).val(); - document.cookie = 'EXPERIMENT_' + name + '=' + val + '; path=/; max-age=31536000'; - window.location.reload(true); - }); - }); -})(jQuery); - diff --git a/src/wolnelektury/static/js/contrib/ierange-m2.js b/src/wolnelektury/static/js/contrib/ierange-m2.js deleted file mode 100644 index e87738b0c..000000000 --- a/src/wolnelektury/static/js/contrib/ierange-m2.js +++ /dev/null @@ -1,502 +0,0 @@ -/* - DOM Ranges for Internet Explorer (m2) - - Copyright (c) 2009 Tim Cameron Ryan - Released under the MIT/X License - */ - -/* - Range reference: - http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html - http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsRange.cpp - https://developer.mozilla.org/En/DOM:Range - Selection reference: - http://trac.webkit.org/browser/trunk/WebCore/page/DOMSelection.cpp - TextRange reference: - http://msdn.microsoft.com/en-us/library/ms535872.aspx - Other links: - http://jorgenhorstink.nl/test/javascript/range/range.js - http://jorgenhorstink.nl/2006/07/05/dom-range-implementation-in-ecmascript-completed/ - http://dylanschiemann.com/articles/dom2Range/dom2RangeExamples.html -*/ - -//[TODO] better exception support - -(function () { // sandbox - -/* - DOM functions - */ - -var DOMUtils = { - findChildPosition: function (node) { - for (var i = 0; node = node.previousSibling; i++) - continue; - return i; - }, - isDataNode: function (node) { - return node && node.nodeValue !== null && node.data !== null; - }, - isAncestorOf: function (parent, node) { - return !DOMUtils.isDataNode(parent) && - (parent.contains(DOMUtils.isDataNode(node) ? node.parentNode : node) || - node.parentNode == parent); - }, - isAncestorOrSelf: function (root, node) { - return DOMUtils.isAncestorOf(root, node) || root == node; - }, - findClosestAncestor: function (root, node) { - if (DOMUtils.isAncestorOf(root, node)) - while (node && node.parentNode != root) - node = node.parentNode; - return node; - }, - getNodeLength: function (node) { - return DOMUtils.isDataNode(node) ? node.length : node.childNodes.length; - }, - splitDataNode: function (node, offset) { - if (!DOMUtils.isDataNode(node)) - return false; - var newNode = node.cloneNode(false); - node.deleteData(offset, node.length); - newNode.deleteData(0, offset); - node.parentNode.insertBefore(newNode, node.nextSibling); - } -}; - -/* - Text Range utilities - functions to simplify text range manipulation in ie - */ - -var TextRangeUtils = { - convertToDOMRange: function (textRange, document) { - function adoptBoundary(domRange, textRange, bStart) { - // iterate backwards through parent element to find anchor location - var cursorNode = document.createElement('a'), cursor = textRange.duplicate(); - cursor.collapse(bStart); - var parent = cursor.parentElement(); - do { - parent.insertBefore(cursorNode, cursorNode.previousSibling); - cursor.moveToElementText(cursorNode); - } while (cursor.compareEndPoints(bStart ? 'StartToStart' : 'StartToEnd', textRange) > 0 && cursorNode.previousSibling); - - // when we exceed or meet the cursor, we've found the node - if (cursor.compareEndPoints(bStart ? 'StartToStart' : 'StartToEnd', textRange) == -1 && cursorNode.nextSibling) { - // data node - cursor.setEndPoint(bStart ? 'EndToStart' : 'EndToEnd', textRange); - domRange[bStart ? 'setStart' : 'setEnd'](cursorNode.nextSibling, cursor.text.length); - } else { - // element - domRange[bStart ? 'setStartBefore' : 'setEndBefore'](cursorNode); - } - cursorNode.parentNode.removeChild(cursorNode); - } - - // return a DOM range - var domRange = new DOMRange(document); - adoptBoundary(domRange, textRange, true); - adoptBoundary(domRange, textRange, false); - return domRange; - }, - - convertFromDOMRange: function (domRange) { - function adoptEndPoint(textRange, domRange, bStart) { - // find anchor node and offset - var container = domRange[bStart ? 'startContainer' : 'endContainer']; - var offset = domRange[bStart ? 'startOffset' : 'endOffset'], textOffset = 0; - var anchorNode = DOMUtils.isDataNode(container) ? container : container.childNodes[offset]; - var anchorParent = DOMUtils.isDataNode(container) ? container.parentNode : container; - // visible data nodes need a text offset - if (container.nodeType == 3 || container.nodeType == 4) - textOffset = offset; - - // create a cursor element node to position range (since we can't select text nodes) - var cursorNode = domRange._document.createElement('a'); - anchorParent.insertBefore(cursorNode, anchorNode); - var cursor = domRange._document.body.createTextRange(); - cursor.moveToElementText(cursorNode); - cursorNode.parentNode.removeChild(cursorNode); - // move range - textRange.setEndPoint(bStart ? 'StartToStart' : 'EndToStart', cursor); - textRange[bStart ? 'moveStart' : 'moveEnd']('character', textOffset); - } - - // return an IE text range - var textRange = domRange._document.body.createTextRange(); - adoptEndPoint(textRange, domRange, true); - adoptEndPoint(textRange, domRange, false); - return textRange; - } -}; - -/* - DOM Range - */ - -function DOMRange(document) { - // save document parameter - this._document = document; - - // initialize range -//[TODO] this should be located at document[0], document[0] - this.startContainer = this.endContainer = document.body; - this.endOffset = DOMUtils.getNodeLength(document.body); -} -DOMRange.START_TO_START = 0; -DOMRange.START_TO_END = 1; -DOMRange.END_TO_END = 2; -DOMRange.END_TO_START = 3; - -DOMRange.prototype = { - // public properties - startContainer: null, - startOffset: 0, - endContainer: null, - endOffset: 0, - commonAncestorContainer: null, - collapsed: false, - // private properties - _document: null, - - // private methods - _refreshProperties: function () { - // collapsed attribute - this.collapsed = (this.startContainer == this.endContainer && this.startOffset == this.endOffset); - // find common ancestor - var node = this.startContainer; - while (node && node != this.endContainer && !DOMUtils.isAncestorOf(node, this.endContainer)) - node = node.parentNode; - this.commonAncestorContainer = node; - }, - - // range methods -//[TODO] collapse if start is after end, end is before start - setStart: function(container, offset) { - this.startContainer = container; - this.startOffset = offset; - this._refreshProperties(); - }, - setEnd: function(container, offset) { - this.endContainer = container; - this.endOffset = offset; - this._refreshProperties(); - }, - setStartBefore: function (refNode) { - // set start to beore this node - this.setStart(refNode.parentNode, DOMUtils.findChildPosition(refNode)); - }, - setStartAfter: function (refNode) { - // select next sibling - this.setStart(refNode.parentNode, DOMUtils.findChildPosition(refNode) + 1); - }, - setEndBefore: function (refNode) { - // set end to beore this node - this.setEnd(refNode.parentNode, DOMUtils.findChildPosition(refNode)); - }, - setEndAfter: function (refNode) { - // select next sibling - this.setEnd(refNode.parentNode, DOMUtils.findChildPosition(refNode) + 1); - }, - selectNode: function (refNode) { - this.setStartBefore(refNode); - this.setEndAfter(refNode); - }, - selectNodeContents: function (refNode) { - this.setStart(refNode, 0); - this.setEnd(refNode, DOMUtils.getNodeLength(refNode)); - }, - collapse: function (toStart) { - if (toStart) - this.setEnd(this.startContainer, this.startOffset); - else - this.setStart(this.endContainer, this.endOffset); - }, - - // editing methods - cloneContents: function () { - // clone subtree - return (function cloneSubtree(iterator) { - for (var node, frag = document.createDocumentFragment(); node = iterator.next(); ) { - node = node.cloneNode(!iterator.hasPartialSubtree()); - if (iterator.hasPartialSubtree()) - node.appendChild(cloneSubtree(iterator.getSubtreeIterator())); - frag.appendChild(node); - } - return frag; - })(new RangeIterator(this)); - }, - extractContents: function () { - // cache range and move anchor points - var range = this.cloneRange(); - if (this.startContainer != this.commonAncestorContainer) - this.setStartAfter(DOMUtils.findClosestAncestor(this.commonAncestorContainer, this.startContainer)); - this.collapse(true); - // extract range - return (function extractSubtree(iterator) { - for (var node, frag = document.createDocumentFragment(); node = iterator.next(); ) { - iterator.hasPartialSubtree() ? node = node.cloneNode(false) : iterator.remove(); - if (iterator.hasPartialSubtree()) - node.appendChild(extractSubtree(iterator.getSubtreeIterator())); - frag.appendChild(node); - } - return frag; - })(new RangeIterator(range)); - }, - deleteContents: function () { - // cache range and move anchor points - var range = this.cloneRange(); - if (this.startContainer != this.commonAncestorContainer) - this.setStartAfter(DOMUtils.findClosestAncestor(this.commonAncestorContainer, this.startContainer)); - this.collapse(true); - // delete range - (function deleteSubtree(iterator) { - while (iterator.next()) - iterator.hasPartialSubtree() ? deleteSubtree(iterator.getSubtreeIterator()) : iterator.remove(); - })(new RangeIterator(range)); - }, - insertNode: function (newNode) { - // set original anchor and insert node - if (DOMUtils.isDataNode(this.startContainer)) { - DOMUtils.splitDataNode(this.startContainer, this.startOffset); - this.startContainer.parentNode.insertBefore(newNode, this.startContainer.nextSibling); - } else { - this.startContainer.insertBefore(newNode, this.startContainer.childNodes[this.startOffset]); - } - // resync start anchor - this.setStart(this.startContainer, this.startOffset); - }, - surroundContents: function (newNode) { - // extract and surround contents - var content = this.extractContents(); - this.insertNode(newNode); - newNode.appendChild(content); - this.selectNode(newNode); - }, - - // other methods - compareBoundaryPoints: function (how, sourceRange) { - // get anchors - var containerA, offsetA, containerB, offsetB; - switch (how) { - case DOMRange.START_TO_START: - case DOMRange.START_TO_END: - containerA = this.startContainer; - offsetA = this.startOffset; - break; - case DOMRange.END_TO_END: - case DOMRange.END_TO_START: - containerA = this.endContainer; - offsetA = this.endOffset; - break; - } - switch (how) { - case DOMRange.START_TO_START: - case DOMRange.END_TO_START: - containerB = sourceRange.startContainer; - offsetB = sourceRange.startOffset; - break; - case DOMRange.START_TO_END: - case DOMRange.END_TO_END: - containerB = sourceRange.endContainer; - offsetB = sourceRange.endOffset; - break; - } - - // compare - return containerA.sourceIndex < containerB.sourceIndex ? -1 : - containerA.sourceIndex == containerB.sourceIndex ? - offsetA < offsetB ? -1 : offsetA == offsetB ? 0 : 1 - : 1; - }, - cloneRange: function () { - // return cloned range - var range = new DOMRange(this._document); - range.setStart(this.startContainer, this.startOffset); - range.setEnd(this.endContainer, this.endOffset); - return range; - }, - detach: function () { -//[TODO] Releases Range from use to improve performance. - }, - toString: function () { - return TextRangeUtils.convertFromDOMRange(this).text; - }, - createContextualFragment: function (tagString) { - // parse the tag string in a context node - var content = (DOMUtils.isDataNode(this.startContainer) ? this.startContainer.parentNode : this.startContainer).cloneNode(false); - content.innerHTML = tagString; - // return a document fragment from the created node - for (var fragment = this._document.createDocumentFragment(); content.firstChild; ) - fragment.appendChild(content.firstChild); - return fragment; - } -}; - -/* - Range iterator - */ - -function RangeIterator(range) { - this.range = range; - if (range.collapsed) - return; - -//[TODO] ensure this works - // get anchors - var root = range.commonAncestorContainer; - this._next = range.startContainer == root && !DOMUtils.isDataNode(range.startContainer) ? - range.startContainer.childNodes[range.startOffset] : - DOMUtils.findClosestAncestor(root, range.startContainer); - this._end = range.endContainer == root && !DOMUtils.isDataNode(range.endContainer) ? - range.endContainer.childNodes[range.endOffset] : - DOMUtils.findClosestAncestor(root, range.endContainer).nextSibling; -} - -RangeIterator.prototype = { - // public properties - range: null, - // private properties - _current: null, - _next: null, - _end: null, - - // public methods - hasNext: function () { - return !!this._next; - }, - next: function () { - // move to next node - var current = this._current = this._next; - this._next = this._current && this._current.nextSibling != this._end ? - this._current.nextSibling : null; - - // check for partial text nodes - if (DOMUtils.isDataNode(this._current)) { - if (this.range.endContainer == this._current) - (current = current.cloneNode(true)).deleteData(this.range.endOffset, current.length - this.range.endOffset); - if (this.range.startContainer == this._current) - (current = current.cloneNode(true)).deleteData(0, this.range.startOffset); - } - return current; - }, - remove: function () { - // check for partial text nodes - if (DOMUtils.isDataNode(this._current) && - (this.range.startContainer == this._current || this.range.endContainer == this._current)) { - var start = this.range.startContainer == this._current ? this.range.startOffset : 0; - var end = this.range.endContainer == this._current ? this.range.endOffset : this._current.length; - this._current.deleteData(start, end - start); - } else - this._current.parentNode.removeChild(this._current); - }, - hasPartialSubtree: function () { - // check if this node be partially selected - return !DOMUtils.isDataNode(this._current) && - (DOMUtils.isAncestorOrSelf(this._current, this.range.startContainer) || - DOMUtils.isAncestorOrSelf(this._current, this.range.endContainer)); - }, - getSubtreeIterator: function () { - // create a new range - var subRange = new DOMRange(this.range._document); - subRange.selectNodeContents(this._current); - // handle anchor points - if (DOMUtils.isAncestorOrSelf(this._current, this.range.startContainer)) - subRange.setStart(this.range.startContainer, this.range.startOffset); - if (DOMUtils.isAncestorOrSelf(this._current, this.range.endContainer)) - subRange.setEnd(this.range.endContainer, this.range.endOffset); - // return iterator - return new RangeIterator(subRange); - } -}; - -/* - DOM Selection - */ - -//[NOTE] This is a very shallow implementation of the Selection object, based on Webkit's -// implementation and without redundant features. Complete selection manipulation is still -// possible with just removeAllRanges/addRange/getRangeAt. - -function DOMSelection(document) { - // save document parameter - this._document = document; - - // add DOM selection handler - var selection = this; - document.attachEvent('onselectionchange', function () { selection._selectionChangeHandler(); }); -} - -DOMSelection.prototype = { - // public properties - rangeCount: 0, - // private properties - _document: null, - - // private methods - _selectionChangeHandler: function () { - // check if there exists a range - this.rangeCount = this._selectionExists(this._document.selection.createRange()) ? 1 : 0; - }, - _selectionExists: function (textRange) { - // checks if a created text range exists or is an editable cursor - return textRange.compareEndPoints('StartToEnd', textRange) != 0 || - textRange.parentElement().isContentEditable; - }, - - // public methods - addRange: function (range) { - // add range or combine with existing range - var selection = this._document.selection.createRange(), textRange = TextRangeUtils.convertFromDOMRange(range); - if (!this._selectionExists(selection)) - { - // select range - textRange.select(); - } - else - { - // only modify range if it intersects with current range - if (textRange.compareEndPoints('StartToStart', selection) == -1) - if (textRange.compareEndPoints('StartToEnd', selection) > -1 && - textRange.compareEndPoints('EndToEnd', selection) == -1) - selection.setEndPoint('StartToStart', textRange); - else - if (textRange.compareEndPoints('EndToStart', selection) < 1 && - textRange.compareEndPoints('EndToEnd', selection) > -1) - selection.setEndPoint('EndToEnd', textRange); - selection.select(); - } - }, - removeAllRanges: function () { - // remove all ranges - this._document.selection.empty(); - }, - getRangeAt: function (index) { - // return any existing selection, or a cursor position in content editable mode - var textRange = this._document.selection.createRange(); - if (this._selectionExists(textRange)) - return TextRangeUtils.convertToDOMRange(textRange, this._document); - return null; - }, - toString: function () { - // get selection text - return this._document.selection.createRange().text; - } -}; - -/* - scripting hooks - */ - -document.createRange = function () { - return new DOMRange(document); -}; - -var selection = new DOMSelection(document); -window.getSelection = function () { - return selection; -}; - -//[TODO] expose DOMRange/DOMSelection to window.? - -})(); diff --git a/src/wolnelektury/static/js/contrib/jquery.eventdelegation.js b/src/wolnelektury/static/js/contrib/jquery.eventdelegation.js deleted file mode 100644 index 52fce074a..000000000 --- a/src/wolnelektury/static/js/contrib/jquery.eventdelegation.js +++ /dev/null @@ -1,55 +0,0 @@ -/* - * jQuery Event Delegation Plugin - jquery.eventdelegation.js - * Fast flexible event handling - * - * January 2008 - Randy Morey (http://dev.distilldesign.com/) - */ - -(function ($) { - /* setup list of allowed events for event delegation - * only events that bubble are appropriate - */ - var allowed = {}; - $.each([ - 'click', - 'dblclick', - 'mousedown', - 'mouseup', - 'mousemove', - 'mouseover', - 'mouseout', - 'keydown', - 'keypress', - 'keyup' - ], function(i, eventName) { - allowed[eventName] = true; - }); - - $.fn.extend({ - delegate: function (event, selector, f) { - return $(this).each(function () { - if (allowed[event]) - $(this).bind(event, function (e) { - var el = $(e.target), - result = false; - - while (!$(el).is('body')) { - if ($(el).is(selector)) { - result = f.apply($(el)[0], [e]); - if (result === false) - e.preventDefault(); - return; - } - - el = $(el).parent(); - } - }); - }); - }, - undelegate: function (event) { - return $(this).each(function () { - $(this).unbind(event); - }); - } - }); -})(jQuery); \ No newline at end of file diff --git a/src/wolnelektury/static/js/contrib/jquery.paging.min.js b/src/wolnelektury/static/js/contrib/jquery.paging.min.js deleted file mode 100644 index da169cb26..000000000 --- a/src/wolnelektury/static/js/contrib/jquery.paging.min.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -jQuery paging plugin v1.3.0 23/06/2014 -http://www.xarg.org/2011/09/jquery-pagination-revised/ - -Copyright (c) 2011, Robert Eisele (robert@xarg.org) -Dual licensed under the MIT or GPL Version 2 licenses. -*/ -(function(n,v,r){n.fn.paging=function(z,A){var t=this,b={setOptions:function(a){b.a=n.extend(b.a||{lapping:0,perpage:10,page:1,refresh:{interval:10,url:null},format:"",lock:!1,circular:!1,onClick:null,onFormat:function(){},onSelect:function(){return!0},onRefresh:function(){}},a||{});b.a.lapping|=0;b.a.perpage|=0;null!==b.a.page&&(b.a.page|=0);1>b.a.perpage&&(b.a.perpage=10);b.interval&&v.clearInterval(b.interval);b.a.refresh.url&&(b.interval=v.setInterval(function(){n.ajax({url:b.a.refresh.url,success:function(a){if("string"=== -typeof a)try{a=n.parseJSON(a)}catch(m){return}b.a.onRefresh(a)}})},1E3*b.a.refresh.interval));b.format=function(a){for(var b=0,f=0,h=1,g={g:[],i:0,h:0,b:5,current:3,l:0,m:0},c,p=/[*<>pq\[\]().-]|[nc]+!?/g,n={"[":"first","]":"last","<":"prev",">":"next",q:"left",p:"right","-":"fill",".":"leap"},e={};c=p.exec(a);)c=""+c,r===n[c]?"("===c?f=++b:")"===c?f=0:h&&("*"===c?(g.i=1,g.h=0):(g.i=0,g.h="!"===c.charAt(c.length-1),g.b=c.length-g.h,(g.current=1+c.indexOf("c"))||(g.current=1+g.b>>1)),g.g.push({f:"block", -j:0,c:0}),h=0):(g.g.push({f:n[c],j:f,c:r===e[c]?e[c]=1:++e[c]}),"q"===c?++g.m:"p"===c&&++g.l);return g}(b.a.format);return b},setNumber:function(a){b.s=r===a||0>a?-1:a;return b},setPage:function(a){function w(a,b,c){c=""+a.onFormat.call(b,c);p=b.value?p+c.replace(/m?(c=m=-1,h=Math.max(1,a-e.current+1-q),g=h+e.b):(c=1+Math.ceil((m-f.perpage)/(f.perpage-q)),a=Math.max(1,Math.min(0>a?1+c+a:a,c)),e.i?(h=1,g=1+c,e.current=a,e.b=c):(h=Math.max(1,Math.min(a-e.current,c-e.b)+1),g=e.h?h+e.b:Math.min(h+e.b,1+c)));for(;u--;){k=0;l=e.g[u];switch(l.f){case "left":k=l.c>l.j&1;switch(l.f){case "block":for(;hm,d.first=1===h,d.last=h===c&&0m)?d.value=1+a:(d.value=c,d.active=k&&am)?d.value=1+a:(d.value=Math.min(1+a,c),d.active=k&&awindow.innerHeight?(r="s",n()):"e"===r&&d.left<0?(r="w",n()):"w"===r&&d.right>window.innerWidth&&(r="e",n()),o.className+=" tlite-visible",o}var l="data-tlite";e=e||{},(t.tooltip||n(t,e)).show()},tlite.hide=function(t,e){t.tooltip&&t.tooltip.hide(e)},"undefined"!=typeof module&&module.exports&&(module.exports=tlite); diff --git a/src/wolnelektury/static/scss/forum.scss b/src/wolnelektury/static/scss/forum.scss deleted file mode 100644 index 50f94ab39..000000000 --- a/src/wolnelektury/static/scss/forum.scss +++ /dev/null @@ -1,8 +0,0 @@ -.navbar { - .navbar-brand { - padding-top: 0; - padding-bottom: 0; - margin-top: -2px; - margin-bottom: -2px; - } -}