--- loncom/interface/loncommon.pm 2002/04/15 23:37:37 1.31 +++ loncom/interface/loncommon.pm 2002/06/24 19:06:05 1.38 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.31 2002/04/15 23:37:37 albertel Exp $ +# $Id: loncommon.pm,v 1.38 2002/06/24 19:06:05 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -38,6 +38,40 @@ # Inputs result_from_symbread, user, domain, course_id # Reads in non-network-related .tab files +# POD header: + +=head1 NAME + +Apache::loncommon - pile of common routines + +=head1 SYNOPSIS + +Referenced by other mod_perl Apache modules. + +Invocation: + &Apache::loncommon::SUBROUTINENAME(ARGUMENTS); + +=head1 INTRODUCTION + +Common collection of used subroutines. This collection helps remove +redundancy from other modules and increase efficiency of memory usage. + +Current things done: + + Makes a table out of the previous homework attempts + Inputs result_from_symbread, user, domain, course_id + Reads in non-network-related .tab files + +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + +=head2 General Subroutines + +=over 4 + +=cut + +# End of POD header package Apache::loncommon; use strict; @@ -45,7 +79,6 @@ use Apache::lonnet(); use POSIX qw(strftime); use Apache::Constants qw(:common); use Apache::lonmsg(); - my $readit; # ----------------------------------------------- Filetypes/Languages/Copyright @@ -65,6 +98,17 @@ my $thethreshold=0.1/$thefuzzy; my $theavecount; # ----------------------------------------------------------------------- BEGIN + +=pod + +=item BEGIN() + +Initialize values from language.tab, copyright.tab, filetypes.tab, +and filecategories.tab. + +=cut +# ----------------------------------------------------------------------- BEGIN + BEGIN { unless ($readit) { @@ -143,10 +187,479 @@ BEGIN { "INFO: Read file types and thesaurus"); $readit=1; } - + } # ============================================================= END BEGIN BLOCK +=item linked_select_forms(...) + +linked_select_forms returns a string containing a block +and html for two tags + +=item $firstdefault, the default value for the first menu + +=item $firstselectname, the name of the first tag + +=item $hashref, a reference to a hash containing the data for the menus. + +Below is an example of such a hash. Only the 'text', 'default', and +'select2' keys must appear as stated. keys(%menu) are the possible +values for the first select menu. The text that coincides with the +first menu values is given in $menu{$choice1}->{'text'}. The values +and text for the second menu are given in the hash pointed to by +$menu{$choice1}->{'select2'}. + + my %menu = ( A1 => { text =>"Choice A1" , + default => "B3", + select2 => { + B1 => "Choice B1", + B2 => "Choice B2", + B3 => "Choice B3", + B4 => "Choice B4" + } + }, + A2 => { text =>"Choice A2" , + default => "C2", + select2 => { + C1 => "Choice C1", + C2 => "Choice C2", + C3 => "Choice C3" + } + }, + A3 => { text =>"Choice A3" , + default => "D6", + select2 => { + D1 => "Choice D1", + D2 => "Choice D2", + D3 => "Choice D3", + D4 => "Choice D4", + D5 => "Choice D5", + D6 => "Choice D6", + D7 => "Choice D7" + } + } + ); + +=back + +=cut + +# ------------------------------------------------ + +sub linked_select_forms { + my ($formname, + $middletext, + $firstdefault, + $firstselectname, + $secondselectname, + $hashref + ) = @_; + my $second = "document.$formname.$secondselectname"; + my $first = "document.$formname.$firstselectname"; + # output the javascript to do the changing + my $result = ''; + $result.=" +END + # output the initial values for the selection lists + $result .= "\n"; + my $seconddefault = $hashref->{$firstdefault}->{'default'}; + foreach my $value (sort(keys(%select2))) { + $result.=" \n"; + } + $selectdomain.=""; + return $selectdomain; +} + +#------------------------------------------- + +=item get_home_servers($domain) + +Returns a hash which contains keys like '103l3' and values like +'kirk.lite.msu.edu'. All of the keys will be for machines in the +given $domain. + +=cut + +#------------------------------------------- +sub get_home_servers { + my $domain = shift; + my %home_servers; + foreach (keys(%Apache::lonnet::libserv)) { + if ($Apache::lonnet::hostdom{$_} eq $domain) { + $home_servers{$_} = $Apache::lonnet::hostname{$_}; + } + } + return %home_servers; +} + +#------------------------------------------- + +=item home_server_option_list($domain) + +returns a string which contains an '); @@ -613,110 +1167,98 @@ sub csv_samples_select_table { 1; __END__; +=pod -=head1 NAME - -Apache::loncommon - pile of common routines - -=head1 SYNOPSIS +=back -Referenced by other mod_perl Apache modules. +=head2 Access .tab File Data -Invocation: - &Apache::loncommon::SUBROUTINENAME(ARGUMENTS); - -=head1 INTRODUCTION - -Common collection of used subroutines. This collection helps remove -redundancy from other modules and increase efficiency of memory usage. - -Current things done: - - Makes a table out of the previous homework attempts - Inputs result_from_symbread, user, domain, course_id - Reads in non-network-related .tab files +=over 4 -This is part of the LearningOnline Network with CAPA project -described at http://www.lon-capa.org. +=item languageids() -=head1 HANDLER SUBROUTINE +returns list of all language ids -There is no handler subroutine. +=item languagedescription() -=head1 OTHER SUBROUTINES +returns description of a specified language id -=over 4 +=item copyrightids() -=item * +returns list of all copyrights -BEGIN() : initialize values from language.tab, copyright.tab, filetypes.tab, -and filecategories.tab. +=item copyrightdescription() -=item * +returns description of a specified copyright id -languageids() : returns list of all language ids +=item filecategories() -=item * +returns list of all file categories -languagedescription() : returns description of a specified language id +=item filecategorytypes() -=item * +returns list of file types belonging to a given file +category -copyrightids() : returns list of all copyrights +=item fileembstyle() -=item * +returns embedding style for a specified file type -copyrightdescription() : returns description of a specified copyright id +=item filedescription() -=item * +returns description for a specified file type -filecategories() : returns list of all file categories +=item filedescriptionex() -=item * +returns description for a specified file type with +extra formatting -filecategorytypes() : returns list of file types belonging to a given file -category +=back -=item * +=head2 Alternate Problem Views -fileembstyle() : returns embedding style for a specified file type +=over 4 -=item * +=item get_previous_attempt() -filedescription() : returns description for a specified file type +return string with previous attempt on problem -=item * +=item get_student_view() -filedescriptionex() : returns description for a specified file type with -extra formatting +show a snapshot of what student was looking at -=item * +=item get_student_answers() -get_previous_attempt() : return string with previous attempt on problem +show a snapshot of how student was answering problem -=item * +=back -get_student_view() : show a snapshot of what student was looking at +=head2 HTTP Helper -=item * +=over 4 -get_student_answers() : show a snapshot of how student was answering problem +=item get_unprocessed_cgi($query,$possible_names) -=item * +Modify the %ENV hash to contain unprocessed CGI form parameters held in +$query. The parameters listed in $possible_names (an array reference), +will be set in $ENV{'form.name'} if they do not already exist. -get_unprocessed_cgi() : get unparsed CGI parameters +Typically called with $ENV{'QUERY_STRING'} as the first parameter. +$possible_names is an ref to an array of form element names. As an example: +get_unprocessed_cgi($ENV{'QUERY_STRING'},['uname','udom']); +will result in $ENV{'form.uname'} and $ENV{'form.udom'} being set. -=item * +=item cacheheader() -cacheheader() : returns cache-controlling header code +returns cache-controlling header code -=item * +=item nocache() -nocache() : specifies header code to not have cache +specifies header code to not have cache -=item * +=item add_to_env($name,$value) -add_to_env($name,$value) : adds $name to the %ENV hash with value +adds $name to the %ENV hash with value $value, if $name already exists, the entry is converted to an array reference and $value is added to the array.