version 1.415, 2006/07/03 00:46:00
|
version 1.440, 2006/08/02 20:18:10
|
Line 285 sub browser_and_searcher_javascript {
|
Line 285 sub browser_and_searcher_javascript {
|
} |
} |
url += 'element=' + elementname + ''; |
url += 'element=' + elementname + ''; |
var title = 'Browser'; |
var title = 'Browser'; |
var options = 'scrollbars=1,resizable=1,menubar=1,location=1'; |
var options = 'scrollbars=1,resizable=1,menubar=0,toolbar=1,location=1'; |
options += ',width=700,height=600'; |
options += ',width=700,height=600'; |
editbrowser = open(url,title,options,'1'); |
editbrowser = open(url,title,options,'1'); |
editbrowser.focus(); |
editbrowser.focus(); |
Line 306 sub browser_and_searcher_javascript {
|
Line 306 sub browser_and_searcher_javascript {
|
} |
} |
url += 'element=' + elementname + ''; |
url += 'element=' + elementname + ''; |
var title = 'Search'; |
var title = 'Search'; |
var options = 'scrollbars=1,resizable=1,menubar=0'; |
var options = 'scrollbars=1,resizable=1,menubar=0,toolbar=1,location=1'; |
options += ',width=700,height=600'; |
options += ',width=700,height=600'; |
editsearcher = open(url,title,options,'1'); |
editsearcher = open(url,title,options,'1'); |
editsearcher.focus(); |
editsearcher.focus(); |
Line 672 sub help_open_topic {
|
Line 672 sub help_open_topic {
|
{ |
{ |
$template .= |
$template .= |
"<table bgcolor='#3333AA' cellspacing='1' cellpadding='1' border='0'><tr>". |
"<table bgcolor='#3333AA' cellspacing='1' cellpadding='1' border='0'><tr>". |
"<td bgcolor='#5555FF'><a href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; |
"<td bgcolor='#5555FF'><a target=\"_top\" href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; |
} |
} |
|
|
# Add the graphic |
# Add the graphic |
my $title = &mt('Online Help'); |
my $title = &mt('Online Help'); |
my $helpicon=&lonhttpdurl("/adm/help/gif/smallHelp.gif"); |
my $helpicon=&lonhttpdurl("/adm/help/gif/smallHelp.gif"); |
$template .= <<"ENDTEMPLATE"; |
$template .= <<"ENDTEMPLATE"; |
<a href="$link" title="$title"><img src="$helpicon" border="0" alt="(Help: $topic)" /></a> |
<a target="_top" href="$link" title="$title"><img src="$helpicon" border="0" alt="(Help: $topic)" /></a> |
ENDTEMPLATE |
ENDTEMPLATE |
if ($text ne '') { $template.='</td></tr></table>' }; |
if ($text ne '') { $template.='</td></tr></table>' }; |
return $template; |
return $template; |
Line 706 sub helpLatexCheatsheet {
|
Line 706 sub helpLatexCheatsheet {
|
.'</td></tr></table>'; |
.'</td></tr></table>'; |
} |
} |
|
|
sub help_open_menu { |
sub general_help { |
my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text) = @_; |
my $helptopic='Student_Intro'; |
$text = "" if (not defined $text); |
if ($env{'request.role'}=~/^(ca|au)/) { |
$stayOnPage = 0 if (not defined $stayOnPage); |
$helptopic='Authoring_Intro'; |
if ($env{'browser.interface'} eq 'textual' || |
} elsif ($env{'request.role'}=~/^cc/) { |
$env{'environment.remote'} eq 'off' ) { |
$helptopic='Course_Coordination_Intro'; |
$stayOnPage=1; |
|
} |
} |
$width = 620 if (not defined $width); |
return $helptopic; |
$height = 600 if (not defined $height); |
} |
my $link=''; |
|
my $title = &mt('Get help'); |
sub update_help_link { |
|
my ($topic,$component_help,$faq,$bug,$stayOnPage) = @_; |
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 (\$topic,\$component_help,\$faq,\$bug,\$origurl) { |
foreach my $datum (\$topic,\$component_help,\$faq,\$bug,\$origurl) { |
$$datum = &escape($$datum); |
$$datum = &escape($$datum); |
} |
} |
if (!$stayOnPage) { |
|
$link = "javascript:helpMenu('open')"; |
|
} else { |
|
$link = "javascript:helpMenu('display')"; |
|
} |
|
my $banner_link = "/adm/helpmenu?page=banner&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&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp"; |
my $output .= <<"ENDOUTPUT"; |
my $template; |
<script type="text/javascript"> |
if ($text ne "") { |
// <!-- BEGIN LON-CAPA Internal |
$template .= |
banner_link = '$banner_link'; |
"<table bgcolor='#CC3300' cellspacing='1' cellpadding='1' border='0'><tr>". |
// END LON-CAPA Internal --> |
"<td bgcolor='#CC6600'><a href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; |
</script> |
|
ENDOUTPUT |
|
return $output; |
|
} |
|
|
|
# now just updates the help link and generates a blue icon |
|
sub help_open_menu { |
|
my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text) |
|
= @_; |
|
|
|
$stayOnPage = 0 if (not defined $stayOnPage); |
|
if ($env{'browser.interface'} eq 'textual' || |
|
$env{'environment.remote'} eq 'off' ) { |
|
$stayOnPage=1; |
} |
} |
|
my $output; |
|
if ($component_help) { |
|
if (!$text) { |
|
$output=&help_open_topic($component_help,undef,$stayOnPage, |
|
$width,$height); |
|
} else { |
|
my $help_text; |
|
$help_text=&unescape($topic); |
|
$output='<table><tr><td>'. |
|
&help_open_topic($component_help,$help_text,$stayOnPage, |
|
$width,$height).'</td></tr></table>'; |
|
} |
|
} |
|
my $banner_link = &update_help_link($topic,$component_help,$faq,$bug,$stayOnPage); |
|
return $output.$banner_link; |
|
} |
|
|
|
sub top_nav_help { |
|
my ($text) = @_; |
|
|
|
$text = &mt($text); |
|
|
|
my $stayOnPage = |
|
($env{'browser.interface'} eq 'textual' || |
|
$env{'environment.remote'} eq 'off' ); |
|
my $link= ($stayOnPage) ? "javascript:helpMenu('display')" |
|
: "javascript:helpMenu('open')"; |
|
my $banner_link = &update_help_link(undef,undef,undef,undef,$stayOnPage); |
|
|
|
my $title = &mt('Get help'); |
|
|
|
return <<"END"; |
|
$banner_link |
|
<a href="$link" title="$title">$text</a> |
|
END |
|
} |
|
|
|
sub help_menu_js { |
|
my ($text) = @_; |
|
|
|
my $stayOnPage = |
|
($env{'browser.interface'} eq 'textual' || |
|
$env{'environment.remote'} eq 'off' ); |
|
|
|
my $width = 620; |
|
my $height = 600; |
|
my $helptopic=&general_help(); |
|
my $details_link = '/adm/help/'.$helptopic.'.hlp'; |
my $nothing=&Apache::lonhtmlcommon::javascript_nothing(); |
my $nothing=&Apache::lonhtmlcommon::javascript_nothing(); |
my $helpicon=&lonhttpdurl("/adm/lonIcons/helpgateway.gif"); |
|
my $start_page = |
my $start_page = |
&Apache::loncommon::start_page('Help Menu', undef, |
&Apache::loncommon::start_page('Help Menu', undef, |
{'frameset' => 1, |
{'frameset' => 1, |
Line 750 sub help_open_menu {
|
Line 806 sub help_open_menu {
|
&Apache::loncommon::end_page({'frameset' => 1, |
&Apache::loncommon::end_page({'frameset' => 1, |
'js_ready' => 1,}); |
'js_ready' => 1,}); |
|
|
$template .= <<"ENDTEMPLATE"; |
my $template .= <<"ENDTEMPLATE"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <!-- BEGIN LON-CAPA Internal |
// <!-- BEGIN LON-CAPA Internal |
// <![CDATA[ |
// <![CDATA[ |
|
var banner_link = ''; |
function helpMenu(target) { |
function helpMenu(target) { |
var caller = this; |
var caller = this; |
if (target == 'open') { |
if (target == 'open') { |
Line 773 function helpMenu(target) {
|
Line 830 function helpMenu(target) {
|
return; |
return; |
} |
} |
function writeHelp(caller) { |
function writeHelp(caller) { |
caller.document.writeln('$start_page<frame name="bannerframe" src="$banner_link" /><frame name="bodyframe" src="$details_link" /> $end_page') |
caller.document.writeln('$start_page<frame name="bannerframe" src="'+banner_link+'" /><frame name="bodyframe" src="$details_link" /> $end_page') |
caller.document.close() |
caller.document.close() |
caller.focus() |
caller.focus() |
} |
} |
// ]]> |
// ]]> |
// END LON-CAPA Internal --> |
// END LON-CAPA Internal --> |
</script> |
</script> |
<a href="$link" title="$title"><img src="$helpicon" border="0" alt="(Help Menu)" /></a> |
|
ENDTEMPLATE |
ENDTEMPLATE |
if ($component_help) { |
|
if (!$text) { |
|
$template=&help_open_topic($component_help,undef,$stayOnPage, |
|
$width,$height).' '.$template; |
|
} else { |
|
my $help_text; |
|
$help_text=&unescape($topic); |
|
$template='<table><tr><td>'. |
|
&help_open_topic($component_help,$help_text,$stayOnPage, |
|
$width,$height).'</td><td>'.$template. |
|
'</td></tr></table>'; |
|
} |
|
} |
|
if ($text ne '') { $template.='</td></tr></table>' }; |
|
return $template; |
return $template; |
} |
} |
|
|
Line 830 sub help_open_bug {
|
Line 872 sub help_open_bug {
|
{ |
{ |
$template .= |
$template .= |
"<table bgcolor='#AA3333' cellspacing='1' cellpadding='1' border='0'><tr>". |
"<table bgcolor='#AA3333' cellspacing='1' cellpadding='1' border='0'><tr>". |
"<td bgcolor='#FF5555'><a href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; |
"<td bgcolor='#FF5555'><a target=\"_top\" href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; |
} |
} |
|
|
# Add the graphic |
# Add the graphic |
my $title = &mt('Report a Bug'); |
my $title = &mt('Report a Bug'); |
my $bugicon=&lonhttpdurl("/adm/lonMisc/smallBug.gif"); |
my $bugicon=&lonhttpdurl("/adm/lonMisc/smallBug.gif"); |
$template .= <<"ENDTEMPLATE"; |
$template .= <<"ENDTEMPLATE"; |
<a href="$link" title="$title"><img src="$bugicon" border="0" alt="(Bug: $topic)" /></a> |
<a target="_top" href="$link" title="$title"><img src="$bugicon" border="0" alt="(Bug: $topic)" /></a> |
ENDTEMPLATE |
ENDTEMPLATE |
if ($text ne '') { $template.='</td></tr></table>' }; |
if ($text ne '') { $template.='</td></tr></table>' }; |
return $template; |
return $template; |
Line 875 sub help_open_faq {
|
Line 917 sub help_open_faq {
|
{ |
{ |
$template .= |
$template .= |
"<table bgcolor='#337733' cellspacing='1' cellpadding='1' border='0'><tr>". |
"<table bgcolor='#337733' cellspacing='1' cellpadding='1' border='0'><tr>". |
"<td bgcolor='#448844'><a href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; |
"<td bgcolor='#448844'><a target=\"_top\" href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; |
} |
} |
|
|
# Add the graphic |
# Add the graphic |
my $title = &mt('View the FAQ'); |
my $title = &mt('View the FAQ'); |
my $faqicon=&lonhttpdurl("/adm/lonMisc/smallFAQ.gif"); |
my $faqicon=&lonhttpdurl("/adm/lonMisc/smallFAQ.gif"); |
$template .= <<"ENDTEMPLATE"; |
$template .= <<"ENDTEMPLATE"; |
<a href="$link" title="$title"><img src="$faqicon" border="0" alt="(FAQ: $topic)" /></a> |
<a target="_top" href="$link" title="$title"><img src="$faqicon" border="0" alt="(FAQ: $topic)" /></a> |
ENDTEMPLATE |
ENDTEMPLATE |
if ($text ne '') { $template.='</td></tr></table>' }; |
if ($text ne '') { $template.='</td></tr></table>' }; |
return $template; |
return $template; |
Line 1918 sub get_related_words {
|
Line 1960 sub get_related_words {
|
return (); |
return (); |
} |
} |
my @Words=(); |
my @Words=(); |
|
my $count=0; |
if (exists($thesaurus_db{$keyword})) { |
if (exists($thesaurus_db{$keyword})) { |
# The first element is the number of times |
# The first element is the number of times |
# the word appears. We do not need it now. |
# the word appears. We do not need it now. |
(undef,@Words) = (split(/:/,$thesaurus_db{$keyword})); |
my (undef,@RelatedWords) = (split(/:/,$thesaurus_db{$keyword})); |
for (my $i=0;$i<=$#Words;$i++) { |
my (undef,$mostfrequentcount)=split(/\,/,$RelatedWords[0]); |
($Words[$i],undef)= split(/\,/,$Words[$i]); |
my $threshold=$mostfrequentcount/10; |
|
foreach my $possibleword (@RelatedWords) { |
|
my ($word,$wordcount)=split(/\,/,$possibleword); |
|
if ($wordcount>$threshold) { |
|
push(@Words,$word); |
|
$count++; |
|
if ($count>10) { last; } |
|
} |
} |
} |
} |
} |
untie %thesaurus_db; |
untie %thesaurus_db; |
Line 2002 sub nickname {
|
Line 2052 sub nickname {
|
|
|
sub getnames { |
sub getnames { |
my ($uname,$udom)=@_; |
my ($uname,$udom)=@_; |
|
if ($udom eq 'public' && $uname eq 'public') { |
|
return ('lastname' => &mt('Public')); |
|
} |
my $id=$uname.':'.$udom; |
my $id=$uname.':'.$udom; |
my ($names,$cached)=&Apache::lonnet::is_cached_new('namescache',$id); |
my ($names,$cached)=&Apache::lonnet::is_cached_new('namescache',$id); |
if ($cached) { |
if ($cached) { |
Line 2822 sub bodytag {
|
Line 2875 sub bodytag {
|
'alink' => &designparm($function.'.alink',$domain), |
'alink' => &designparm($function.'.alink',$domain), |
'vlink' => &designparm($function.'.vlink',$domain), |
'vlink' => &designparm($function.'.vlink',$domain), |
'link' => &designparm($function.'.link',$domain),); |
'link' => &designparm($function.'.link',$domain),); |
@$addentries{keys(%design)} = @design{keys(%design)}; |
@design{keys(%$addentries)} = @$addentries{keys(%$addentries)}; |
|
|
# role and realm |
# role and realm |
my ($role,$realm) = split(/\./,$env{'request.role'},2); |
my ($role,$realm) = split(/\./,$env{'request.role'},2); |
Line 2839 sub bodytag {
|
Line 2892 sub bodytag {
|
} else { |
} else { |
$role = &Apache::lonnet::plaintext($role); |
$role = &Apache::lonnet::plaintext($role); |
} |
} |
|
|
if (!$realm) { $realm=' '; } |
if (!$realm) { $realm=' '; } |
# Set messages |
# Set messages |
my $messages=&domainlogo($domain); |
my $messages=&domainlogo($domain); |
Line 2846 sub bodytag {
|
Line 2900 sub bodytag {
|
my $lonhttpdPort=$Apache::lonnet::perlvar{'lonhttpdPort'}; |
my $lonhttpdPort=$Apache::lonnet::perlvar{'lonhttpdPort'}; |
if (!defined($lonhttpdPort)) { $lonhttpdPort='8080'; } |
if (!defined($lonhttpdPort)) { $lonhttpdPort='8080'; } |
|
|
my $extra_body_attr = &make_attr_string($forcereg,$addentries); |
my $extra_body_attr = &make_attr_string($forcereg,\%design); |
|
|
# construct main body tag |
# construct main body tag |
my $bodytag = "<body $extra_body_attr>". |
my $bodytag = "<body $extra_body_attr>". |
Line 2867 sub bodytag {
|
Line 2921 sub bodytag {
|
} |
} |
|
|
my $name = &plainname($env{'user.name'},$env{'user.domain'}); |
my $name = &plainname($env{'user.name'},$env{'user.domain'}); |
|
if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') { |
|
undef($role); |
|
} else { |
|
$name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); |
|
} |
|
|
my $roleinfo=(<<ENDROLE); |
my $roleinfo=(<<ENDROLE); |
<td class="LC_title_bar_who"> |
<td class="LC_title_bar_who"> |
Line 3107 sub standard_css {
|
Line 3166 sub standard_css {
|
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'; |
|
my $data_table_darker = '#CCC'; |
my $data_table_highlight = '#FFFF00'; |
my $data_table_highlight = '#FFFF00'; |
my $mail_new = '#FFBB77'; |
my $mail_new = '#FFBB77'; |
my $mail_new_hover = '#DD9955'; |
my $mail_new_hover = '#DD9955'; |
Line 3124 sub standard_css {
|
Line 3184 sub standard_css {
|
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 } |
table.thinborder { border-collapse: collapse; } |
table.thinborder { border-collapse: collapse; } |
table.thinborder tr th, table.thinborder tr td { border-style: solid; border-width: 1px} |
table.thinborder tr th { border-style: solid; border-width: 1px; background: $tabbg;} |
|
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: $mono;} |
.LC_filename {font-family: $mono;} |
Line 3138 form, .inline { display: inline; }
|
Line 3200 form, .inline { display: inline; }
|
.LC_success { |
.LC_success { |
color: green; |
color: green; |
} |
} |
|
.LC_icon { |
|
border: 0px; |
|
} |
|
|
table#LC_top_nav, table#LC_menubuttons { |
table#LC_top_nav, table#LC_menubuttons { |
width: 100%; |
width: 100%; |
Line 3175 table#LC_title_bar td {
|
Line 3240 table#LC_title_bar td {
|
table#LC_title_bar td.LC_title_bar_who { |
table#LC_title_bar td.LC_title_bar_who { |
background: $tabbg; |
background: $tabbg; |
color: $font; |
color: $font; |
font: medium $sans; |
font: small $sans; |
text-align: right; |
text-align: right; |
} |
} |
span.LC_title_bar_title { |
span.LC_title_bar_title { |
font: bold xx-large $sans; |
font: bold x-large $sans; |
} |
} |
table#LC_title_bar td.LC_title_bar_domain_logo { |
table#LC_title_bar td.LC_title_bar_domain_logo { |
background: $sidebg; |
background: $sidebg; |
Line 3213 table#LC_top_nav td a, div#LC_top_nav a
|
Line 3278 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: left; |
white-space: nowrap; |
white-space: nowrap; |
font-weight: bold; |
width: 31px; |
} |
} |
table#LC_top_nav td.LC_top_nav_logo img { |
table#LC_top_nav td.LC_top_nav_logo img { |
margin-left: 0.2em; |
border: 0px; |
vertical-align: bottom; |
vertical-align: bottom; |
} |
} |
|
table#LC_top_nav td.LC_top_nav_exit, |
|
table#LC_top_nav td.LC_top_nav_help { |
|
width: 2.0em; |
|
} |
table.LC_breadcrumbs td, table.LC_docs_path td { |
table.LC_breadcrumbs td, table.LC_docs_path td { |
background: $tabbg; |
background: $tabbg; |
color: $font; |
color: $font; |
Line 3261 td.LC_menubuttons_img {
|
Line 3330 td.LC_menubuttons_img {
|
font-weight: bold; |
font-weight: bold; |
} |
} |
|
|
|
table.LC_aboutme_port { |
|
border: 0px; |
|
border-collapse: collapse; |
|
border-spacing: 0px; |
|
} |
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: separate; |
border-collapse: separate; |
|
border-spacing: 1px; |
|
} |
|
.LC_data_table_dense { |
|
font-size: small; |
} |
} |
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; |
background-color: $data_table_head; |
background-color: $data_table_head; |
|
font-size: smaller; |
} |
} |
table.LC_data_table tr td { |
table.LC_data_table tr td, |
|
table.LC_aboutme_port tr td { |
background-color: $data_table_light; |
background-color: $data_table_light; |
|
padding: 2px; |
} |
} |
table.LC_data_table tr.LC_even_row td { |
table.LC_data_table tr.LC_even_row td, |
|
table.LC_aboutme_port tr.LC_even_row td { |
background-color: $data_table_dark; |
background-color: $data_table_dark; |
} |
} |
table.LC_data_table tr.LC_empty td { |
table.LC_data_table tr.LC_data_table_highlight td { |
|
background-color: $data_table_darker; |
|
} |
|
table.LC_data_table tr.LC_empty_row td { |
background-color: #FFFFFF; |
background-color: #FFFFFF; |
|
font-weight: bold; |
|
font-style: italic; |
|
text-align: center; |
|
padding: 8px; |
} |
} |
|
|
table.LC_calendar { |
table.LC_calendar { |
Line 3461 table#LC_helpmenu_links a:hover {
|
Line 3550 table#LC_helpmenu_links a:hover {
|
color: $vlink; |
color: $vlink; |
} |
} |
|
|
|
.LC_chrt_popup_exists { |
|
border: 1px solid #339933; |
|
margin: -1px; |
|
} |
|
.LC_chrt_popup_up { |
|
border: 1px solid yellow; |
|
margin: -1px; |
|
} |
|
.LC_chrt_popup { |
|
border: 1px solid #8888FF; |
|
background: #CCCCFF; |
|
} |
|
|
|
table.LC_pick_box { |
|
width: 100%; |
|
border-collapse: separate; |
|
background: white; |
|
border: 1px solid black; |
|
border-spacing: 1px; |
|
} |
|
table.LC_pick_box td.LC_pick_box_title { |
|
background: $tabbg; |
|
font-weight: bold; |
|
text-align: right; |
|
width: 184px; |
|
padding: 8px; |
|
} |
|
table.LC_pick_box td.LC_pick_box_separator { |
|
padding: 0px; |
|
height: 1px; |
|
background: black; |
|
} |
|
table.LC_pick_box td.LC_pick_box_submit { |
|
text-align: right; |
|
} |
|
|
|
table.LC_group_priv_box { |
|
background: white; |
|
border: 1px solid black; |
|
border-spacing: 1px; |
|
} |
|
table.LC_group_priv_box td.LC_pick_box_title { |
|
background: $tabbg; |
|
font-weight: bold; |
|
text-align: right; |
|
width: 184px; |
|
} |
|
table.LC_group_priv_box td.LC_groups_fixed { |
|
background: $data_table_light; |
|
text-align: center; |
|
} |
|
table.LC_group_priv_box td.LC_groups_optional { |
|
background: $data_table_dark; |
|
text-align: center; |
|
} |
|
table.LC_group_priv_box td.LC_groups_functionality { |
|
background: $data_table_darker; |
|
text-align: center; |
|
font-weight: bold; |
|
} |
|
table.LC_group_priv td { |
|
text-align: left; |
|
padding: 0px; |
|
} |
|
|
|
table.LC_notify_front_page { |
|
background: white; |
|
border: 1px solid black; |
|
padding: 8px; |
|
} |
|
table.LC_notify_front_page td { |
|
padding: 8px; |
|
} |
|
.LC_navbuttons { |
|
margin: 2ex 0ex 2ex 0ex; |
|
} |
|
.LC_topic_bar { |
|
font-family: $sans; |
|
font-weight: bold; |
|
width: 100%; |
|
background: $tabbg; |
|
vertical-align: middle; |
|
margin: 2ex 0ex 2ex 0ex; |
|
} |
|
.LC_topic_bar span { |
|
vertical-align: middle; |
|
} |
|
.LC_topic_bar img { |
|
vertical-align: bottom; |
|
} |
|
table.LC_course_group_status { |
|
margin: 20px; |
|
} |
|
table.LC_status_selector td { |
|
vertical-align: top; |
|
text-align: center; |
|
padding: 4px; |
|
} |
|
table.LC_descriptive_input td.LC_description { |
|
vertical-align: top; |
|
text-align: right; |
|
font-weight: bold; |
|
} |
|
|
END |
END |
} |
} |
|
|
Line 3499 sub headtag {
|
Line 3692 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'},time(), |
my $url = join(':',$env{'user.name'},$env{'user.domain'}, |
#$env{'environment.color.timestamp'}, |
#time(), |
|
$env{'environment.color.timestamp'}, |
$function,$domain,$bgcolor); |
$function,$domain,$bgcolor); |
|
|
$url = '/adm/css/'.&escape($url).'.css'; |
$url = '/adm/css/'.&escape($url).'.css'; |
Line 3513 sub headtag {
|
Line 3707 sub headtag {
|
if ($args->{'force_register'}) { |
if ($args->{'force_register'}) { |
$result .= &Apache::lonmenu::registerurl(1); |
$result .= &Apache::lonmenu::registerurl(1); |
} |
} |
|
if (!$args->{'no_nav_bar'} |
|
&& !$args->{'only_body'} |
|
&& !$args->{'frameset'}) { |
|
$result .= &help_menu_js(); |
|
} |
|
|
if (ref($args->{'redirect'})) { |
if (ref($args->{'redirect'})) { |
my ($time,$url,$inhibit_continue) = @{$args->{'redirect'}}; |
my ($time,$url,$inhibit_continue) = @{$args->{'redirect'}}; |
Line 3682 sub start_page {
|
Line 3881 sub start_page {
|
#&Apache::lonnet::logthis("start_page ".join(':',caller(0))); |
#&Apache::lonnet::logthis("start_page ".join(':',caller(0))); |
my %head_args; |
my %head_args; |
foreach my $arg ('redirect','force_register','domain','function', |
foreach my $arg ('redirect','force_register','domain','function', |
'bgcolor') { |
'bgcolor','frameset','no_nav_bar','only_body') { |
if (defined($args->{$arg})) { |
if (defined($args->{$arg})) { |
$head_args{$arg} = $args->{$arg}; |
$head_args{$arg} = $args->{$arg}; |
} |
} |
Line 3830 sub simple_error_page {
|
Line 4029 sub simple_error_page {
|
{ |
{ |
my $row_count; |
my $row_count; |
sub start_data_table { |
sub start_data_table { |
|
my ($add_class) = @_; |
|
my $css_class = (join(' ','LC_data_table',$add_class)); |
undef($row_count); |
undef($row_count); |
return '<table class="LC_data_table">'."\n"; |
return '<table class="'.$css_class.'">'."\n"; |
} |
} |
|
|
sub end_data_table { |
sub end_data_table { |
Line 3840 sub simple_error_page {
|
Line 4041 sub simple_error_page {
|
} |
} |
|
|
sub start_data_table_row { |
sub start_data_table_row { |
|
my ($add_class) = @_; |
$row_count++; |
$row_count++; |
return '<tr '.(($row_count % 2)?'':'class="LC_even_row"').'>'."\n";; |
my $css_class = ($row_count % 2)?'':'LC_even_row'; |
|
$css_class = (join(' ',$css_class,$add_class)); |
|
return '<tr class="'.$css_class.'">'."\n";; |
} |
} |
|
|
sub end_data_table_row { |
sub end_data_table_row { |
return '</tr>'."\n";; |
return '</tr>'."\n";; |
} |
} |
|
|
|
sub start_data_table_empty_row { |
|
$row_count++; |
|
return '<tr class="LC_empty_row" >'."\n";; |
|
} |
|
|
|
sub end_data_table_empty_row { |
|
return '</tr>'."\n";; |
|
} |
|
|
sub start_data_table_header_row { |
sub start_data_table_header_row { |
return '<tr class="LC_header_row">'."\n";; |
return '<tr class="LC_header_row">'."\n";; |
} |
} |
Line 3948 sub check_user_status {
|
Line 4161 sub check_user_status {
|
|
|
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. |
Incoming parameters: domain, course number, |
Incoming parameters: |
reference to array containing roles for which sections should |
|
be gathered (optional). If the third argument is undefined, |
1. domain |
sections are gathered for any role. |
2. course number |
|
3. reference to array containing roles for which sections should |
|
be gathered (optional). |
|
4. reference to array containing status types for which sections |
|
should be gathered (optional). |
|
|
|
If the third argument is undefined, sections are gathered for any role. |
|
If the fourth argument is undefined, sections are gathered for any status. |
|
Permissible values are 'active' or 'future' or 'previous'. |
|
|
Returns section hash (keys are section IDs, values are |
Returns section hash (keys are section IDs, values are |
number of users in each section), subject to the |
number of users in each section), subject to the |
optional roles filter. |
optional roles filter, optional status filter |
|
|
=cut |
=cut |
|
|
############################################### |
############################################### |
sub get_sections { |
sub get_sections { |
my ($cdom,$cnum,$possible_roles) = @_; |
my ($cdom,$cnum,$possible_roles,$possible_status) = @_; |
if (!defined($cdom) || !defined($cnum)) { |
if (!defined($cdom) || !defined($cnum)) { |
my $cid = $env{'request.course.id'}; |
my $cid = $env{'request.course.id'}; |
|
|
Line 3972 sub get_sections {
|
Line 4193 sub get_sections {
|
} |
} |
|
|
my %sectioncount; |
my %sectioncount; |
|
my $now = time; |
|
|
if (!defined($possible_roles) || (grep(/^st$/,@$possible_roles))) { |
if (!defined($possible_roles) || (grep(/^st$/,@$possible_roles))) { |
my ($classlist) = &Apache::loncoursedata::get_classlist($cdom,$cnum); |
my ($classlist) = &Apache::loncoursedata::get_classlist($cdom,$cnum); |
my $sec_index = &Apache::loncoursedata::CL_SECTION(); |
my $sec_index = &Apache::loncoursedata::CL_SECTION(); |
my $status_index = &Apache::loncoursedata::CL_STATUS(); |
my $status_index = &Apache::loncoursedata::CL_STATUS(); |
|
my $start_index = &Apache::loncoursedata::CL_START(); |
|
my $end_index = &Apache::loncoursedata::CL_END(); |
|
my $status; |
while (my ($student,$data) = each(%$classlist)) { |
while (my ($student,$data) = each(%$classlist)) { |
my ($section,$status) = ($data->[$sec_index], |
my ($section,$stu_status,$start,$end) = ($data->[$sec_index], |
$data->[$status_index]); |
$data->[$status_index], |
unless ($section eq '-1' || $section =~ /^\s*$/) { |
$data->[$start_index], |
$sectioncount{$section}++; |
$data->[$end_index]); |
|
if ($stu_status eq 'Active') { |
|
$status = 'active'; |
|
} elsif ($end < $now) { |
|
$status = 'previous'; |
|
} elsif ($start > $now) { |
|
$status = 'future'; |
|
} |
|
if ($section ne '-1' && $section !~ /^\s*$/) { |
|
if ((!defined($possible_status)) || (($status ne '') && |
|
(grep/^\Q$status\E$/,@{$possible_status}))) { |
|
$sectioncount{$section}++; |
|
} |
} |
} |
} |
} |
} |
} |
Line 3990 sub get_sections {
|
Line 4227 sub get_sections {
|
if ($user !~ /^(\w{2})/) { next; } |
if ($user !~ /^(\w{2})/) { next; } |
my ($role) = ($user =~ /^(\w{2})/); |
my ($role) = ($user =~ /^(\w{2})/); |
if ($possible_roles && !(grep(/^$role$/,@$possible_roles))) { next; } |
if ($possible_roles && !(grep(/^$role$/,@$possible_roles))) { next; } |
my $section; |
my ($section,$status); |
if ($role eq 'cr' && |
if ($role eq 'cr' && |
$user =~ m-^$role/[^/]*/[^/]*/[^/]*:[^:]*:[^:]*:(\w+)-) { |
$user =~ m-^$role/[^/]*/[^/]*/[^/]*:[^:]*:[^:]*:(\w+)-) { |
$section=$1; |
$section=$1; |
} |
} |
if ($user =~ /^$role:[^:]*:[^:]*:(\w+)/) { $section=$1; } |
if ($user =~ /^$role:[^:]*:[^:]*:(\w+)/) { $section=$1; } |
if (!defined($section) || $section eq '-1') { next; } |
if (!defined($section) || $section eq '-1') { next; } |
$sectioncount{$section}++; |
my ($end,$start) = ($courseroles{$user} =~ /^([^:]*):([^:]*)$/); |
|
if ($end == -1 && $start == -1) { |
|
next; #deleted role |
|
} |
|
if (!defined($possible_status)) { |
|
$sectioncount{$section}++; |
|
} else { |
|
if ((!$end || $end >= $now) && (!$start || $start <= $now)) { |
|
$status = 'active'; |
|
} elsif ($end < $now) { |
|
$status = 'future'; |
|
} elsif ($start > $now) { |
|
$status = 'previous'; |
|
} |
|
if (($status ne '') && (grep/^\Q$status\E$/,@{$possible_status})) { |
|
$sectioncount{$section}++; |
|
} |
|
} |
} |
} |
return %sectioncount; |
return %sectioncount; |
} |
} |
Line 4036 of the possibility of multiple values fo
|
Line 4290 of the possibility of multiple values fo
|
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 = (); |
|
my %seclists; |
|
|
$idx{udom} = &Apache::loncoursedata::CL_SDOM(); |
$idx{udom} = &Apache::loncoursedata::CL_SDOM(); |
$idx{uname} = &Apache::loncoursedata::CL_SNAME(); |
$idx{uname} = &Apache::loncoursedata::CL_SNAME(); |
Line 4052 sub get_course_users {
|
Line 4307 sub get_course_users {
|
foreach my $student (keys(%{$classlist})) { |
foreach my $student (keys(%{$classlist})) { |
my $match = 0; |
my $match = 0; |
my $secmatch = 0; |
my $secmatch = 0; |
|
my $section = $$classlist{$student}[$idx{section}]; |
|
if ($section eq '') { |
|
$section = 'none'; |
|
} |
if ((ref($sections) eq 'ARRAY') && (@{$sections} > 0)) { |
if ((ref($sections) eq 'ARRAY') && (@{$sections} > 0)) { |
if (grep/^all$/,@{$sections}) { |
if (grep(/^all$/,@{$sections})) { |
$secmatch = 1; |
$secmatch = 1; |
} elsif ($$classlist{$student}[$idx{section}] eq '') { |
} elsif ($$classlist{$student}[$idx{section}] eq '') { |
if (grep/^none$/,@{$sections}) { |
if (grep(/^none$/,@{$sections})) { |
$secmatch = 1; |
$secmatch = 1; |
} |
} |
} else { |
} else { |
if (grep(/^\Q$$classlist{$student}[$idx{section}]\E$/, |
if (grep(/^\Q$section\E$/,@{$sections})) { |
@{$sections})) { |
|
$secmatch = 1; |
$secmatch = 1; |
} |
} |
} |
} |
if (!$secmatch) { |
if (!$secmatch) { |
next; |
next; |
} |
} |
} |
} |
|
push(@{$seclists{$student}},$section); |
if (defined($$types{'active'})) { |
if (defined($$types{'active'})) { |
if ($$classlist{$student}[$idx{status}] eq 'Active') { |
if ($$classlist{$student}[$idx{status}] eq 'Active') { |
push(@{$$users{st}{$student}},'active'); |
push(@{$$users{st}{$student}},'active'); |
Line 4093 sub get_course_users {
|
Line 4352 sub get_course_users {
|
} |
} |
} |
} |
if ((@{$roles} > 1) || ((@{$roles} == 1) && ($$roles[0] ne "st"))) { |
if ((@{$roles} > 1) || ((@{$roles} == 1) && ($$roles[0] ne "st"))) { |
my @coursepersonnel = &Apache::lonnet::getkeys('nohist_userroles',$cdom,$cnum); |
my %coursepersonnel = &Apache::lonnet::dump('nohist_userroles',$cdom,$cnum); |
foreach my $person (@coursepersonnel) { |
my $now = time; |
|
foreach my $person (sort(keys(%coursepersonnel))) { |
my $match = 0; |
my $match = 0; |
my $secmatch = 0; |
my $secmatch = 0; |
|
my $status; |
my ($role,$user,$usec) = ($person =~ /^([^:]*):([^:]+:[^:]+):([^:]*)/); |
my ($role,$user,$usec) = ($person =~ /^([^:]*):([^:]+:[^:]+):([^:]*)/); |
$user =~ s/:$//; |
$user =~ s/:$//; |
if (($role) && (grep(/^\Q$role\E$/,@{$roles}))) { |
my ($end,$start) = split(/:/,$coursepersonnel{$person}); |
|
if ($end == -1 || $start == -1) { |
|
next; |
|
} |
|
if (($role) && ((grep(/^\Q$role\E$/,@{$roles})) || |
|
(grep(/^cr$/,@{$roles}) && $role =~ /^cr\//))) { |
my ($uname,$udom) = split(/:/,$user); |
my ($uname,$udom) = split(/:/,$user); |
if ((ref($sections) eq 'ARRAY') && (@{$sections} > 0)) { |
if ((ref($sections) eq 'ARRAY') && (@{$sections} > 0)) { |
if (grep/^all$/,@{$sections}) { |
if (grep(/^all$/,@{$sections})) { |
$secmatch = 1; |
$secmatch = 1; |
} elsif ($usec eq '') { |
} elsif ($usec eq '') { |
if (grep/^none$/,@{$sections}) { |
if (grep(/^none$/,@{$sections})) { |
$secmatch = 1; |
$secmatch = 1; |
} |
} |
} else { |
} else { |
Line 4117 sub get_course_users {
|
Line 4383 sub get_course_users {
|
next; |
next; |
} |
} |
} |
} |
|
if ($usec eq '') { |
|
$usec = 'none'; |
|
} |
if ($uname ne '' && $udom ne '') { |
if ($uname ne '' && $udom ne '') { |
my $status = &check_user_status($udom,$uname,$cdom,$cnum,$role, |
if ($end < $now) { |
$usec); |
$status = 'previous'; |
|
} elsif ($start > $now) { |
|
$status = 'future'; |
|
} else { |
|
$status = 'active'; |
|
} |
foreach my $type (keys(%{$types})) { |
foreach my $type (keys(%{$types})) { |
if ($status eq $type) { |
if ($status eq $type) { |
@{$$users{$role}{$user}} = $type; |
if (!grep(/^\Q$type\E$/,@{$$users{$role}{$user}})) { |
|
push(@{$$users{$role}{$user}},$type); |
|
} |
$match = 1; |
$match = 1; |
} |
} |
} |
} |
if (($match) && (ref($userdata) eq 'HASH') && |
if (($match) && (ref($userdata) eq 'HASH')) { |
(!exists($$userdata{$uname.':'.$udom}))) { |
if (!exists($$userdata{$uname.':'.$udom})) { |
&get_user_info($udom,$uname,\%idx,$userdata); |
&get_user_info($udom,$uname,\%idx,$userdata); |
|
} |
|
if (!grep(/^\Q$usec\E$/,@{$seclists{$uname.':'.$udom}})) { |
|
push(@{$seclists{$uname.':'.$udom}},$usec); |
|
} |
} |
} |
} |
} |
} |
} |
Line 4138 sub get_course_users {
|
Line 4418 sub get_course_users {
|
my %csettings = &Apache::lonnet::get('environment',['internal.courseowner'],$cdom,$cnum); |
my %csettings = &Apache::lonnet::get('environment',['internal.courseowner'],$cdom,$cnum); |
if ( defined($csettings{'internal.courseowner'}) ) { |
if ( defined($csettings{'internal.courseowner'}) ) { |
my $owner = $csettings{'internal.courseowner'}; |
my $owner = $csettings{'internal.courseowner'}; |
@{$$users{'ow'}{$owner.':'.$cdom}} = 'any'; |
if ($owner !~ /^[^:]+:[^:]+$/) { |
|
$owner = $owner.':'.$cdom; |
|
} |
|
@{$$users{'ow'}{$owner}} = 'any'; |
if (defined($userdata) && |
if (defined($userdata) && |
!exists($$userdata{$owner.':'.$cdom})) { |
!exists($$userdata{$owner.':'.$cdom})) { |
&get_user_info($cdom,$owner,\%idx,$userdata); |
&get_user_info($cdom,$owner,\%idx,$userdata); |
|
if (!grep(/^none$/,@{$seclists{$owner.':'.$cdom}})) { |
|
push(@{$seclists{$owner.':'.$cdom}},'none'); |
|
} |
} |
} |
} |
} |
} |
} |
} |
} |
|
foreach my $user (keys(%seclists)) { |
|
@{$seclists{$user}} = (sort {$a <=> $b} @{$seclists{$user}}); |
|
$$userdata{$user}[$idx{section}] = join(',',@{$seclists{$user}}); |
|
} |
} |
} |
return; |
return; |
} |
} |