version 1.166, 2008/09/17 15:53:34
|
version 1.175, 2009/06/12 17:58:22
|
Line 188 use Apache::lonlocal;
|
Line 188 use Apache::lonlocal;
|
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::longroup; |
use Apache::longroup; |
use Apache::lonselstudent; |
use Apache::lonselstudent; |
|
|
|
|
use LONCAPA; |
use LONCAPA; |
|
|
# Register all the tags with the helper, so the helper can |
# Register all the tags with the helper, so the helper can |
Line 529 sub process {
|
Line 531 sub process {
|
# Phase 1: Post processing for state of previous screen (which is actually |
# Phase 1: Post processing for state of previous screen (which is actually |
# the "current state" in terms of the helper variables), if it wasn't the |
# the "current state" in terms of the helper variables), if it wasn't the |
# beginning state. |
# beginning state. |
if ($self->{STATE} ne "START" || $env{"form.SUBMIT"} eq &mt("Next ->")) { |
if ($self->{STATE} ne "START" || $env{"form.SUBMIT"} eq &mt("Next")) { |
my $prevState = $self->{STATES}{$self->{STATE}}; |
my $prevState = $self->{STATES}{$self->{STATE}}; |
$prevState->postprocess(); |
$prevState->postprocess(); |
} |
} |
Line 587 sub display {
|
Line 589 sub display {
|
&Apache::loncommon::browser_and_searcher_javascript(). |
&Apache::loncommon::browser_and_searcher_javascript(). |
"\n".'</script>'; |
"\n".'</script>'; |
|
|
|
# Breadcrumbs |
|
my $brcrum = [{'href' => '', |
|
'text' => 'Helper'}]; |
|
# FIXME: Dynamically add context sensitive breadcrumbs |
|
# depending on the caller, |
|
# e.g. printing, parametrization, etc. |
|
# FIXME: Add breadcrumbs to reflect current helper state |
|
|
$result .= &Apache::loncommon::start_page($self->{TITLE}, |
$result .= &Apache::loncommon::start_page($self->{TITLE}, |
$browser_searcher_js); |
$browser_searcher_js, |
|
{'bread_crumbs' => $brcrum,}); |
my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"'); |
|
my $next = HTML::Entities::encode(&mt("Next ->"), '<>&"'); |
my $previous = HTML::Entities::encode(&mt("Back"), '<>&"'); |
|
my $next = HTML::Entities::encode(&mt("Next"), '<>&"'); |
# FIXME: This should be parameterized, not concatenated - Jeremy |
# FIXME: This should be parameterized, not concatenated - Jeremy |
|
|
|
|
if (!$state->overrideForm()) { $result.="<form name='helpform' method='POST'>"; } |
if (!$state->overrideForm()) { $result.='<form name="helpform" method="post">'; } |
if ($stateHelp) { |
if ($stateHelp) { |
$stateHelp = &Apache::loncommon::help_open_topic($stateHelp); |
$stateHelp = &Apache::loncommon::help_open_topic($stateHelp); |
} |
|
$result .= <<HEADER; |
|
<table border="0" width='100%'><tr><td> |
|
<h2><i>$stateTitle</i>$stateHelp</h2> |
|
HEADER |
|
|
|
$result .= "<table cellpadding='10' width='100%'><tr><td rowspan='2' valign='top'>"; |
|
|
|
if (!$state->overrideForm()) { |
|
$result .= $self->_saveVars(); |
|
} |
} |
$result .= $state->render(); |
|
|
|
$result .= "</td><td valign='top' align='right'>"; |
|
|
|
# Warning: Copy and pasted from below, because it's too much trouble to |
# Prepare buttons |
# turn this into a subroutine |
my $buttons; |
if (!$state->overrideForm()) { |
if (!$state->overrideForm()) { |
if ($self->{STATE} ne $self->{START_STATE}) { |
if ($self->{STATE} ne $self->{START_STATE}) { |
#$result .= '<input name="SUBMIT" type="submit" value="<- Previous" /> '; |
#$result .= '<input name="SUBMIT" type="submit" value="<- Previous" /> '; |
} |
} |
|
$buttons = '<p>'; # '<fieldset>'; |
if ($self->{DONE}) { |
if ($self->{DONE}) { |
my $returnPage = $self->{RETURN_PAGE}; |
my $returnPage = $self->{RETURN_PAGE}; |
$result .= "<a href=\"$returnPage\">" . &mt("End Helper") . "</a>"; |
$buttons .= '<a href="'.$returnPage.'">'.&mt('End Helper').'</a>'; |
} |
} |
else { |
else { |
$result .= '<nobr><input name="back" type="button" '; |
$buttons .= '<span class="LC_nobreak">' |
$result .= 'value="' . $previous . '" onclick="history.go(-1)" /> '; |
.'<input name="back" type="button" ' |
$result .= '<input name="SUBMIT" type="submit" value="' . $next . '" /></nobr>'; |
.'value="'.$previous.'" onclick="history.go(-1)" /> ' |
|
.'<input name="SUBMIT" type="submit" value="'.$next.'" />' |
|
.'</span>'; |
} |
} |
|
$buttons .= '</p>'; # '</fieldset>'; |
} |
} |
|
|
$result .= "</td></tr><tr><td valign='bottom' align='right'>"; |
|
|
|
# Warning: Copy and pasted from above, because it's too much trouble to |
|
# turn this into a subroutine |
$result .= '<h2>'.$stateTitle.$stateHelp.'</h2>'; |
|
|
|
# $result .= '<div>'; |
|
|
|
# Top buttons |
|
$result .= $buttons; |
|
|
|
# Main content of current helper screen |
if (!$state->overrideForm()) { |
if (!$state->overrideForm()) { |
if ($self->{STATE} ne $self->{START_STATE}) { |
$result .= $self->_saveVars(); |
#$result .= '<input name="SUBMIT" type="submit" value="<- Previous" /> '; |
|
} |
|
if ($self->{DONE}) { |
|
my $returnPage = $self->{RETURN_PAGE}; |
|
$result .= "<a href=\"$returnPage\">" . &mt('End Helper') . "</a>"; |
|
} |
|
else { |
|
$result .= '<nobr><input name="back" type="button" '; |
|
$result .= 'value="' . $previous . '" onclick="history.go(-1)" /> '; |
|
$result .= '<input name="SUBMIT" type="submit" value="' . $next . '" /></nobr>'; |
|
} |
|
} |
} |
|
$result .= $state->render(); |
|
|
|
# Bottom buttons |
|
$result .= $buttons; |
|
|
|
|
#foreach my $key (keys %{$self->{VARS}}) { |
#foreach my $key (keys %{$self->{VARS}}) { |
# $result .= "|$key| -> " . $self->{VARS}->{$key} . "<br />"; |
# $result .= "|$key| -> " . $self->{VARS}->{$key} . "<br />"; |
#} |
#} |
|
|
$result .= "</td></tr></table>"; |
# $result .= '</div>'; |
|
|
$result .= <<FOOTER; |
$result .= <<FOOTER; |
</td> |
|
</tr> |
|
</table> |
|
</form> |
</form> |
FOOTER |
FOOTER |
|
|
Line 1508 sub postprocess {
|
Line 1507 sub postprocess {
|
my $self = shift; |
my $self = shift; |
my $chosenValue = $env{'form.' . $self->{'variable'} . '_forminput'}; |
my $chosenValue = $env{'form.' . $self->{'variable'} . '_forminput'}; |
|
|
|
|
if (!defined($chosenValue) && !$self->{'allowempty'}) { |
if (!defined($chosenValue) && !$self->{'allowempty'}) { |
$self->{ERROR_MSG} = |
$self->{ERROR_MSG} = |
&mt("You must choose one or more choices to continue."); |
&mt("You must choose one or more choices to continue."); |
return 0; |
return 0; |
} |
} |
|
|
|
|
|
|
if (ref($chosenValue)) { |
if (ref($chosenValue)) { |
$helper->{VARS}->{$self->{'variable'}} = join('|||', @$chosenValue); |
$helper->{VARS}->{$self->{'variable'}} = join('|||', @$chosenValue); |
} |
} |
Line 2446 sub postprocess {
|
Line 2448 sub postprocess {
|
$self->{ERROR_MSG} = 'You must choose at least one resource to continue.'; |
$self->{ERROR_MSG} = 'You must choose at least one resource to continue.'; |
return 0; |
return 0; |
} |
} |
|
# For each of the attached options. If it's env var is undefined, set it to |
|
# an empty string instead.. an undef'd env var means no choices selected. |
|
# |
|
|
|
my $option_vars = $self->{OPTION_VARS}; |
|
if ($option_vars) { |
|
foreach my $var (@$option_vars) { |
|
my $env_name = "form.".$var."_forminput"; |
|
if (!defined($env{$env_name})) { |
|
$env{$env_name} = ''; |
|
$helper->{VARS}->{$var} = ''; |
|
} |
|
} |
|
} |
|
|
|
|
if (defined($self->{NEXTSTATE})) { |
if (defined($self->{NEXTSTATE})) { |
$helper->changeState($self->{NEXTSTATE}); |
$helper->changeState($self->{NEXTSTATE}); |
Line 3542 sub render {
|
Line 3559 sub render {
|
} |
} |
my $finish=&mt('Finish Course Initialization'); |
my $finish=&mt('Finish Course Initialization'); |
} |
} |
my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"'); |
my $previous = HTML::Entities::encode(&mt("Back"), '<>&"'); |
my $next = HTML::Entities::encode(&mt("Next ->"), '<>&"'); |
my $next = HTML::Entities::encode(&mt("Next"), '<>&"'); |
my $target = " target='loncapaclient'"; |
my $target = " target='loncapaclient'"; |
if (($env{'browser.interface'} eq 'textual') || |
if ($env{'environment.remote'} eq 'off') { $target=''; } |
($env{'environment.remote'} eq 'off')) { $target=''; } |
|
$result .= "<center>\n" . |
$result .= "<center>\n" . |
"<form action='".$actionURL."' method='post' $target>\n" . |
"<form action='".$actionURL."' method='post' $target>\n" . |
"<input type='button' onclick='history.go(-1)' value='$previous' />" . |
"<input type='button' onclick='history.go(-1)' value='$previous' />" . |
Line 3633 sub render {
|
Line 3649 sub render {
|
|
|
# Print the granularity, depending on the action |
# Print the granularity, depending on the action |
if ($vars->{GRANULARITY} eq 'whole_course') { |
if ($vars->{GRANULARITY} eq 'whole_course') { |
$resourceString .= '<li>'.&mt('for <b>all resources in the course</b>').'</li>'; |
$resourceString .= '<li>'.&mt('for [_1]all resources in the course[_2]','<b>','</b>').'</li>'; |
if ($vars->{TARGETS} eq 'course') { |
if ($vars->{TARGETS} eq 'course') { |
$level = 14; # general course, see lonparmset.pm perldoc |
$level = 14; # general course, see lonparmset.pm perldoc |
} elsif ($vars->{TARGETS} eq 'section') { |
} elsif ($vars->{TARGETS} eq 'section') { |
Line 3648 sub render {
|
Line 3664 sub render {
|
$paramlevel = 'general'; |
$paramlevel = 'general'; |
} elsif ($vars->{GRANULARITY} eq 'map') { |
} elsif ($vars->{GRANULARITY} eq 'map') { |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $res = $navmap->getByMapPc($vars->{RESOURCE_ID}); |
if (defined($navmap)) { |
my $title = $res->compTitle(); |
my $res = $navmap->getByMapPc($vars->{RESOURCE_ID}); |
$symb = $res->symb(); |
my $title = $res->compTitle(); |
$resourceString .= '<li>'.&mt('for the map named [_1]',"<b>$title</b>").'</li>'; |
$symb = $res->symb(); |
|
$resourceString .= '<li>'.&mt('for the map named [_1]',"<b>$title</b>").'</li>'; |
|
} else { |
|
$resourceString .= '<li>'.&mt('for the map ID [_1] (name unavailable)','<b>'.$vars->{RESOURCE_ID}.'</b>').'</li>'; |
|
&Apache::lonnet::logthis('Retrieval of map title failed in lonhelper.pm - could not create navmap object for course.'); |
|
|
|
} |
if ($vars->{TARGETS} eq 'course') { |
if ($vars->{TARGETS} eq 'course') { |
$level = 13; # general course, see lonparmset.pm perldoc |
$level = 13; # general course, see lonparmset.pm perldoc |
} elsif ($vars->{TARGETS} eq 'section') { |
} elsif ($vars->{TARGETS} eq 'section') { |
Line 3664 sub render {
|
Line 3686 sub render {
|
$affectedResourceId = $vars->{RESOURCE_ID}; |
$affectedResourceId = $vars->{RESOURCE_ID}; |
$paramlevel = 'map'; |
$paramlevel = 'map'; |
} else { |
} else { |
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
my $res = $navmap->getById($vars->{RESOURCE_ID}); |
|
my $part = $vars->{RESOURCE_ID_part}; |
my $part = $vars->{RESOURCE_ID_part}; |
if ($part ne 'All Parts' && $part) { $parm_name=~s/^0/$part/; } else { $part=&mt('All Parts'); } |
if ($part ne 'All Parts' && $part) { $parm_name=~s/^0/$part/; } else { $part=&mt('All Parts'); } |
$symb = $res->symb(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $title = $res->compTitle(); |
if (defined($navmap)) { |
$resourceString .= '<li>'.&mt('for the resource named [_1] part [_2]',"<b>$title</b>","<b>$part</b>").'</li>'; |
my $res = $navmap->getById($vars->{RESOURCE_ID}); |
|
$symb = $res->symb(); |
|
my $title = $res->compTitle(); |
|
$resourceString .= '<li>'.&mt('for the resource named [_1] part [_2]',"<b>$title</b>","<b>$part</b>").'</li>'; |
|
} else { |
|
$resourceString .= '<li>'.&mt('for the resource ID [_1] (name unavailable) part [_2]','<b>'.$vars->{RESOURCE_ID}.'</b>',"<b>$part</b>").'</li>'; |
|
&Apache::lonnet::logthis('Retrieval of resource title failed in lonhelper.pm - could not create navmap object for course.'); |
|
} |
if ($vars->{TARGETS} eq 'course') { |
if ($vars->{TARGETS} eq 'course') { |
$level = 10; # general course, see lonparmset.pm perldoc |
$level = 10; # general course, see lonparmset.pm perldoc |
} elsif ($vars->{TARGETS} eq 'section') { |
} elsif ($vars->{TARGETS} eq 'section') { |
Line 3684 sub render {
|
Line 3711 sub render {
|
$paramlevel = 'full'; |
$paramlevel = 'full'; |
} |
} |
|
|
my $result = "<form name='helpform' method='POST' action='/adm/parmset#$affectedResourceId&$parm_name&$level'>\n"; |
my $result = "<form name='helpform' method='post' action='/adm/parmset#$affectedResourceId&$parm_name&$level'>\n"; |
$result .= "<input type='hidden' name='action' value='settable' />\n"; |
$result .= "<input type='hidden' name='action' value='settable' />\n"; |
$result .= "<input type='hidden' name='dis' value='helper' />\n"; |
$result .= "<input type='hidden' name='dis' value='helper' />\n"; |
$result .= "<input type='hidden' name='pscat' value='". |
$result .= "<input type='hidden' name='pscat' value='". |
Line 3749 sub render {
|
Line 3776 sub render {
|
|
|
# Print targets |
# Print targets |
if ($vars->{TARGETS} eq 'course') { |
if ($vars->{TARGETS} eq 'course') { |
$result .= '<li>'.&mt('for <b>all students in course</b>').'</li>'; |
$result .= '<li>'.&mt('for [_1]all students in course[_2]','<b>','</b>').'</li>'; |
} elsif ($vars->{TARGETS} eq 'section') { |
} elsif ($vars->{TARGETS} eq 'section') { |
my $section = $vars->{SECTION_NAME}; |
my $section = $vars->{SECTION_NAME}; |
$result .= '<li>'.&mt('for section [_1]',"<b>$section</b>").'</li>'; |
$result .= '<li>'.&mt('for section [_1]',"<b>$section</b>").'</li>'; |