version 1.145, 2006/07/21 08:59:30
|
version 1.164, 2007/09/27 15:36:23
|
Line 60 use Time::Local;
|
Line 60 use Time::Local;
|
use Time::HiRes; |
use Time::HiRes; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnet; |
use Apache::lonnet; |
use lib '/home/httpd/lib/perl/'; |
|
use LONCAPA; |
use LONCAPA; |
|
|
############################################## |
############################################## |
Line 78 use LONCAPA;
|
Line 77 use LONCAPA;
|
sub authorbombs { |
sub authorbombs { |
my $url=shift; |
my $url=shift; |
$url=&Apache::lonnet::declutter($url); |
$url=&Apache::lonnet::declutter($url); |
my ($udom,$uname)=($url=~/^(\w+)\/(\w+)\//); |
my ($udom,$uname)=($url=~m{^($LONCAPA::domain_re)/($LONCAPA::username_re)/}); |
my %bombs=&Apache::lonmsg::all_url_author_res_msg($uname,$udom); |
my %bombs=&Apache::lonmsg::all_url_author_res_msg($uname,$udom); |
foreach (keys %bombs) { |
foreach (keys %bombs) { |
if ($_=~/^$udom\/$uname\//) { |
if ($_=~/^$udom\/$uname\//) { |
Line 141 sub select_recent {
|
Line 140 sub select_recent {
|
foreach my $value (sort(keys(%recent))) { |
foreach my $value (sort(keys(%recent))) { |
unless ($value =~/^error\:/) { |
unless ($value =~/^error\:/) { |
my $escaped = &Apache::loncommon::escape_url($value); |
my $escaped = &Apache::loncommon::escape_url($value); |
|
&Apache::loncommon::inhibit_menu_check(\$escaped); |
$return.="\n<option value='$escaped'>". |
$return.="\n<option value='$escaped'>". |
&unescape((split(/\&/,$recent{$value}))[1]). |
&unescape((split(/\&/,$recent{$value}))[1]). |
'</option>'; |
'</option>'; |
Line 689 sub StatusOptions {
|
Line 689 sub StatusOptions {
|
$status = $env{'form.Status'} if (exists($env{'form.Status'})); |
$status = $env{'form.Status'} if (exists($env{'form.Status'})); |
} |
} |
|
|
my $OpSel1 = ''; |
|
my $OpSel2 = ''; |
|
my $OpSel3 = ''; |
|
|
|
if($status eq 'Any') { $OpSel3 = ' selected'; } |
|
elsif($status eq 'Expired' ) { $OpSel2 = ' selected'; } |
|
else { $OpSel1 = ' selected'; } |
|
|
|
my $Str = ''; |
my $Str = ''; |
$Str .= '<select name="Status"'; |
$Str .= '<select name="Status"'; |
if(defined($formName) && $formName ne '' && ! defined($onchange)) { |
if(defined($formName) && $formName ne '' && ! defined($onchange)) { |
Line 707 sub StatusOptions {
|
Line 699 sub StatusOptions {
|
} |
} |
$Str .= ' size="'.$size.'" '; |
$Str .= ' size="'.$size.'" '; |
$Str .= '>'."\n"; |
$Str .= '>'."\n"; |
$Str .= '<option value="Active" '.$OpSel1.'>'. |
foreach my $type (['Active', &mt('Currently Has Access')], |
&mt('Currently Enrolled').'</option>'."\n"; |
['Future', &mt('Will Have Future Access')], |
$Str .= '<option value="Expired" '.$OpSel2.'>'. |
['Expired', &mt('Previously Had Access')], |
&mt('Previously Enrolled').'</option>'."\n"; |
['Any', &mt('Any Access Status')]) { |
$Str .= '<option value="Any" '.$OpSel3.'>'. |
my ($name,$label) = @$type; |
&mt('Any Enrollment Status').'</option>'."\n"; |
$Str .= '<option value="'.$name.'" '; |
|
if ($status eq $name) { |
|
$Str .= 'selected="selected" '; |
|
} |
|
$Str .= '>'.$label.'</option>'."\n"; |
|
} |
|
|
$Str .= '</select>'."\n"; |
$Str .= '</select>'."\n"; |
} |
} |
|
|
Line 855 sub Create_PrgWin {
|
Line 853 sub Create_PrgWin {
|
popwin=open(\'\',\'popwin\',\'width=400,height=100\');". |
popwin=open(\'\',\'popwin\',\'width=400,height=100\');". |
"popwin.document.writeln(\'".$start_page. |
"popwin.document.writeln(\'".$start_page. |
"<h4>$heading<\/h4>". |
"<h4>$heading<\/h4>". |
"<form name=\"popremain\" method=\"post\">". |
"<form action= \"\" name=\"popremain\" method=\"post\">". |
'<input type="text" size="'.$width.'" name="remaining" value="'. |
'<input type="text" size="'.$width.'" name="remaining" value="'. |
&mt('Starting').'" /><\\/form>'.$end_page. |
&mt('Starting').'" /><\\/form>'.$end_page. |
"\');". |
"\');". |
Line 867 sub Create_PrgWin {
|
Line 865 sub Create_PrgWin {
|
$prog_state{'window'}='window'; |
$prog_state{'window'}='window'; |
if (!$formname) { |
if (!$formname) { |
$prog_state{'formname'}=&get_uniq_name(); |
$prog_state{'formname'}=&get_uniq_name(); |
&r_print($r,'<form name="'.$prog_state{'formname'}.'">'); |
&r_print($r,'<form action="" name="'.$prog_state{'formname'}.'">'); |
} else { |
} else { |
$prog_state{'formname'}=$formname; |
$prog_state{'formname'}=$formname; |
} |
} |
Line 894 sub Create_PrgWin {
|
Line 892 sub Create_PrgWin {
|
# update progress |
# update progress |
sub Update_PrgWin { |
sub Update_PrgWin { |
my ($r,$prog_state,$displayString)=@_; |
my ($r,$prog_state,$displayString)=@_; |
&r_print($r,'<script>'.$$prog_state{'window'}.'.document.'. |
&r_print($r,'<script type="text/javascript">'.$$prog_state{'window'}.'.document.'. |
$$prog_state{'formname'}.'.'. |
$$prog_state{'formname'}.'.'. |
$$prog_state{'inputname'}.'.value="'. |
$$prog_state{'inputname'}.'.value="'. |
$displayString.'";</script>'); |
$displayString.'";</script>'); |
Line 1005 sub crumbs {
|
Line 1003 sub crumbs {
|
} |
} |
} else { |
} else { |
$path.='/'; |
$path.='/'; |
|
} |
|
my $href_path = &HTML::Entities::encode($path,'<>&"'); |
|
&Apache::loncommon::inhibit_menu_check(\$href_path); |
|
if ($form) { |
|
my $href = 'javascript:'.$form.".action='".$href_path."';".$form.'.submit();'; |
|
$output.=qq{<a href="$href" $target>$dir</a>/}; |
|
} else { |
|
$output.=qq{<a href="$href_path" $target>$dir</a>/}; |
} |
} |
my $linkpath = &Apache::loncommon::escape_single($path); |
|
if ($form) { |
|
$linkpath= |
|
qq{javascript:$form.action='$linkpath';$form.submit();}; |
|
} |
|
$output.=qq{<a href="$linkpath" $target>$dir</a>/}; |
|
} |
} |
} else { |
} else { |
$output.=$uri; |
foreach my $dir (split('/',$uri)) { |
|
if (! $dir) { next; } |
|
$output.=$dir.'/'; |
|
} |
} |
} |
unless ($uri=~/\/$/) { $output=~s/\/$//; } |
if ($uri !~ m|/$|) { $output=~s|/$||; } |
return $output.'</font>'.($noformat?'':'</b></tt><br />'); |
return $output.'</font>'.($noformat?'':'</b></tt><br />'); |
} |
} |
|
|
Line 1045 var checkwin;
|
Line 1048 var checkwin;
|
function spellcheckerwindow(string) { |
function spellcheckerwindow(string) { |
var esc_string = string.replace(/\"/g,'"'); |
var esc_string = string.replace(/\"/g,'"'); |
checkwin=window.open($nothing,'spellcheckwin','height=320,width=280,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'); |
checkwin=window.open($nothing,'spellcheckwin','height=320,width=280,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'); |
checkwin.document.writeln('$start_page<form name="spellcheckform" action="/adm/spellcheck" method="post"><input type="hidden" name="text" value="'+esc_string+'" /><\/form>$end_page'); |
checkwin.document.writeln('$start_page<form name="spellcheckform" action="/adm/spellcheck" method="post"><input type="hidden" name="text" value="'+esc_string+'" /><\\/form>$end_page'); |
checkwin.document.close(); |
checkwin.document.close(); |
} |
} |
// END LON-CAPA Internal --> |
// END LON-CAPA Internal --> |
Line 1094 _editor_url='/htmlarea/';
|
Line 1097 _editor_url='/htmlarea/';
|
_editor_lang='$lang'; |
_editor_lang='$lang'; |
</script> |
</script> |
<script type="text/javascript" src="/htmlarea/htmlarea.js"></script> |
<script type="text/javascript" src="/htmlarea/htmlarea.js"></script> |
|
<link rel="stylesheet" type="text/css" href="/htmlarea/htmlarea.css" /> |
ENDHEADERS |
ENDHEADERS |
} |
} |
|
|
Line 1201 Pushes a breadcrumb on the stack of crum
|
Line 1205 Pushes a breadcrumb on the stack of crum
|
|
|
input: $breadcrumb, a hash reference. The keys 'href','title', and 'text' |
input: $breadcrumb, a hash reference. The keys 'href','title', and 'text' |
are required. If present the keys 'faq' and 'bug' will be used to provide |
are required. If present the keys 'faq' and 'bug' will be used to provide |
links to the FAQ and bug sites. |
links to the FAQ and bug sites. If the key 'no_mt' is present the 'title' |
|
and 'text' values won't be sent through &mt() |
|
|
returns: nothing |
returns: nothing |
|
|
Line 1251 returns: nothing
|
Line 1256 returns: nothing
|
if (defined($_->{'target'}) && $_->{'target'} ne '') { |
if (defined($_->{'target'}) && $_->{'target'} ne '') { |
$result .= 'target="'.$_->{'target'}.'" '; |
$result .= 'target="'.$_->{'target'}.'" '; |
} |
} |
$result .='title="'.&mt($_->{'title'}).'">'. |
if ($_->{'no_mt'}) { |
&mt($_->{'text'}).'</a>'; |
$result .='title="'.$_->{'title'}.'">'. |
|
$_->{'text'}.'</a>'; |
|
} else { |
|
$result .='title="'.&mt($_->{'title'}).'">'. |
|
&mt($_->{'text'}).'</a>'; |
|
} |
$result; |
$result; |
} @Crumbs |
} @Crumbs |
); |
); |
$links .= '->' if ($links ne ''); |
$links .= '->' if ($links ne ''); |
$links .= '<b>'.&mt($last->{'text'}).'</b>'; |
if ($last->{'no_mt'}) { |
|
$links .= '<b>'.$last->{'text'}.'</b>'; |
|
} else { |
|
$links .= '<b>'.&mt($last->{'text'}).'</b>'; |
|
} |
# |
# |
my $icons = ''; |
my $icons = ''; |
$faq = $last->{'faq'} if (exists($last->{'faq'})); |
$faq = $last->{'faq'} if (exists($last->{'faq'})); |
Line 1320 returns: nothing
|
Line 1334 returns: nothing
|
# row2 |
# row2 |
# row3 ... etc. |
# row3 ... etc. |
# &submit_row(0 |
# &submit_row(0 |
# &end_pickbox() |
# &end_pick_box() |
# |
# |
# where row1, row 2 etc. are chosen from &role_select_row,&course_select_row, |
# where row1, row 2 etc. are chosen from &role_select_row,&course_select_row, |
# &status_select_row and &email_default_row |
# &status_select_row and &email_default_row |
Line 1417 ENDTWO
|
Line 1431 ENDTWO
|
} |
} |
|
|
sub role_select_row { |
sub role_select_row { |
my ($roles,$title,$css_class) = @_; |
my ($roles,$title,$css_class,$show_separate_custom,$cdom,$cnum) = @_; |
my $output; |
my $output; |
if (defined($title)) { |
if (defined($title)) { |
$output = &row_title($title,$css_class); |
$output = &row_title($title,$css_class); |
Line 1428 sub role_select_row {
|
Line 1442 sub role_select_row {
|
my $plrole; |
my $plrole; |
if ($role eq 'ow') { |
if ($role eq 'ow') { |
$plrole = &mt('Course Owner'); |
$plrole = &mt('Course Owner'); |
|
} elsif ($role eq 'cr') { |
|
if ($show_separate_custom) { |
|
if ($cdom ne '' && $cnum ne '') { |
|
my %course_customroles = &course_custom_roles($cdom,$cnum); |
|
foreach my $crrole (sort(keys(%course_customroles))) { |
|
my ($plcrrole) = ($crrole =~ m|^cr/[^/]+/[^/]+/(.+)$|); |
|
$output .= ' <option value="'.$crrole.'">'.$plcrrole. |
|
'</option>'; |
|
} |
|
} |
|
} else { |
|
$plrole = &mt('Custom Role'); |
|
} |
} else { |
} else { |
$plrole=&Apache::lonnet::plaintext($role); |
$plrole=&Apache::lonnet::plaintext($role); |
} |
} |
$output .= ' <option value="'.$role.'">'.$plrole.'</option>'; |
if (($role ne 'cr') || (!$show_separate_custom)) { |
|
$output .= ' <option value="'.$role.'">'.$plrole.'</option>'; |
|
} |
} |
} |
$output .= qq| </select>\n|; |
$output .= qq| </select>\n|; |
if (defined($title)) { |
if (defined($title)) { |
Line 1543 sub status_select_row {
|
Line 1572 sub status_select_row {
|
sub email_default_row { |
sub email_default_row { |
my ($authtypes,$title,$descrip,$css_class) = @_; |
my ($authtypes,$title,$descrip,$css_class) = @_; |
my $output = &row_title($title,$css_class); |
my $output = &row_title($title,$css_class); |
my @rowcols = ('#eeeeee','#dddddd'); |
|
$output .= $descrip. |
$output .= $descrip. |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row(). |
&Apache::loncommon::start_data_table_header_row(). |
Line 1584 sub submit_row {
|
Line 1612 sub submit_row {
|
return $output; |
return $output; |
} |
} |
|
|
|
sub course_custom_roles { |
|
my ($cdom,$cnum) = @_; |
|
my %returnhash=(); |
|
my %coursepersonnel=&Apache::lonnet::dump('nohist_userroles',$cdom,$cnum); |
|
foreach my $person (sort(keys(%coursepersonnel))) { |
|
my ($role) = ($person =~ /^([^:]+):/); |
|
my ($end,$start) = split(/:/,$coursepersonnel{$person}); |
|
if ($end == -1 && $start == -1) { |
|
next; |
|
} |
|
if ($role =~ m|^cr/[^/]+/[^/]+/[^/]|) { |
|
$returnhash{$role} ++; |
|
} |
|
} |
|
return %returnhash; |
|
} |
|
|
|
|
############################################## |
############################################## |
############################################## |
############################################## |
|
|
Line 1722 sub set_form_elements {
|
Line 1768 sub set_form_elements {
|
my $valuestring = join('","',@{$values{$name}}); |
my $valuestring = join('","',@{$values{$name}}); |
$output .= qq| |
$output .= qq| |
var textvalues = new Array ("$valuestring"); |
var textvalues = new Array ("$valuestring"); |
var total = courseForm.$name.length; |
var total = courseForm.elements['$name'].length; |
if (total > $numvalues) { |
if (total > $numvalues) { |
total = $numvalues; |
total = $numvalues; |
} |
} |
for (var i=0; i<total; i++) { |
for (var i=0; i<total; i++) { |
courseForm.$name\[i].value = textvalues[i]; |
courseForm.elements['$name']\[i].value = textvalues[i]; |
} |
} |
|; |
|; |
} else { |
} else { |
$output .= qq| |
$output .= qq| |
courseForm.$name.value = "$values{$name}[0]"; |
courseForm.elements['$name'].value = "$values{$name}[0]"; |
|; |
|; |
} |
} |
} else { |
} else { |
$output .= qq| |
$output .= qq| |
var elementLength = courseForm.$name.length; |
var elementLength = courseForm.elements['$name'].length; |
if (elementLength==undefined) { |
if (elementLength==undefined) { |
|; |
|; |
foreach my $value (@{$values{$name}}) { |
foreach my $value (@{$values{$name}}) { |
if ($$elements{$name} eq 'selectbox') { |
if ($$elements{$name} eq 'selectbox') { |
$output .= qq| |
$output .= qq| |
if (courseForm.$name.options[0].value == "$value") { |
if (courseForm.elements['$name'].options[0].value == "$value") { |
courseForm.$name.options[0].selected = true; |
courseForm.elements['$name'].options[0].selected = true; |
}|; |
}|; |
} elsif (($$elements{$name} eq 'radio') || |
} elsif (($$elements{$name} eq 'radio') || |
($$elements{$name} eq 'checkbox')) { |
($$elements{$name} eq 'checkbox')) { |
$output .= qq| |
$output .= qq| |
if (courseForm.$name.value == "$value") { |
if (courseForm.elements['$name'].value == "$value") { |
courseForm.$name.checked = true; |
courseForm.elements['$name'].checked = true; |
}|; |
}|; |
} |
} |
} |
} |
$output .= qq| |
$output .= qq| |
} |
} |
else { |
else { |
for (var i=0; i<courseForm.$name.length; i++) { |
for (var i=0; i<courseForm.elements['$name'].length; i++) { |
|; |
|; |
if ($$elements{$name} eq 'selectbox') { |
if ($$elements{$name} eq 'selectbox') { |
$output .= qq| |
$output .= qq| |
courseForm.$name.options[i].selected = false;|; |
courseForm.elements['$name'].options[i].selected = false;|; |
} elsif (($$elements{$name} eq 'radio') || |
} elsif (($$elements{$name} eq 'radio') || |
($$elements{$name} eq 'checkbox')) { |
($$elements{$name} eq 'checkbox')) { |
$output .= qq| |
$output .= qq| |
courseForm.$name\[i].checked = false;|; |
courseForm.elements['$name']\[i].checked = false;|; |
} |
} |
$output .= qq| |
$output .= qq| |
} |
} |
for (var j=0; j<courseForm.$name.length; j++) { |
for (var j=0; j<courseForm.elements['$name'].length; j++) { |
|; |
|; |
foreach my $value (@{$values{$name}}) { |
foreach my $value (@{$values{$name}}) { |
if ($$elements{$name} eq 'selectbox') { |
if ($$elements{$name} eq 'selectbox') { |
$output .= qq| |
$output .= qq| |
if (courseForm.$name.options[j].value == "$value") { |
if (courseForm.elements['$name'].options[j].value == "$value") { |
courseForm.$name.options[j].selected = true; |
courseForm.elements['$name'].options[j].selected = true; |
}|; |
}|; |
} elsif (($$elements{$name} eq 'radio') || |
} elsif (($$elements{$name} eq 'radio') || |
($$elements{$name} eq 'checkbox')) { |
($$elements{$name} eq 'checkbox')) { |
$output .= qq| |
$output .= qq| |
if (courseForm.$name\[j].value == "$value") { |
if (courseForm.elements['$name']\[j].value == "$value") { |
courseForm.$name\[j].checked = true; |
courseForm.elements['$name']\[j].checked = true; |
}|; |
}|; |
} |
} |
} |
} |
Line 1796 sub set_form_elements {
|
Line 1842 sub set_form_elements {
|
return $output; |
return $output; |
} |
} |
|
|
|
############################################## |
|
############################################## |
|
|
|
# javascript_valid_email |
|
# |
|
# Generates javascript to validate an e-mail address. |
|
# Returns a javascript function which accetps a form field as argumnent, and |
|
# returns false if field.value does not satisfy two regular expression matches |
|
# for a valid e-mail address. Backwards compatible with old browsers without |
|
# support for javascript RegExp (just checks for @ in field.value in this case). |
|
|
|
sub javascript_valid_email { |
|
my $scripttag .= <<'END'; |
|
function validmail(field) { |
|
var str = field.value; |
|
if (window.RegExp) { |
|
var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)"; |
|
var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$"; //" |
|
var reg1 = new RegExp(reg1str); |
|
var reg2 = new RegExp(reg2str); |
|
if (!reg1.test(str) && reg2.test(str)) { |
|
return true; |
|
} |
|
return false; |
|
} |
|
else |
|
{ |
|
if(str.indexOf("@") >= 0) { |
|
return true; |
|
} |
|
return false; |
|
} |
|
} |
|
END |
|
return $scripttag; |
|
} |
|
|
1; |
1; |
|
|
__END__ |
__END__ |