'.$$codetitles[0].' '."\n". ' | ';
for (my $i=1; $i<$numtitles; $i++) {
$output .= ''.$$codetitles[$i].' '."\n". ''."\n". ' | ';
}
$output .= '
'.&mt('No context provided.').'
'; } return $return; } ############################################## ############################################## # topic_bar # # Generates a div containing an (optional) number with a white background followed by a # title with a background color defined in the corresponding CSS: LC_topic_bar # Inputs: # 1. number to display. # If input for number is empty only the title will be displayed. # 2. title text to display. # Outputs - a scalar containing html mark-up for the div. sub topic_bar { my ($num,$title) = @_; my $number = ''; if ($num ne '') { $number = ''.$num.''; } return ' '; } ############################################## ############################################## # echo_form_input # # Generates html markup to add form elements from the referrer page # as hidden form elements (values encoded) in the new page. # # Intended to support two types of use # (a) to allow backing up to earlier pages in a multi-page # form submission process using a breadcrumb trail. # # (b) to allow the current page to be reloaded with form elements # set on previous page to remain unchanged. An example would # be where the a page containing a dynamically-built table of data is # is to be redisplayed, with only the sort order of the data changed. # # Inputs: # 1. Reference to array of form elements in the submitted form on # the referrer page which are to be excluded from the echoed elements. # # 2. Reference to array of regular expressions, which if matched in the # name of the form element n the referrer page will be omitted from echo. # # Outputs: A scalar containing the html markup for the echoed form # elements (all as hidden elements, with values encoded). sub echo_form_input { my ($excluded,$regexps) = @_; my $output = ''; foreach my $key (keys(%env)) { if ($key =~ /^form\.(.+)$/) { my $name = $1; my $match = 0; if ((!@{$excluded}) || (!grep/^$name$/,@{$excluded})) { if (defined($regexps)) { if (@{$regexps} > 0) { foreach my $regexp (@{$regexps}) { if ($name =~ /\Q$regexp\E/) { $match = 1; last; } } } } if (!$match) { if (ref($env{$key})) { foreach my $value (@{$env{$key}}) { $value = &HTML::Entities::encode($value,'<>&"'); $output .= ''."\n"; } } else { my $value = &HTML::Entities::encode($env{$key},'<>&"'); $output .= ''."\n"; } } } } } return $output; } ############################################## ############################################## # set_form_elements # # Generates javascript to set form elements to values based on # corresponding values for the same form elements when the page was # previously submitted. # # Last submission values are read from hidden form elements in referring # page which have the same name, i.e., generated by &echo_form_input(). # # Intended to be called by onload event. # # Inputs: # (a) Reference to hash of echoed form elements to be set. # # In the hash, keys are the form element names, and the values are the # element type (selectbox, radio, checkbox or text -for textbox, textarea or # hidden). # # (b) Optional reference to hash of stored elements to be set. # # If the page being displayed is a page which permits modification of # previously stored data, e.g., the first page in a multi-page submission, # then if stored is supplied, form elements will be set to the last stored # values. If user supplied values are also available for the same elements # these will replace the stored values. # # Output: # # javascript function - set_form_elements() which sets form elements, # expects an argument: formname - the name of the form according to # the DOM, e.g., document.compose sub set_form_elements { my ($elements,$stored) = @_; my %values; my $output .= 'function setFormElements(courseForm) { '; if (defined($stored)) { foreach my $name (keys(%{$stored})) { if (exists($$elements{$name})) { if (ref($$stored{$name}) eq 'ARRAY') { $values{$name} = $$stored{$name}; } else { @{$values{$name}} = ($$stored{$name}); } } } } foreach my $key (keys(%env)) { if ($key =~ /^form\.(.+)$/) { my $name = $1; if (exists($$elements{$name})) { @{$values{$name}} = &Apache::loncommon::get_env_multiple($key); } } } foreach my $name (keys(%values)) { for (my $i=0; $i<@{$values{$name}}; $i++) { $values{$name}[$i] = &HTML::Entities::decode($values{$name}[$i],'<>&"'); $values{$name}[$i] =~ s/([\r\n\f]+)/\\n/g; $values{$name}[$i] =~ s/"/\\"/g; } if (($$elements{$name} eq 'text') || ($$elements{$name} eq 'hidden')) { my $numvalues = @{$values{$name}}; if ($numvalues > 1) { my $valuestring = join('","',@{$values{$name}}); $output .= qq| var textvalues = new Array ("$valuestring"); var total = courseForm.elements['$name'].length; if (total > $numvalues) { total = $numvalues; } for (var i=0; i