diff --git a/bibtexbrowser.php b/bibtexbrowser.php
index 3ccc227..f1c3962 100755
--- a/bibtexbrowser.php
+++ b/bibtexbrowser.php
@@ -62,8 +62,10 @@ define('BIBTEXBROWSER','v__GITHUB__');
@define('BIBTEXBROWSER_MAIN', 'Dispatcher');
// default order functions
-@define('ORDER_FUNCTION','compare_bib_entry_by_year_and_month');
+// Contract Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.
// can be @define('ORDER_FUNCTION','compare_bib_entry_by_title');
+@define('ORDER_FUNCTION','compare_bib_entry_by_year');
+@define('ORDER_FUNCTION_FINE','compare_bib_entry_by_month');
// only displaying the n newest entries
@define('BIBTEXBROWSER_NEWEST',5);
@@ -1556,11 +1558,9 @@ function compare_bib_entry_by_mtime($a, $b)
/** compares two instances of BibEntry by year
*/
-function compare_bib_entry_by_year_and_month($a, $b)
-{
- $year_cmp = -strcmp($a->getYear(),$b->getYear());
- if ($year_cmp==0) { return compare_bib_entry_by_month($a, $b);}
- return $year_cmp;
+function compare_bib_entry_by_year($a, $b)
+{
+ return -strcmp($a->getYear(),$b->getYear());
}
/** compares two instances of BibEntry by title
@@ -1875,7 +1875,18 @@ function JanosBibliographyStyle(&$bibentry) {
// ----------------------------------------------------------------------
// DISPLAY MANAGEMENT
// ----------------------------------------------------------------------
-
+/** orders two BibEntry as defined by ORDER_FUNCTION
+ * (by default compares two instances of BibEntry by year and then month)
+ */
+function compare_bib_entries($bib1, $bib2) {
+ $f1 = ORDER_FUNCTION;
+ $cmp = $f1($bib1, $bib2);
+ if ($cmp ==0) {
+ $f2 = ORDER_FUNCTION_FINE;
+ $cmp = $f2($bib1, $bib2);
+ }
+ return $cmp;
+}
/** creates a query string given an array of parameter, with all specifities of bibtexbrowser_ (such as adding the bibtex file name &bib=foo.bib
*/
@@ -2056,7 +2067,7 @@ class MenuManager {
?>
0) {
- echo '';
+ echo '';
$delegate->setEntries($x);
$delegate->display();
}
@@ -2358,6 +2369,8 @@ usage:
*/
class SimpleDisplay {
+ var $headerCSS = 'sheader';
+
var $options = array();
function setDB(&$bibdatabase) {
@@ -2395,7 +2408,7 @@ class SimpleDisplay {
/** Displays a set of bibtex entries in an HTML table */
function display() {
- uasort($this->entries, ORDER_FUNCTION);
+ uasort($this->entries, 'compare_bib_entries');
if ($this->options) {
foreach($this->options as $fname=>$opt) {
@@ -2414,16 +2427,45 @@ class SimpleDisplay {
$count = count($this->entries);
$i=0;
- foreach ($this->entries as $bib) {
+ $pred = NULL;
+ foreach ($this->entries as $bib) {
+ if ($this->changeSection($pred, $bib)) {
+ echo $this->sectionHeader($bib);
+ }
// by default, index are in decreasing order
// so that when you add a publicaton recent , the indices of preceding publications don't change
$bib->setIndex($count-($i++));
$bib->toHTML();
+
+ $pred = $bib;
} // end foreach
print_footer_layout();
} // end function
+
+ function changeSection($pred, $bib) {
+
+ // for the first one we output the header
+ if ($pred == NULL) { return true; }
+
+ $f = ORDER_FUNCTION;
+ return $f($pred, $bib) != 0;
+ }
+
+ function sectionHeader($bib) {
+ switch(BIBTEXBROWSER_LAYOUT) {
+ case 'table':
+ return '
'."\n";
+ break;
+ case 'definition':
+ return ''."\n";
+ break;
+ default:
+ return '';
+ }
+ }
+
} // end class
@@ -2474,33 +2516,20 @@ class AcademicDisplay {
*/
function search2html($query, $title) {
$entries = $this->db->multisearch($query);
-
- uasort($entries, ORDER_FUNCTION);
if (count($entries)>0) {
- echo "\n".''."\n";
- print_header_layout();
-
- // by default the abbreviation is incremented over all searches
-
- // since we don't know before hand all section, we can not index in decreasing order
- static $count;
- if ($count == NULL) { $count = 1; } // init
- $id = $count;
- foreach ($entries as $bib) {
- $bib->setIndex($id++);
- $bib->toHTML();
- } // end foreach
- $count = @$count + count($entries);
- print_footer_layout();
+ echo "\n".''."\n";
}
-
+ $display = createBasicDisplay();
+ $display->setEntries($entries);
+ $display->headerCSS = 'theader';
+ $display->display();
+
}
function display() {
$this->db = createBibDataBase();
$this->db->bibdb = $this->entries;
-
foreach (_DefaultBibliographySections() as $section) {
$this->search2html($section['query'],$section['title']);
}
@@ -2999,14 +3028,27 @@ function bibtexbrowserDefaultCSS() {
.bibpublisher { /* nothing by default */ }
-.title {
+/* 1st level headers, equivalent H1 */
+.rheader {
color: #003366;
font-size: large;
font-weight: bold;
- text-align: right;
}
-.btb-header {
+/* 2nd level headers, equivalent H2 */
+.sheader {
+ font-weight: bold;
+ background-color: #003366;
+ color: #ffffff;
+ padding: 2px;
+ margin-bottom: 0px;
+ margin-top: 7px;
+ border-bottom: #ff6633 2px solid;
+
+}
+
+/* 3rd level headers, equivalent H3 */
+.theader {
background-color: #995124;
color: #FFFFFF;
padding: 1px 2px 1px 2px;
@@ -3018,15 +3060,6 @@ function bibtexbrowserDefaultCSS() {
padding: 1px 2px 1px 2px;
}
-.rheader {
- font-weight: bold;
- background-color: #003366;
- color: #ffffff;
- padding: 2px;
- margin-bottom: 10px;
- border-bottom: #ff6633 2px solid;
-
-}
.menu {
font-size: x-small;
background-color: #EFDDB4;
@@ -3042,14 +3075,22 @@ function bibtexbrowserDefaultCSS() {
color: #ff6633;
}
+dd {
+ display: inline; /* for if BIBTEXBROWSER_LAYOUT='definition' */
+}
+
+.bibitem {
+ margin-left:5px;
+}
+
.bibref {
padding:7px;
padding-left:15px;
vertical-align:text-top;
+ display: inline; /* for if BIBTEXBROWSER_LAYOUT='definition' */
}
.result {
- padding:0px;
border: 1px solid #000000;
margin:0px;
background-color: #ffffff;
@@ -3257,7 +3298,7 @@ class PagedDisplay {
/** sets the entries to be shown */
function setEntries(&$entries) {
- uasort($entries, ORDER_FUNCTION);
+ uasort($entries, 'compare_bib_entries');
$this->entries = array_values($entries);
}
@@ -3498,7 +3539,7 @@ class Dispatcher {
}
// default order
- uasort($selectedEntries, ORDER_FUNCTION);
+ uasort($selectedEntries, 'compare_bib_entries');
$selectedEntries = array_values($selectedEntries);
//echo '';print_r($selectedEntries);echo '
';