version 1.112, 2005/10/04 19:59:15
|
version 1.120, 2005/11/21 21:20:06
|
Line 207 sub checkbox {
|
Line 207 sub checkbox {
|
return $Str; |
return $Str; |
} |
} |
|
|
|
|
|
=pod |
|
|
|
=item radiobutton |
|
|
|
=cut |
|
|
|
############################################## |
|
############################################## |
|
sub radio { |
|
my ($name,$checked,$value) = @_; |
|
my $Str = '<input type="radio" name="'.$name.'" '; |
|
if (defined($value)) { |
|
$Str .= 'value="'.$value.'"'; |
|
} |
|
if ($checked eq $value) { |
|
$Str .= ' checked="1"'; |
|
} |
|
$Str .= ' />'; |
|
return $Str; |
|
} |
|
|
############################################## |
############################################## |
############################################## |
############################################## |
|
|
Line 1246 returns: nothing
|
Line 1268 returns: nothing
|
# |
# |
# In general a &submit_row() call should proceed the call to &end_pick_box(), |
# In general a &submit_row() call should proceed the call to &end_pick_box(), |
# as this routine adds a button for form submission. |
# as this routine adds a button for form submission. |
# &submit_row(0 does not require a &row_closure after it. |
# &submit_row() does not require a &row_closure after it. |
# |
# |
# &start_pick_box() creates a bounding table with 1-pixel wide black border. |
# &start_pick_box() creates a bounding table with 1-pixel wide black border. |
# rows should be placed between calls to &start_pick_box() and &end_pick_box. |
# rows should be placed between calls to &start_pick_box() and &end_pick_box. |
Line 1317 ENDONE
|
Line 1339 ENDONE
|
} |
} |
|
|
sub row_closure { |
sub row_closure { |
my $output .= <<"ENDTWO"; |
my $output = <<"ENDTWO"; |
</tr> |
</tr> |
</table> |
</table> |
</td> |
</td> |
Line 1333 ENDTWO
|
Line 1355 ENDTWO
|
|
|
sub role_select_row { |
sub role_select_row { |
my ($roles,$col_width,$tablecolor,$title) = @_; |
my ($roles,$col_width,$tablecolor,$title) = @_; |
my $output = &row_title($col_width,$tablecolor,$title); |
my $output; |
$output .= qq| <td> |
if (defined($title)) { |
|
$output = &row_title($col_width,$tablecolor,$title); |
|
} |
|
$output .= qq| <td valign="top"> |
<select name="roles" multiple >\n|; |
<select name="roles" multiple >\n|; |
foreach (@$roles) { |
foreach my $role (@$roles) { |
my $plrole=&Apache::lonnet::plaintext($_); |
my $plrole; |
$output .= ' <option value="'.$_.'">'.$plrole.'</option>'; |
if ($role eq 'ow') { |
|
$plrole = &mt('Course Owner'); |
|
} else { |
|
$plrole=&Apache::lonnet::plaintext($role); |
|
} |
|
$output .= ' <option value="'.$role.'">'.$plrole.'</option>'; |
} |
} |
$output .= qq| </select> |
$output .= qq| </select> |
</td>\n|; |
</td>\n|; |
$output .= &row_closure(); |
if (defined($title)) { |
|
$output .= &row_closure(); |
|
} |
return $output; |
return $output; |
} |
} |
|
|
Line 1354 sub course_select_row {
|
Line 1386 sub course_select_row {
|
<script type="text/javascript" language="Javascript" > |
<script type="text/javascript" language="Javascript" > |
function coursePick (formname) { |
function coursePick (formname) { |
for (var i=0; i<formname.coursepick.length; i++) { |
for (var i=0; i<formname.coursepick.length; i++) { |
|
if (formname.coursepick[i].value == 'category') { |
|
courseSet(''); |
|
} |
if (!formname.coursepick[i].checked) { |
if (!formname.coursepick[i].checked) { |
if (formname.coursepick[i].value == 'category') { |
|
courseSet(''); |
|
} |
|
if (formname.coursepick[i].value == 'specific') { |
if (formname.coursepick[i].value == 'specific') { |
formname.coursetotal.value = 0; |
formname.coursetotal.value = 0; |
formname.courselist = ''; |
formname.courselist = ''; |
Line 1365 sub course_select_row {
|
Line 1397 sub course_select_row {
|
} |
} |
} |
} |
} |
} |
|
function setPick (formname) { |
|
for (var i=0; i<formname.coursepick.length; i++) { |
|
if (formname.coursepick[i].value == 'category') { |
|
formname.coursepick[i].checked = true; |
|
} |
|
formname.coursetotal.value = 0; |
|
formname.courselist = ''; |
|
} |
|
} |
</script> |
</script> |
|; |
|; |
my $courseform='<b>'.&Apache::loncommon::selectcourse_link |
my $courseform='<b>'.&Apache::loncommon::selectcourse_link |
($formname,'pickcourse','pickdomain','coursedesc').'</b>'; |
($formname,'pickcourse','pickdomain','coursedesc','',1).'</b>'; |
if ($totcodes > 0) { |
if ($totcodes > 0) { |
$output .= '<input type="radio" name="coursepick" value="all" onclick="coursePick(this.form)" />'.&mt('All courses'); |
$output .= '<input type="radio" name="coursepick" value="all" onclick="coursePick(this.form)" />'.&mt('All courses'); |
my $numtitles = @$codetitles; |
my $numtitles = @$codetitles; |
Line 1376 sub course_select_row {
|
Line 1417 sub course_select_row {
|
$output .= '<br /><input type="radio" name="coursepick" value="category" onclick="coursePick(this.form);alert('."'".&mt('Choose categories, from left to right')."'".')" />'.&mt('Pick courses by category:').' <br />'; |
$output .= '<br /><input type="radio" name="coursepick" value="category" onclick="coursePick(this.form);alert('."'".&mt('Choose categories, from left to right')."'".')" />'.&mt('Pick courses by category:').' <br />'; |
$output .= '<table><tr><td>'.$$codetitles[0].'<br />'."\n". |
$output .= '<table><tr><td>'.$$codetitles[0].'<br />'."\n". |
'<select name="'.$$codetitles[0]. |
'<select name="'.$$codetitles[0]. |
'" onChange="courseSet('."'$$codetitles[0]'".')">'."\n". |
'" onChange="setPick(this.form);courseSet('."'$$codetitles[0]'".')">'."\n". |
' <option value="-1" />Select'."\n"; |
' <option value="-1" />Select'."\n"; |
my @items = (); |
my @items = (); |
my @longitems = (); |
my @longitems = (); |
if ($$idlist{$$codetitles[0]} =~ /","/) { |
if ($$idlist{$$codetitles[0]} =~ /","/) { |
@items = split/","/,$$idlist{$$codetitles[0]}; |
@items = split(/","/,$$idlist{$$codetitles[0]}); |
} else { |
} else { |
$items[0] = $$idlist{$$codetitles[0]}; |
$items[0] = $$idlist{$$codetitles[0]}; |
} |
} |
if (defined($$idlist_titles{$$codetitles[0]})) { |
if (defined($$idlist_titles{$$codetitles[0]})) { |
if ($$idlist_titles{$$codetitles[0]} =~ /","/) { |
if ($$idlist_titles{$$codetitles[0]} =~ /","/) { |
@longitems = split/","/,$$idlist_titles{$$codetitles[0]}; |
@longitems = split(/","/,$$idlist_titles{$$codetitles[0]}); |
} else { |
} else { |
$longitems[0] = $$idlist_titles{$$codetitles[0]}; |
$longitems[0] = $$idlist_titles{$$codetitles[0]}; |
} |
} |
Line 1414 sub course_select_row {
|
Line 1455 sub course_select_row {
|
$output .= '</tr></table><br />'; |
$output .= '</tr></table><br />'; |
} |
} |
} |
} |
$output .= '<input type="radio" name="coursepick" value="specific" onclick="coursePick(this.form);opencrsbrowser('."'".'rolefilter'."'".','."'".'dccourse'."'".','."'".'dcdomain'."'".','."'".'coursedesc'."',''".')" />'.&mt('Pick specific course(s):').' '.$courseform.' <input type="text" value="0" size="4" name="coursetotal" /><input type="hidden" name="courselist" value="" />selected.<br /></td>'."\n"; |
$output .= '<input type="radio" name="coursepick" value="specific" onclick="coursePick(this.form);opencrsbrowser('."'".$formname."'".','."'".'dccourse'."'".','."'".'dcdomain'."'".','."'".'coursedesc'."','','1'".')" />'.&mt('Pick specific course(s):').' '.$courseform.' <input type="text" value="0" size="4" name="coursetotal" /><input type="hidden" name="courselist" value="" />selected.<br /></td>'."\n"; |
$output .= &row_closure(); |
$output .= &row_closure(); |
return $output; |
return $output; |
} |
} |
|
|
sub status_select_row { |
sub status_select_row { |
my ($types,$col_width,$tablecolor,$title) = @_; |
my ($types,$col_width,$tablecolor,$title) = @_; |
my $output = &row_title($col_width,$tablecolor,$title); |
my $output; |
$output .= qq| <td> |
if (defined($title)) { |
|
$output = &row_title($col_width,$tablecolor,$title); |
|
} |
|
$output .= qq| <td valign="top"> |
<select name="types" multiple>\n|; |
<select name="types" multiple>\n|; |
foreach my $status_type (sort keys (%{$types})) { |
foreach my $status_type (sort(keys(%{$types}))) { |
$output .= ' <option value="'.$status_type.'">'.$$types{$status_type}.'</option>'; |
$output .= ' <option value="'.$status_type.'">'.$$types{$status_type}.'</option>'; |
} |
} |
$output .= qq| </select> |
$output .= qq| </select> |
</td>\n|; |
</td>\n|; |
$output .= &row_closure(); |
if (defined($title)) { |
|
$output .= &row_closure(); |
|
} |
return $output; |
return $output; |
} |
} |
|
|
Line 1437 sub email_default_row {
|
Line 1483 sub email_default_row {
|
my ($authtypes,$col_width,$tablecolor,$title,$descrip) = @_; |
my ($authtypes,$col_width,$tablecolor,$title,$descrip) = @_; |
my $output = &row_title($col_width,$tablecolor,$title); |
my $output = &row_title($col_width,$tablecolor,$title); |
my @rowcols = ('#eeeeee','#dddddd'); |
my @rowcols = ('#eeeeee','#dddddd'); |
$output .= ' <td>'.$descrip.' |
$output .= ' <td>'.$descrip; |
<table> |
$output .= &start_pick_box(''); |
<tr> |
$output .= ' <tr bgcolor="'.$tablecolor.'"> |
<td><b>'.&mt('Authentication Method').'</b></td><td> </td><td> </td><td><b>'.&mt('Username -> e-mail conversion').'</b></td> |
<td><b>'.&mt('Authentication Method').'</b></td><td align="right"><b>'.&mt('Username -> e-mail conversion').'</b></td> |
</tr>'."\n"; |
</tr>'."\n"; |
my $rownum = 0; |
my $rownum = 0; |
foreach my $auth (sort keys (%{$authtypes})) { |
foreach my $auth (sort(keys(%{$authtypes}))) { |
my ($userentry,$size); |
my ($userentry,$size); |
my $rowiter = $rownum%2; |
my $rowiter = $rownum%2; |
if ($auth =~ /^krb/) { |
if ($auth =~ /^krb/) { |
Line 1453 sub email_default_row {
|
Line 1499 sub email_default_row {
|
$userentry = 'username@'; |
$userentry = 'username@'; |
$size = 15; |
$size = 15; |
} |
} |
$output .= '<tr rowcolor="'.$rowcols[$rowiter].'"><td> '.$$authtypes{$auth}.'</td><td> </td><td align="right">'.$userentry.'</td><td><input type="text" name="'.$auth.'" size="'.$size.'" /></td></tr>'; |
$output .= '<tr bgcolor="'.$rowcols[$rowiter].'"><td> '.$$authtypes{$auth}.'</td><td align="right">'.$userentry.'<input type="text" name="'.$auth.'" size="'.$size.'" /></td></tr>'; |
$rownum ++; |
$rownum ++; |
} |
} |
$output .= " </table> |
$output .= &end_pick_box(); |
</td>\n"; |
$output .= " <br /></td>\n"; |
$output .= &row_closure(); |
$output .= &row_closure(); |
return $output; |
return $output; |
} |
} |
Line 1465 sub email_default_row {
|
Line 1511 sub email_default_row {
|
|
|
sub submit_row { |
sub submit_row { |
my ($col_width,$tablecolor,$title,$cmd,$submit_text) = @_; |
my ($col_width,$tablecolor,$title,$cmd,$submit_text) = @_; |
my $output .= &row_title($col_width,$tablecolor,$title); |
my $output = &row_title($col_width,$tablecolor,$title); |
$output .= qq| |
$output .= qq| |
<td width="100%" valign="top" align="right"> |
<td width="100%" valign="top" align="right"> |
<br /> |
<br /> |
Line 1476 sub submit_row {
|
Line 1522 sub submit_row {
|
return $output; |
return $output; |
} |
} |
|
|
|
############################################## |
|
############################################## |
|
|
|
# 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 .= '<input type="hidden" name="'.$name. |
|
'" value="'.$value.'" />'."\n"; |
|
} |
|
} else { |
|
my $value = &HTML::Entities::encode($env{$key},'<>&"'); |
|
$output .= '<input type="hidden" name="'.$name. |
|
'" value="'.$value.'" />'."\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. |
|
# |
|
# Input: |
|
# 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). |
|
# |
|
# 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) = @_; |
|
my $output .= 'function setFormElements(courseForm) { |
|
'; |
|
foreach my $key (keys(%env)) { |
|
if ($key =~ /^form\.(.+)$/) { |
|
my $name = $1; |
|
if (exists($$elements{$name})) { |
|
my @values = &Apache::loncommon::get_env_multiple($key); |
|
for (my $i=0; $i<@values; $i++) { |
|
$values[$i] = &HTML::Entities::decode($values[$i],'<>&"'); |
|
$values[$i] =~ s/([\r\n\f]+)/\\n/g; |
|
$values[$i] =~ s/"/\\"/g; |
|
} |
|
if ($$elements{$name} eq 'text') { |
|
my $numvalues = @values; |
|
if ($numvalues > 1) { |
|
my $valuestring = join('","',@values); |
|
$output .= qq| |
|
var textvalues = new Array ("$valuestring"); |
|
var total = courseForm.$name.length; |
|
if (total > $numvalues) { |
|
total = $numvalues; |
|
} |
|
for (var i=0; i<total; i++) { |
|
courseForm.$name\[i].value = textvalues[i]; |
|
} |
|
|; |
|
} else { |
|
$output .= qq| |
|
courseForm.$name.value = "$values[0]"; |
|
|; |
|
} |
|
} else { |
|
$output .= qq| |
|
var elementLength = courseForm.$name.length; |
|
if (elementLength==undefined) { |
|
|; |
|
foreach my $value (@values) { |
|
if ($$elements{$name} eq 'selectbox') { |
|
$output .= qq| |
|
if (courseForm.$name.options[0].value == "$value") { |
|
courseForm.$name.options[0].selected = true; |
|
}|; |
|
} elsif (($$elements{$name} eq 'radio') || |
|
($$elements{$name} eq 'checkbox')) { |
|
$output .= qq| |
|
if (courseForm.$name.value == "$value") { |
|
courseForm.$name.checked = true; |
|
}|; |
|
} |
|
} |
|
$output .= qq| |
|
} |
|
else { |
|
for (var i=0; i<courseForm.$name.length; i++) { |
|
|; |
|
if ($$elements{$name} eq 'selectbox') { |
|
$output .= qq| |
|
courseForm.$name.options[i].selected = false;|; |
|
} elsif (($$elements{$name} eq 'radio') || |
|
($$elements{$name} eq 'checkbox')) { |
|
$output .= qq| |
|
courseForm.$name\[i].checked = false;|; |
|
} |
|
$output .= qq| |
|
} |
|
for (var j=0; j<courseForm.$name.length; j++) { |
|
|; |
|
foreach my $value (@values) { |
|
if ($$elements{$name} eq 'selectbox') { |
|
$output .= qq| |
|
if (courseForm.$name.options[j].value == "$value") { |
|
courseForm.$name.options[j].selected = true; |
|
}|; |
|
} elsif (($$elements{$name} eq 'radio') || |
|
($$elements{$name} eq 'checkbox')) { |
|
$output .= qq| |
|
if (courseForm.$name\[j].value == "$value") { |
|
courseForm.$name\[j].checked = true; |
|
}|; |
|
} |
|
} |
|
$output .= qq| |
|
} |
|
} |
|
|; |
|
} |
|
} |
|
} |
|
} |
|
$output .= " |
|
}\n"; |
|
return $output; |
|
} |
|
|
1; |
1; |
|
|
__END__ |
__END__ |