diff --git a/boards.php b/boards.php
index 06e18086..40a9e841 100644
--- a/boards.php
+++ b/boards.php
@@ -36,6 +36,11 @@ $posts_hour = number_format( fetchBoardActivity(), 0 );
$posts_total = number_format( $boardResult['posts_total'], 0 );
/* Create and distribute page */
+$config['additional_javascript'] = array(
+ 'js/jquery.min.js',
+ 'js/board-directory.js'
+);
+
$boardsHTML = Element("8chan/boards-table.html", array(
"config" => $config,
"boards" => $boards,
@@ -67,11 +72,6 @@ $searchHTML = Element("8chan/boards-search.html", array(
)
);
-$config['additional_javascript'] = array(
- 'js/jquery.min.js',
- 'js/board-directory.js'
-);
-
$pageHTML = Element("page.html", array(
"config" => $config,
"body" => $searchHTML,
diff --git a/js/board-directory.js b/js/board-directory.js
new file mode 100644
index 00000000..d9858150
--- /dev/null
+++ b/js/board-directory.js
@@ -0,0 +1,192 @@
+// ============================================================
+// Purpose : Board directory handling
+// Contributors : 8n-tech
+// ============================================================
+
+;( function( window, $, undefined ) {
+ var boardlist = {
+ options : {
+ $boardlist : false,
+
+ // Selectors for finding and binding elements.
+ selector : {
+ 'boardlist' : "#boardlist",
+
+ 'board-head' : ".board-list-head",
+ 'board-body' : ".board-list-tbody",
+ 'board-loading' : ".board-list-loading",
+
+ 'search' : "#search-form",
+ 'search-lang' : "#search-lang-input",
+ 'search-sfw' : "#search-sfw-input",
+ 'search-tag' : "#search-tag-input",
+ 'search-title' : "#search-title-input",
+ 'search-submit' : "#search-submit",
+ },
+
+ // HTML Templates for dynamic construction
+ template : {
+ // Board row item
+ 'board-row' : "
",
+
+ // Individual cell definitions
+ 'board-cell-meta' : " | ",
+ 'board-cell-uri' : " | ",
+ 'board-cell-title' : " | ",
+ 'board-cell-pph' : " | ",
+ 'board-cell-max' : " | ",
+ 'board-cell-unique' : " | ",
+ 'board-cell-tags' : " | ",
+
+ // Content wrapper
+ // Used to help constrain contents to their .
+ 'board-content-wrap' : "",
+
+
+ // Tagging
+ 'board-datum-tags' : ""
+ }
+ },
+
+ bind : {
+ form : function() {
+ var selectors = boardlist.options.selector;
+
+ var $search = $( selectors['search'] ),
+ $searchLang = $( selectors['search-lang'] ),
+ $searchSfw = $( selectors['search-sfw'] ),
+ $searchTag = $( selectors['search-tag'] ),
+ $searchTitle = $( selectors['search-title'] ),
+ $searchSubmit = $( selectors['search-submit'] );
+
+ var searchForms = {
+ 'boardlist' : boardlist.$boardlist,
+ 'search' : $search,
+ 'searchLang' : $searchLang,
+ 'searchSfw' : $searchSfw,
+ 'searchTag' : $searchTag,
+ 'searchTitle' : $searchTitle,
+ 'searchSubmit' : $searchSubmit
+ };
+
+
+ if ($search.length > 0) {
+ // Bind form events.
+ $search.on( 'submit', searchForms, boardlist.events.searchSubmit );
+ $searchSubmit.on( 'click', searchForms, boardlist.events.searchSubmit );
+ }
+ }
+ },
+
+ build : {
+ boardlist : function(data) {
+ boardlist.build.boards(data['boards']);
+ boardlist.build.tags(data['tags']);
+
+ },
+
+ boards : function(data) {
+ // Find our head, columns, and body.
+ var $head = $( boardlist.options.selector['board-head'], boardlist.$boardlist ),
+ $cols = $("[data-column]", $head ),
+ $body = $( boardlist.options.selector['board-body'], boardlist.$boardlist );
+
+ $.each( data, function( index, row ) {
+ var $row = $( boardlist.options.template['board-row'] );
+
+ $cols.each( function( index, col ) {
+ var $col = $(col),
+ column = $col.attr('data-column'),
+ value = row[column]
+ $cell = $( boardlist.options.template['board-cell-' + column] ),
+ $wrap = $( boardlist.options.template['board-content-wrap'] );
+
+ if (value instanceof Array) {
+ if (typeof boardlist.options.template['board-datum-' + column] !== "undefined") {
+ $.each( value, function( index, singleValue ) {
+ $( boardlist.options.template['board-datum-' + column] )
+ .text( singleValue )
+ .appendTo( $wrap );
+ } );
+ }
+ else {
+ $wrap.text( value.join(" ") );
+ }
+ }
+ else {
+ $wrap.text( value );
+ }
+
+ $wrap.appendTo( $cell );
+ $cell.appendTo( $row );
+ } );
+
+ if( index >= 100 ) return false;
+
+ $row.appendTo( $body );
+ } );
+
+ },
+
+ tags : function(data) {
+
+ }
+ },
+
+ events : {
+ searchSubmit : function(event) {
+ event.preventDefault();
+
+ var $boardlist = event.data.boardlist,
+ $boardbody = $( boardlist.options.selector['board-body'], $boardlist ),
+ $boardload = $( boardlist.options.selector['board-loading'], $boardlist );
+
+ $boardbody.html("");
+ $boardload.show();
+
+ $.get(
+ "/board-search.php",
+ {
+ 'lang' : event.data.searchLang.val(),
+ 'tags' : event.data.searchTag.val(),
+ //'time' : event.data.searchTag.val(),
+ 'title' : event.data.searchTitle.val(),
+ 'sfw' : event.data.searchSfw.prop('checked') ? 1 : 0
+ },
+ function(data) {
+ $boardload.hide();
+ boardlist.build.boardlist( $.parseJSON(data) );
+ }
+ );
+
+ return false;
+ }
+ },
+
+ init : function( target ) {
+ if (typeof target !== "string") {
+ target = boardlist.options.selector.boardlist;
+ }
+
+ var $target = $(target);
+
+ if ($target.length > 0 ) {
+ boardlist.$boardlist = $target;
+ boardlist.bind.form();
+ }
+ }
+ };
+
+ // Tie to the vichan object.
+ if (typeof window.vichan === "undefined") {
+ window.vichan = {};
+ }
+ window.vichan.boardlist = boardlist;
+
+ // Initialize the boardlist when the document is ready.
+ $( document ).on( 'ready', window.vichan.boardlist.init );
+ // Run it now if we're already ready.
+ if (document.readyState === 'complete') {
+ window.vichan.boardlist.init();
+ }
+} )( window, jQuery );
\ No newline at end of file
diff --git a/stylesheets/style.css b/stylesheets/style.css
index ff29bb2a..17dae01e 100644
--- a/stylesheets/style.css
+++ b/stylesheets/style.css
@@ -1383,6 +1383,13 @@ table.board-list-table div.board-cell {
overflow: hidden;
}
+tfoot.board-list-loading {
+ display: none;
+}
+tfoot.board-list-loading .loading {
+ height: 80px;
+}
+
aside.search-container {
}
aside.search-container .box {
diff --git a/templates/8chan/boards-search.html b/templates/8chan/boards-search.html
index 57f5834c..934403d9 100644
--- a/templates/8chan/boards-search.html
+++ b/templates/8chan/boards-search.html
@@ -59,7 +59,7 @@
-
+
|
{% trans %}Board{% endtrans %} |
@@ -73,7 +73,11 @@
| {{html_boards}}
-
+
+
+ |
+
+