diff --git a/BibtexbrowserTest.php b/BibtexbrowserTest.php index cca6d4a..4cd0d27 100755 --- a/BibtexbrowserTest.php +++ b/BibtexbrowserTest.php @@ -1455,6 +1455,72 @@ class BibtexbrowserTest extends PHPUnit_Framework_TestCase { $this->assertEquals(0, count($results)); } + function test_tags_pagination() { + // Define the page size for pagination + bibtexbrowser_configure('TAGS_SIZE', 2); + + // Create a test BibTeX database with multiple entries and keywords + $bibtex = "@article{paper1,title={Paper One},keywords={tagA, tagB},year=2020} + @article{paper2,title={Paper Two},keywords={tagC},year=2020} + @article{paper3,title={Paper Three},keywords={tagD},year=2020} + @article{paper4,title={Paper Four},keywords={tagE},year=2020}"; + + $test_data = fopen('php://memory','r+'); + fwrite($test_data, $bibtex); + fseek($test_data, 0); + + $db = new BibDataBase(); + $db->update_internal("inline", $test_data); + + // Create MenuManager display + $display = new MenuManager(); + $display->setDB($db); + + // Test the first page + $_GET["tags_page"] = '1'; + ob_start(); + $display->display(); + $output1 = ob_get_clean(); + + // Tags are sorted alphabetically. + $this->assertStringContainsString('tagA', $output1); + $this->assertStringContainsString('tagB', $output1); + $this->assertStringNotContainsString('tagC', $output1); + + // Verify pagination link to the next page + $this->assertStringContainsString('keywords_page=2', $output1); + + // Test the second page + $_GET["keywords_page"] = '2'; + ob_start(); + $display->display(); + $output2 = ob_get_clean(); + + $this->assertStringContainsString('tagC', $output2); + $this->assertStringContainsString('tagD', $output2); + $this->assertStringNotContainsString('tagA', $output2); + $this->assertStringNotContainsString('tagE', $output2); + + // Verify navigation links to previous and next pages + $this->assertStringContainsString('keywords_page=1', $output2); + $this->assertStringContainsString('keywords_page=3', $output2); + + // Test the third page + $_GET["keywords_page"] = '3'; + ob_start(); + $display->display(); + $output3 = ob_get_clean(); + + $this->assertStringContainsString('tagE', $output3); + $this->assertStringNotContainsString('tagD', $output3); + + // Verify navigation link to the previous page + $this->assertStringContainsString('keywords_page=2', $output3); + $this->assertStringNotContainsString('keywords_page=4', $output3); // No next page + + // Clean up + unset($_GET["keywords_page"]); + } function test_venuevc_pagination() { // Define the page size for pagination bibtexbrowser_configure('VENUE_SIZE', 2); diff --git a/README.wiki b/README.wiki index eeb5b3c..4dac4f2 100755 --- a/README.wiki +++ b/README.wiki @@ -60,10 +60,11 @@ The following uses bibtexbrowser under the hood: * [[http://www.monperrus.net/martin/feeding-mysql-database-with-bibtexbrowser|Feeding a MySQL database from the content of a bibtex file]] * Publication lists in Wordpress with [[http://www.monperrus.net/martin/wp-publications|wp-publications]] * [[http://www.monperrus.net/martin/publication-lists-with-hal-and-bibtexbrowser|Publication lists with HAL and bibtexbrowser]] +* Generating publication lists in DokuWiki using the [[https://www.dokuwiki.org/plugin:bb4dw|bb4dw plugin]] =====Demo and screenshot===== -Demo: [[http://bibtexbrowser.sourceforge.net/bibtexbrowser.php?bib=metrics.bib|Here, you can browse a bibtex file dedicated to software metrics]] +Demo: [[https://www.monperrus.net/martin/bibtexbrowser.php|Here, you can browse a bibtex file of Martin's papers.]] bibtexbrowser screenshot diff --git a/bibtexbrowser.php b/bibtexbrowser.php index a5b04ff..dcc05d3 100755 --- a/bibtexbrowser.php +++ b/bibtexbrowser.php @@ -2994,7 +2994,7 @@ class MenuManager { } else $page = 1; - if (count($tags)>0) $this->displayMenu('Keywords', $tags, $page, bibtexbrowser_configuration("MENU_SIZE"), Q_TAG_PAGE, + if (count($tags)>0) $this->displayMenu('Keywords', $tags, $page, bibtexbrowser_configuration("TAGS_SIZE"), Q_TAG_PAGE, Q_TAG); }