diff --git a/CHANGELOG.md b/CHANGELOG.md index 72d0079a4..6d234a55b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +- Added a setting to configure the number of threads per page for the paged mode of the index. + ### 3.16.4 - *2014-02-04* - Firefox release only: fix catalog layout alignment. diff --git a/src/General/Build.coffee b/src/General/Build.coffee index 94a9125fd..027f09515 100644 --- a/src/General/Build.coffee +++ b/src/General/Build.coffee @@ -271,7 +271,7 @@ Build = "
#{thread.OP.info.subject}
" else '' - comment = thread.OP.nodes.comment.innerHTML.replace /(
){2,}/g, '
' + comment = thread.OP.nodes.comment.innerHTML.replace /(
\s*){2,}/g, '
' root = $.el 'div', className: 'catalog-thread' diff --git a/src/General/Config.coffee b/src/General/Config.coffee index 3ae30b93d..ca18ba7d4 100644 --- a/src/General/Config.coffee +++ b/src/General/Config.coffee @@ -141,6 +141,7 @@ Config = Index: 'Index Mode': 'paged' 'Index Sort': 'bump' + 'Threads per Page': 0 'Show Replies': true 'Anchor Hidden Threads': true 'Refreshed Navigation': false diff --git a/src/General/Index.coffee b/src/General/Index.coffee index 7377b5f8b..2e6dd0497 100644 --- a/src/General/Index.coffee +++ b/src/General/Index.coffee @@ -56,6 +56,16 @@ Index = $.on input, 'change', $.cb.value $.on input, 'change', @cb.sort + threadNumEntry = + el: $.el 'span', textContent: 'Threads per page' + subEntries: [ + { el: $.el 'label', innerHTML: '', title: 'Use 0 for default value' } + ] + threadsNumInput = threadNumEntry.subEntries[0].el.firstChild + threadsNumInput.value = Conf['Threads per Page'] + $.on threadsNumInput, 'change', $.cb.value + $.on threadsNumInput, 'change', @cb.threadsNum + repliesEntry = el: $.el 'label', innerHTML: ' Show replies' @@ -83,7 +93,7 @@ Index = el: $.el 'span', textContent: 'Index Navigation' order: 90 - subEntries: [modeEntry, sortEntry, repliesEntry, anchorEntry, refNavEntry] + subEntries: [modeEntry, sortEntry, threadNumEntry, repliesEntry, anchorEntry, refNavEntry] $.addClass doc, 'index-loading' @update() @@ -222,6 +232,10 @@ Index = sort: -> Index.sort() Index.buildIndex() + threadsNum: -> + return unless Conf['Index Mode'] is 'paged' + Index.buildPagelist() + Index.buildIndex() replies: -> Index.buildThreads() Index.sort() @@ -263,11 +277,17 @@ Index = Index.setPage() Index.scrollToIndex() - getPagesNum: -> - if Index.isSearching - Math.ceil (Index.sortedNodes.length / 2) / Index.threadsNumPerPage + getThreadsNumPerPage: -> + if Conf['Threads per Page'] > 0 + +Conf['Threads per Page'] else - Index.pagesNum + Index.threadsNumPerPage + getPagesNum: -> + numThreads = if Index.isSearching + Index.sortedNodes.length / 2 + else + Index.liveThreadIDs.length + Math.ceil numThreads / Index.getThreadsNumPerPage() getMaxPageNum: -> Math.max 0, Index.getPagesNum() - 1 togglePagelist: -> @@ -402,7 +422,6 @@ Index = Index.buildIndex() Index.setPage() parseThreadList: (pages) -> - Index.pagesNum = pages.length Index.threadsNumPerPage = pages[0].threads.length Index.liveThreadData = pages.reduce ((arr, next) -> arr.concat next.threads), [] Index.liveThreadIDs = Index.liveThreadData.map (data) -> data.no @@ -513,7 +532,7 @@ Index = switch Conf['Index Mode'] when 'paged' pageNum = Index.getCurrentPage() - nodesPerPage = Index.threadsNumPerPage * 2 + nodesPerPage = Index.getThreadsNumPerPage() * 2 nodes = Index.sortedNodes[nodesPerPage * pageNum ... nodesPerPage * (pageNum + 1)] when 'catalog' nodes = Index.buildCatalogViews()