version 1.288, 2007/07/11 20:32:15
|
version 1.302, 2008/12/12 17:46:25
|
Line 266 sub handler {
|
Line 266 sub handler {
|
## Configure dynamic components of interface |
## Configure dynamic components of interface |
## |
## |
if ($env{'form.catalogmode'} eq 'interactive') { |
if ($env{'form.catalogmode'} eq 'interactive') { |
$closebutton="<input type='button' name='close' value='CLOSE' "; |
$closebutton="<input type='button' name='close' value='".&mt('CLOSE')."' "; |
if ($env{'form.phase'} =~ /(results|run_search)/) { |
if ($env{'form.phase'} =~ /(results|run_search)/) { |
$closebutton .="onClick='parent.close()'"; |
$closebutton .="onClick='parent.close()'"; |
} else { |
} else { |
Line 274 sub handler {
|
Line 274 sub handler {
|
} |
} |
$closebutton .=">\n"; |
$closebutton .=">\n"; |
} elsif ($env{'form.catalogmode'} eq 'import') { |
} elsif ($env{'form.catalogmode'} eq 'import') { |
$closebutton="<input type='button' name='close' value='CLOSE' "; |
$closebutton="<input type='button' name='close' value='".&mt('CLOSE')."' "; |
if ($env{'form.phase'} =~ /(results|run_search)/) { |
if ($env{'form.phase'} =~ /(results|run_search)/) { |
$closebutton .="onClick='parent.close()'"; |
$closebutton .="onClick='parent.close()'"; |
} else { |
} else { |
$closebutton .="onClick='self.close()'"; |
$closebutton .="onClick='self.close()'"; |
} |
} |
$closebutton .= ">"; |
$closebutton .= ">"; |
|
my $txt_import = &mt('IMPORT'); |
$importbutton=<<END; |
$importbutton=<<END; |
<input type='button' name='import' value='IMPORT' |
<input type='button' name='import' value='$txt_import' |
onClick='javascript:select_group()'> |
onClick='javascript:select_group()'> |
END |
END |
} else { |
} else { |
Line 759 sub setup_basic_search {
|
Line 760 sub setup_basic_search {
|
$r->dir_config('lonDefDomain')), |
$r->dir_config('lonDefDomain')), |
$r->dir_config('lonDefDomain')). |
$r->dir_config('lonDefDomain')). |
'</label>'; |
'</label>'; |
if ($area eq 'res') { |
|
$inclext= '<label>'.&mt('[_1] include external resources', |
|
&Apache::lonhtmlcommon::checkbox('inclext',$env{'form.inclext'})). |
|
'</label>'; |
|
} |
|
$adv_search_link = '<a href="/adm/searchcat?'. |
$adv_search_link = '<a href="/adm/searchcat?'. |
&Apache::loncommon::inhibit_menu_check(). |
&Apache::loncommon::inhibit_menu_check(). |
'&phase=disp_adv'. |
'&phase=disp_adv'. |
Line 798 sub setup_basic_search {
|
Line 794 sub setup_basic_search {
|
'<br />'. |
'<br />'. |
'<font size="-1">'.&searchhelp().'</font>'.'</td>'. |
'<font size="-1">'.&searchhelp().'</font>'.'</td>'. |
'<td><font size="-1">'. |
'<td><font size="-1">'. |
'<nobr>'.(' 'x3).$adv_search_link.'</nobr>'.'<br />'. |
'<span class="LC_nobreak">'.(' 'x3).$adv_search_link.'</span>'.'<br />'. |
'<nobr>'.(' 'x1).$userelatedwords.'</nobr>'.'<br />'. |
'<span class="LC_nobreak">'.(' 'x1).$userelatedwords.'</span>'.'<br />'. |
'<nobr>'.(' 'x1).$onlysearchdomain.'</nobr>'.'<br />'. |
'<span class="LC_nobreak">'.(' 'x1).$onlysearchdomain.'</span>'.'<br />'. |
'<nobr>'.(' 'x1).$inclext.'</nobr>'.'<br />'. |
'<span class="LC_nobreak">'.(' 'x1).$inclext.'</span>'.'<br />'. |
'</font></td>'. |
'</font></td>'. |
'</tr>'.$/; |
'</tr>'.$/; |
# |
# |
Line 868 ENDHEADER
|
Line 864 ENDHEADER
|
'<input type="hidden" name="phase" value="adv_search" />'; |
'<input type="hidden" name="phase" value="adv_search" />'; |
my %fields=&Apache::lonmeta::fieldnames(); |
my %fields=&Apache::lonmeta::fieldnames(); |
# |
# |
$scrout .= '<h3>'.&mt('Standard [_1] Metadata',$srchtype).'</h3>'; |
$scrout .= '<h3>'.&mt("Standard $srchtype Metadata").'</h3>'; |
$scrout .= "<table>\n"; |
$scrout .= "<table>\n"; |
$scrout .= '<tr><td> </td><td colspan="2"><font size="-1">'. |
$scrout .= '<tr><td> </td><td colspan="2"><font size="-1">'. |
(' 'x2).&searchhelp()."</font></td></tr>\n"; |
(' 'x2).&searchhelp()."</font></td></tr>\n"; |
Line 899 ENDHEADER
|
Line 895 ENDHEADER
|
$env{'form.'.$field.'_related'}, |
$env{'form.'.$field.'_related'}, |
50); |
50); |
if ($related_word_search{$field}) { |
if ($related_word_search{$field}) { |
$scrout .= 'related words'; |
$scrout .= &mt('related words'); |
} else { |
} else { |
$scrout .= '</td><td> '; |
$scrout .= '</td><td> '; |
} |
} |
Line 926 ENDHEADER
|
Line 922 ENDHEADER
|
&Apache::loncommon::domain_select('domains', |
&Apache::loncommon::domain_select('domains', |
$env{'form.domains'},1). |
$env{'form.domains'},1). |
'<br /><label>'; |
'<br /><label>'; |
if ($env{'form.area'} ne 'portfolio') { |
|
$scrout .= &mt('[_1] include external resources', |
|
&Apache::lonhtmlcommon::checkbox |
|
('inclext',$env{'form.inclext'})).'</label>' |
|
} |
|
$scrout .= '</td></tr>'.$/; |
$scrout .= '</td></tr>'.$/; |
# |
# |
# Misc metadata |
# Misc metadata |
Line 1044 ENDHEADER
|
Line 1035 ENDHEADER
|
# Creation/Modification date limits |
# Creation/Modification date limits |
$scrout .= '<h3>'.&mt('Creation and Modification dates').'</h3>'; |
$scrout .= '<h3>'.&mt('Creation and Modification dates').'</h3>'; |
$scrout .= "\n<table>\n"; |
$scrout .= "\n<table>\n"; |
|
$scrout .= "<tr><td> </td><td>".&mt('Month[_1]Day[_2]Year',' 'x14,' 'x6)."</td></tr>\n"; |
my $cafter = |
my $cafter = |
&Apache::lonhtmlcommon::date_setter('advsearch', # formname |
&Apache::lonhtmlcommon::date_setter('advsearch', # formname |
'creationdate1', # fieldname |
'creationdate1', # fieldname |
Line 1062 ENDHEADER
|
Line 1054 ENDHEADER
|
'', # state |
'', # state |
1, # no_hh_mm_ss |
1, # no_hh_mm_ss |
); |
); |
$scrout .= &mt('<tr><td align="right">Created between</td>'. |
$scrout .= '<tr><td align="right">'.&mt('Created between').'</td>' |
'<td>[_1]</td></tr>'. |
.'<td>'.$cafter.'</td></tr>' |
'<tr><td align="right">and </td>'. |
.'<tr><td align="right">'.&mt('and').'</td>' |
'<td>[_2]</td></tr>',$cafter,$cbefore); |
.'<td>'.$cbefore.'</td></tr>'; |
my $lafter = |
my $lafter = |
&Apache::lonhtmlcommon::date_setter('advsearch', |
&Apache::lonhtmlcommon::date_setter('advsearch', |
'revisiondate1', |
'revisiondate1', |
Line 1084 ENDHEADER
|
Line 1076 ENDHEADER
|
'', # state |
'', # state |
1, # no_hh_mm_ss |
1, # no_hh_mm_ss |
); |
); |
$scrout .= &mt('<tr><td align="right">Last modified between </td>'. |
$scrout .= '<tr><td align="right">'.&mt('Last modified between').'</td>' |
'<td>[_1]</td></tr>'. |
.'<td>'.$lafter.'</td></tr>' |
'<tr><td align="right">and</td>'. |
.'<tr><td align="right">'.&mt('and').'</td>' |
'<td>[_2]</td></tr>',$lafter,$lbefore); |
.'<td>'.$lbefore.'</td></tr>'; |
$scrout.="</table>\n"; |
$scrout.="</table>\n"; |
$scrout.=<<ENDDOCUMENT; |
$scrout.=<<ENDDOCUMENT; |
$advanced_buttons |
$advanced_buttons |
Line 1162 Outputs: text for box with view options
|
Line 1154 Outputs: text for box with view options
|
###################################################################### |
###################################################################### |
###################################################################### |
###################################################################### |
sub viewoptions { |
sub viewoptions { |
my $scrout; |
my $scrout = '<span class="LC_nobreak">'; |
if (! defined($env{'form.viewselect'})) { |
if (! defined($env{'form.viewselect'})) { |
$env{'form.viewselect'}='detailed'; |
$env{'form.viewselect'}='detailed'; |
} |
} |
Line 1175 sub viewoptions {
|
Line 1167 sub viewoptions {
|
$env{'form.show'}, |
$env{'form.show'}, |
undef, |
undef, |
(10,20,50,100,1000,10000)); |
(10,20,50,100,1000,10000)); |
$scrout .= (' 'x2).&mt('[_1] Records per Page',$countselect). |
$scrout .= (' 'x2) |
'</nobr>'.$/; |
.&mt('[_1] Records per Page',$countselect) |
|
.'</span>'.$/; |
return $scrout; |
return $scrout; |
} |
} |
|
|
Line 1402 sub parse_advanced_search {
|
Line 1395 sub parse_advanced_search {
|
'lastrevisiondatestart_month','lastrevisiondatestart_day', |
'lastrevisiondatestart_month','lastrevisiondatestart_day', |
'lastrevisiondatestart_year','lastrevisiondateend_month', |
'lastrevisiondatestart_year','lastrevisiondateend_month', |
'lastrevisiondateend_day','lastrevisiondateend_year') { |
'lastrevisiondateend_day','lastrevisiondateend_year') { |
$env{'form.'.$field}=~s/[^\w\/\s\(\)\=\-\"\'.]//g; |
$env{'form.'.$field}=~s/[^\w\/\s\(\)\=\-\"\'.\*]//g; |
} |
} |
foreach ('mode','form','element') { |
foreach ('mode','form','element') { |
# is this required? Hmmm. |
# is this required? Hmmm. |
Line 1647 sub parse_advanced_search {
|
Line 1640 sub parse_advanced_search {
|
# |
# |
if (@queries) { |
if (@queries) { |
if ($env{'form.area'} eq 'portfolio') { |
if ($env{'form.area'} eq 'portfolio') { |
$query ="SELECT pm.*,pa.keynum,pa.scope FROM portfolio_metadata pm, portfolio_access pa, portfolio_addedfields pf WHERE (pm.url = pa.url AND pf.url = pm.url AND (pa.start < NOW() AND (pa.end IS NULL OR pa.end > NOW())) AND (".join(') AND (',@queries).'))'; |
$query ="SELECT pm.*,pa.keynum,pa.scope FROM portfolio_metadata pm, portfolio_access pa, portfolio_addedfields pf WHERE (pm.url = pa.url AND pf.url = pm.url AND (pa.start < UTC_TIMESTAMP() AND (pa.end IS NULL OR pa.end > UTC_TIMESTAMP())) AND (".join(') AND (',@queries).'))'; |
} else { |
} else { |
$query="SELECT * FROM metadata WHERE (".join(") AND (",@queries).')'; |
$query="SELECT * FROM metadata WHERE (".join(") AND (",@queries).')'; |
} |
} |
Line 1710 sub parse_basic_search {
|
Line 1703 sub parse_basic_search {
|
# |
# |
# Clean up fields for safety |
# Clean up fields for safety |
for my $field ('basicexp') { |
for my $field ('basicexp') { |
$env{"form.$field"}=~s/[^\w\s\'\"\!\(\)\-]//g; |
$env{"form.$field"}=~s/[^\w\s\'\"\!\(\)\-\*]//g; |
} |
} |
foreach ('mode','form','element') { |
foreach ('mode','form','element') { |
# is this required? Hmmm. |
# is this required? Hmmm. |
Line 1749 sub parse_basic_search {
|
Line 1742 sub parse_basic_search {
|
#} |
#} |
my $final_query; |
my $final_query; |
if ($env{'form.area'} eq 'portfolio') { |
if ($env{'form.area'} eq 'portfolio') { |
$final_query = 'SELECT pm.*,pa.keynum,pa.scope FROM portfolio_metadata pm, portfolio_access pa WHERE (pm.url = pa.url AND (pa.start < NOW() AND (pa.end IS NULL OR pa.end > NOW())) AND '.join(" AND ",@Queries).')'; |
$final_query = 'SELECT pm.*,pa.keynum,pa.scope FROM portfolio_metadata pm, portfolio_access pa WHERE (pm.url = pa.url AND (pa.start < UTC_TIMESTAMP() AND (pa.end IS NULL OR pa.end > UTC_TIMESTAMP())) AND '.join(" AND ",@Queries).')'; |
} else { |
} else { |
$final_query = 'SELECT * FROM metadata WHERE '.join(" AND ",@Queries); |
$final_query = 'SELECT * FROM metadata WHERE '.join(" AND ",@Queries); |
} |
} |
Line 2125 sub copyright_check {
|
Line 2118 sub copyright_check {
|
($env{'user.domain'} ne $resdom)) { |
($env{'user.domain'} ne $resdom)) { |
return 0; |
return 0; |
} |
} |
|
# Check for custom rights |
|
if ($Metadata->{'copyright'} eq 'custom') { |
|
return &Apache::lonnet::customaccess('bre',$Metadata->{'url'}); |
|
} |
return 1; |
return 1; |
} |
} |
|
|
Line 2272 END
|
Line 2269 END
|
# } |
# } |
# $result.="</select>\n"; |
# $result.="</select>\n"; |
my $revise = &revise_button(); |
my $revise = &revise_button(); |
$result.=<<END; |
$result.='<p>' |
<p> |
.&mt('There are [_1] matches to your query.',$total_results) |
There are $total_results matches to your query. $revise |
.' '.$revise.'</p>' |
</p><p> |
.'<p>'.&mt('Search: ').$pretty_query_string |
Search: $pretty_query_string |
.'</p></form>'; |
</p> |
|
</form> |
|
END |
|
$r->print($result.&Apache::loncommon::end_page()); |
$r->print($result.&Apache::loncommon::end_page()); |
return; |
return; |
} |
} |
Line 2451 Returns: html string for a 'revise searc
|
Line 2445 Returns: html string for a 'revise searc
|
###################################################################### |
###################################################################### |
###################################################################### |
###################################################################### |
sub revise_button { |
sub revise_button { |
|
my $revisetext = &mt('Revise search'); |
my $revise_phase = 'disp_basic'; |
my $revise_phase = 'disp_basic'; |
$revise_phase = 'disp_adv' if ($env{'form.searchmode'} eq 'advanced'); |
$revise_phase = 'disp_adv' if ($env{'form.searchmode'} eq 'advanced'); |
my $newloc = '/adm/searchcat'. |
my $newloc = '/adm/searchcat'. |
'?persistent_db_id='.$env{'form.persistent_db_id'}. |
'?persistent_db_id='.$env{'form.persistent_db_id'}. |
'&cleargroupsort=1'. |
'&cleargroupsort=1'. |
'&phase='.$revise_phase; |
'&phase='.$revise_phase; |
my $result = qq{<input type="button" value="Revise search" name="revise"} . |
my $result = qq{<input type="button" value="$revisetext" name="revise"} . |
qq{ onClick="parent.location='$newloc';" /> }; |
qq{ onClick="parent.location='$newloc';" /> }; |
return $result; |
return $result; |
} |
} |
Line 2495 sub run_search {
|
Line 2490 sub run_search {
|
$r->print(<<END); |
$r->print(<<END); |
$start_page |
$start_page |
$breadcrumbs |
$breadcrumbs |
<form name="statusform" action="" method="post"> |
|
<input type="hidden" name="acts" value="" /> |
|
END |
END |
# Remove leading and trailing <br /> |
# Remove leading and trailing <br /> |
$pretty_string =~ s:^\s*<br />::i; |
$pretty_string =~ s:^\s*<br />::i; |
Line 2507 END
|
Line 2500 END
|
pop(@Lines); |
pop(@Lines); |
} |
} |
if (@Lines > 2) { |
if (@Lines > 2) { |
$pretty_string = join '<br />',(@Lines[0..2],'....<br />'); |
$pretty_string = join '<br />',(@Lines[0..2],'...<br />'); |
} |
} |
$r->print(&mt("Search: [_1]",$pretty_string)); |
$r->print(&mt("Search: [_1]",$pretty_string)); |
$r->rflush(); |
$r->rflush(); |
Line 2562 END
|
Line 2555 END
|
my $server; |
my $server; |
my $status; |
my $status; |
my $revise = &revise_button(); |
my $revise = &revise_button(); |
$r->print(<<END); |
$r->print('<form name="statusform" action="" method="post">'."\n". |
<table> |
'<input type="hidden" name="acts" value="" />'."\n". |
<tr><th>Status</th><th>Total Matches</th><th>Time Remaining</th><th></th></tr> |
'<table border="0"><tr><td>'."\n". |
<tr> |
&Apache::loncommon::start_data_table()); |
<td><input type="text" name="status" value="" size="50" /></td> |
$r->print(&Apache::loncommon::start_data_table_header_row() |
<td><input type="text" name="count" value="" size="10" /></td> |
.'<th>'.&mt('Status').'</th>' |
<td><input type="text" name="seconds" value="" size="8" /></td> |
.'<th>'.&mt('Total Matches').'</th>' |
<td>$revise</td> |
.'<th>'.&mt('Time Remaining').'</th>' |
</tr> |
.&Apache::loncommon::end_data_table_header_row() |
</table> |
.&Apache::loncommon::start_data_table_row() |
</form> |
.'<td><input type="text" name="status" value="" size="50" readonly="readonly" /></td>' |
END |
.'<td><input type="text" name="count" value="" size="10" readonly="readonly" /></td>' |
|
.'<td><input type="text" name="seconds" value="" size="8" readonly="readonly" /></td>' |
|
.&Apache::loncommon::end_data_table_row() |
|
.&Apache::loncommon::end_data_table() |
|
.'</td><td> </td><td>'.$revise.'</td></tr></table></form>'); |
$r->rflush(); |
$r->rflush(); |
&reset_timing(); |
&reset_timing(); |
&update_seconds($r); |
&update_seconds($r); |
Line 2645 END
|
Line 2642 END
|
my %Fields = &parse_raw_result($result,$server,$tabletype); |
my %Fields = &parse_raw_result($result,$server,$tabletype); |
$Fields{'hostname'} = $server; |
$Fields{'hostname'} = $server; |
# |
# |
# Skip if external and we did not want that |
|
next if ((! $env{'form.inclext'}) && ($Fields{'url'}=~/^\/ext\//)); |
|
# Skip based on copyright |
# Skip based on copyright |
next if (! ©right_check(\%Fields)); |
next if (! ©right_check(\%Fields)); |
|
|
Line 2900 sub display_results {
|
Line 2895 sub display_results {
|
## Output links (if necessary) for 'prev' and 'next' pages. |
## Output links (if necessary) for 'prev' and 'next' pages. |
$r->print |
$r->print |
('<table width="100%"><tr><td width="25%" align="right">'. |
('<table width="100%"><tr><td width="25%" align="right">'. |
'<nobr>'.$sortform.'</nobr>'. |
'<span class="LC_nobreak">'.$sortform.'</span>'. |
'</td><td width="25%" align="right">'. |
'</td><td width="25%" align="right">'. |
&prev_next_buttons($min,$env{'form.show'},$total_results). |
&prev_next_buttons($min,$env{'form.show'},$total_results). |
'</td><td align="right">'. |
'</td><td align="right">'. |