version 1.226, 2004/11/02 20:48:02
|
version 1.244, 2004/12/20 20:53:40
|
Line 379 sub coursebrowser_javascript {
|
Line 379 sub coursebrowser_javascript {
|
return (<<ENDSTDBRW); |
return (<<ENDSTDBRW); |
<script type="text/javascript" language="Javascript" > |
<script type="text/javascript" language="Javascript" > |
var stdeditbrowser; |
var stdeditbrowser; |
function opencrsbrowser(formname,uname,udom,desc) { |
function opencrsbrowser(formname,uname,udom,desc,extra_element) { |
var url = '/adm/pickcourse?'; |
var url = '/adm/pickcourse?'; |
var filter; |
var filter; |
if (filter != null) { |
if (filter != null) { |
Line 396 sub coursebrowser_javascript {
|
Line 396 sub coursebrowser_javascript {
|
url += 'form=' + formname + '&cnumelement='+uname+ |
url += 'form=' + formname + '&cnumelement='+uname+ |
'&cdomelement='+udom+ |
'&cdomelement='+udom+ |
'&cnameelement='+desc; |
'&cnameelement='+desc; |
|
if (extra_element !=null && extra_element != '' && formname == 'rolechoice') { |
|
url += '&roleelement='+extra_element; |
|
if (domainfilter == null || domainfilter == '') { |
|
url += '&domainfilter='+extra_element; |
|
} |
|
} |
var title = 'Course_Browser'; |
var title = 'Course_Browser'; |
var options = 'scrollbars=1,resizable=1,menubar=0'; |
var options = 'scrollbars=1,resizable=1,menubar=0'; |
options += ',width=700,height=600'; |
options += ',width=700,height=600'; |
Line 407 ENDSTDBRW
|
Line 413 ENDSTDBRW
|
} |
} |
|
|
sub selectcourse_link { |
sub selectcourse_link { |
my ($form,$unameele,$udomele,$desc)=@_; |
my ($form,$unameele,$udomele,$desc,$extra_element)=@_; |
return "<a href='".'javascript:opencrsbrowser("'.$form.'","'.$unameele. |
return "<a href='".'javascript:opencrsbrowser("'.$form.'","'.$unameele. |
'","'.$udomele.'","'.$desc.'");'."'>".&mt('Select Course')."</a>"; |
'","'.$udomele.'","'.$desc.'","'.$extra_element.'");'."'>".&mt('Select Course')."</a>"; |
} |
} |
|
|
=pod |
=pod |
Line 662 sub help_open_menu {
|
Line 668 sub help_open_menu {
|
my $link=''; |
my $link=''; |
my $title = &mt('Get help'); |
my $title = &mt('Get help'); |
my $origurl = $ENV{'REQUEST_URI'}; |
my $origurl = $ENV{'REQUEST_URI'}; |
|
$origurl=~s|^/~|/priv/|; |
my $timestamp = time; |
my $timestamp = time; |
foreach (\$color,\$function,\$topic,\$component_help,\$faq,\$bug,\$origurl) { |
foreach (\$color,\$function,\$topic,\$component_help,\$faq,\$bug,\$origurl) { |
$$_ = &Apache::lonnet::escape($$_); |
$$_ = &Apache::lonnet::escape($$_); |
Line 684 sub help_open_menu {
|
Line 691 sub help_open_menu {
|
$template .= <<"ENDTEMPLATE"; |
$template .= <<"ENDTEMPLATE"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
//<!-- BEGIN LON-CAPA Internal |
//<!-- BEGIN LON-CAPA Internal |
function helpMenu(caller) { |
function helpMenu(target) { |
if (caller == 'open') { |
var caller = this; |
newWindow = window.open("","helpmenu","HEIGHT=$height,WIDTH=$width,resize=yes,scrollbars=yes" ) |
if (target == 'open') { |
caller = newWindow.document |
var newWindow = null; |
} else { |
try { |
caller = this.document |
newWindow = window.open("","helpmenu","HEIGHT=$height,WIDTH=$width,resizable=yes,scrollbars=yes" ) |
} |
} |
caller.write("<html><head><title>LON-CAPA Help Menu</title><meta http-equiv='pragma' content='no-cache'></head>") |
catch(error) { |
caller.write("<frameset rows='105,*' border='0'><frame name='bannerframe' src='$banner_link'><frame name='bodyframe' src='$details_link'></frameset>") |
writeHelp(caller); |
caller.write("</html>") |
return; |
caller.close() |
} |
if (caller == newWindow.document) { |
if (newWindow) { |
caller.focus() |
caller = newWindow; |
|
} |
} |
} |
|
writeHelp(caller); |
|
return; |
|
} |
|
function writeHelp(caller) { |
|
caller.document.write("<html><head><title>LON-CAPA Help Menu</title><meta http-equiv='pragma' content='no-cache'></head>") |
|
caller.document.write("<frameset rows='105,*' border='0'><frame name='bannerframe' src='$banner_link'><frame name='bodyframe' src='$details_link'></frameset>") |
|
caller.document.write("</html>") |
|
caller.document.close() |
|
caller.focus() |
} |
} |
// END LON-CAPA Internal --> |
// END LON-CAPA Internal --> |
</script> |
</script> |
Line 2278 sub get_student_view {
|
Line 2295 sub get_student_view {
|
if (defined($moreenv)) { |
if (defined($moreenv)) { |
%form=(%form,%{$moreenv}); |
%form=(%form,%{$moreenv}); |
} |
} |
if ($target eq 'tex') {$form{'grade_target'} = 'tex';} |
if (defined($target)) { $form{'grade_target'} = $target; } |
$feedurl=&Apache::lonnet::clutter($feedurl); |
$feedurl=&Apache::lonnet::clutter($feedurl); |
my $userview=&Apache::lonnet::ssi_body($feedurl,%form); |
my $userview=&Apache::lonnet::ssi_body($feedurl,%form); |
$userview=~s/\<body[^\>]*\>//gi; |
$userview=~s/\<body[^\>]*\>//gi; |
Line 2318 sub get_student_answers {
|
Line 2335 sub get_student_answers {
|
|
|
=item * &submlink() |
=item * &submlink() |
|
|
Inputs: $text $uname $udom $symb |
Inputs: $text $uname $udom $symb $target |
|
|
Returns: A link to grades.pm such as to see the SUBM view of a student |
Returns: A link to grades.pm such as to see the SUBM view of a student |
|
|
Line 2326 Returns: A link to grades.pm such as to
|
Line 2343 Returns: A link to grades.pm such as to
|
|
|
############################################### |
############################################### |
sub submlink { |
sub submlink { |
my ($text,$uname,$udom,$symb)=@_; |
my ($text,$uname,$udom,$symb,$target)=@_; |
|
if (!($uname && $udom)) { |
|
(my $cursymb, my $courseid,$udom,$uname)= |
|
&Apache::lonxml::whichuser($symb); |
|
if (!$symb) { $symb=$cursymb; } |
|
} |
|
if (!$symb) { $symb=&symbread(); } |
|
$symb=&Apache::lonnet::escape($symb); |
|
if ($target) { $target="target=\"$target\""; } |
|
return '<a href="/adm/grades?&command=submission&'. |
|
'symb='.$symb.'&student='.$uname. |
|
'&userdom='.$udom.'" '.$target.'>'.$text.'</a>'; |
|
} |
|
############################################## |
|
|
|
=pod |
|
|
|
=item * &pgrdlink() |
|
|
|
Inputs: $text $uname $udom $symb $target |
|
|
|
Returns: A link to grades.pm such as to see the PGRD view of a student |
|
|
|
=cut |
|
|
|
############################################### |
|
sub pgrdlink { |
|
my $link=&submlink(@_); |
|
$link=~s/(&command=submission)/$1&showgrading=yes/; |
|
return $link; |
|
} |
|
############################################## |
|
|
|
=pod |
|
|
|
=item * &pprmlink() |
|
|
|
Inputs: $text $uname $udom $symb $target |
|
|
|
Returns: A link to parmset.pm such as to see the PPRM view of a |
|
student andn resource |
|
|
|
=cut |
|
|
|
############################################### |
|
sub pprmlink { |
|
my ($text,$uname,$udom,$symb,$target)=@_; |
if (!($uname && $udom)) { |
if (!($uname && $udom)) { |
(my $cursymb, my $courseid,$udom,$uname)= |
(my $cursymb, my $courseid,$udom,$uname)= |
&Apache::lonxml::whichuser($symb); |
&Apache::lonxml::whichuser($symb); |
if (!$symb) { $symb=$cursymb; } |
if (!$symb) { $symb=$cursymb; } |
} |
} |
if (!$symb) { $symb=&symbread(); } |
if (!$symb) { $symb=&symbread(); } |
return '<a href="/adm/grades?symb='.$symb.'&student='.$uname. |
$symb=&Apache::lonnet::escape($symb); |
'&userdom='.$udom.'&command=submission">'.$text.'</a>'; |
if ($target) { $target="target=\"$target\""; } |
|
return '<a href="/adm/parmset?&command=set&'. |
|
'symb='.$symb.'&uname='.$uname. |
|
'&udom='.$udom.'" '.$target.'>'.$text.'</a>'; |
} |
} |
############################################## |
############################################## |
|
|
Line 2555 sub bodytag {
|
Line 2621 sub bodytag {
|
if (!defined($lonhttpdPort)) { $lonhttpdPort='8080'; } |
if (!defined($lonhttpdPort)) { $lonhttpdPort='8080'; } |
# construct main body tag |
# construct main body tag |
my $bodytag = <<END; |
my $bodytag = <<END; |
<style> |
<style type="text/css"> |
h1, h2, h3, th { font-family: Arial, Helvetica, sans-serif } |
h1, h2, h3, th { font-family: Arial, Helvetica, sans-serif } |
a:focus { color: red; background: yellow } |
a:focus { color: red; background: yellow } |
</style> |
</style> |
Line 2576 END
|
Line 2642 END
|
# No Remote |
# No Remote |
my $roleinfo=(<<ENDROLE); |
my $roleinfo=(<<ENDROLE); |
<td bgcolor="$tabbg" align="right"> |
<td bgcolor="$tabbg" align="right"> |
<p> |
|
<font size="2" face="Arial, Helvetica, sans-serif"> |
<font size="2" face="Arial, Helvetica, sans-serif"> |
$ENV{'environment.firstname'} |
$ENV{'environment.firstname'} |
$ENV{'environment.middlename'} |
$ENV{'environment.middlename'} |
Line 2587 END
|
Line 2652 END
|
<font size="2" face="Arial, Helvetica, sans-serif">$role</font> |
<font size="2" face="Arial, Helvetica, sans-serif">$role</font> |
<br /> |
<br /> |
<font size="2" face="Arial, Helvetica, sans-serif">$realm</font> |
<font size="2" face="Arial, Helvetica, sans-serif">$realm</font> |
</p> |
|
</td> |
</td> |
ENDROLE |
ENDROLE |
my $titleinfo = '<font face="Arial, Helvetica, sans-serif" size="+3" color="'. |
my $titleinfo = '<font face="Arial, Helvetica, sans-serif" size="+3" color="'. |
$font.'"><b>'.$title.'</b></font>'; |
$font.'"><b>'.$title.'</b></font>'; |
if ($customtitle) { |
if ($customtitle) { |
$titleinfo = $customtitle; |
$titleinfo = $customtitle; |
} |
} |
return $bodytag.&Apache::lonmenu::menubuttons($forcereg,'web', |
|
$forcereg). |
if ($ENV{'request.state'} eq 'construct') { |
'<table bgcolor="'.$pgbg.'" width="100%" border="0" cellspacing="3" cellpadding="3"><tr><td rowspan="3" bgcolor="'.$tabbg.'">'.$titleinfo.'</td>'.$roleinfo.'</tr></table>'; |
my ($uname,$thisdisfn)= |
|
($ENV{'request.filename'} =~ m|^/home/([^/]+)/public_html/(.*)|); |
|
my $formaction='/priv/'.$uname.'/'.$thisdisfn; |
|
$formaction=~s/\/+/\//g; |
|
unless ($customtitle) { #this is for resources; directories have customtitle, and crumbs and select recent are created in lonpubdir.pm |
|
my $parentpath = ''; |
|
my $lastitem = ''; |
|
if ($thisdisfn =~ m-(.+/)([^/]*)$-) { |
|
$parentpath = $1; |
|
$lastitem = $2; |
|
} else { |
|
$lastitem = $thisdisfn; |
|
} |
|
$titleinfo = &Apache::loncommon::help_open_menu('','','','',3,'Authoring'). |
|
'<font face="Arial, Helvetica, sans-serif"><b>Construction Space</b>:</font> '. |
|
'<form name="dirs" method="post" action="'.$formaction |
|
.'" target="_top"><tt><b>' |
|
.&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv','','+1',1)."<font size=\"+1\">$lastitem</font></b></tt><br />" |
|
.&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()') |
|
.'</form>' |
|
.&Apache::lonmenu::constspaceform(); |
|
|
|
} |
|
$forcereg=1; |
|
} |
|
my $titletable = '<table bgcolor="'.$pgbg.'" width="100%" border="0" '. |
|
'cellspacing="3" cellpadding="3">'. |
|
'<tr><td rowspan="3" bgcolor="'.$tabbg.'">'. |
|
$titleinfo.'</td>'.$roleinfo.'</tr></table>'; |
|
if ($ENV{'request.state'} eq 'construct') { |
|
$bodytag .= &Apache::lonmenu::menubuttons($forcereg,'web',$forcereg,$titletable); |
|
} else { |
|
$bodytag .= &Apache::lonmenu::menubuttons($forcereg,'web',$forcereg). |
|
$titletable; |
|
} |
|
return $bodytag; |
} |
} |
|
|
# |
# |
Line 2664 sub get_users_function {
|
Line 2763 sub get_users_function {
|
|
|
############################################### |
############################################### |
|
|
|
=pod |
|
|
|
=item get_sections |
|
|
|
Determines all the sections for a course including |
|
sections with students and sections containing other roles. |
|
Incoming parameters: domain, course number, reference to |
|
section hash (keys to be section/group IDs), reference to |
|
array containing roles for which sections should be gathered |
|
(optional). If the fourth argument is undefined, sections |
|
are gathered for any role. |
|
|
|
Returns number of sections. |
|
|
|
=cut |
|
|
|
############################################### |
|
sub get_sections { |
|
my ($cdom,$cnum,$sectioncount,$possible_roles) = @_; |
|
if (!($cdom && $cnum)) { return 0; } |
|
my $cid = $cdom.'_'.$cnum; |
|
my $numsections = 0; |
|
|
|
if (!defined($possible_roles) || (grep/^st$/,@$possible_roles)) { |
|
my ($classlist) = &Apache::loncoursedata::get_classlist($cid,$cdom,$cnum); |
|
my $sec_index = &Apache::loncoursedata::CL_SECTION(); |
|
my $status_index = &Apache::loncoursedata::CL_STATUS(); |
|
while (my ($student,$data) = each %$classlist) { |
|
my ($section,$status) = ($data->[$sec_index], |
|
$data->[$status_index]); |
|
unless ($section eq '-1' || $section =~ /^\s*$/) { |
|
if (!defined($$sectioncount{$section})) { $numsections++; } |
|
$$sectioncount{$section}++; |
|
} |
|
} |
|
} |
|
my %courseroles = &Apache::lonnet::dump('nohist_userroles',$cdom,$cnum); |
|
foreach my $user (sort(keys(%courseroles))) { |
|
if ($user !~ /^(\w{2})/) { next; } |
|
my ($role) = ($user =~ /^(\w{2})/); |
|
if ($possible_roles && !(grep(/^$role$/,@$possible_roles))) { next; } |
|
my $section; |
|
if ($role eq 'cr' && |
|
$user =~ m-^$role/[^/]*/[^/]*/[^/]*:[^:]*:[^:]*:(\w+)-) { |
|
$section=$1; |
|
} |
|
if ($user =~ /^$role:[^:]*:[^:]*:(\w+)/) { $section=$1; } |
|
if (!defined($section) || $section eq '-1') { next; } |
|
if (!defined($$sectioncount{$section})) { $numsections++; } |
|
$$sectioncount{$section}++; |
|
} |
|
return $numsections; |
|
} |
|
|
|
|
sub get_posted_cgi { |
sub get_posted_cgi { |
my $r=shift; |
my $r=shift; |
|
|
Line 3270 they are plotted. If undefined, default
|
Line 3424 they are plotted. If undefined, default
|
=item @Values: An array of array references. Each array reference holds data |
=item @Values: An array of array references. Each array reference holds data |
to be plotted in a stacked bar chart. |
to be plotted in a stacked bar chart. |
|
|
|
=item If the final element of @Values is a hash reference the key/value |
|
pairs will be added to the graph definition. |
|
|
=back |
=back |
|
|
Returns: |
Returns: |
Line 3290 sub DrawBarGraph {
|
Line 3447 sub DrawBarGraph {
|
'#66ccff', '#ff9999', '#cccc33', '#660000', '#33cc66', |
'#66ccff', '#ff9999', '#cccc33', '#660000', '#33cc66', |
]; |
]; |
} |
} |
|
my $extra_settings = {}; |
|
if (ref($Values[-1]) eq 'HASH') { |
|
$extra_settings = pop(@Values); |
|
} |
# |
# |
my $identifier = &get_cgi_id(); |
my $identifier = &get_cgi_id(); |
my $id = 'cgi.'.$identifier; |
my $id = 'cgi.'.$identifier; |
Line 3365 sub DrawBarGraph {
|
Line 3526 sub DrawBarGraph {
|
$ValuesHash{$id.'.bar_width'} = $bar_width; |
$ValuesHash{$id.'.bar_width'} = $bar_width; |
$ValuesHash{$id.'.labels'} = join(',',@Labels); |
$ValuesHash{$id.'.labels'} = join(',',@Labels); |
# |
# |
|
# Deal with other parameters |
|
while (my ($key,$value) = each(%$extra_settings)) { |
|
$ValuesHash{$id.'.'.$key} = $value; |
|
} |
|
# |
&Apache::lonnet::appenv(%ValuesHash); |
&Apache::lonnet::appenv(%ValuesHash); |
return '<img src="/cgi-bin/graph.png?'.$identifier.'" border="1" />'; |
return '<img src="/cgi-bin/graph.png?'.$identifier.'" border="1" />'; |
} |
} |
Line 3772 sub escape_double {
|
Line 3938 sub escape_double {
|
# Escapes the last element of a full URL. |
# Escapes the last element of a full URL. |
sub escape_url { |
sub escape_url { |
my ($url) = @_; |
my ($url) = @_; |
my @urlslices = split(/\//, $url); |
my @urlslices = split(/\//, $url,-1); |
my $lastitem = &Apache::lonnet::escape(pop(@urlslices)); |
my $lastitem = &Apache::lonnet::escape(pop(@urlslices)); |
return join('/',@urlslices).'/'.$lastitem; |
return join('/',@urlslices).'/'.$lastitem; |
} |
} |