File:  [LON-CAPA] / loncom / interface / lonsearchcat.pm
Revision 1.5: download - view: text, annotated - select for diffs
Thu Mar 8 16:55:43 2001 UTC (23 years, 2 months ago) by harris41
Branches: MAIN
CVS tags: HEAD
moving logo in correct position -Scott

# The LearningOnline Network
# Search Catalog
#
# 03/08/2001 Scott Harrison
#
package Apache::lonsearchcat;

use strict;
use Apache::Constants qw(:common);

my %language;
my $scrout;
my %metadatafields;
my %cprtag;
my %mimetag;

sub handler {
    my $r = shift;
    $r->content_type('text/html');
    $r->send_http_header;
    return OK if $r->header_only;

    %metadatafields=();

# ------------------------------------------------ First, check out environment
    $metadatafields{'owner'}=$ENV{'user.name'}.'@'.$ENV{'user.domain'};

    
    %language=();
    $language{'any'}='Any language';
    {
	my $fh=Apache::File->new($r->dir_config('lonTabDir').'/language.tab');
	map {
	    $_=~/(\w+)\s+([\w\s\-]+)/;
	    $language{$1}=$2;
	} <$fh>;
    }

    %cprtag=();
    $cprtag{'any'}='Any copyright/distribution';
    {
	my $fh=Apache::File->new($r->dir_config('lonIncludes').'/copyright.tab');
	map {
	    $_=~/(\w+)\s+([\w\s\-]+)/;
	    $cprtag{$1}=$2;
	} <$fh>;
    }

    %mimetag=();
    $mimetag{'any'}='Any type';
    {
	my $fh=Apache::File->new($r->dir_config('lonTabDir').'/filetypes.tab');
	map {
	    $_=~/(\w+)\s+(\w+)\s+([\w\s\-]+)/;
	    $mimetag{$1}=".$1 $3";
	} <$fh>;
    }

    $scrout="";
    $scrout.=&searchphrasefield('Limit by title','title',
			'');

    $scrout.=&searchphrasefield('Limit by author','author',
			'');

    $scrout.=&searchphrasefield('Limit by subject','subject',
			'');

    $scrout.=&searchphrasefield('Limit by notes','notes',
			'');

    $scrout.=&searchphrasefield('Limit by abstract','abstract',
			'');

    $scrout.=&selectbox('Limit by MIME type','mime',
			'notxxx',%mimetag);

    $scrout.=&selectbox('Limit by language','language',
			'any',%language);
    
    $scrout.=<<CREATIONDATEEND;
<p>
<font color="#800000" face="helvetica"><b>LIMIT BY CREATION DATE RANGE:</b>
</font>
<br>
between:<select name="creationdatemonthstart">
<option value="01"> </option>
<option value="01">January</option>
<option value="02">February</option>
<option value="03">March</option>
<option value="04">April</option>
<option value="05">May</option>
<option value="06">June</option>
<option value="07">July</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select name="creationdatedaystart">
<option value="1"> </option>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
<option value=6>6</option>
<option value=7>7</option>
<option value=8>8</option>
<option value=9>9</option>
<option value=10>10</option>
<option value=11>11</option>
<option value=12>12</option>
<option value=13>13</option>
<option value=14>14</option>
<option value=15>15</option>
<option value=16>16</option>
<option value=17>17</option>
<option value=18>18</option>
<option value=19>19</option>
<option value=20>20</option>
<option value=21>21</option>
<option value=22>22</option>
<option value=23>23</option>
<option value=24>24</option>
<option value=25>25</option>
<option value=26>26</option>
<option value=27>27</option>
<option value=28>28</option>
<option value=29>29</option>
<option value=30>30</option>
<option value=31>31</option>
</select>
<select name="creationdateyearstart">
<option value=1976> </option>
<option value=1976>1976</option>
<option value=1977>1977</option>
<option value=1978>1978</option>
<option value=1979>1979</option>
<option value=1980>1980</option>
<option value=1981>1981</option>
<option value=1982>1982</option>
<option value=1983>1983</option>
<option value=1984>1984</option>
<option value=1985>1985</option>
<option value=1986>1986</option>
<option value=1987>1987</option>
<option value=1988>1988</option>
<option value=1989>1989</option>
<option value=1990>1990</option>
<option value=1991>1991</option>
<option value=1992>1992</option>
<option value=1993>1993</option>
<option value=1994>1994</option>
<option value=1995>1995</option>
<option value=1996>1996</option>
<option value=1997>1997</option>
<option value=1998>1998</option>
<option value=1999>1999</option>
<option value=2000>2000</option>
<option value=2001>2001</option>
<option value=2002>2002</option>
<option value=2003>2003</option>
<option value=2004>2004</option>
<option value=2005>2005</option>
<option value=2006>2006</option>
<option value=2007>2007</option>
<option value=2008>2008</option>
<option value=2009>2009</option>
<option value=2010>2010</option>
<option value=2011>2011</option>
<option value=2012>2012</option>
<option value=2013>2013</option>
<option value=2014>2014</option>
<option value=2015>2015</option>
<option value=2016>2016</option>
<option value=2017>2017</option>
<option value=2018>2018</option>
<option value=2019>2019</option>
<option value=2020>2020</option>
<option value=2021>2021</option>
<option value=2022>2022</option>
<option value=2023>2023</option>
<option value=2024>2024</option>
<option value=2025>2025</option>
<option value=2026>2026</option>
<option value=2027>2027</option>
<option value=2028>2028</option>
<option value=2029>2029</option>
<option value=2030>2030</option>
<option value=2031>2031</option>
<option value=2032>2032</option>
<option value=2033>2033</option>
<option value=2034>2034</option>
<option value=2035>2035</option>
<option value=2036>2036</option>
<option value=2037>2037</option>
<option value=2038>2038</option>
<option value=2039>2039</option>
<option value=2040>2040</option>
<option value=2041>2041</option>
<option value=2042>2042</option>
<option value=2043>2043</option>
<option value=2044>2044</option>
<option value=2045>2045</option>
<option value=2046>2046</option>
<option value=2047>2047</option>
<option value=2048>2048</option>
<option value=2049>2049</option>
<option value=2050>2050</option>
<option value=2051>2051</option>
</select>
and:<select name="creationdatemonthend">
<option value="12"> </option>
<option value="01">January</option>
<option value="02">February</option>
<option value="03">March</option>
<option value="04">April</option>
<option value="05">May</option>
<option value="06">June</option>
<option value="07">July</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select name="creationdatedayend">
<option value=28> </option>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
<option value=6>6</option>
<option value=7>7</option>
<option value=8>8</option>
<option value=9>9</option>
<option value=10>10</option>
<option value=11>11</option>
<option value=12>12</option>
<option value=13>13</option>
<option value=14>14</option>
<option value=15>15</option>
<option value=16>16</option>
<option value=17>17</option>
<option value=18>18</option>
<option value=19>19</option>
<option value=20>20</option>
<option value=21>21</option>
<option value=22>22</option>
<option value=23>23</option>
<option value=24>24</option>
<option value=25>25</option>
<option value=26>26</option>
<option value=27>27</option>
<option value=28>28</option>
<option value=29>29</option>
<option value=30>30</option>
<option value=31>31</option>
</select>
<select name="creationdateyearend">
<option value=2051> </option>
<option value=1976>1976</option>
<option value=1977>1977</option>
<option value=1978>1978</option>
<option value=1979>1979</option>
<option value=1980>1980</option>
<option value=1981>1981</option>
<option value=1982>1982</option>
<option value=1983>1983</option>
<option value=1984>1984</option>
<option value=1985>1985</option>
<option value=1986>1986</option>
<option value=1987>1987</option>
<option value=1988>1988</option>
<option value=1989>1989</option>
<option value=1990>1990</option>
<option value=1991>1991</option>
<option value=1992>1992</option>
<option value=1993>1993</option>
<option value=1994>1994</option>
<option value=1995>1995</option>
<option value=1996>1996</option>
<option value=1997>1997</option>
<option value=1998>1998</option>
<option value=1999>1999</option>
<option value=2000>2000</option>
<option value=2001>2001</option>
<option value=2002>2002</option>
<option value=2003>2003</option>
<option value=2004>2004</option>
<option value=2005>2005</option>
<option value=2006>2006</option>
<option value=2007>2007</option>
<option value=2008>2008</option>
<option value=2009>2009</option>
<option value=2010>2010</option>
<option value=2011>2011</option>
<option value=2012>2012</option>
<option value=2013>2013</option>
<option value=2014>2014</option>
<option value=2015>2015</option>
<option value=2016>2016</option>
<option value=2017>2017</option>
<option value=2018>2018</option>
<option value=2019>2019</option>
<option value=2020>2020</option>
<option value=2021>2021</option>
<option value=2022>2022</option>
<option value=2023>2023</option>
<option value=2024>2024</option>
<option value=2025>2025</option>
<option value=2026>2026</option>
<option value=2027>2027</option>
<option value=2028>2028</option>
<option value=2029>2029</option>
<option value=2030>2030</option>
<option value=2031>2031</option>
<option value=2032>2032</option>
<option value=2033>2033</option>
<option value=2034>2034</option>
<option value=2035>2035</option>
<option value=2036>2036</option>
<option value=2037>2037</option>
<option value=2038>2038</option>
<option value=2039>2039</option>
<option value=2040>2040</option>
<option value=2041>2041</option>
<option value=2042>2042</option>
<option value=2043>2043</option>
<option value=2044>2044</option>
<option value=2045>2045</option>
<option value=2046>2046</option>
<option value=2047>2047</option>
<option value=2048>2048</option>
<option value=2049>2049</option>
<option value=2050>2050</option>
<option value=2051>2051</option>
</select>
</p>
CREATIONDATEEND

    $scrout.=<<LASTREVISIONDATEEND;
<p>
<font color="#800000" face="helvetica"><b>LIMIT BY LAST REVISION DATE RANGE:
</b></font>
<br>between:<select name="lastrevisiondatemonthstart">
<option value="00"> </option>
<option value="01">January</option>
<option value="02">February</option>
<option value="03">March</option>
<option value="04">April</option>
<option value="05">May</option>
<option value="06">June</option>
<option value="07">July</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select name="lastrevisiondatedaystart">
<option value=1> </option>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
<option value=6>6</option>
<option value=7>7</option>
<option value=8>8</option>
<option value=9>9</option>
<option value=10>10</option>
<option value=11>11</option>
<option value=12>12</option>
<option value=13>13</option>
<option value=14>14</option>
<option value=15>15</option>
<option value=16>16</option>
<option value=17>17</option>
<option value=18>18</option>
<option value=19>19</option>
<option value=20>20</option>
<option value=21>21</option>
<option value=22>22</option>
<option value=23>23</option>
<option value=24>24</option>
<option value=25>25</option>
<option value=26>26</option>
<option value=27>27</option>
<option value=28>28</option>
<option value=29>29</option>
<option value=30>30</option>
<option value=31>31</option>
</select>
<select name="lastrevisiondateyearstart">
<option value=1976> </option>
<option value=1976>1976</option>
<option value=1977>1977</option>
<option value=1978>1978</option>
<option value=1979>1979</option>
<option value=1980>1980</option>
<option value=1981>1981</option>
<option value=1982>1982</option>
<option value=1983>1983</option>
<option value=1984>1984</option>
<option value=1985>1985</option>
<option value=1986>1986</option>
<option value=1987>1987</option>
<option value=1988>1988</option>
<option value=1989>1989</option>
<option value=1990>1990</option>
<option value=1991>1991</option>
<option value=1992>1992</option>
<option value=1993>1993</option>
<option value=1994>1994</option>
<option value=1995>1995</option>
<option value=1996>1996</option>
<option value=1997>1997</option>
<option value=1998>1998</option>
<option value=1999>1999</option>
<option value=2000>2000</option>
<option value=2001>2001</option>
<option value=2002>2002</option>
<option value=2003>2003</option>
<option value=2004>2004</option>
<option value=2005>2005</option>
<option value=2006>2006</option>
<option value=2007>2007</option>
<option value=2008>2008</option>
<option value=2009>2009</option>
<option value=2010>2010</option>
<option value=2011>2011</option>
<option value=2012>2012</option>
<option value=2013>2013</option>
<option value=2014>2014</option>
<option value=2015>2015</option>
<option value=2016>2016</option>
<option value=2017>2017</option>
<option value=2018>2018</option>
<option value=2019>2019</option>
<option value=2020>2020</option>
<option value=2021>2021</option>
<option value=2022>2022</option>
<option value=2023>2023</option>
<option value=2024>2024</option>
<option value=2025>2025</option>
<option value=2026>2026</option>
<option value=2027>2027</option>
<option value=2028>2028</option>
<option value=2029>2029</option>
<option value=2030>2030</option>
<option value=2031>2031</option>
<option value=2032>2032</option>
<option value=2033>2033</option>
<option value=2034>2034</option>
<option value=2035>2035</option>
<option value=2036>2036</option>
<option value=2037>2037</option>
<option value=2038>2038</option>
<option value=2039>2039</option>
<option value=2040>2040</option>
<option value=2041>2041</option>
<option value=2042>2042</option>
<option value=2043>2043</option>
<option value=2044>2044</option>
<option value=2045>2045</option>
<option value=2046>2046</option>
<option value=2047>2047</option>
<option value=2048>2048</option>
<option value=2049>2049</option>
<option value=2050>2050</option>
<option value=2051>2051</option>
</select>
and:<select name="lastrevisiondatemonthend">
<option value="12"> </option>
<option value="01">January</option>
<option value="02">February</option>
<option value="03">March</option>
<option value="04">April</option>
<option value="05">May</option>
<option value="06">June</option>
<option value="07">July</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select name="lastrevisiondatedayend">
<option value=28> </option>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
<option value=6>6</option>
<option value=7>7</option>
<option value=8>8</option>
<option value=9>9</option>
<option value=10>10</option>
<option value=11>11</option>
<option value=12>12</option>
<option value=13>13</option>
<option value=14>14</option>
<option value=15>15</option>
<option value=16>16</option>
<option value=17>17</option>
<option value=18>18</option>
<option value=19>19</option>
<option value=20>20</option>
<option value=21>21</option>
<option value=22>22</option>
<option value=23>23</option>
<option value=24>24</option>
<option value=25>25</option>
<option value=26>26</option>
<option value=27>27</option>
<option value=28>28</option>
<option value=29>29</option>
<option value=30>30</option>
<option value=31>31</option>
</select>
<select name="lastrevisiondateyearend">
<option value=2051> </option>
<option value=1976>1976</option>
<option value=1977>1977</option>
<option value=1978>1978</option>
<option value=1979>1979</option>
<option value=1980>1980</option>
<option value=1981>1981</option>
<option value=1982>1982</option>
<option value=1983>1983</option>
<option value=1984>1984</option>
<option value=1985>1985</option>
<option value=1986>1986</option>
<option value=1987>1987</option>
<option value=1988>1988</option>
<option value=1989>1989</option>
<option value=1990>1990</option>
<option value=1991>1991</option>
<option value=1992>1992</option>
<option value=1993>1993</option>
<option value=1994>1994</option>
<option value=1995>1995</option>
<option value=1996>1996</option>
<option value=1997>1997</option>
<option value=1998>1998</option>
<option value=1999>1999</option>
<option value=2000>2000</option>
<option value=2001>2001</option>
<option value=2002>2002</option>
<option value=2003>2003</option>
<option value=2004>2004</option>
<option value=2005>2005</option>
<option value=2006>2006</option>
<option value=2007>2007</option>
<option value=2008>2008</option>
<option value=2009>2009</option>
<option value=2010>2010</option>
<option value=2011>2011</option>
<option value=2012>2012</option>
<option value=2013>2013</option>
<option value=2014>2014</option>
<option value=2015>2015</option>
<option value=2016>2016</option>
<option value=2017>2017</option>
<option value=2018>2018</option>
<option value=2019>2019</option>
<option value=2020>2020</option>
<option value=2021>2021</option>
<option value=2022>2022</option>
<option value=2023>2023</option>
<option value=2024>2024</option>
<option value=2025>2025</option>
<option value=2026>2026</option>
<option value=2027>2027</option>
<option value=2028>2028</option>
<option value=2029>2029</option>
<option value=2030>2030</option>
<option value=2031>2031</option>
<option value=2032>2032</option>
<option value=2033>2033</option>
<option value=2034>2034</option>
<option value=2035>2035</option>
<option value=2036>2036</option>
<option value=2037>2037</option>
<option value=2038>2038</option>
<option value=2039>2039</option>
<option value=2040>2040</option>
<option value=2041>2041</option>
<option value=2042>2042</option>
<option value=2043>2043</option>
<option value=2044>2044</option>
<option value=2045>2045</option>
<option value=2046>2046</option>
<option value=2047>2047</option>
<option value=2048>2048</option>
<option value=2049>2049</option>
<option value=2050>2050</option>
<option value=2051>2051</option>
</select>
</p>
LASTREVISIONDATEEND

    $scrout.=&searchphrasefield('Limit by publisher/owner','owner',
			$metadatafields{'owner'});

    $scrout.=&selectbox('Limit by copyright/distribution','copyright',
			'any',%cprtag);

# ---------------------------------------------------------------- Print screen
    $r->print(<<ENDDOCUMENT);
<html>
<head>
<title>The LearningOnline Network with CAPA</title>
</head>
<body bgcolor="#FFFFFF">
<img align=right src=/adm/lonIcons/lonlogos.gif>
<h1>Search Catalog</h1>
<form method="post" action="/adm/searchcat">
<hr>
<h3>Basic Search</h3>
<p>
Enter terms or phrases separated by search operators
such as AND or OR then press SEARCH below.  Terms should be specific
to the title, author, subject, notes, or abstract information associated
with a resource.
<br>
<input type="text" name="basicexp">
<input type="checkbox" name="titleonly">
<font color="#800000">Title only</font>
<br>
<input type="submit" name="basicsubmit" value="SEARCH">
</p>
<hr>
<h3>Advanced Search</h3>
$scrout
<p>
<input type="submit" name="advancedsubmit" value="SEARCH">
</p>
</form>
</body>
</html>
ENDDOCUMENT
    return OK;
} 

# --------------------------------------------------------- Various form fields

sub textfield {
    my ($title,$name,$value)=@_;
    return "\n<p><b>$title:</b><br>".
           '<input type=text name="'.$name.'" size=80 value="'.$value.'">';
}

sub searchphrasefield {
    my ($title,$name,$value)=@_;
    my $instruction=<<END;
Enter terms or phrases separated by search operators such
as AND or OR.
END
    my $uctitle=uc($title);
    return "\n<p><font color=\"#800000\" face=\"helvetica\"><b>$uctitle:</b>".
	   ":</FONT> $instruction<br>".
           '<input type=text name="'.$name.'" size=80 value="'.$value.'">';
}

sub selectbox {
    my ($title,$name,$value,%options)=@_;
    my $uctitle=uc($title);
    my $selout="\n<p><font color=\"#800000\" face=\"helvetica\"><b>$uctitle:".
	"</b></font><br>".'<select name="'.$name.'">';
    map {
        $selout.='<option value="'.$_.'"';
        if ($_ eq $value) { $selout.=' selected'; }
        $selout.='>'.$options{$_}.'</option>';
    } sort keys %options;
    return $selout.'</select>';
}

1;
__END__

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>