--- loncom/interface/lonhelper.pm 2003/10/09 15:20:15 1.55 +++ loncom/interface/lonhelper.pm 2004/04/27 15:32:45 1.77 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # .helper XML handler to implement the LON-CAPA helper # -# $Id: lonhelper.pm,v 1.55 2003/10/09 15:20:15 albertel Exp $ +# $Id: lonhelper.pm,v 1.77 2004/04/27 15:32:45 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -230,7 +230,7 @@ my $paramHash; # In the debugger, this means that breakpoints are ignored until you step into # a function and get out of what must be a "faked up scope" in the Apache-> # mod_perl connection. In this code, it was manifesting itself in the existence -# of two seperate file-scoped $helper variables, one set to the value of the +# of two separate file-scoped $helper variables, one set to the value of the # helper in the helper constructor, and one referenced by the handler on the # "$helper->process()" line. Using the debugger, one could actually # see the two different $helper variables, as hashes at completely @@ -263,21 +263,13 @@ sub real_handler { # Send header, don't cache this page - if ($r->header_only) { - if ($ENV{'browser.mathml'}) { - $r->content_type('text/xml; charset=UTF-8'); - } else { - $r->content_type('text/html; charset=UTF-8'); - } - $r->send_http_header; - return OK; - } if ($ENV{'browser.mathml'}) { - $r->content_type('text/xml'); + &Apache::loncommon::content_type($r,'text/xml'); } else { - $r->content_type('text/html'); + &Apache::loncommon::content_type($r,'text/html'); } $r->send_http_header; + return OK if $r->header_only; $r->rflush(); # Discard result, we just want the objects that get created by the @@ -462,11 +454,11 @@ sub _saveVars { my $self = shift; my $result = ""; $result .= '\n"; + HTML::Entities::encode($self->{STATE},'<>&"') . "\" />\n"; $result .= '\n"; $result .= '\n"; + HTML::Entities::encode($self->{RETURN_PAGE},'<>&"') . "\" />\n"; return $result; } @@ -583,7 +575,7 @@ sub display { } # Phase 4: Display. - my $stateTitle = &mt($state->title()); + my $stateTitle=&mt($state->title()); my $helperTitle = &mt($self->{TITLE}); my $bodytag = &Apache::loncommon::bodytag($helperTitle,'',''); my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"'); @@ -998,8 +990,8 @@ sub start_message { return ''; } - $paramHash->{MESSAGE_TEXT} = &Apache::lonxml::get_all_text('/message', - $parser); + $paramHash->{MESSAGE_TEXT} = &mtn(&Apache::lonxml::get_all_text('/message', + $parser)); if (defined($token->[2]{'nextstate'})) { $paramHash->{NEXTSTATE} = $token->[2]{'nextstate'}; @@ -1169,8 +1161,8 @@ sub start_choice { } my $computer = $token->[2]{'computer'}; - my $human = &Apache::lonxml::get_all_text('/choice', - $parser); + my $human = &mt(&Apache::lonxml::get_all_text('/choice', + $parser)); my $nextstate = $token->[2]{'nextstate'}; my $evalFlag = $token->[2]{'eval'}; push @{$paramHash->{CHOICES}}, [$human, $computer, $nextstate, @@ -1206,10 +1198,13 @@ SCRIPT # Only print "select all" and "unselect all" if there are five or # more choices; fewer then that and it looks silly. if ($self->{'multichoice'} && scalar(@{$self->{CHOICES}}) > 4) { + my %lt=&Apache::lonlocal::texthash( + 'sa' => "Select All", + 'ua' => "Unselect All"); $buttons = < - - + +
  BUTTONS } @@ -1264,7 +1259,7 @@ BUTTONS $result .= "\n \n"; $result .= "&"') . "'"; if ($checkedChoices{$choice->[1]}) { $result .= " checked "; @@ -1276,6 +1271,7 @@ BUTTONS $choiceLabel = eval($choiceLabel); $choiceLabel = &$choiceLabel($helper, $self); } + &Apache::lonnet::logthis("TITLE TRANSLATION >$choiceLabel<"); $result .= "/> " . &mtn($choiceLabel) . "\n"; } $result .= "\n\n\n"; @@ -1291,8 +1287,8 @@ sub postprocess { my $chosenValue = $ENV{'form.' . $self->{'variable'} . '.forminput'}; if (!defined($chosenValue) && !$self->{'allowempty'}) { - $self->{ERROR_MSG} = "You must choose one or more choices to" . - " continue."; + $self->{ERROR_MSG} = + &mt("You must choose one or more choices to continue."); return 0; } @@ -1419,7 +1415,7 @@ sub render { $result .= "\n"; $result .= "\n"; + " value='0'>" . &mt('midnight') . "\n"; for ($i = 1; $i < 12; $i++) { if ($date->hour == $i) { - $result .= "\n"; + $result .= "\n"; } else { - $result .= "\n"; + $result .= "\n"; } } $result .= "\n"; + " value='12'>" . &mt('noon') . "\n"; for ($i = 13; $i < 24; $i++) { my $printedHour = $i - 12; if ($date->hour == $i) { - $result .= "\n"; + $result .= "\n"; } else { - $result .= "\n"; + $result .= "\n"; } } @@ -1774,6 +1773,7 @@ sub start_resource { $paramHash->{'suppressEmptySequences'} = $token->[2]{'suppressEmptySequences'}; $paramHash->{'toponly'} = $token->[2]{'toponly'}; $paramHash->{'addstatus'} = $token->[2]{'addstatus'}; + $paramHash->{'closeallpages'} = $token->[2]{'closeallpages'}; return ''; } @@ -1889,10 +1889,14 @@ sub render { } SCRIPT + my %lt=&Apache::lonlocal::texthash( + 'sar' => "Select All Resources", + 'uar' => "Unselect All Resources"); + $buttons = <   - - + +
  BUTTONS } @@ -1942,7 +1946,7 @@ BUTTONS $checked = 1; } $col .= "value='" . - HTML::Entities::encode(&$valueFunc($resource)) + HTML::Entities::encode(&$valueFunc($resource),'<>&"') . "' />"; return $col; } @@ -1959,6 +1963,7 @@ BUTTONS 'showParts' => 0, 'filterFunc' => $filterFunc, 'resource_no_folder_link' => 1, + 'closeAllPages' => $self->{'closeallpages'}, 'suppressEmptySequences' => $self->{'suppressEmptySequences'}, 'iterator_map' => $mapUrl } ); @@ -2024,7 +2029,7 @@ shown. Defaults to false. no strict; @ISA = ("Apache::lonhelper::element"); use strict; - +use Apache::lonlocal; BEGIN { @@ -2081,11 +2086,11 @@ sub render { } } } - function checksec() { + function checksec(value) { for (i=0; i SCRIPT + + my %lt=&Apache::lonlocal::texthash( + 'ocs' => "Select Only Current Students", + 'sas' => "Select All Students", + 'uas' => "Unselect All Students", + 'sfsg' => "Select for Section/Group", + 'ufsg' => "Unselect for Section/Group"); + $buttons = < - - - - + + + +   +
BUTTONS } @@ -2163,15 +2177,16 @@ BUTTONS } } - my $name = $self->{'coursepersonnel'} ? 'Name' : 'Student Name'; + my $name = $self->{'coursepersonnel'} ? &mt('Name') : &mt('Student Name'); + &Apache::lonnet::logthis("THE NAME IS >$name<"); my $type = 'radio'; if ($self->{'multichoice'}) { $type = 'checkbox'; } $result .= "\n"; $result .= "". - "" . - "" . - "" . - ""; + "" . + "" . + "" . + ""; my $checked = 0; for my $choice (@$choices) { @@ -2183,17 +2198,17 @@ BUTTONS $checked = 1; } $result .= - " value='" . HTML::Entities::encode($choice->[0] . ':' . $choice->[2] . ':' . $choice->[1] . ':' . $choice->[3]) + " value='" . HTML::Entities::encode($choice->[0] . ':' . $choice->[2] . ':' . $choice->[1] . ':' . $choice->[3],'<>&"') . "' />\n\n\n\n"; } @@ -2208,8 +2223,8 @@ sub postprocess { my $result = $ENV{'form.' . $self->{'variable'} . '.forminput'}; if (!$result) { - $self->{ERROR_MSG} = 'You must choose at least one student '. - 'to continue.'; + $self->{ERROR_MSG} = + &mt('You must choose at least one student to continue.'); return 0; } @@ -2275,6 +2290,7 @@ viewing the files. no strict; @ISA = ("Apache::lonhelper::element"); use strict; +use Apache::lonlocal; use Apache::lonpubdir; # for getTitleString @@ -2393,16 +2409,22 @@ sub render { } SCRIPT - $buttons = < "Select All Files", + 'uaf' => "Unselect All Files"); + $buttons = <   - - + + BUTTONS + %lt=&Apache::lonlocal::texthash( + 'sap' => "Select All Published", + 'uap' => "Unselect All Published"); if ($helper->{VARS}->{'construction'}) { - $buttons .= < - + $buttons .= < +
  BUTTONS } @@ -2484,7 +2506,7 @@ BUTTONS } $result .= '
$nameSectionStatusRoleUsername:Domain
" . &mt('Section') . "".&mt('Status')."" . &mt("Role") . "".&mt('Username').":".&mt('Domain')."
" - . HTML::Entities::encode($choice->[1]) + . HTML::Entities::encode($choice->[1],'<>&"') . "" - . HTML::Entities::encode($choice->[2]) + . HTML::Entities::encode($choice->[2],'<>&"') . "" - . HTML::Entities::encode($choice->[3]) + . HTML::Entities::encode($choice->[3],'<>&"') . "" - . HTML::Entities::encode($choice->[4]) + . HTML::Entities::encode($choice->[4],'<>&"') . "" - . HTML::Entities::encode($choice->[0]) + . HTML::Entities::encode($choice->[0],'<>&"') . "
" . "&"'). "'"; if (!$self->{'multichoice'} && $choices == 0) { $result .= ' checked'; @@ -2649,6 +2671,7 @@ string honors the validation function, i no strict; @ISA = ("Apache::lonhelper::element"); use strict; +use Apache::lonlocal; BEGIN { &Apache::lonhelper::register('Apache::lonhelper::string', @@ -2893,7 +2916,7 @@ the old values taking effect. no strict; @ISA = ("Apache::lonhelper::element"); use strict; - +use Apache::lonlocal; BEGIN { &Apache::lonhelper::register('Apache::lonhelper::final', ('final', 'exitpage')); @@ -2978,7 +3001,8 @@ sub render { } if (!@results) { - $result .= '
  • No changes were made to current settings.
  • '; + $result .= '
  • ' . + &mt('No changes were made to current settings.') . '
  • '; } $result .= ''; @@ -2986,16 +3010,24 @@ sub render { if ($self->{'restartCourse'}) { my $targetURL = '/adm/menu'; + if ($ENV{'course.'.$ENV{'request.course.id'}.'.url'}=~/^uploaded/) { + $targetURL = '/adm/coursedocs'; + } else { + $targetURL = '/adm/navmaps'; + } if ($ENV{'course.'.$ENV{'request.course.id'}.'.clonedfrom'}) { $targetURL = '/adm/parmset?overview=1'; } + my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"'); + my $next = HTML::Entities::encode(&mt("Next ->"), '<>&"'); $result .= "
    \n" . "
    \n" . - "" . + "" . "" . "\n" . "\n\n" . + "' value='1' />\n\n" . "
    "; } @@ -3019,6 +3051,7 @@ package Apache::lonhelper::parmwizfinal; no strict; @ISA = ('Apache::lonhelper::element'); use strict; +use Apache::lonlocal; BEGIN { &Apache::lonhelper::register('Apache::lonhelper::parmwizfinal', @@ -3070,7 +3103,7 @@ sub render { # Print the granularity, depending on the action if ($vars->{GRANULARITY} eq 'whole_course') { - $resourceString .= '
  • for all resources in the course
  • '; + $resourceString .= '
  • '.&mt('for all resources in the course').'
  • '; $level = 9; # general course, see lonparmset.pm perldoc $affectedResourceId = "0.0"; $symb = 'a'; @@ -3081,7 +3114,7 @@ sub render { my $title = $res->compTitle(); $symb = $res->symb(); $navmap->untieHashes(); - $resourceString .= "
  • for the map named $title
  • "; + $resourceString .= &mt('
  • for the map named [_1]
  • ',$title); $level = 8; $affectedResourceId = $vars->{RESOURCE_ID}; $paramlevel = 'map'; @@ -3091,22 +3124,29 @@ sub render { $symb = $res->symb(); my $title = $res->compTitle(); $navmap->untieHashes(); - $resourceString .= "
  • for the resource named $title
  • "; + $resourceString .= &mt('
  • for the resource named [_1]
  • ',$title); $level = 7; $affectedResourceId = $vars->{RESOURCE_ID}; $paramlevel = 'full'; } my $result = "
    \n"; - $result .= '

    Confirm that this information is correct, then click "Finish Wizard" to complete setting the parameter.

      '; + $result .= '

      '.&mt('Confirm that this information is correct, then click "Finish Helper" to complete setting the parameter.').'

        '; # Print the type of manipulation: - $result .= '
      • Setting the ' . $dateTypeHash{$vars->{ACTION_TYPE}} . ''; + my $extra; if ($vars->{ACTION_TYPE} eq 'tries') { - $result .= ' to ' . $vars->{TRIES} . ''; + $extra = $vars->{TRIES}; } if ($vars->{ACTION_TYPE} eq 'weight') { - $result .= ' to ' . $vars->{WEIGHT} . ''; + $extra = $vars->{WEIGHT}; + } + $result .= "
      • "; + my $what = &mt($dateTypeHash{$vars->{ACTION_TYPE}}); + if ($extra) { + $result .= &mt('Setting the [_1] to [_2]',"$what",$extra); + } else { + $result .= &mt('Setting the [_1]',"$what"); } $result .= "
      • \n"; if ($vars->{ACTION_TYPE} eq 'due_date' || @@ -3137,13 +3177,13 @@ sub render { # Print targets if ($vars->{TARGETS} eq 'course') { - $result .= '
      • for all students in course
      • '; + $result .= '
      • '.&mt('for all students in course').'
      • '; } elsif ($vars->{TARGETS} eq 'section') { my $section = $vars->{SECTION_NAME}; - $result .= "
      • for section $section
      • "; + $result .= &mt('
      • for section [_1]
      • ',$section); $level -= 3; $result .= "\n"; + HTML::Entities::encode($section,'<>&"') . "' />\n"; } else { # FIXME: This is probably wasteful! Store the name! my $classlist = Apache::loncoursedata::get_classlist(); @@ -3151,18 +3191,19 @@ sub render { # Chop off everything after the last colon (section) $username = substr($username, 0, rindex($username, ':')); my $name = $classlist->{$username}->[6]; - $result .= "
      • for $name
      • "; + $result .= &mt('
      • for [_1]
      • ',$name); +## $result .= "
      • ".&mt('for [_1]',"$name")."
      • "; $level -= 6; my ($uname, $udom) = split /:/, $vars->{USER_NAME}; $result .= "\n"; + HTML::Entities::encode($uname,'<>&"') . "' />\n"; $result .= "\n"; + HTML::Entities::encode($udom,'<>&"') . "' />\n"; } # Print value if ($vars->{ACTION_TYPE} ne 'tries' && $vars->{ACTION_TYPE} ne 'weight') { - $result .= "
      • to " . ctime($vars->{PARM_DATE}) . " (" . + $result .= "
      • ".&mt('to')." " . ctime($vars->{PARM_DATE}) . " (" . Apache::lonnavmaps::timeToHumanString($vars->{PARM_DATE}) . ")
      • \n"; } @@ -3177,7 +3218,7 @@ sub render { $result .= "\n"; $result .= "\n"; - $result .= "

        \n"; + $result .= "

        \n"; return $result; }