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/
|
||||
Feedback & Bug Reports: martin.monperrus@gmail.com
|
||||
|
||||
(C) 2013 Matthieu Guillaumin
|
||||
(C) 2006-2012 Martin Monperrus
|
||||
(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
|
||||
@@ -117,6 +118,8 @@ define('BIBTEXBROWSER','v__GITHUB__');
|
||||
@define('METADATA_DC',true);
|
||||
@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
|
||||
// this is usually resolved to bibtexbrowser.php
|
||||
// but can be overridden in bibtexbrowser.local.php
|
||||
@@ -240,7 +243,7 @@ function _zetDB($bibtex_filenames) {
|
||||
&& is_readable($compiledbib)
|
||||
&& 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
|
||||
if (flock($f,LOCK_EX)) {
|
||||
$s = filesize($compiledbib);
|
||||
@@ -1243,21 +1246,29 @@ class BibEntry {
|
||||
}
|
||||
|
||||
/** Returns the abbreviation. */
|
||||
function getAbbrv() {
|
||||
function getRawAbbrv() {
|
||||
if (ABBRV_TYPE == 'index') return $this->index;
|
||||
if (ABBRV_TYPE == 'none') return '';
|
||||
if (ABBRV_TYPE == 'key') return '['.$this->getKey().']';
|
||||
if (ABBRV_TYPE == 'year') return '['.$this->getYear().']';
|
||||
if (ABBRV_TYPE == 'key') return $this->getKey();
|
||||
if (ABBRV_TYPE == 'year') return $this->getYear();
|
||||
if (ABBRV_TYPE == 'x-abbrv') {
|
||||
if ($this->hasField('x-abbrv')) {return $this->getField('x-abbrv');}
|
||||
return $this->abbrv;
|
||||
}
|
||||
|
||||
// otherwise it is a user-defined function in bibtexbrowser.local.php
|
||||
$f = ABBRV_TYPE;
|
||||
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]) */
|
||||
function setAbbrv($abbrv) {
|
||||
@@ -1296,37 +1307,45 @@ class BibEntry {
|
||||
}
|
||||
|
||||
|
||||
/** Outputs an HTML line (<tr>)with two TDS inside
|
||||
*/
|
||||
function toTR() {
|
||||
echo '<tr class="bibline">';
|
||||
echo '<td class="bibref">';
|
||||
//echo '<a name="'.$this->getId().'"></a>';
|
||||
|
||||
echo $this->getAbbrv().'</td> ';
|
||||
echo '<td class="bibitem">';
|
||||
/** Outputs HTML line according to layout */
|
||||
function toHTML() {
|
||||
switch(LAYOUT) { // open row
|
||||
case 'list':
|
||||
echo '<li class="bibline" value="'.$this->getAbbrv().'">';
|
||||
break;
|
||||
case 'table':
|
||||
echo '<tr class="bibline"><td class="bibref">';
|
||||
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);
|
||||
|
||||
$href = 'href="'.$this->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
|
||||
echo " <a".(BIBTEXBROWSER_BIB_IN_NEW_WINDOW?' target="_blank" ':'')." class=\"biburl\" title=\"".$this->getKey()."\" {$href}>[bibtex]</a>";
|
||||
echo bib2links($this);
|
||||
switch(LAYOUT) { // close row
|
||||
case 'list':
|
||||
echo '</li>';
|
||||
break;
|
||||
case 'table':
|
||||
echo '</td></tr>';
|
||||
break;
|
||||
case 'deflist':
|
||||
echo '</dd></dl>';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// returns an empty string if no url present
|
||||
echo $this->getUrlLink();
|
||||
|
||||
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";
|
||||
/** Create the entry anchor */
|
||||
function anchor() {
|
||||
echo '<a name="'.$this->getAbbrv().'"></a>';
|
||||
}
|
||||
|
||||
/** 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*/
|
||||
function bib2html(&$bibentry) {
|
||||
$function = BIBLIOGRAPHYSTYLE;
|
||||
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 */
|
||||
function _DefaultBibliographySections() {
|
||||
$function = BIBLIOGRAPHYSECTIONS;
|
||||
@@ -2301,21 +2371,19 @@ class SimpleDisplay {
|
||||
echo 'Options: '.@implode(',',$this->options).'<br/>';
|
||||
}
|
||||
|
||||
?>
|
||||
$tag = layoutHeaderHTML();
|
||||
|
||||
<table class="result" >
|
||||
<?php
|
||||
$count = count($this->entries);
|
||||
$i=0;
|
||||
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
|
||||
$bib->setIndex('['.($count-($i++)).']');
|
||||
$bib->toTR();
|
||||
$bib->setIndex($count-($i++));
|
||||
$bib->toHTML();
|
||||
} // end foreach
|
||||
?>
|
||||
</table>
|
||||
<?php
|
||||
|
||||
layoutFooterHTML($tag);
|
||||
|
||||
} // end function
|
||||
} // end class
|
||||
|
||||
@@ -2371,21 +2439,20 @@ class AcademicDisplay {
|
||||
uasort($entries, ORDER_FUNCTION);
|
||||
if (count($entries)>0) {
|
||||
echo "\n".'<div class="btb-header">'.$title.'</div>'."\n";
|
||||
echo '<table class="result">'."\n";
|
||||
$tag = layoutHeaderHTML();
|
||||
|
||||
// by default the abbreviation is incermented over all
|
||||
// searches
|
||||
// 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->toTR();
|
||||
$bib->setIndex($id++);
|
||||
$bib->toHTML();
|
||||
} // end foreach
|
||||
$count = @$count + count($entries);
|
||||
echo '</table>';
|
||||
layoutFooterHTML($tag);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3176,18 +3243,18 @@ class PagedDisplay {
|
||||
}
|
||||
|
||||
$this->menu($less, $more);
|
||||
echo '<table class="result" >';
|
||||
$tag = layoutHeaderHTML();
|
||||
for ($i = 0; $i < PAGE_SIZE; $i++) {
|
||||
$index = ($this->page-1)*PAGE_SIZE + $i;
|
||||
if (isset($this->entries[$index])) {
|
||||
$bib = $this->entries[$index];
|
||||
$bib->toTR();
|
||||
$bib->toHTML();
|
||||
|
||||
} else {
|
||||
//break;
|
||||
}
|
||||
} // end foreach
|
||||
echo '</table>';
|
||||
layoutFooterHTML($tag);
|
||||
|
||||
$this->menu($less, $more);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user