version 1.385, 2006/06/22 17:34:40
|
version 1.414, 2006/07/03 00:44:21
|
Line 707 sub helpLatexCheatsheet {
|
Line 707 sub helpLatexCheatsheet {
|
} |
} |
|
|
sub help_open_menu { |
sub help_open_menu { |
my ($color,$topic,$component_help,$function,$faq,$bug,$stayOnPage,$width,$height,$text) = @_; |
my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text) = @_; |
$text = "" if (not defined $text); |
$text = "" if (not defined $text); |
$stayOnPage = 0 if (not defined $stayOnPage); |
$stayOnPage = 0 if (not defined $stayOnPage); |
if ($env{'browser.interface'} eq 'textual' || |
if ($env{'browser.interface'} eq 'textual' || |
Line 721 sub help_open_menu {
|
Line 721 sub help_open_menu {
|
my $origurl = $ENV{'REQUEST_URI'}; |
my $origurl = $ENV{'REQUEST_URI'}; |
$origurl=~s|^/~|/priv/|; |
$origurl=~s|^/~|/priv/|; |
my $timestamp = time; |
my $timestamp = time; |
foreach my $datum (\$color,\$function,\$topic,\$component_help,\$faq, |
foreach my $datum (\$topic,\$component_help,\$faq,\$bug,\$origurl) { |
\$bug,\$origurl) { |
|
$$datum = &escape($$datum); |
$$datum = &escape($$datum); |
} |
} |
if (!$stayOnPage) { |
if (!$stayOnPage) { |
Line 730 sub help_open_menu {
|
Line 729 sub help_open_menu {
|
} else { |
} else { |
$link = "javascript:helpMenu('display')"; |
$link = "javascript:helpMenu('display')"; |
} |
} |
my $banner_link = "/adm/helpmenu?page=banner&color=$color&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage"; |
my $banner_link = "/adm/helpmenu?page=banner&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage"; |
my $details_link = "/adm/helpmenu?page=body&color=$color&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp"; |
my $details_link = "/adm/helpmenu?page=body&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp"; |
my $template; |
my $template; |
if ($text ne "") { |
if ($text ne "") { |
$template .= |
$template .= |
Line 2725 Returns: value of designparamter $which
|
Line 2724 Returns: value of designparamter $which
|
|
|
=cut |
=cut |
|
|
|
|
############################################## |
############################################## |
sub designparm { |
sub designparm { |
my ($which,$domain)=@_; |
my ($which,$domain)=@_; |
Line 2739 sub designparm {
|
Line 2739 sub designparm {
|
return '#CCCCCC'; |
return '#CCCCCC'; |
} |
} |
} |
} |
if ($env{'environment.color.'.$which}) { |
if (exists($env{'environment.color.'.$which})) { |
return $env{'environment.color.'.$which}; |
return $env{'environment.color.'.$which}; |
} |
} |
$domain=&determinedomain($domain); |
$domain=&determinedomain($domain); |
if ($designhash{$domain.'.'.$which}) { |
if (exists($designhash{$domain.'.'.$which})) { |
return $designhash{$domain.'.'.$which}; |
return $designhash{$domain.'.'.$which}; |
} else { |
} else { |
return $designhash{'default.'.$which}; |
return $designhash{'default.'.$which}; |
Line 2796 Inputs:
|
Line 2796 Inputs:
|
=item * $no_inline_link, if true and in remote mode, don't show the |
=item * $no_inline_link, if true and in remote mode, don't show the |
'Switch To Inline Menu' link |
'Switch To Inline Menu' link |
|
|
|
|
=back |
=back |
|
|
Returns: A uniform header for LON-CAPA web pages. |
Returns: A uniform header for LON-CAPA web pages. |
Line 2867 sub bodytag {
|
Line 2866 sub bodytag {
|
return $bodytag; |
return $bodytag; |
} |
} |
|
|
|
my $name = &plainname($env{'user.name'},$env{'user.domain'}); |
|
|
my $roleinfo=(<<ENDROLE); |
my $roleinfo=(<<ENDROLE); |
<td class="LC_title_bar_who"> |
<td class="LC_title_bar_who"> |
<div class="LC_title_bar_name"> |
<div class="LC_title_bar_name"> |
$env{'environment.firstname'} |
$name |
$env{'environment.middlename'} |
|
$env{'environment.lastname'} |
|
$env{'environment.generation'} |
|
|
|
</div> |
</div> |
<div class="LC_title_bar_role"> |
<div class="LC_title_bar_role"> |
Line 2926 ENDROLE
|
Line 2922 ENDROLE
|
$lastitem = $thisdisfn; |
$lastitem = $thisdisfn; |
} |
} |
$titleinfo = |
$titleinfo = |
&Apache::loncommon::help_open_menu('','','','',3,'Authoring'). |
&Apache::loncommon::help_open_menu('','',3,'Authoring'). |
'<b>Construction Space</b>: '. |
'<b>Construction Space</b>: '. |
'<form name="dirs" method="post" action="'.$formaction |
'<form name="dirs" method="post" action="'.$formaction |
.'" target="_top"><tt><b>' |
.'" target="_top"><tt><b>' |
Line 3107 sub standard_css {
|
Line 3103 sub standard_css {
|
my $link = &designparm($function.'.link', $domain); |
my $link = &designparm($function.'.link', $domain); |
|
|
my $sans = 'Arial,Helvetica,sans-serif'; |
my $sans = 'Arial,Helvetica,sans-serif'; |
|
my $mono = 'monospace'; |
my $data_table_head = $tabbg; |
my $data_table_head = $tabbg; |
my $data_table_light = '#EEEEEE'; |
my $data_table_light = '#EEEEEE'; |
my $data_table_dark = '#DDD'; |
my $data_table_dark = '#DDD'; |
Line 3119 sub standard_css {
|
Line 3116 sub standard_css {
|
my $mail_replied_hover = '#888855'; |
my $mail_replied_hover = '#888855'; |
my $mail_other = '#99BBBB'; |
my $mail_other = '#99BBBB'; |
my $mail_other_hover = '#669999'; |
my $mail_other_hover = '#669999'; |
|
my $table_header = '#DDDDDD'; |
|
|
|
my $border = ($env{'browser.type'} eq 'explorer') ? '0px 2px 0px 2px' |
|
: '0px 3px 0px 4px'; |
return <<END; |
return <<END; |
h1, h2, h3, th { font-family: $sans } |
h1, h2, h3, th { font-family: $sans } |
a:focus { color: red; background: yellow } |
a:focus { color: red; background: yellow } |
Line 3127 table.thinborder { border-collapse: coll
|
Line 3127 table.thinborder { border-collapse: coll
|
table.thinborder tr th, table.thinborder tr td { border-style: solid; border-width: 1px} |
table.thinborder tr th, table.thinborder tr td { border-style: solid; border-width: 1px} |
form, .inline { display: inline; } |
form, .inline { display: inline; } |
.center { text-align: center; } |
.center { text-align: center; } |
.LC_filename {font-family: monospace;} |
.LC_filename {font-family: $mono;} |
.LC_error { |
.LC_error { |
color: red; |
color: red; |
font-size: larger; |
font-size: larger; |
} |
} |
|
.LC_warning { |
|
color: red; |
|
} |
.LC_success { |
.LC_success { |
color: green; |
color: green; |
} |
} |
|
|
table#LC_top_nav, table#LC_menubuttons, table#LC_nav_location { |
table#LC_top_nav, table#LC_menubuttons { |
width: 100%; |
|
background: $pgbg; |
|
border: 0px; |
|
border-spacing: 2px 2px; |
|
padding: 0px; |
|
margin: 0px; |
|
border-collapse: separate; |
|
} |
|
table#LC_title_bar { |
|
width: 100%; |
width: 100%; |
border: 0; |
|
border-spacing: 0px 0px; |
|
padding: 0px 2px 0px 2px; |
|
background: $pgbg; |
background: $pgbg; |
font-family: $sans; |
border: 2px; |
border-collapse: separate; |
border-collapse: separate; |
|
padding: 0px; |
} |
} |
table#LC_breadcrumbs { |
|
|
table#LC_title_bar, table.LC_breadcrumbs, table#LC_nav_location, |
|
table#LC_title_bar.LC_with_remote { |
width: 100%; |
width: 100%; |
border: 0; |
border-color: $pgbg; |
border-spacing: 0px; |
border-style: solid; |
padding: 0px 2px 0px 2px; |
border-width: $border; |
|
|
background: $pgbg; |
background: $pgbg; |
font-family: $sans; |
font-family: $sans; |
border-collapse: separate; |
border-collapse: collapse; |
|
padding: 0px; |
} |
} |
table#LC_title_bar.LC_with_remote { |
|
|
table.LC_docs_path { |
width: 100%; |
width: 100%; |
border: 0; |
border: 0; |
border-spacing: 0; |
|
background: $pgbg; |
background: $pgbg; |
font-family: $sans; |
font-family: $sans; |
border-collapse: collapse; |
border-collapse: collapse; |
|
padding: 0px; |
} |
} |
|
|
table#LC_title_bar td { |
table#LC_title_bar td { |
padding: 3px; |
|
background: $tabbg; |
background: $tabbg; |
} |
} |
table#LC_title_bar td.LC_title_bar_who { |
table#LC_title_bar td.LC_title_bar_who { |
Line 3207 table#LC_menubuttons img, table#LC_menub
|
Line 3204 table#LC_menubuttons img, table#LC_menub
|
} |
} |
table#LC_top_nav td { |
table#LC_top_nav td { |
background: $tabbg; |
background: $tabbg; |
|
border: 0px; |
|
font-size: small; |
} |
} |
table#LC_top_nav td a, div#LC_top_nav a { |
table#LC_top_nav td a, div#LC_top_nav a { |
color: $font; |
color: $font; |
Line 3215 table#LC_top_nav td a, div#LC_top_nav a
|
Line 3214 table#LC_top_nav td a, div#LC_top_nav a
|
table#LC_top_nav td.LC_top_nav_logo { |
table#LC_top_nav td.LC_top_nav_logo { |
background: $tabbg; |
background: $tabbg; |
text-align: right; |
text-align: right; |
|
white-space: nowrap; |
|
font-weight: bold; |
} |
} |
table#LC_breadcrumbs td { |
table#LC_top_nav td.LC_top_nav_logo img { |
|
margin-left: 0.2em; |
|
vertical-align: bottom; |
|
} |
|
table.LC_breadcrumbs td, table.LC_docs_path td { |
background: $tabbg; |
background: $tabbg; |
color: $font; |
color: $font; |
font-family: $sans; |
font-family: $sans; |
font-size: smaller; |
font-size: smaller; |
} |
} |
table#LC_breadcrumbs td.LC_breadcrumb_component { |
table.LC_breadcrumbs td.LC_breadcrumbs_component, |
|
table.LC_docs_path td.LC_docs_path_component { |
background: $tabbg; |
background: $tabbg; |
color: $font; |
color: $font; |
font-family: $sans; |
font-family: $sans; |
Line 3257 td.LC_menubuttons_img {
|
Line 3263 td.LC_menubuttons_img {
|
|
|
table.LC_data_table, table.LC_mail_list { |
table.LC_data_table, table.LC_mail_list { |
border: 1px solid #000000; |
border: 1px solid #000000; |
border-collapse: seperate; |
border-collapse: separate; |
} |
} |
table.LC_data_table tr th, table.LC_calendar tr th, table.LC_mail_list tr th { |
table.LC_data_table tr th, table.LC_calendar tr th, table.LC_mail_list tr th { |
font-weight: bold; |
font-weight: bold; |
Line 3316 table.LC_mail_list tr.LC_mail_other:hove
|
Line 3322 table.LC_mail_list tr.LC_mail_other:hove
|
background-color: $mail_other_hover; |
background-color: $mail_other_hover; |
} |
} |
|
|
|
table#LC_portfolio_actions { |
|
width: auto; |
|
background: $pgbg; |
|
border: 0px; |
|
border-spacing: 2px 2px; |
|
padding: 0px; |
|
margin: 0px; |
|
border-collapse: separate; |
|
} |
|
table#LC_portfolio_actions td.LC_label { |
|
background: $tabbg; |
|
text-align: right; |
|
} |
|
table#LC_portfolio_actions td.LC_value { |
|
background: $tabbg; |
|
} |
|
|
|
table#LC_cstr_controls { |
|
width: 100%; |
|
border-collapse: collapse; |
|
} |
|
table#LC_cstr_controls tr td { |
|
border: 4px solid $pgbg; |
|
padding: 4px; |
|
text-align: center; |
|
background: $tabbg; |
|
} |
|
table#LC_cstr_controls tr th { |
|
border: 4px solid $pgbg; |
|
background: $table_header; |
|
text-align: center; |
|
font-family: $sans; |
|
font-size: smaller; |
|
} |
|
|
|
table#LC_browser { |
|
|
|
} |
|
table#LC_browser tr th { |
|
background: $table_header; |
|
} |
|
table#LC_browser tr td { |
|
padding: 2px; |
|
} |
|
table#LC_browser tr.LC_browser_file, |
|
table#LC_browser tr.LC_browser_file_published { |
|
background: #CCFF88; |
|
} |
|
table#LC_browser tr.LC_browser_file_locked, |
|
table#LC_browser tr.LC_browser_file_unpublished { |
|
background: #FFAA99; |
|
} |
|
table#LC_browser tr.LC_browser_file_obsolete { |
|
background: #AAAAAA; |
|
} |
|
table#LC_browser tr.LC_browser_file_modified { |
|
background: #FFFF77; |
|
} |
|
table#LC_browser tr.LC_browser_folder { |
|
background: #CCCCFF; |
|
} |
|
span.LC_current_location { |
|
font-size: x-large; |
|
background: $pgbg; |
|
} |
|
|
|
span.LC_parm_menu_item { |
|
font-size: larger; |
|
font-family: $sans; |
|
} |
|
span.LC_parm_scope_all { |
|
color: red; |
|
} |
|
span.LC_parm_scope_folder { |
|
color: green; |
|
} |
|
span.LC_parm_scope_resource { |
|
color: orange; |
|
} |
|
span.LC_parm_part { |
|
color: blue; |
|
} |
|
span.LC_parm_folder, span.LC_parm_symb { |
|
font-size: x-small; |
|
font-family: $mono; |
|
color: #AAAAAA; |
|
} |
|
|
|
td.LC_parm_overview_level_menu, td.LC_parm_overview_map_menu, |
|
td.LC_parm_overview_parm_selectors, td.LC_parm_overview_parm_restrictions { |
|
border: 1px solid black; |
|
border-collapse: collapse; |
|
} |
|
table.LC_parm_overview_restrictions td { |
|
border-width: 1px 4px 1px 4px; |
|
border-style: solid; |
|
border-color: $pgbg; |
|
text-align: center; |
|
} |
|
table.LC_parm_overview_restrictions th { |
|
background: $tabbg; |
|
border-width: 1px 4px 1px 4px; |
|
border-style: solid; |
|
border-color: $pgbg; |
|
} |
|
table#LC_helpmenu { |
|
border: 0px; |
|
height: 55px; |
|
border-spacing: 0px; |
|
} |
|
|
|
table#LC_helpmenu fieldset legend { |
|
font-size: larger; |
|
font-weight: bold; |
|
} |
|
table#LC_helpmenu_links { |
|
width: 100%; |
|
border: 1px solid black; |
|
background: $pgbg; |
|
padding: 0px; |
|
border-spacing: 1px; |
|
} |
|
table#LC_helpmenu_links tr td { |
|
padding: 1px; |
|
background: $tabbg; |
|
text-align: center; |
|
font-weight: bold; |
|
} |
|
|
|
table#LC_helpmenu_links a:link, table#LC_helpmenu_links a:visited, |
|
table#LC_helpmenu_links a:active { |
|
text-decoration: none; |
|
color: $font; |
|
} |
|
table#LC_helpmenu_links a:hover { |
|
text-decoration: underline; |
|
color: $vlink; |
|
} |
|
|
END |
END |
} |
} |
Line 3353 sub headtag {
|
Line 3497 sub headtag {
|
my $function = $args->{'function'} || &get_users_function(); |
my $function = $args->{'function'} || &get_users_function(); |
my $domain = $args->{'domain'} || &determinedomain(); |
my $domain = $args->{'domain'} || &determinedomain(); |
my $bgcolor = $args->{'bgcolor'} || &designparm($function.'.pgbg',$domain); |
my $bgcolor = $args->{'bgcolor'} || &designparm($function.'.pgbg',$domain); |
my $url = join(':',$env{'user.name'},$env{'user.domain'}, |
my $url = join(':',$env{'user.name'},$env{'user.domain'},time(), |
$env{'environment.color.timestamp'}, |
#$env{'environment.color.timestamp'}, |
$function,$domain,$bgcolor); |
$function,$domain,$bgcolor); |
|
|
$url = '/adm/css/'.&escape($url).'.css'; |
$url = '/adm/css/'.&escape($url).'.css'; |
|
|
my $result = |
my $result = |
'<head>'. |
'<head>'. |
'<link rel="stylesheet" type="text/css" href="'.$url.'" />'. |
|
&font_settings(). |
&font_settings(). |
&Apache::lonhtmlcommon::htmlareaheaders(); |
&Apache::lonhtmlcommon::htmlareaheaders(); |
|
|
Line 3370 sub headtag {
|
Line 3513 sub headtag {
|
} |
} |
|
|
if (ref($args->{'redirect'})) { |
if (ref($args->{'redirect'})) { |
my ($time,$url) = @{$args->{'redirect'}}; |
my ($time,$url,$inhibit_continue) = @{$args->{'redirect'}}; |
$url = &Apache::lonenc::check_encrypt($url); |
$url = &Apache::lonenc::check_encrypt($url); |
$env{'internal.head.redirect'} = $url; |
if (!$inhibit_continue) { |
|
$env{'internal.head.redirect'} = $url; |
|
} |
$result.=<<ADDMETA |
$result.=<<ADDMETA |
<meta http-equiv="pragma" content="no-cache" /> |
<meta http-equiv="pragma" content="no-cache" /> |
<meta http-equiv="Refresh" content="$time; url=$url" /> |
<meta http-equiv="Refresh" content="$time; url=$url" /> |
Line 3382 ADDMETA
|
Line 3527 ADDMETA
|
$title = 'The LearningOnline Network with CAPA'; |
$title = 'The LearningOnline Network with CAPA'; |
} |
} |
|
|
$result .= '<title> LON-CAPA '.&mt($title).'</title>'.$head_extra; |
$result .= '<title> LON-CAPA '.&mt($title).'</title>' |
|
.'<link rel="stylesheet" type="text/css" href="'.$url.'" />' |
|
.$head_extra; |
return $result; |
return $result; |
} |
} |
|
|
Line 3474 Returns a uniform complete <head>..</hea
|
Line 3621 Returns a uniform complete <head>..</hea
|
|
|
Inputs: $title - optional title for the page |
Inputs: $title - optional title for the page |
$head_extra - optional extra HTML to put inside the <head> |
$head_extra - optional extra HTML to put inside the <head> |
|
|
=back |
=back |
|
|
=cut |
=cut |
Line 3587 Inputs: $args - additional optio
|
Line 3735 Inputs: $args - additional optio
|
a html attribute |
a html attribute |
frameset -> if true will start with a <frameset> |
frameset -> if true will start with a <frameset> |
rather than <body> |
rather than <body> |
=back |
|
|
|
=cut |
=cut |
|
|
Line 3682 sub simple_error_page {
|
Line 3829 sub simple_error_page {
|
my $row_count; |
my $row_count; |
sub start_data_table { |
sub start_data_table { |
undef($row_count); |
undef($row_count); |
return '<table class="LC_data_table">'; |
return '<table class="LC_data_table">'."\n"; |
} |
} |
|
|
sub end_data_table { |
sub end_data_table { |
undef($row_count); |
undef($row_count); |
return '</table>'; |
return '</table>'."\n";; |
} |
} |
|
|
sub start_data_table_row { |
sub start_data_table_row { |
$row_count++; |
$row_count++; |
return '<tr '.(($row_count % 2)?'':'class="LC_even_row"').'>'; |
return '<tr '.(($row_count % 2)?'':'class="LC_even_row"').'>'."\n";; |
} |
} |
|
|
sub end_data_table_row { |
sub end_data_table_row { |
return '</tr>'; |
return '</tr>'."\n";; |
} |
} |
|
|
sub start_data_table_header_row { |
sub start_data_table_header_row { |
return '<tr class="LC_header_row">'; |
return '<tr class="LC_header_row">'."\n";; |
} |
} |
|
|
sub end_data_table_header_row { |
sub end_data_table_header_row { |
return '</tr>'; |
return '</tr>'."\n";; |
} |
} |
} |
} |
|
|
Line 3712 sub simple_error_page {
|
Line 3859 sub simple_error_page {
|
|
|
=pod |
=pod |
|
|
=over 4 |
=item * &get_users_function() |
|
|
=item get_users_function |
|
|
|
Used by &bodytag to determine the current users primary role. |
Used by &bodytag to determine the current users primary role. |
Returns either 'student','coordinator','admin', or 'author'. |
Returns either 'student','coordinator','admin', or 'author'. |
Line 3741 sub get_users_function {
|
Line 3886 sub get_users_function {
|
|
|
=pod |
=pod |
|
|
=item check_user_status |
=item * &check_user_status |
|
|
Determines current status of supplied role for a |
Determines current status of supplied role for a |
specific user. Roles can be active, previous or future. |
specific user. Roles can be active, previous or future. |
Line 3756 role status: active, previous or future.
|
Line 3901 role status: active, previous or future.
|
=cut |
=cut |
|
|
sub check_user_status { |
sub check_user_status { |
my ($udom,$uname,$cdom,$crs,$role,$secgrp) = @_; |
my ($udom,$uname,$cdom,$crs,$role,$sec) = @_; |
my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname); |
my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname); |
my @uroles = keys %userinfo; |
my @uroles = keys %userinfo; |
my $srchstr; |
my $srchstr; |
my $active_chk = 'none'; |
my $active_chk = 'none'; |
|
my $now = time; |
if (@uroles > 0) { |
if (@uroles > 0) { |
if (($role eq 'cc') || ($secgrp eq '') || (!defined($secgrp))) { |
if (($role eq 'cc') || ($sec eq '') || (!defined($sec))) { |
$srchstr = '/'.$cdom.'/'.$crs.'_'.$role; |
$srchstr = '/'.$cdom.'/'.$crs.'_'.$role; |
} else { |
} else { |
$srchstr = '/'.$cdom.'/'.$crs.'/'.$secgrp.'_'.$role; } |
$srchstr = '/'.$cdom.'/'.$crs.'/'.$sec.'_'.$role; |
if (grep/^$srchstr$/,@uroles) { |
} |
|
if (grep/^\Q$srchstr\E$/,@uroles) { |
my $role_end = 0; |
my $role_end = 0; |
my $role_start = 0; |
my $role_start = 0; |
$active_chk = 'active'; |
$active_chk = 'active'; |
if ($userinfo{$srchstr} =~ m/^($role)_(\d+)/) { |
if ($userinfo{$srchstr} =~ m/^\Q$role\E_(\d+)/) { |
$role_end = $2; |
$role_end = $1; |
if ($userinfo{$srchstr} =~ m/^($role)_($role_end)_(\d+)$/) { |
if ($userinfo{$srchstr} =~ m/^\Q$role\E_\Q$role_end\E_(\d+)$/) { |
$role_start = $3; |
$role_start = $1; |
} |
} |
} |
} |
if ($role_start > 0) { |
if ($role_start > 0) { |
if (time < $role_start) { |
if ($now < $role_start) { |
$active_chk = 'future'; |
$active_chk = 'future'; |
} |
} |
} |
} |
if ($role_end > 0) { |
if ($role_end > 0) { |
if (time > $role_end) { |
if ($now > $role_end) { |
$active_chk = 'previous'; |
$active_chk = 'previous'; |
} |
} |
} |
} |
Line 3795 sub check_user_status {
|
Line 3942 sub check_user_status {
|
|
|
=pod |
=pod |
|
|
=item get_sections |
=item * &get_sections() |
|
|
Determines all the sections for a course including |
Determines all the sections for a course including |
sections with students and sections containing other roles. |
sections with students and sections containing other roles. |
Line 3856 sub get_sections {
|
Line 4003 sub get_sections {
|
############################################### |
############################################### |
|
|
=pod |
=pod |
|
|
=item get_course_users |
=item * &get_course_users() |
|
|
Retrieves usernames:domains for users in the specified course |
Retrieves usernames:domains for users in the specified course |
with specific role(s), and access status. |
with specific role(s), and access status. |
|
|
Line 3881 Entries for end, start, section and stat
|
Line 4028 Entries for end, start, section and stat
|
of the possibility of multiple values for non-student roles. |
of the possibility of multiple values for non-student roles. |
|
|
=cut |
=cut |
|
|
############################################### |
############################################### |
|
|
sub get_course_users { |
sub get_course_users { |
my ($cdom,$cnum,$types,$roles,$sections,$users,$userdata) = @_; |
my ($cdom,$cnum,$types,$roles,$sections,$users,$userdata) = @_; |
my %idx = (); |
my %idx = (); |
Line 3902 sub get_course_users {
|
Line 4049 sub get_course_users {
|
my $now = time; |
my $now = time; |
foreach my $student (keys(%{$classlist})) { |
foreach my $student (keys(%{$classlist})) { |
my $match = 0; |
my $match = 0; |
|
my $secmatch = 0; |
if ((ref($sections) eq 'ARRAY') && (@{$sections} > 0)) { |
if ((ref($sections) eq 'ARRAY') && (@{$sections} > 0)) { |
unless(grep(/^\Q$$classlist{$student}[$idx{section}]\E$/, |
if (grep/^all$/,@{$sections}) { |
|
$secmatch = 1; |
|
} elsif ($$classlist{$student}[$idx{section}] eq '') { |
|
if (grep/^none$/,@{$sections}) { |
|
$secmatch = 1; |
|
} |
|
} else { |
|
if (grep(/^\Q$$classlist{$student}[$idx{section}]\E$/, |
@{$sections})) { |
@{$sections})) { |
next; |
$secmatch = 1; |
|
} |
} |
} |
|
if (!$secmatch) { |
|
next; |
|
} |
} |
} |
if (defined($$types{'active'})) { |
if (defined($$types{'active'})) { |
if ($$classlist{$student}[$idx{status}] eq 'Active') { |
if ($$classlist{$student}[$idx{status}] eq 'Active') { |
Line 3926 sub get_course_users {
|
Line 4085 sub get_course_users {
|
$match = 1; |
$match = 1; |
} |
} |
} |
} |
if ($match && defined($userdata)) { |
if ($match && ref($userdata) eq 'HASH') { |
$$userdata{$student} = $$classlist{$student}; |
$$userdata{$student} = $$classlist{$student}; |
} |
} |
} |
} |
} |
} |
if ((@{$roles} > 0) && (@{$roles} ne "st")) { |
if ((@{$roles} > 1) || ((@{$roles} == 1) && ($$roles[0] ne "st"))) { |
my @coursepersonnel = &Apache::lonnet::getkeys('nohist_userroles',$cdom,$cnum); |
my @coursepersonnel = &Apache::lonnet::getkeys('nohist_userroles',$cdom,$cnum); |
foreach my $person (@coursepersonnel) { |
foreach my $person (@coursepersonnel) { |
my $match = 0; |
my $match = 0; |
my ($role,$user) = ($person =~ /^([^:]*):([^:]+:[^:]+)/); |
my $secmatch = 0; |
|
my ($role,$user,$usec) = ($person =~ /^([^:]*):([^:]+:[^:]+):([^:]*)/); |
$user =~ s/:$//; |
$user =~ s/:$//; |
if (($role) && (grep(/^\Q$role\E$/,@{$roles}))) { |
if (($role) && (grep(/^\Q$role\E$/,@{$roles}))) { |
my ($uname,$udom,$usec) = split(/:/,$user); |
my ($uname,$udom) = split(/:/,$user); |
if ($usec ne '' && (ref($sections) eq 'ARRAY') && |
if ((ref($sections) eq 'ARRAY') && (@{$sections} > 0)) { |
@{$sections} > 0) { |
if (grep/^all$/,@{$sections}) { |
unless(grep(/^\Q$usec\E$/,@{$sections})) { |
$secmatch = 1; |
next; |
} elsif ($usec eq '') { |
} |
if (grep/^none$/,@{$sections}) { |
|
$secmatch = 1; |
|
} |
|
} else { |
|
if (grep(/^\Q$usec\E$/,@{$sections})) { |
|
$secmatch = 1; |
|
} |
|
} |
|
if (!$secmatch) { |
|
next; |
|
} |
} |
} |
if ($uname ne '' && $udom ne '') { |
if ($uname ne '' && $udom ne '') { |
my $status = &check_user_status($udom,$uname,$cdom,$cnum,$role); |
my $status = &check_user_status($udom,$uname,$cdom,$cnum,$role, |
|
$usec); |
foreach my $type (keys(%{$types})) { |
foreach my $type (keys(%{$types})) { |
if ($status eq $type) { |
if ($status eq $type) { |
@{$$users{$role}{$user}} = $type; |
@{$$users{$role}{$user}} = $type; |
$match = 1; |
$match = 1; |
} |
} |
} |
} |
if ($match && defined($userdata) && |
if (($match) && (ref($userdata) eq 'HASH') && |
!exists($$userdata{$uname.':'.$udom})) { |
(!exists($$userdata{$uname.':'.$udom}))) { |
&get_user_info($udom,$uname,\%idx,$userdata); |
&get_user_info($udom,$uname,\%idx,$userdata); |
} |
} |
} |
} |
Line 5043 sub course_type {
|
Line 5214 sub course_type {
|
if (!defined($cid)) { |
if (!defined($cid)) { |
$cid = $env{'request.course.id'}; |
$cid = $env{'request.course.id'}; |
} |
} |
if (defined($env{'course.'.$cid.'type'})) { |
if (defined($env{'course.'.$cid.'.type'})) { |
return $env{'course.'.$cid.'type'}; |
return $env{'course.'.$cid.'.type'}; |
} else { |
} else { |
return 'Course'; |
return 'Course'; |
} |
} |
} |
} |
|
|
|
sub group_term { |
|
my $crstype = &course_type(); |
|
my %names = ( |
|
'Course' => 'group', |
|
'Group' => 'team', |
|
); |
|
return $names{$crstype}; |
|
} |
|
|
sub icon { |
sub icon { |
my ($file)=@_; |
my ($file)=@_; |
my $curfext = (split(/\./,$file))[-1]; |
my $curfext = (split(/\./,$file))[-1]; |