added a LAYOUT option
use @define(LAYOUT,{'table','list','deflist'}) to choose between table, ul, ol ('list' and ABBRV_TYPE='index') and definition lists for displaying bibtex entries.
$bib->index is now displayed as a number, not a number in brackets, for compatibility with list values. however this is invisible to the user because the brackets are added in getAbbrv().
bib2html now includes the echoing of links.
This commit is contained in:
committed by
Martin Monperrus
parent
bf49236033
commit
f9b2f7a62a
+118
-51
@@ -3,6 +3,7 @@
|
|||||||
URL: http://www.monperrus.net/martin/bibtexbrowser/
|
URL: http://www.monperrus.net/martin/bibtexbrowser/
|
||||||
Feedback & Bug Reports: martin.monperrus@gmail.com
|
Feedback & Bug Reports: martin.monperrus@gmail.com
|
||||||
|
|
||||||
|
(C) 2013 Matthieu Guillaumin
|
||||||
(C) 2006-2012 Martin Monperrus
|
(C) 2006-2012 Martin Monperrus
|
||||||
(C) 2005-2006 The University of Texas at El Paso / Joel Garcia, Leonardo Ruiz, and Yoonsik Cheon
|
(C) 2005-2006 The University of Texas at El Paso / Joel Garcia, Leonardo Ruiz, and Yoonsik Cheon
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
@@ -117,6 +118,8 @@ define('BIBTEXBROWSER','v__GITHUB__');
|
|||||||
@define('METADATA_DC',true);
|
@define('METADATA_DC',true);
|
||||||
@define('METADATA_EPRINTS',false);
|
@define('METADATA_EPRINTS',false);
|
||||||
|
|
||||||
|
@define('LAYOUT','table'); // may be table/list/deflist. defines the HTML rendering options (<table>, <ol>/<ul>, <dl>, resp.). 'list' only works with 'ABBRV_TYPE'='index' (ordered list) and 'none' (unordered list, the default if another choice than 'list' is made).
|
||||||
|
|
||||||
// in embedded mode, we still need a URL for displaying bibtex entries alone
|
// in embedded mode, we still need a URL for displaying bibtex entries alone
|
||||||
// this is usually resolved to bibtexbrowser.php
|
// this is usually resolved to bibtexbrowser.php
|
||||||
// but can be overridden in bibtexbrowser.local.php
|
// but can be overridden in bibtexbrowser.local.php
|
||||||
@@ -240,7 +243,7 @@ function _zetDB($bibtex_filenames) {
|
|||||||
&& is_readable($compiledbib)
|
&& is_readable($compiledbib)
|
||||||
&& filesize($compiledbib)>0
|
&& filesize($compiledbib)>0
|
||||||
) {
|
) {
|
||||||
$f = fopen($compiledbib,'r');
|
$f = fopen($compiledbib,'r+'); // my Unix seems to consider flock as a writing operation
|
||||||
//we use a lock to avoid that a call to bibbtexbrowser made while we write the object loads an incorrect object
|
//we use a lock to avoid that a call to bibbtexbrowser made while we write the object loads an incorrect object
|
||||||
if (flock($f,LOCK_EX)) {
|
if (flock($f,LOCK_EX)) {
|
||||||
$s = filesize($compiledbib);
|
$s = filesize($compiledbib);
|
||||||
@@ -1243,21 +1246,29 @@ class BibEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Returns the abbreviation. */
|
/** Returns the abbreviation. */
|
||||||
function getAbbrv() {
|
function getRawAbbrv() {
|
||||||
if (ABBRV_TYPE == 'index') return $this->index;
|
if (ABBRV_TYPE == 'index') return $this->index;
|
||||||
if (ABBRV_TYPE == 'none') return '';
|
if (ABBRV_TYPE == 'none') return '';
|
||||||
if (ABBRV_TYPE == 'key') return '['.$this->getKey().']';
|
if (ABBRV_TYPE == 'key') return $this->getKey();
|
||||||
if (ABBRV_TYPE == 'year') return '['.$this->getYear().']';
|
if (ABBRV_TYPE == 'year') return $this->getYear();
|
||||||
if (ABBRV_TYPE == 'x-abbrv') {
|
if (ABBRV_TYPE == 'x-abbrv') {
|
||||||
if ($this->hasField('x-abbrv')) {return $this->getField('x-abbrv');}
|
if ($this->hasField('x-abbrv')) {return $this->getField('x-abbrv');}
|
||||||
return $this->abbrv;
|
return $this->abbrv;
|
||||||
}
|
}
|
||||||
|
|
||||||
// otherwise it is a user-defined function in bibtexbrowser.local.php
|
// otherwise it is a user-defined function in bibtexbrowser.local.php
|
||||||
$f = ABBRV_TYPE;
|
$f = ABBRV_TYPE;
|
||||||
return $f($this);
|
return $f($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Returns the abbreviation. */
|
||||||
|
function getAbbrv() {
|
||||||
|
$abbrv = $this->getRawAbbrv();
|
||||||
|
if ( ABBRV_TYPE == 'key' || ABBRV_TYPE == 'year' || ( ABBRV_TYPE == 'index' && LAYOUT != 'list' ) ) {
|
||||||
|
$abbrv = '['.$abbrv.']';
|
||||||
|
}
|
||||||
|
return $abbrv;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Sets the abbreviation (e.g. [OOPSLA] or [1]) */
|
/** Sets the abbreviation (e.g. [OOPSLA] or [1]) */
|
||||||
function setAbbrv($abbrv) {
|
function setAbbrv($abbrv) {
|
||||||
@@ -1296,37 +1307,45 @@ class BibEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Outputs an HTML line (<tr>)with two TDS inside
|
/** Outputs HTML line according to layout */
|
||||||
*/
|
function toHTML() {
|
||||||
function toTR() {
|
switch(LAYOUT) { // open row
|
||||||
echo '<tr class="bibline">';
|
case 'list':
|
||||||
echo '<td class="bibref">';
|
echo '<li class="bibline" value="'.$this->getAbbrv().'">';
|
||||||
//echo '<a name="'.$this->getId().'"></a>';
|
break;
|
||||||
|
case 'table':
|
||||||
echo $this->getAbbrv().'</td> ';
|
echo '<tr class="bibline"><td class="bibref">';
|
||||||
echo '<td class="bibitem">';
|
break;
|
||||||
|
case 'deflist':
|
||||||
|
echo '<dl class="bibline"><dt class="bibref">'; break;
|
||||||
|
}
|
||||||
|
$this->anchor();
|
||||||
|
switch(LAYOUT) { // close bibref and open bibitem
|
||||||
|
case 'table':
|
||||||
|
echo $this->getAbbrv().'</td><td class="bibitem">';
|
||||||
|
break;
|
||||||
|
case 'deflist':
|
||||||
|
echo $this->getAbbrv().'</dt><dd class="bibitem">';
|
||||||
|
break;
|
||||||
|
}
|
||||||
echo bib2html($this);
|
echo bib2html($this);
|
||||||
|
echo bib2links($this);
|
||||||
$href = 'href="'.$this->getURL().'"';
|
switch(LAYOUT) { // close row
|
||||||
|
case 'list':
|
||||||
if (BIBTEXBROWSER_BIBTEX_LINKS) {
|
echo '</li>';
|
||||||
// we add biburl and title to be able to retrieve this important information
|
break;
|
||||||
// using Xpath expressions on the XHTML source
|
case 'table':
|
||||||
echo " <a".(BIBTEXBROWSER_BIB_IN_NEW_WINDOW?' target="_blank" ':'')." class=\"biburl\" title=\"".$this->getKey()."\" {$href}>[bibtex]</a>";
|
echo '</td></tr>';
|
||||||
|
break;
|
||||||
|
case 'deflist':
|
||||||
|
echo '</dd></dl>';
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns an empty string if no url present
|
/** Create the entry anchor */
|
||||||
echo $this->getUrlLink();
|
function anchor() {
|
||||||
|
echo '<a name="'.$this->getAbbrv().'"></a>';
|
||||||
if ($this->hasField('doi')) {
|
|
||||||
echo ' <a href="http://dx.doi.org/'.$this->getField("doi").'">[doi]</a>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Google Scholar ID
|
|
||||||
if ($this->hasField('gsid')) {
|
|
||||||
echo ' <a href="http://scholar.google.com/scholar?cites='.$this->getField("gsid").'">[cites]</a>';
|
|
||||||
}
|
|
||||||
echo "</td></tr>\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Outputs an coins URL: see http://ocoins.info/cobg.html
|
/** Outputs an coins URL: see http://ocoins.info/cobg.html
|
||||||
@@ -1436,12 +1455,63 @@ class BibEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function layoutHeaderHTML() {
|
||||||
|
$tag = '';
|
||||||
|
switch(LAYOUT) { /* switch for different layouts */
|
||||||
|
case 'list':
|
||||||
|
if (ABBRV_TYPE=='index') {
|
||||||
|
$tag='ol';
|
||||||
|
} else { // assume none
|
||||||
|
$tag='ul';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'table':
|
||||||
|
$tag = 'table';
|
||||||
|
break;
|
||||||
|
case 'deflist':
|
||||||
|
$tag = 'div';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
die('Unknown LAYOUT');
|
||||||
|
}
|
||||||
|
echo '<' . $tag . ' class="result">';
|
||||||
|
return $tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
function layoutFooterHTML($tag) {
|
||||||
|
echo '</' . $tag . '>';
|
||||||
|
}
|
||||||
|
|
||||||
/** this function encapsulates the user-defined name for bib to HTML*/
|
/** this function encapsulates the user-defined name for bib to HTML*/
|
||||||
function bib2html(&$bibentry) {
|
function bib2html(&$bibentry) {
|
||||||
$function = BIBLIOGRAPHYSTYLE;
|
$function = BIBLIOGRAPHYSTYLE;
|
||||||
return $function($bibentry);
|
return $function($bibentry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function bib2links(&$bibentry) {
|
||||||
|
$href = 'href="'.$bibentry->getURL().'"';
|
||||||
|
|
||||||
|
if (BIBTEXBROWSER_BIBTEX_LINKS) {
|
||||||
|
// we add biburl and title to be able to retrieve this important information
|
||||||
|
// using Xpath expressions on the XHTML source
|
||||||
|
$str .= " <a".(BIBTEXBROWSER_BIB_IN_NEW_WINDOW?' target="_blank" ':'')." class=\"biburl\" title=\"".$bibentry->getKey()."\" {$href}>[bibtex]</a>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns an empty string if no url present
|
||||||
|
$str .= $bibentry->getUrlLink();
|
||||||
|
|
||||||
|
if ($bibentry->hasField('doi')) {
|
||||||
|
$str .= ' <a href="http://dx.doi.org/'.$bibentry->getField("doi").'">[doi]</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Google Scholar ID
|
||||||
|
if ($bibentry->hasField('gsid')) {
|
||||||
|
$str .= ' <a href="http://scholar.google.com/scholar?cites='.$bibentry->getField("gsid").'">[cites]</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
||||||
/** encapsulates the user-defined sections. @nodoc */
|
/** encapsulates the user-defined sections. @nodoc */
|
||||||
function _DefaultBibliographySections() {
|
function _DefaultBibliographySections() {
|
||||||
$function = BIBLIOGRAPHYSECTIONS;
|
$function = BIBLIOGRAPHYSECTIONS;
|
||||||
@@ -2301,21 +2371,19 @@ class SimpleDisplay {
|
|||||||
echo 'Options: '.@implode(',',$this->options).'<br/>';
|
echo 'Options: '.@implode(',',$this->options).'<br/>';
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
$tag = layoutHeaderHTML();
|
||||||
|
|
||||||
<table class="result" >
|
|
||||||
<?php
|
|
||||||
$count = count($this->entries);
|
$count = count($this->entries);
|
||||||
$i=0;
|
$i=0;
|
||||||
foreach ($this->entries as $bib) {
|
foreach ($this->entries as $bib) {
|
||||||
// by default, index are in decrasing order
|
// by default, index are in decreasing order
|
||||||
// so that when you add a publicaton recent , the indices of preceding publications don't change
|
// so that when you add a publicaton recent , the indices of preceding publications don't change
|
||||||
$bib->setIndex('['.($count-($i++)).']');
|
$bib->setIndex($count-($i++));
|
||||||
$bib->toTR();
|
$bib->toHTML();
|
||||||
} // end foreach
|
} // end foreach
|
||||||
?>
|
|
||||||
</table>
|
layoutFooterHTML($tag);
|
||||||
<?php
|
|
||||||
} // end function
|
} // end function
|
||||||
} // end class
|
} // end class
|
||||||
|
|
||||||
@@ -2371,21 +2439,20 @@ class AcademicDisplay {
|
|||||||
uasort($entries, ORDER_FUNCTION);
|
uasort($entries, ORDER_FUNCTION);
|
||||||
if (count($entries)>0) {
|
if (count($entries)>0) {
|
||||||
echo "\n".'<div class="btb-header">'.$title.'</div>'."\n";
|
echo "\n".'<div class="btb-header">'.$title.'</div>'."\n";
|
||||||
echo '<table class="result">'."\n";
|
$tag = layoutHeaderHTML();
|
||||||
|
|
||||||
// by default the abbreviation is incermented over all
|
// by default the abbreviation is incremented over all searches
|
||||||
// searches
|
|
||||||
|
|
||||||
// since we don't know before hand all section, we can not index in decreasing order
|
// since we don't know before hand all section, we can not index in decreasing order
|
||||||
static $count;
|
static $count;
|
||||||
if ($count == NULL) { $count = 1; } // init
|
if ($count == NULL) { $count = 1; } // init
|
||||||
$id = $count;
|
$id = $count;
|
||||||
foreach ($entries as $bib) {
|
foreach ($entries as $bib) {
|
||||||
$bib->setIndex('['.($id++).']');
|
$bib->setIndex($id++);
|
||||||
$bib->toTR();
|
$bib->toHTML();
|
||||||
} // end foreach
|
} // end foreach
|
||||||
$count = @$count + count($entries);
|
$count = @$count + count($entries);
|
||||||
echo '</table>';
|
layoutFooterHTML($tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3176,18 +3243,18 @@ class PagedDisplay {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->menu($less, $more);
|
$this->menu($less, $more);
|
||||||
echo '<table class="result" >';
|
$tag = layoutHeaderHTML();
|
||||||
for ($i = 0; $i < PAGE_SIZE; $i++) {
|
for ($i = 0; $i < PAGE_SIZE; $i++) {
|
||||||
$index = ($this->page-1)*PAGE_SIZE + $i;
|
$index = ($this->page-1)*PAGE_SIZE + $i;
|
||||||
if (isset($this->entries[$index])) {
|
if (isset($this->entries[$index])) {
|
||||||
$bib = $this->entries[$index];
|
$bib = $this->entries[$index];
|
||||||
$bib->toTR();
|
$bib->toHTML();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//break;
|
//break;
|
||||||
}
|
}
|
||||||
} // end foreach
|
} // end foreach
|
||||||
echo '</table>';
|
layoutFooterHTML($tag);
|
||||||
|
|
||||||
$this->menu($less, $more);
|
$this->menu($less, $more);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user