|
@@ -0,0 +1,202 @@
|
|
|
+#!/usr/bin/perl
|
|
|
+#######################################################
|
|
|
+# Copyright 2013 Sam Flint,
|
|
|
+# Project: bibtexonline
|
|
|
+# File: bibtex.cgi
|
|
|
+#
|
|
|
+# Licensed the GNU GPL v3 or later
|
|
|
+#
|
|
|
+#
|
|
|
+#
|
|
|
+#######################################################
|
|
|
+
|
|
|
+#use YAML qw/LoadFile DumpFile/;
|
|
|
+use CGI;
|
|
|
+use BibTeX::Parser;
|
|
|
+use IO::File;
|
|
|
+
|
|
|
+$cgi = CGI->new();
|
|
|
+
|
|
|
+$file = IO::File->new("./library.bib");
|
|
|
+$parser = BibTeX::Parser->new($file);
|
|
|
+
|
|
|
+if ($cgi->param('search')) {
|
|
|
+ print $cgi->header();
|
|
|
+ print <<eohtml;
|
|
|
+<html>
|
|
|
+<head>
|
|
|
+<title>BibTeX Web interface</title>
|
|
|
+</head>
|
|
|
+<body>
|
|
|
+<h1>BibTeX Web Interface</h1>
|
|
|
+<table width="100%">
|
|
|
+<tr>
|
|
|
+<td align="left"><a href="bibtex.cgi">Main Listing</a></td>
|
|
|
+<td align="left"><a href="bibtex.cgi?page=search">Advanced Search</a></td>
|
|
|
+<td align="left"><a href="bibtex.cgi?page=about">About</a></td>
|
|
|
+<td align="right"><form action="bibtex.cgi" method="get">Quick Search:<input type="text" name="query" value="Search Here" /> <select name="search"><option value="all">All</option><option value="ByID">By ID</option><option value="author">Author</option><option value="title">Title</option></select> Regex? <input type="checkbox" name="regex" value="yes" /> <input type="submit" value="Search" /></form></td>
|
|
|
+</tr>
|
|
|
+</table>
|
|
|
+<hr />
|
|
|
+eohtml
|
|
|
+ if ($cgi->param('search') eq "all") {
|
|
|
+ searchall();
|
|
|
+ }elsif ($cgi->param('search') eq "ByID") {
|
|
|
+ searchbyid();
|
|
|
+ }elsif ($cgi->param('search') eq "author") {
|
|
|
+ searchauthor();
|
|
|
+ }elsif ($cgi->param('search') eq "title") {
|
|
|
+ searchtitle();
|
|
|
+ }
|
|
|
+ print <<eohtml;
|
|
|
+Powered by BibTex.cgi
|
|
|
+</body>
|
|
|
+</html>
|
|
|
+eohtml
|
|
|
+}elsif ($cgi->param('page')) {
|
|
|
+ print $cgi->header();
|
|
|
+ print <<eohtml;
|
|
|
+<html>
|
|
|
+<head>
|
|
|
+<title>BibTeX Web interface</title>
|
|
|
+</head>
|
|
|
+<body>
|
|
|
+<h1>BibTeX Web Interface</h1>
|
|
|
+<table width="100%">
|
|
|
+<tr>
|
|
|
+<td align="left"><a href="bibtex.cgi">Main Listing</a></td>
|
|
|
+<td align="left"><a href="bibtex.cgi?page=search">Advanced Search</a></td>
|
|
|
+<td align="left"><a href="bibtex.cgi?page=about">About</a></td>
|
|
|
+<td align="right"><form action="bibtex.cgi" method="get">Quick Search:<input type="text" name="query" value="Search Here" /> <select name="search"><option value="all">All</option><option value="ByID">By ID</option><option value="author">Author</option><option value="title">Title</option></select> Regex? <input type="checkbox" name="regex" value="yes" /> <input type="submit" value="Search" /></form></td>
|
|
|
+</tr>
|
|
|
+</table>
|
|
|
+<hr />
|
|
|
+eohtml
|
|
|
+ if ($cgi->param("page") eq "search") {
|
|
|
+ }elsif ($cgi->param("page") eq "about") {
|
|
|
+ }else {
|
|
|
+ print "<h1>404: Page Not Found</h1><br /><br /><br /><br /><br /><br /><br /></hr>";
|
|
|
+ }
|
|
|
+ print <<eohtml;
|
|
|
+Powered by BibTex.cgi
|
|
|
+</body>
|
|
|
+</html>
|
|
|
+eohtml
|
|
|
+#}elsif ($cgi->param('search')) {
|
|
|
+}else {
|
|
|
+ print $cgi->header();
|
|
|
+ print <<eohtml;
|
|
|
+<html>
|
|
|
+<head>
|
|
|
+<title>BibTeX Web interface</title>
|
|
|
+</head>
|
|
|
+<body>
|
|
|
+<h1>BibTeX Web Interface</h1>
|
|
|
+<table width="100%">
|
|
|
+<tr>
|
|
|
+<td align="left"><a href="bibtex.cgi">Main Listing</a></td>
|
|
|
+<td align="left"><a href="bibtex.cgi?page=search">Advanced Search</a></td>
|
|
|
+<td align="left"><a href="bibtex.cgi?page=about">About</a></td>
|
|
|
+<td align="right"><form action="bibtex.cgi" method="get">Quick Search:<input type="text" name="query" value="Search Here" /> <select name="search"><option value="all">All</option><option value="ByID">By ID</option><option value="author">Author</option><option value="title">Title</option></select> Regex? <input type="checkbox" name="regex" value="yes" /> <input type="submit" value="Search" /></form></td>
|
|
|
+</tr>
|
|
|
+</table>
|
|
|
+<hr />
|
|
|
+eohtml
|
|
|
+ while ($entry = $parser->next) {
|
|
|
+ print <<eohtml;
|
|
|
+<h3>Key: <a href="bibtex.cgi?search=ByID&query=$entry->key()">$entry->jkey()</a></h3>
|
|
|
+<table>
|
|
|
+<tr><td>Type</td><td>$entry->type()</td></tr>
|
|
|
+<tr><td>Author</td><td>$entry->field("author")</td></tr>
|
|
|
+<tr><td>Title</td><td>$entry->field("title")</td></tr>
|
|
|
+<tr><td>Year</td><td>$entry->field("year")</td></tr>
|
|
|
+</table>
|
|
|
+<hr />
|
|
|
+eohtml
|
|
|
+ }
|
|
|
+ print <<eohtml;
|
|
|
+Powered by BibTex.cgi
|
|
|
+</body>
|
|
|
+</html>
|
|
|
+eohtml
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+sub searchall{
|
|
|
+ while ($entry = $parser->next()) {
|
|
|
+ if ($entry->raw_bibtex() ~= /$cgi->param("query")/g) {
|
|
|
+ print <<eohtml;
|
|
|
+<h3>Key: <a href="bibtex.cgi?search=ByID&query=$entry->key()">$entry->jkey()</a></h3>
|
|
|
+<table>
|
|
|
+<tr><td>Type</td><td>$entry->type()</td></tr>
|
|
|
+<tr><td>Author</td><td>$entry->field("author")</td></tr>
|
|
|
+<tr><td>Title</td><td>$entry->field("title")</td></tr>
|
|
|
+<tr><td>Year</td><td>$entry->field("year")</td></tr>
|
|
|
+</table>
|
|
|
+<hr />
|
|
|
+eohtml
|
|
|
+ }else {
|
|
|
+ next;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+sub searchbyid{
|
|
|
+ while ($entry = $parser->next()) {
|
|
|
+ if ($entry->key() eq $cgi->param("query")) {
|
|
|
+ print <<eohtml;
|
|
|
+<h3>Key: <a href="bibtex.cgi?search=ByID&query=$entry->key()">$entry->jkey()</a></h3>
|
|
|
+<table>
|
|
|
+<tr><td>Type</td><td>$entry->type()</td></tr>
|
|
|
+<tr><td>Author</td><td>$entry->field("author")</td></tr>
|
|
|
+<tr><td>Title</td><td>$entry->field("title")</td></tr>
|
|
|
+<tr><td>Year</td><td>$entry->field("year")</td></tr>
|
|
|
+</table>
|
|
|
+<hr />
|
|
|
+eohtml
|
|
|
+ }else {
|
|
|
+ next;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+sub searchauthor{
|
|
|
+ while ($entry = $parser->next()) {
|
|
|
+ if ($entry->field("author") ~= /$cgi->param(query)/gi {
|
|
|
+ print <<eohtml;
|
|
|
+<h3>Key: <a href="bibtex.cgi?search=ByID&query=$entry->key()">$entry->jkey()</a></h3>
|
|
|
+<table>
|
|
|
+<tr><td>Type</td><td>$entry->type()</td></tr>
|
|
|
+<tr><td>Author</td><td>$entry->field("author")</td></tr>
|
|
|
+<tr><td>Title</td><td>$entry->field("title")</td></tr>
|
|
|
+<tr><td>Year</td><td>$entry->field("year")</td></tr>
|
|
|
+</table>
|
|
|
+<hr />
|
|
|
+eohtml
|
|
|
+ }else {
|
|
|
+ next;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+sub searchtitle{
|
|
|
+ while ($entry = $parser->next()) {
|
|
|
+ if ($entry->field("title") ~= /$cgi->param(query)/gi {
|
|
|
+ print <<eohtml;
|
|
|
+<h3>Key: <a href="bibtex.cgi?search=ByID&query=$entry->key()">$entry->jkey()</a></h3>
|
|
|
+<table>
|
|
|
+<tr><td>Type</td><td>$entry->type()</td></tr>
|
|
|
+<tr><td>Author</td><td>$entry->field("author")</td></tr>
|
|
|
+<tr><td>Title</td><td>$entry->field("title")</td></tr>
|
|
|
+<tr><td>Year</td><td>$entry->field("year")</td></tr>
|
|
|
+</table>
|
|
|
+<hr />
|
|
|
+eohtml
|
|
|
+ }else {
|
|
|
+ next;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+__END__
|