version 1.372, 2006/05/17 20:47:06
|
version 1.441, 2006/08/02 20:23:33
|
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 386 sub selectstudent_link {
|
Line 386 sub selectstudent_link {
|
|
|
sub coursebrowser_javascript { |
sub coursebrowser_javascript { |
my ($domainfilter)=@_; |
my ($domainfilter)=@_; |
|
my $crs_or_grp_alert = &mt('Please select the type of LON-CAPA entity - Course or Group - for which you wish to add/modify a user role'); |
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,extra_element,multflag) { |
function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag,crstype) { |
var url = '/adm/pickcourse?'; |
var url = '/adm/pickcourse?'; |
var filter; |
var filter; |
if (filter != null) { |
if (filter != null) { |
Line 415 sub coursebrowser_javascript {
|
Line 416 sub coursebrowser_javascript {
|
if (multflag !=null && multflag != '') { |
if (multflag !=null && multflag != '') { |
url += '&multiple='+multflag; |
url += '&multiple='+multflag; |
} |
} |
|
if (crstype == 'Course/Group') { |
|
if (formname == 'cu') { |
|
crstype = document.cu.crstype.options[document.cu.crstype.selectedIndex].value; |
|
if (crstype == "") { |
|
alert("$crs_or_grp_alert"); |
|
return; |
|
} |
|
} |
|
} |
|
if (crstype !=null && crstype != '') { |
|
url += '&type='+crstype; |
|
} |
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 426 ENDSTDBRW
|
Line 439 ENDSTDBRW
|
} |
} |
|
|
sub selectcourse_link { |
sub selectcourse_link { |
my ($form,$unameele,$udomele,$desc,$extra_element,$multflag)=@_; |
my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype)=@_; |
return "<a href='".'javascript:opencrsbrowser("'.$form.'","'.$unameele. |
return "<a href='".'javascript:opencrsbrowser("'.$form.'","'.$unameele. |
'","'.$udomele.'","'.$desc.'","'.$extra_element.'","'.$multflag.'");'."'>".&mt('Select Course')."</a>"; |
'","'.$udomele.'","'.$desc.'","'.$extra_element.'","'.$multflag.'","'.$selecttype.'");'."'>".&mt('Select [_1]',$selecttype)."</a>"; |
} |
} |
|
|
sub check_uncheck_jscript { |
sub check_uncheck_jscript { |
Line 659 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 693 sub helpLatexCheatsheet {
|
Line 706 sub helpLatexCheatsheet {
|
.'</td></tr></table>'; |
.'</td></tr></table>'; |
} |
} |
|
|
sub help_open_menu { |
sub general_help { |
my ($color,$topic,$component_help,$function,$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 (\$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) { |
|
$link = "javascript:helpMenu('open')"; |
my $banner_link = "/adm/helpmenu?page=banner&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage"; |
} else { |
my $output .= <<"ENDOUTPUT"; |
$link = "javascript:helpMenu('display')"; |
<script type="text/javascript"> |
|
// <!-- BEGIN LON-CAPA Internal |
|
banner_link = '$banner_link'; |
|
// END LON-CAPA Internal --> |
|
</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 $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 $output; |
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"; |
if ($component_help) { |
my $template; |
if (!$text) { |
if ($text ne "") { |
$output=&help_open_topic($component_help,undef,$stayOnPage, |
$template .= |
$width,$height); |
"<table bgcolor='#CC3300' cellspacing='1' cellpadding='1' border='0'><tr>". |
} else { |
"<td bgcolor='#CC6600'><a href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; |
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 738 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 761 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 803 sub help_open_bug {
|
Line 857 sub help_open_bug {
|
$topic=~s/\W+/\+/g; |
$topic=~s/\W+/\+/g; |
my $link=''; |
my $link=''; |
my $template=''; |
my $template=''; |
my $url=$Apache::lonnet::perlvar{'BugzillaHost'}.'enter_bug.cgi?product=LON-CAPA&bug_file_loc='. |
my $url=$Apache::lonnet::perlvar{'BugzillaHost'}.'enter_bug.cgi?product=LON-CAPA&bug_file_loc='. |
&escape($ENV{'REQUEST_URI'}).'&component='.$topic; |
&escape($ENV{'REQUEST_URI'}).'&component='.$topic; |
if (!$stayOnPage) |
if (!$stayOnPage) |
{ |
{ |
$link = "javascript:void(open('$url', 'Bugzilla', 'menubar=0,toolbar=1,scrollbars=1,width=$width,height=$height,resizable=yes'))"; |
$link = "javascript:void(open('$url', 'Bugzilla', 'menubar=0,toolbar=1,scrollbars=1,width=$width,height=$height,resizable=yes'))"; |
Line 818 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 863 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 1906 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 1990 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 2027 sub screenname {
|
Line 2092 sub screenname {
|
sub messagewrapper { |
sub messagewrapper { |
my ($link,$username,$domain,$subject,$text)=@_; |
my ($link,$username,$domain,$subject,$text)=@_; |
return |
return |
'<a href="/adm/email?compose=individual&'. |
'<a href="/adm/email?compose=individual&'. |
'recname='.$username.'&recdom='.$domain. |
'recname='.$username.'&recdom='.$domain. |
'&subject='.&escape($subject).'&text='.&escape($text).'" '. |
'&subject='.&escape($subject).'&text='.&escape($text).'" '. |
'title="'.&mt('Send message').'">'.$link.'</a>'; |
'title="'.&mt('Send message').'">'.$link.'</a>'; |
} |
} |
# --------------------------------------------------------------- Notes Wrapper |
# --------------------------------------------------------------- Notes Wrapper |
Line 2712 Returns: value of designparamter $which
|
Line 2777 Returns: value of designparamter $which
|
|
|
=cut |
=cut |
|
|
|
|
############################################## |
############################################## |
sub designparm { |
sub designparm { |
my ($which,$domain)=@_; |
my ($which,$domain)=@_; |
Line 2726 sub designparm {
|
Line 2792 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 2783 Inputs:
|
Line 2849 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 2810 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) = |
my ($role,$realm) = split(/\./,$env{'request.role'},2); |
&Apache::lonnet::plaintext((split(/\./,$env{'request.role'}))[0]); |
if ($role eq 'ca') { |
|
my ($rdom,$rname) = ($realm =~ m-^/(\w+)/(\w+)$-); |
|
$realm = &plainname($rname,$rdom).':'.$rdom; |
|
} |
# realm |
# realm |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
|
if ($env{'request.role'} !~ /^cr/) { |
|
$role = &Apache::lonnet::plaintext($role,&course_type()); |
|
} |
$realm = $env{'course.'.$env{'request.course.id'}.'.description'}; |
$realm = $env{'course.'.$env{'request.course.id'}.'.description'}; |
|
} else { |
|
$role = &Apache::lonnet::plaintext($role); |
} |
} |
|
|
if (!$realm) { $realm=' '; } |
if (!$realm) { $realm=' '; } |
# Set messages |
# Set messages |
my $messages=&domainlogo($domain); |
my $messages=&domainlogo($domain); |
Line 2826 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 2846 sub bodytag {
|
Line 2920 sub bodytag {
|
return $bodytag; |
return $bodytag; |
} |
} |
|
|
|
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"> |
<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 2878 ENDROLE
|
Line 2954 ENDROLE
|
'.domain'}.'/'})) { |
'.domain'}.'/'})) { |
my $cid = $env{'request.course.id'}; |
my $cid = $env{'request.course.id'}; |
$dc_info.= $cid.' '.$env{'course.'.$cid.'.internal.coursecode'}; |
$dc_info.= $cid.' '.$env{'course.'.$cid.'.internal.coursecode'}; |
|
$dc_info =~ s/\s+$//; |
$dc_info = '('.$dc_info.')'; |
$dc_info = '('.$dc_info.')'; |
} |
} |
|
|
Line 2904 ENDROLE
|
Line 2981 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 3076 sub standard_css {
|
Line 3153 sub standard_css {
|
my $tabbg = &designparm($function.'.tabbg', $domain); |
my $tabbg = &designparm($function.'.tabbg', $domain); |
my $font = &designparm($function.'.font', $domain); |
my $font = &designparm($function.'.font', $domain); |
my $sidebg = &designparm($function.'.sidebg',$domain); |
my $sidebg = &designparm($function.'.sidebg',$domain); |
my $pgbg = $bgcolor || |
my $pgbg_or_bgcolor = |
|
$bgcolor || |
&designparm($function.'.pgbg', $domain); |
&designparm($function.'.pgbg', $domain); |
|
my $pgbg = &designparm($function.'.pgbg', $domain); |
my $alink = &designparm($function.'.alink', $domain); |
my $alink = &designparm($function.'.alink', $domain); |
my $vlink = &designparm($function.'.vlink', $domain); |
my $vlink = &designparm($function.'.vlink', $domain); |
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'; |
|
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 3095 sub standard_css {
|
Line 3176 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 } |
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; } |
.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; |
} |
} |
|
.LC_icon { |
|
border: 0px; |
|
} |
|
|
table#LC_top_nav, table#LC_menubuttons, table#LC_nav_location, table#LC_breadcrumbs { |
table#LC_top_nav, table#LC_menubuttons { |
width: 100%; |
width: 100%; |
background: $pgbg; |
background: $pgbg; |
border: 0px; |
border: 2px; |
border-spacing: 2px 1px; |
|
padding: 0px; |
|
margin: 0px; |
|
border-collapse: separate; |
border-collapse: separate; |
|
padding: 0px; |
} |
} |
table#LC_title_bar { |
|
|
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 1px; |
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 { |
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 3174 table#LC_menubuttons img, table#LC_menub
|
Line 3269 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 3181 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; |
|
width: 31px; |
|
} |
|
table#LC_top_nav td.LC_top_nav_logo img { |
|
border: 0px; |
|
vertical-align: bottom; |
} |
} |
table#LC_breadcrumbs td { |
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 { |
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; |
font-size: larger; |
font-size: larger; |
text-align: right; |
text-align: right; |
} |
} |
|
td.LC_table_cell_checkbox { |
|
text-align: center; |
|
} |
|
|
.LC_menubuttons_inline_text { |
.LC_menubuttons_inline_text { |
color: $font; |
color: $font; |
font-family: $sans; |
font-family: $sans; |
Line 3218 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: seperate; |
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 3278 table.LC_mail_list tr.LC_mail_other {
|
Line 3410 table.LC_mail_list tr.LC_mail_other {
|
table.LC_mail_list tr.LC_mail_other:hover { |
table.LC_mail_list tr.LC_mail_other:hover { |
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; |
|
} |
|
|
|
.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 3294 Inputs: $title - optional title for the
|
Line 3670 Inputs: $title - optional title for the
|
$args - optional arguments |
$args - optional arguments |
force_register - if is true call registerurl so the remote is |
force_register - if is true call registerurl so the remote is |
informed |
informed |
redirect -> array ref of seconds before redirect occurs |
redirect -> array ref of |
url to redirect to |
1- seconds before redirect occurs |
|
2- url to redirect to |
|
3- whether the side effect should occur |
(side effect of setting |
(side effect of setting |
$env{'internal.head.redirect'} to the url |
$env{'internal.head.redirect'} to the url |
redirected too) |
redirected too) |
Line 3315 sub headtag {
|
Line 3693 sub headtag {
|
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); |
|
|
Line 3322 sub headtag {
|
Line 3701 sub headtag {
|
|
|
my $result = |
my $result = |
'<head>'. |
'<head>'. |
'<link rel="stylesheet" type="text/css" href="'.$url.'" />'. |
|
&font_settings(). |
&font_settings(). |
&Apache::lonhtmlcommon::htmlareaheaders(); |
&Apache::lonhtmlcommon::htmlareaheaders(); |
|
|
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) = @{$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 3343 ADDMETA
|
Line 3728 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 3435 Returns a uniform complete <head>..</hea
|
Line 3822 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 3493 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 3548 Inputs: $args - additional optio
|
Line 3936 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 3642 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">'; |
return '<table class="'.$css_class.'">'."\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 { |
|
my ($add_class) = @_; |
$row_count++; |
$row_count++; |
return '<tr '.(($row_count % 2)?'':'class="LC_even_row"').'>'; |
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>'; |
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">'; |
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 3673 sub simple_error_page {
|
Line 4074 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 3702 sub get_users_function {
|
Line 4101 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. |
|
|
Inputs: |
Inputs: |
user's domain, user's username, course's domain, |
user's domain, user's username, course's domain, |
course's number, optional section/group. |
course's number, optional section ID. |
|
|
Outputs: |
Outputs: |
role status: active, previous or future. |
role status: active, previous or future. |
Line 3717 role status: active, previous or future.
|
Line 4116 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 3756 sub check_user_status {
|
Line 4157 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. |
Incoming parameters: domain, course number, reference to |
Incoming parameters: |
section hash (keys to be section/group IDs), reference to |
|
array containing roles for which sections should be gathered |
1. domain |
(optional). If the fourth argument is undefined, sections |
2. course number |
are gathered for any role. |
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 number of sections. |
Returns section hash (keys are section IDs, values are |
|
number of users in each section), subject to the |
|
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 3783 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 3801 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) { |
return %sectioncount; |
next; #deleted role |
} |
} |
|
if (!defined($possible_status)) { |
############################################### |
$sectioncount{$section}++; |
|
} else { |
=pod |
if ((!$end || $end >= $now) && (!$start || $start <= $now)) { |
|
$status = 'active'; |
=item coursegroups |
} elsif ($end < $now) { |
|
$status = 'future'; |
Retrieve information about groups in a course, |
} elsif ($start > $now) { |
|
$status = 'previous'; |
Input: |
|
1. Reference to hash to populate with group information. |
|
2. Optional course domain |
|
3. Optional course number |
|
4. Optional group name |
|
|
|
Course domain and number will be taken from user's |
|
environment if not supplied. Optional group name will' |
|
be passed to lonnet::get_coursegroups() as a regexp to |
|
use in the call to the dump function. |
|
|
|
Output |
|
Returns number of groups in the course (subject to the |
|
optional group name filter). |
|
|
|
Side effects: |
|
Populates the referenced curr_groups hash, with key, |
|
value pairs. Keys are group names, corresponding values |
|
are scalars containing group information in XML. This |
|
can be sent to &get_group_settings() to be parsed. |
|
|
|
=cut |
|
|
|
############################################### |
|
|
|
sub coursegroups { |
|
my ($cdom,$cnum,$group) = @_; |
|
if (!defined($cdom) || !defined($cnum)) { |
|
my $cid = $env{'request.course.id'}; |
|
|
|
return if (!defined($cid)); |
|
|
|
$cdom = $env{'course.'.$cid.'.domain'}; |
|
$cnum = $env{'course.'.$cid.'.num'}; |
|
} |
|
my %curr_groups = &Apache::lonnet::get_coursegroups($cdom,$cnum,$group); |
|
my ($tmp) = keys(%curr_groups); |
|
if ($tmp=~/^(con_lost|no_such_host|error: [^2] )/) { |
|
undef(%curr_groups); |
|
&logthis('Error retrieving groups: '.$tmp.' in '.$cnum.':'.$cdom); |
|
} elsif ($tmp=~/^error: 2 /) { |
|
undef(%curr_groups); |
|
} |
|
return %curr_groups; |
|
} |
|
|
|
############################################### |
|
|
|
=pod |
|
|
|
=item get_group_settings |
|
|
|
Uses TokeParser to extract group information from the |
|
XML used to describe course groups. |
|
|
|
Input: |
|
Scalar containing XML - as retrieved from &coursegroups(). |
|
|
|
Output: |
|
Hash containing group information as key=values for (a), and |
|
hash of hashes for (b) |
|
|
|
Keys (in two categories): |
|
(a) groupname, creator, creation, modified, startdate,enddate. |
|
Corresponding values are name of the group, creator of the group |
|
(username:domain), UNIX time for date group was created, and |
|
settings were last modified, and default start and end access |
|
times for group members. |
|
|
|
(b) functions returned in hash of hashes. |
|
Outer hash key is functions. |
|
Inner hash keys are chat,discussion,email,files,homepage,roster. |
|
Corresponding values are either on or off, depending on |
|
whether this type of functionality is available for the group. |
|
|
|
=cut |
|
|
|
############################################### |
|
|
|
sub get_group_settings { |
|
my ($groupinfo)=@_; |
|
my $parser=HTML::TokeParser->new(\$groupinfo); |
|
my $token; |
|
my $tool = ''; |
|
my $role = ''; |
|
my %content=(); |
|
while ($token=$parser->get_token) { |
|
if ($token->[0] eq 'S') { |
|
my $entry=$token->[1]; |
|
if ($entry eq 'functions' || $entry eq 'autosec') { |
|
%{$content{$entry}} = (); |
|
$tool = $entry; |
|
} elsif ($entry eq 'role') { |
|
if ($tool eq 'autosec') { |
|
$role = $token->[2]{id}; |
|
} |
|
} else { |
|
my $value=$parser->get_text('/'.$entry); |
|
if ($entry eq 'name') { |
|
if ($tool eq 'functions') { |
|
my $function = $token->[2]{id}; |
|
$content{$tool}{$function} = $value; |
|
} |
|
} elsif ($entry eq 'groupname') { |
|
$content{$entry}=&unescape($value); |
|
} elsif (($entry eq 'roles') || ($entry eq 'types') || |
|
($entry eq 'sectionpick') || ($entry eq 'defpriv')) { |
|
push(@{$content{$entry}},$value); |
|
} elsif ($entry eq 'section') { |
|
if ($tool eq 'autosec' && $role ne '') { |
|
push(@{$content{$tool}{$role}},$value); |
|
} |
|
} else { |
|
$content{$entry}=$value; |
|
} |
|
} |
} |
} elsif ($token->[0] eq 'E') { |
if (($status ne '') && (grep/^\Q$status\E$/,@{$possible_status})) { |
if ($token->[1] eq 'functions' || $token->[1] eq 'autosec') { |
$sectioncount{$section}++; |
$tool = ''; |
|
} elsif ($token->[1] eq 'role') { |
|
$role = ''; |
|
} |
} |
|
|
} |
} |
} |
} |
return %content; |
return %sectioncount; |
} |
|
|
|
sub check_group_access { |
|
my ($group) = @_; |
|
my $access = 1; |
|
my $now = time; |
|
my ($start,$end) = split(/\./,$env{'user.role.gr/'.$env{'request.course,id'}.'/'.$group}); |
|
if (($end!=0) && ($end<$now)) { $access = 0; } |
|
if (($start!=0) && ($start>$now)) { $access=0; } |
|
return $access; |
|
} |
} |
|
|
############################################### |
############################################### |
|
|
=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 3987 Entries for end, start, section and stat
|
Line 4284 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 = (); |
|
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 4008 sub get_course_users {
|
Line 4306 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; |
|
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)) { |
unless(grep(/^\Q$$classlist{$student}[$idx{section}]\E$/, |
if (grep(/^all$/,@{$sections})) { |
@{$sections})) { |
$secmatch = 1; |
next; |
} elsif ($$classlist{$student}[$idx{section}] eq '') { |
|
if (grep(/^none$/,@{$sections})) { |
|
$secmatch = 1; |
|
} |
|
} else { |
|
if (grep(/^\Q$section\E$/,@{$sections})) { |
|
$secmatch = 1; |
|
} |
} |
} |
} |
if (!$secmatch) { |
|
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 4032 sub get_course_users {
|
Line 4346 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::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 ($role,$user) = ($person =~ /^([^:]*):([^:]+:[^:]+)/); |
my $secmatch = 0; |
|
my $status; |
|
my ($role,$user,$usec) = ($person =~ /^([^:]*):([^:]+:[^:]+):([^:]*)/); |
$user =~ s/:$//; |
$user =~ s/:$//; |
if (($role) && (grep(/^\Q$role\E$/,@{$roles}))) { |
my ($end,$start) = split(/:/,$coursepersonnel{$person}); |
my ($uname,$udom,$usec) = split(/:/,$user); |
if ($end == -1 || $start == -1) { |
if ($usec ne '' && (ref($sections) eq 'ARRAY') && |
next; |
@{$sections} > 0) { |
} |
unless(grep(/^\Q$usec\E$/,@{$sections})) { |
if (($role) && ((grep(/^\Q$role\E$/,@{$roles})) || |
next; |
(grep(/^cr$/,@{$roles}) && $role =~ /^cr\//))) { |
} |
my ($uname,$udom) = split(/:/,$user); |
|
if ((ref($sections) eq 'ARRAY') && (@{$sections} > 0)) { |
|
if (grep(/^all$/,@{$sections})) { |
|
$secmatch = 1; |
|
} elsif ($usec eq '') { |
|
if (grep(/^none$/,@{$sections})) { |
|
$secmatch = 1; |
|
} |
|
} else { |
|
if (grep(/^\Q$usec\E$/,@{$sections})) { |
|
$secmatch = 1; |
|
} |
|
} |
|
if (!$secmatch) { |
|
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) { |
|
$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 && defined($userdata) && |
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 4071 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; |
} |
} |
Line 4092 sub get_user_info {
|
Line 4449 sub get_user_info {
|
return; |
return; |
} |
} |
|
|
|
sub get_secgrprole_info { |
|
my ($cdom,$cnum,$needroles,$type) = @_; |
|
my %sections_count = &get_sections($cdom,$cnum); |
|
my @sections = (sort {$a <=> $b} keys(%sections_count)); |
|
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); |
|
my @groups = sort(keys(%curr_groups)); |
|
my $allroles = []; |
|
my $rolehash; |
|
my $accesshash = { |
|
active => 'Currently has access', |
|
future => 'Will have future access', |
|
previous => 'Previously had access', |
|
}; |
|
if ($needroles) { |
|
$rolehash = {'all' => 'all'}; |
|
my %user_roles = &Apache::lonnet::dump('nohist_userroles',$cdom,$cnum); |
|
if (&Apache::lonnet::error(%user_roles)) { |
|
undef(%user_roles); |
|
} |
|
foreach my $item (keys(%user_roles)) { |
|
my ($role)=split(/\:/,$item,2); |
|
if ($role eq 'cr') { next; } |
|
if ($role =~ /^cr/) { |
|
$$rolehash{$role} = (split('/',$role))[3]; |
|
} else { |
|
$$rolehash{$role} = &Apache::lonnet::plaintext($role,$type); |
|
} |
|
} |
|
foreach my $key (sort(keys(%{$rolehash}))) { |
|
push(@{$allroles},$key); |
|
} |
|
push (@{$allroles},'st'); |
|
$$rolehash{'st'} = &Apache::lonnet::plaintext('st',$type); |
|
} |
|
return (\@sections,\@groups,$allroles,$rolehash,$accesshash); |
|
} |
|
|
=pod |
=pod |
|
|
=item * get_unprocessed_cgi($query,$possible_names) |
=item * get_unprocessed_cgi($query,$possible_names) |
Line 5024 a hash ref describing the data to be sto
|
Line 5418 a hash ref describing the data to be sto
|
'chartoutputmode' => 'scalar', |
'chartoutputmode' => 'scalar', |
'chartoutputdata' => 'scalar', |
'chartoutputdata' => 'scalar', |
'Section' => 'array', |
'Section' => 'array', |
|
'Group' => 'array', |
'StudentData' => 'array', |
'StudentData' => 'array', |
'Maps' => 'array'); |
'Maps' => 'array'); |
|
|
Line 5106 sub restore_course_settings {
|
Line 5501 sub restore_course_settings {
|
############################################################ |
############################################################ |
############################################################ |
############################################################ |
|
|
sub propath { |
sub course_type { |
my ($udom,$uname)=@_; |
my ($cid) = @_; |
$udom=~s/\W//g; |
if (!defined($cid)) { |
$uname=~s/\W//g; |
$cid = $env{'request.course.id'}; |
my $subdir=$uname.'__'; |
} |
$subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/; |
if (defined($env{'course.'.$cid.'.type'})) { |
my $proname="$Apache::lonnet::perlvar{'lonUsersDir'}/$udom/$subdir/$uname"; |
return $env{'course.'.$cid.'.type'}; |
return $proname; |
} else { |
} |
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)=@_; |