--- loncom/interface/lonsearchcat.pm 2005/04/07 06:56:23 1.243 +++ loncom/interface/lonsearchcat.pm 2006/02/05 20:56:57 1.251 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Search Catalog # -# $Id: lonsearchcat.pm,v 1.243 2005/04/07 06:56:23 albertel Exp $ +# $Id: lonsearchcat.pm,v 1.251 2006/02/05 20:56:57 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -283,12 +283,7 @@ END ## Sanity checks on form elements ## if (!defined($env{'form.viewselect'})) { - if (($env{'form.catalogmode'} eq 'groupsearch') || - ($env{'form.catalogmode'} eq 'interactive')) { - $env{'form.viewselect'} ="Compact View"; - } else { - $env{'form.viewselect'} ="Detailed Citation View"; - } + $env{'form.viewselect'} ="summary"; } $env{'form.phase'} = 'disp_basic' if (! exists($env{'form.phase'})); $env{'form.show'} = 20 if (! exists($env{'form.show'})); @@ -708,6 +703,10 @@ sub print_basic_search_form { ), $r->dir_config('lonDefDomain') ).''; + my $inclext= ''; my $adv_search_link = ''. @@ -860,10 +860,12 @@ ENDHEADER 'abstract' => 1, 'standards'=> 1, 'mime' => 1, + 'subject' => 1, ); # - foreach my $field ('title','author','owner','authorspace','modifyinguser', - 'keywords','notes','abstract','standards','mime') { + foreach my $field ('title','author','subject','owner','authorspace', + 'modifyinguser','keywords','notes','abstract', + 'standards','mime') { $scrout.=''.&titlefield($fields{$field}).''. &Apache::lonmeta::prettyinput($field, $env{'form.'.$field}, @@ -900,7 +902,10 @@ ENDHEADER &titlefield(&mt('Domains')).''. &Apache::loncommon::domain_select('domains', $env{'form.domains'},1). - ''.$/; + '
'.$/; # # Misc metadata $scrout.=''. @@ -1537,8 +1542,10 @@ sub parse_advanced_search { ## my ($libraries_to_query,$pretty_domains_string,$domain_sql_restriction) = &parse_domain_restrictions(); - push(@queries,$domain_sql_restriction); - $pretty_search_string .= $pretty_domains_string."
\n"; + if ((defined($domain_sql_restriction)) && ($domain_sql_restriction ne '')) { + push(@queries,$domain_sql_restriction); + $pretty_search_string .= $pretty_domains_string."
\n"; + } # if (@queries) { $query="SELECT * FROM metadata WHERE (".join(") AND (",@queries).')'; @@ -1557,12 +1564,7 @@ sub parse_domain_restrictions { if (! exists($env{'form.domains'}) || $env{'form.domains'} eq '') { return (undef,'',undef); } - my @allowed_domains; - if (ref($env{'form.domains'})) { - @allowed_domains = @{$env{'form.domains'}}; - } else { - @allowed_domains = ($env{'form.domains'}); - } + my @allowed_domains = &Apache::loncommon::get_env_multiple('form.domains'); # my %domain_hash = (); my $pretty_domains_string; @@ -2291,7 +2293,7 @@ sub update_status { } { - my $max_time = 40; # seconds for the search to complete + my $max_time = 300; # seconds for the search to complete my $start_time = 0; my $last_time = 0; @@ -2525,8 +2527,11 @@ END my %Fields = &parse_raw_result($result,$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 next if (! ©right_check(\%Fields)); + # # Store the result in the mysql database my $result = &Apache::lonmysql::store_row($table,\%Fields); @@ -2685,66 +2690,6 @@ sub display_results { ); # # Build sorting selector -<<<<<<< lonsearchcat.pm - my @field_order = ('default', - 'title', - 'author', - 'subject', - 'url', - 'keywords', - 'version', - 'language', - 'creationdate'=>, - 'lastrevisiondate', - 'owner', - 'copyright', - 'authorspace', - 'lowestgradeleve', - 'highestgradelevel', - 'standards', - 'count', - 'stdno', - 'avetries', - 'difficulty', - 'disc', - 'clear', - 'technical', - 'correct', - 'helpful', - 'depth', - ); - my %sort_fields = ('default' => 'Default', - 'title' => 'Title', - 'author' => 'Author', - 'subject' => 'Subject', - 'url' => 'URL', - 'keywords' => 'Keywords', - 'version' => 'Version', - 'language' => 'Language', - 'creationdate'=> 'Creation Date', - 'lastrevisiondate' => 'Last Revision Date', - 'owner' => 'Owner', - 'copyright' => 'Copyright', - 'authorspace' => 'Authorspace', - 'lowestgradeleve' => 'Lowest Grade Level', - 'highestgradelevel' => 'Highest Grade Level', - 'standards' => 'Standards', - 'count' => 'Number of Accesses', - 'stdno' => 'Students Attempting', - 'avetries' => 'Average Number of Tries', - 'difficulty' => 'Mean Degree of Difficulty', - 'disc' => 'Mean Degree of Discrimination', - 'clear' => 'Evaluation: Clear', - 'technical' => 'Evaluation: Technically Correct', - 'correct' => 'Evaluation: Material is Correct', - 'helpful' => 'Evaluation: Material is Helpful', - 'depth' => 'Evaluation: Material has Depth', - 'select_form_order' => \@field_order, - ); - - my $sortform = &mt('Sort by [_1]', - &Apache::loncommon::select_form($env{'form.sortfield'}, -======= my @fields = ( {key=>'default' }, @@ -2788,13 +2733,20 @@ sub display_results { } my %sort_fields = map {$_->{'key'},$_->{'desc'}} @fields; $sort_fields{'select_form_order'} = \@field_order; - $ENV{'form.sortorder'} = 'asc' if (! exists($ENV{'form.sortorder'})); + $env{'form.sortorder'} = 'desc' if (! exists($env{'form.sortorder'})); + $env{'form.sortfield'} = 'count' if (! exists($env{'form.sortfield'})); + if (! exists($env{'form.sortorder'})) { + if ($env{'form.sortfield'}=~/^(count|stdno|disc|clear|technical|correct|helpful)$/) { + $env{'form.sortorder'}='desc'; + } else { + $env{'form.sortorder'}='asc'; + } + } my $sortform = &mt('Sort by [_1] [_2]', - &Apache::loncommon::select_form($ENV{'form.sortfield'}, ->>>>>>> 1.242 + &Apache::loncommon::select_form($env{'form.sortfield'}, 'sortfield', %sort_fields), - &Apache::loncommon::select_form($ENV{'form.sortorder'}, + &Apache::loncommon::select_form($env{'form.sortorder'}, 'sortorder', (asc =>&mt('Ascending'), desc=>&mt('Descending') @@ -2824,17 +2776,11 @@ sub display_results { ## ## Get results from MySQL table my $sort_command = 'id>='.$min.' AND id<='.$max; -<<<<<<< lonsearchcat.pm - if ($env{'form.sortfield'} ne 'default' && - exists($sort_fields{$env{'form.sortfield'}})) { - $sort_command = $env{'form.sortfield'}.' IS NOT NULL '. - 'ORDER BY '.$env{'form.sortfield'}. -======= my $order; - if (exists($ENV{'form.sortorder'})) { - if ($ENV{'form.sortorder'} eq 'asc') { + if (exists($env{'form.sortorder'})) { + if ($env{'form.sortorder'} eq 'asc') { $order = 'ASC'; - } elsif ($ENV{'form.sortorder'} eq 'desc') { + } elsif ($env{'form.sortorder'} eq 'desc') { $order = 'DESC'; } else { $order = ''; @@ -2842,12 +2788,11 @@ sub display_results { } else { $order = ''; } - if ($ENV{'form.sortfield'} ne 'default' && - exists($sort_fields{$ENV{'form.sortfield'}})) { - $sort_command = $ENV{'form.sortfield'}.' IS NOT NULL '. - 'ORDER BY '.$ENV{'form.sortfield'}.' '.$order. ->>>>>>> 1.242 - ' LIMIT '.($min-1).','.($max-$min); + if ($env{'form.sortfield'} ne 'default' && + exists($sort_fields{$env{'form.sortfield'}})) { + $sort_command = $env{'form.sortfield'}.' IS NOT NULL '. + 'ORDER BY '.$env{'form.sortfield'}.' '.$order. + ' LIMIT '.($min-1).','.($max-$min+1); } my @Results = &Apache::lonmysql::get_rows($table,$sort_command); ## @@ -3293,9 +3238,11 @@ extra custom metadata to show. sub detailed_citation_view { my ($prefix,%values) = @_; my $result; + my $jumpurl=$values{'url'}; + $jumpurl=~s/^\/ext\//http\:\/\//; $result .= ''.$prefix. ''.' '. - '
'.$values{'title'}."\n"; $result .= "

\n"; $result .= ''.$values{'author'}.','. @@ -3364,7 +3311,7 @@ sub detailed_citation_view { foreach my $item (split(',',$values{$field->{'name'}})){ $result .= '

  • '. ''.$item.'
  • '; + 'href="'.$jumpurl.'">'.$item.''; } $result .= ''; } elsif (exists($field->{'format'}) && $field->{'format'} ne ''){ @@ -3375,7 +3322,7 @@ sub detailed_citation_view { if ($field->{'special'} eq 'url link') { $result.= &mt($field->{'translate'}, - ''. $values{$field->{'name'}}. ''); @@ -3411,20 +3358,23 @@ sub summary_view { my ($prefix,%values) = @_; my $icon=&Apache::loncommon::icon($values{'url'}); my $result=qq{$prefix}; - if (exists($ENV{'form.sortfield'}) && - $ENV{'form.sortfield'} !~ /^(default| + if (exists($env{'form.sortfield'}) && + $env{'form.sortfield'} !~ /^(default| author| url| title| owner| lastrevisiondate| copyright)$/x) { - my $tmp = $values{$ENV{'form.sortfield'}}; + my $tmp = $values{$env{'form.sortfield'}}; if (! defined($tmp)) { $tmp = 'undefined'; } $result .= ' '.$tmp.' '; } + my $jumpurl=$values{'url'}; + $jumpurl=~s/^\/ext\//http\:\/\//; + $result.=<$values{'title'}
    $values{'author'}, $values{'owner'} -- $values{'lastrevisiondate'}
    $values{'copyrighttag'}
    @@ -3448,17 +3398,20 @@ END ###################################################################### sub compact_view { my ($prefix,%values) = @_; + my $jumpurl=$values{'url'}; + $jumpurl=~s/^\/ext\//http\:\/\//; + my $result = $prefix.''; - if (exists($ENV{'form.sortfield'}) && - $ENV{'form.sortfield'} !~ /^(default|author|url|title)$/) { - my $tmp = $values{$ENV{'form.sortfield'}}; + if (exists($env{'form.sortfield'}) && + $env{'form.sortfield'} !~ /^(default|author|url|title)$/) { + my $tmp = $values{$env{'form.sortfield'}}; if (! defined($tmp)) { $tmp = 'undefined'; } $result .= ' '.$tmp.' '; } - $result.=' '. + $result.=' '. $values{'title'}.''.(' 'x2). - ''.$values{'author'}.'
    '; + ''.$values{'author'}.' ('.$values{'domain'}.')
    '; return $result; } @@ -3478,11 +3431,14 @@ sub fielded_format_view { my ($prefix,%values) = @_; my $icon=&Apache::loncommon::icon($values{'url'}); my %Translated = &Apache::lonmeta::fieldnames(); + my $jumpurl=$values{'url'}; + $jumpurl=~s/^\/ext\//http\:\/\//; + my $result=<
    URL:
    -
    $values{'url'}
    END foreach my $field ('title','author','domain','subject','keywords','notes',