|
|
- // Project: Web Reference Database (refbase) <http://www.refbase.net>
- // Copyright: Matthias Steffens <mailto:refbase@extracts.de> and the file's
- // original author(s).
- //
- // This code is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY. Please see the GNU General Public
- // License for more details.
- //
- // File: ./javascript/show.js
- // Repository: $HeadURL$
- // Author(s): Matthias Steffens <mailto:refbase@extracts.de>
- //
- // Created: 27-May-07, 00:54
- // Modified: $Date: 2008-09-18 14:09:58 +0000 (Thu, 18 Sep 2008) $
- // $Author$
- // $Revision: 1244 $
-
- // This Javascript allows to dynamically include references from a refbase database
- // within your own HTML pages.
-
- // Sample HTML pages that show how to call function 'showRefs()' from within your
- // own HTML pages:
- // <http://beta.refbase.net/include_test.html>
- // <http://beta.refbase.net/javascript/include_test2.html>
- // <http://beta.refbase.net/javascript/include_test3.html>
-
- // More info is available in the refbase forums:
- // <http://sourceforge.net/forum/message.php?msg_id=4404553>
-
- // You may want to adopt following variables to your needs:
- // - variable 'authorNames' contains regex patterns for all authors whose names
- // shall be printed in bold face
- // - variable 'url' in function 'showRefs()' must contain the URL to the refbase
- // 'show.php' script on your server
- // - you may want to tweak other parameter settings in function 'showRefs' (e.g.
- // parameters 'showRows', 'citeStyle' or 'citeOrder')
-
- // Also, please make sure that this javascript file is executable.
-
- // AJAX-specific functions were adopted from sample code by Neil Saunders:
- // <http://nsaunders.wordpress.com/2007/02/20/my-first-ajax-for-bioinformatics-page/>
-
- // TODO: easier customization
-
-
- var xmlHTTP;
-
- // List of authors whose names will be printed in bold face (adopt to your needs):
- // NOTES: - the given regex patterns must match the author string formatting of the
- // chosen citation style (see 'citeStyle' parameter in function 'showRefs')
- // - each regex pattern must be enclosed in parentheses
- var authorNames = new Array(
- /(Granskog, M\.)/g,
- /(Mock, T\.)/g,
- /(Spindler, M\.)/g,
- /(Thomas, D\. N\.)/g
- );
-
- // ------------------------------------------------------------------
-
- // Create refbase query URL:
- // This function expects a query string of 'show.php' parameter=value pairs. More info about
- // the 'show.php' API: <http://linking.refbase.net/>, <http://bibliographies.refbase.net/>
- function showRefs(query) {
- if (query == "none") {
- document.getElementById("includerefs").innerHTML = "<div id='includeprogress'>References will be listed here.</div>";
- }
- else {
- var url = "show.php"; // set URL to your server's 'show.php' script
- url = url + "?" + query;
- url = url + "&client=" + "inc-refbase-1.0"; // "inc-" indicates include mechanisms
- url = url + "&wrapResults=" + "0"; // output only a partial document structure containing solely the search results
-
- // set defaults if some params were not given in the query:
- // (empty param values trigger the database defaults)
- if (query.search(/submit=(Display|Cite|Export|Browse)?(?=&|$)/) == -1)
- url = url + "&submit=Cite"; // possible values: "Cite", "List", "Display"
-
- if (query.search(/showLinks=[01]/) == -1)
- url = url + "&showLinks=1";
-
- if (query.search(/showRows=\d+/) == -1)
- url = url + "&showRows=100";
-
- if (query.search(/startRecord=\d+/) == -1)
- url = url + "&startRecord=1";
-
- if (query.search(/citeStyle=\w+/) == -1)
- url = url + "&citeStyle=APA"; // the specified citation style must have a matching entry within the 'styles' MySQL table
-
- if (query.search(/citeOrder=\w+/) == -1)
- url = url + "&citeOrder=year"; // possible values: "author", "year", "type", "type-year", "creation-date"
-
- if (query.search(/without=/) == -1)
- url = url + "&without=dups";
-
- getURL(url);
- }
- }
-
- // ------------------------------------------------------------------
-
- // Print a string (that matches a pattern in 'authorNames') in bold face:
- function highlightAuthors(sourceText) {
- for (var i = 0; i < authorNames.length; i++) {
- if (sourceText.search(authorNames[i]) > 0)
- sourceText = sourceText.replace(authorNames[i], "<b>$1</b>");
- }
-
- return sourceText;
- }
-
- // ------------------------------------------------------------------
-
- // Send an XMLHTTP request:
- function getURL(url) {
- xmlHTTP = getXMLHTTPObject();
-
- if (xmlHTTP == null) {
- alert ("Browser does not support HTTP Request");
- return;
- }
-
- xmlHTTP.onreadystatechange = stateChanged;
- xmlHTTP.open("GET", url, true);
- xmlHTTP.send(null);
- }
-
- // ------------------------------------------------------------------
-
- // Update an HTML element (with id = "includerefs") with the response text returned by the XMLHTTP request:
- function stateChanged() {
- document.getElementById("includerefs").innerHTML = "<div id='includeprogress'>Fetching references from database... " + "<img src='img/progress.gif'></div>";
-
- if (xmlHTTP.readyState == 4 || xmlHTTP.readyState == "complete") {
- var response = xmlHTTP.responseText;
-
- if (!response) {
- document.getElementById("includerefs").innerHTML = "<div id='includeprogress'>No data returned!</div>";
- }
- else {
- document.getElementById("includerefs").innerHTML = highlightAuthors(response);
- }
- }
-
- }
-
- // ------------------------------------------------------------------
-
- // Create an XMLHTTP object:
- function getXMLHTTPObject() {
- var xmlHTTP = null;
-
- try {
- // Firefox, Opera 8.0+, Safari:
- xmlHTTP = new XMLHttpRequest();
- }
- catch (e) {
- // Internet Explorer:
- try {
- xmlHTTP = new ActiveXObject("Msxml2.XMLHTTP");
- }
- catch (e) {
- xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
- }
- }
-
- return xmlHTTP;
- }
-
- // ------------------------------------------------------------------
|