version 1.911, 2009/11/06 16:36:27
|
version 1.925.2.26, 2010/12/07 04:33:49
|
Line 1877 sub select_form {
|
Line 1877 sub select_form {
|
$selectform.= |
$selectform.= |
'<option value="'.&HTML::Entities::encode($key,'"<>&').'" '. |
'<option value="'.&HTML::Entities::encode($key,'"<>&').'" '. |
($key eq $def ? 'selected="selected" ' : ''). |
($key eq $def ? 'selected="selected" ' : ''). |
">".&mt($hash{$key})."</option>\n"; |
">".$hash{$key}."</option>\n"; |
} |
} |
$selectform.="</select>"; |
$selectform.="</select>"; |
return $selectform; |
return $selectform; |
Line 1978 sub select_dom_form {
|
Line 1978 sub select_dom_form {
|
($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom; |
($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom; |
if ($showdomdesc) { |
if ($showdomdesc) { |
if ($dom ne '') { |
if ($dom ne '') { |
my $domdesc = &Apache::lonnet::domain($dom,'description'); |
my $domdesc; |
|
if ($name eq 'srchdomain') { |
|
if ($dom =~ /^\w+ci$/) { |
|
$domdesc = 'Faculty'; |
|
} else { |
|
$domdesc = 'Students'; |
|
} |
|
} else { |
|
$domdesc = &Apache::lonnet::domain($dom,'description'); |
|
} |
if ($domdesc ne '') { |
if ($domdesc ne '') { |
$selectdomain .= ' ('.$domdesc.')'; |
$selectdomain .= ' ('.$domdesc.')'; |
} |
} |
Line 2469 sub authform_internal{
|
Line 2478 sub authform_internal{
|
} |
} |
$autharg = '<input type="password" size="10" name="intarg" value="'. |
$autharg = '<input type="password" size="10" name="intarg" value="'. |
$intarg.'" onchange="'.$jscall.'" />'; |
$intarg.'" onchange="'.$jscall.'" />'; |
$result = &mt |
my $authtext = '[_1] Internally authenticated (with initial password [_2])'; |
('[_1] Internally authenticated (with initial password [_2])', |
if ($in{'caller'} eq 'requestcrs') { |
'<label>'.$authtype,'</label>'.$autharg); |
$authtext = "[_1] Students' password, if none in the uploaded file: [_2]"; |
|
} |
|
$result = &mt($authtext,'<label>'.$authtype,'</label>'.$autharg); |
$result.="<label><input type=\"checkbox\" name=\"visible\" onclick='if (this.checked) { this.form.intarg.type=\"text\" } else { this.form.intarg.type=\"password\" }' />".&mt('Visible input').'</label>'; |
$result.="<label><input type=\"checkbox\" name=\"visible\" onclick='if (this.checked) { this.form.intarg.type=\"text\" } else { this.form.intarg.type=\"password\" }' />".&mt('Visible input').'</label>'; |
return $result; |
return $result; |
} |
} |
Line 4367 sub CSTR_pageheader {
|
Line 4378 sub CSTR_pageheader {
|
} else { |
} else { |
$lastitem = $thisdisfn; |
$lastitem = $thisdisfn; |
} |
} |
return |
|
|
my $output = |
'<div>' |
'<div>' |
.&Apache::loncommon::help_open_menu('','',3,'Authoring') #FIXME: Broken? Where is it? |
.&Apache::loncommon::help_open_menu('','',3,'Authoring') #FIXME: Broken? Where is it? |
.'<b>'.&mt('Construction Space:').'</b> ' |
.'<b>'.&mt('Construction Space:').'</b> ' |
.'<form name="dirs" method="post" action="'.$formaction |
.'<form name="dirs" method="post" action="'.$formaction |
.'" target="_top"><tt><b>' #FIXME lonpubdir: target="_parent" |
.'" target="_top">' #FIXME lonpubdir: target="_parent" |
.&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv','','+1',1)."$lastitem</b></tt><br />" |
.&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv',undef,undef); |
|
|
|
if ($lastitem) { |
|
$output .= |
|
'<span class="LC_filename">' |
|
.$lastitem |
|
.'</span>'; |
|
} |
|
$output .= |
|
'<br />' |
#FIXME lonpubdir: &Apache::lonhtmlcommon::crumbs($uname.$thisdisfn.'/','_top','/priv','','+1',1)."</b></tt><br />" |
#FIXME lonpubdir: &Apache::lonhtmlcommon::crumbs($uname.$thisdisfn.'/','_top','/priv','','+1',1)."</b></tt><br />" |
.&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()') |
.&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()') |
.'</form>' |
.'</form>' |
.&Apache::lonmenu::constspaceform() |
.&Apache::lonmenu::constspaceform() |
.'</div>'; |
.'</div>'; |
|
|
|
return $output; |
} |
} |
|
|
############################################### |
############################################### |
Line 4440 sub bodytag {
|
Line 4463 sub bodytag {
|
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, |
$no_nav_bar,$bgcolor,$no_inline_link,$args)=@_; |
$no_nav_bar,$bgcolor,$no_inline_link,$args)=@_; |
|
|
|
my $public; |
|
if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) |
|
|| ($env{'user.name'} eq '') && ($env{'user.domain'} eq '')) { |
|
$public = 1; |
|
} |
if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); } |
if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); } |
|
|
$function = &get_users_function() if (!$function); |
$function = &get_users_function() if (!$function); |
Line 4455 sub bodytag {
|
Line 4483 sub bodytag {
|
'link' => &designparm($function.'.link',$domain),); |
'link' => &designparm($function.'.link',$domain),); |
@design{keys(%$addentries)} = @$addentries{keys(%$addentries)}; |
@design{keys(%$addentries)} = @$addentries{keys(%$addentries)}; |
|
|
|
my $custommenu; |
|
if ($env{'environment.remote'} eq 'off') { |
|
$custommenu = &needs_gci_custom(); |
|
} |
# role and realm |
# role and realm |
my ($role,$realm) = split(/\./,$env{'request.role'},2); |
my ($role,$realm) = split(/\./,$env{'request.role'},2); |
if ($role eq 'ca') { |
if ($role eq 'ca') { |
Line 4464 sub bodytag {
|
Line 4496 sub bodytag {
|
# realm |
# realm |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
if ($env{'request.role'} !~ /^cr/) { |
if ($env{'request.role'} !~ /^cr/) { |
$role = &Apache::lonnet::plaintext($role,&course_type()); |
if (($custommenu) && (($role eq 'cm') || ($env{'form.context'} eq 'requestcrs'))) { |
|
undef($role); |
|
} else { |
|
$role = &Apache::lonnet::plaintext($role,&course_type()); |
|
} |
} |
} |
if ($env{'request.course.sec'}) { |
if (defined($role) && $env{'request.course.sec'}) { |
$role .= (' 'x2).'- '.&mt('section:').' '.$env{'request.course.sec'}; |
$role .= (' 'x2).'- '.&mt('section:').' '.$env{'request.course.sec'}; |
} |
} |
$realm = $env{'course.'.$env{'request.course.id'}.'.description'}; |
if ($env{'form.context'} eq 'requestcrs') { |
|
undef($realm); |
|
} else { |
|
$realm = $env{'course.'.$env{'request.course.id'}.'.description'}; |
|
} |
} else { |
} else { |
$role = &Apache::lonnet::plaintext($role); |
if (($custommenu) && ($role eq 'cm')) { |
|
undef($role); |
|
} else { |
|
$role = &Apache::lonnet::plaintext($role); |
|
} |
} |
} |
|
|
if (!$realm) { $realm=' '; } |
if (!$realm) { $realm=' '; } |
Line 4489 sub bodytag {
|
Line 4533 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') { |
if ($public) { |
undef($role); |
undef($role); |
} else { |
} else { |
$name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); |
$name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); |
Line 4503 sub bodytag {
|
Line 4547 sub bodytag {
|
$env{'course.'.$env{'request.course.id'}. |
$env{'course.'.$env{'request.course.id'}. |
'.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 =~ s/\s+$//; |
$dc_info = '('.$dc_info.')'; |
|
} |
} |
|
|
$role = '<span class="LC_nobreak">('.$role.')</span>' if $role; |
$role = '<span class="LC_nobreak">('.$role.')</span>' if $role; |
&get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']); |
&get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']); |
|
|
if ($env{'environment.remote'} eq 'off') { |
if ($env{'environment.remote'} ne 'on') { |
# No Remote |
# No Remote |
if ($no_nav_bar) { return $bodytag; } |
if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') { |
|
return $bodytag; |
|
} |
|
|
if ($env{'request.state'} eq 'construct') { $forcereg=1; } |
if ($env{'request.state'} eq 'construct') { $forcereg=1; } |
|
|
Line 4521 sub bodytag {
|
Line 4566 sub bodytag {
|
# $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls |
# $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls |
# } |
# } |
|
|
$bodytag .= qq|<div id="LC_nav_bar">$name $role<br /> |
my $role_selector; |
<em>$realm</em> $dc_info</div>| unless $env{'form.inhibitmenu'}; |
if (($custommenu) && !($env{'form.context'} eq 'requestcrs') && |
|
($env{'request.course.id'}) && |
|
($env{'course.'.$env{'request.course.id'}.'.domain'} =~ /^\w+citest$/)) { |
|
$role_selector = &Apache::lonmenu::roles_selector( |
|
$env{'course.' . $env{'request.course.id'} . '.domain'}, |
|
$env{'course.' . $env{'request.course.id'} . '.num'} ); |
|
if ($role_selector) { |
|
$role_selector = '<br />'.$role_selector; |
|
} |
|
} |
|
my $cid = $env{'request.course.id'}; |
|
my %cicourses; |
|
my $udom = $env{'user.domain'}; |
|
my %allnums = &get_faculty_cnums(); |
|
if (($udom ne '') && (ref($allnums{$udom}) eq 'HASH')) { |
|
foreach my $key (%{$allnums{$udom}}) { |
|
$cicourses{$udom.'_'.$key} = $allnums{$udom}->{$key}; |
|
} |
|
} |
|
if (($custommenu && $cid && !$cicourses{$cid}) && |
|
!($env{'form.context'} eq 'requestcrs') || |
|
($env{'user.domain'} =~ /^\w+citest$/)) { |
|
my $role = 'st'; |
|
if ($custommenu) { |
|
$role = 'cc'; |
|
} |
|
my ($switcher_js,$switcher,$formname); |
|
$formname = 'pickrole'; |
|
my %courses = &existing_gcitest_courses($role); |
|
my $numcourses = keys(%courses); |
|
my $reqdcount = 0; |
|
if ($cid) { |
|
if ($courses{$cid}) { |
|
$reqdcount = 1; |
|
} |
|
} |
|
if ($numcourses > $reqdcount) { |
|
$switcher = &gcitest_switcher($role,$formname,%courses); |
|
my $current; |
|
if ($cid) { |
|
$current = $role.'./'.$env{'course.'.$cid.'.domain'}. |
|
'/'.$env{'course.'.$cid.'.num'}; |
|
} |
|
$switcher_js = &gcitest_switcher_js($current,$numcourses,$formname); |
|
if ($switcher_js) { |
|
$switcher_js= <<"ENDSCRIPT"; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
|
if ( $env{'form.inhibitmenu'} eq 'yes' |
$switcher_js |
|| $ENV{'REQUEST_URI'} eq '/adm/logout' |
|
|| $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { |
// ]]> |
|
</script> |
|
ENDSCRIPT |
|
} |
|
} |
|
if ($switcher) { |
|
$switcher = $switcher_js.$switcher; |
|
if ($role_selector) { |
|
$role_selector .= ' '.$switcher; |
|
} else { |
|
$role_selector .= '<br />'.$switcher; |
|
} |
|
} |
|
} |
|
|
|
if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { |
|
if ($dc_info) { |
|
$dc_info = qq|<span class="LC_cusr_subheading">$dc_info</span>|; |
|
} |
|
$bodytag .= qq|<div id="LC_nav_bar">$name $role<br /> |
|
<em>$realm</em> $dc_info</div>|; |
|
return $bodytag; |
|
} |
|
if ($env{'request.noversionuri'} eq '/adm/navmaps' && |
|
$env{'environment.remotenavmap'} eq 'on') { |
return $bodytag; |
return $bodytag; |
} |
} |
|
|
|
if ($cid && $cicourses{$cid} eq 'tutorial') { |
|
$bodytag .= '<div class="LC_page_header">'; |
|
} |
|
|
|
$bodytag .= qq|<div id="LC_nav_bar">$name $role $role_selector</div>|; |
|
|
$bodytag .= Apache::lonhtmlcommon::scripttag( |
$bodytag .= Apache::lonhtmlcommon::scripttag( |
Apache::lonmenu::utilityfunctions(), 'start'); |
Apache::lonmenu::utilityfunctions('',$custommenu), 'start'); |
|
|
$bodytag .= Apache::lonmenu::primary_menu(); |
$bodytag .= Apache::lonmenu::primary_menu(); |
|
|
|
if ($dc_info) { |
|
$dc_info = &dc_courseid_toggle($dc_info); |
|
} |
|
$bodytag .= qq|<div id="LC_realm">$realm $dc_info</div>|; |
|
if ($cid && $cicourses{$cid} eq 'tutorial') { |
|
$bodytag .= '</div>'; |
|
} |
|
|
#don't show menus for public users |
#don't show menus for public users |
if($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public'){ |
if(!$public){ |
$bodytag .= Apache::lonmenu::secondary_menu(); |
if (($custommenu) && |
|
($env{'request.role'} !~ m{^st\./(\w+)citest/$match_courseid})) { |
|
$bodytag .= &Apache::lonmenu::gci_secondary_menu(); |
|
} elsif ($env{'request.role'} ne 'cm' || &check_for_gci_dc()) { |
|
$bodytag .= Apache::lonmenu::secondary_menu(); |
|
} |
$bodytag .= Apache::lonmenu::serverform(); |
$bodytag .= Apache::lonmenu::serverform(); |
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
$bodytag .= Apache::lonmenu::innerregister($forcereg) if $forcereg; |
if ($env{'request.state'} eq 'construct') { |
|
$bodytag .= &Apache::lonmenu::innerregister($forcereg,'', |
|
$args->{'bread_crumbs'}); |
|
} elsif ($forcereg) { |
|
$bodytag .= &Apache::lonmenu::innerregister($forcereg); |
|
} elsif ($custommenu && $env{'request.course.id'} && |
|
&Apache::lonnet::allowed('mdc', $env{'request.course.id'})) { |
|
if ((($env{'request.noversionuri'} eq '/adm/navmaps') && |
|
($env{'request.noversionuri'} ne 'on')) || |
|
(($env{'request.noversionuri'} eq '/adm/coursedocs') && |
|
(!($env{'form.context'} eq 'requestcrs'))) || |
|
(($env{'request.noversionuri'} eq '/adm/createuser') && |
|
(!($env{'form.context'} eq 'requestcrs'))) || |
|
($env{'request.noversionuri'} eq '/adm/whatsnew') || |
|
($env{'request.noversionuri'} eq '/cgi-bin/printout.pl') || |
|
($env{'request.noversionuri'} eq '/adm/printout') || |
|
($env{'request.noversionuri'} eq '/adm/statistics')) { |
|
|
|
my @advtools = &concept_test_manager(); |
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
&Apache::lonhtmlcommon::add_breadcrumb_tool( |
|
'advtools',@advtools); |
|
my $advlinks; |
|
my $legendtext = '<a class="LC_menubuttons_link" href="/adm/menu">'.&mt('Management').'</a>'; |
|
&Apache::lonhtmlcommon::render_advtools(\$advlinks,$legendtext); |
|
$bodytag .= $advlinks; |
|
} |
|
} |
}else{ |
}else{ |
# this is to seperate menu from content when there's no secondary |
# this is to seperate menu from content when there's no secondary |
# menu. Especially needed for public accessible ressources. |
# menu. Especially needed for public accessible ressources. |
Line 4549 sub bodytag {
|
Line 4710 sub bodytag {
|
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
} |
} |
|
|
#SD testing |
|
#$bodytag .= Apache::lonmenu::menubuttons($forcereg); |
|
return $bodytag; |
return $bodytag; |
} |
} |
|
|
Line 4567 sub bodytag {
|
Line 4726 sub bodytag {
|
# Explicit link to get inline menu |
# Explicit link to get inline menu |
my $menu= ($no_inline_link?'' |
my $menu= ($no_inline_link?'' |
:'<a href="/adm/remote?action=collapse" target="_top">'.&mt('Switch to Inline Menu Mode').'</a>'); |
:'<a href="/adm/remote?action=collapse" target="_top">'.&mt('Switch to Inline Menu Mode').'</a>'); |
$bodytag .= qq|<div id="LC_nav_bar">$name $role |
|
<em>$realm</em> $dc_info </div> |
if ($dc_info) { |
|
$dc_info = qq|<span class="LC_cusr_subheading">($dc_info)</span>|; |
|
} |
|
|
|
$bodytag .= qq|<div id="LC_nav_bar">$name $role</div> |
<ol class="LC_primary_menu LC_right"> |
<ol class="LC_primary_menu LC_right"> |
<li>$menu</li> |
<li>$menu</li> |
</ol>| unless $env{'form.inhibitmenu'}; |
</ol><div id="LC_realm"> $realm $dc_info</div>| unless $env{'form.inhibitmenu'}; |
# |
|
return(<<ENDBODY); |
return(<<ENDBODY); |
$bodytag |
$bodytag |
<table id="LC_title_bar" class="LC_with_remote"> |
<table id="LC_title_bar" class="LC_with_remote"> |
Line 4585 $bodytag
|
Line 4747 $bodytag
|
ENDBODY |
ENDBODY |
} |
} |
|
|
|
sub concept_test_manager { |
|
my @advtools; |
|
my %items = ( |
|
docs => { |
|
desc => 'Edit Test', |
|
action => "go('/adm/coursedocs')", |
|
tooltip => 'Assemble or modify Concept Test' |
|
}, |
|
cprv => { |
|
desc => 'Enrollment/Activity', |
|
action => "go('/adm/createuser')", |
|
tooltip => 'Enrollment and student activity', |
|
}, |
|
new => { |
|
desc => "What's New?", |
|
action => "go('/adm/whatsnew')", |
|
tooltip => 'Recent events/action items in Concept Test' , |
|
}, |
|
prnt => { |
|
desc => 'Print Test', |
|
action => "go('/adm/printout');", |
|
tooltip => 'Prepare printable Concept Test', |
|
}, |
|
chrt => { |
|
desc => 'Test Statistics', |
|
action => "go('/adm/statistics');", |
|
tooltip => 'Concept Test Statistics', |
|
}, |
|
rcrs => { |
|
desc => 'Create New Test', |
|
action => "switchpage('createtest');", |
|
tooltip => 'Create new Concept Test', |
|
}, |
|
); |
|
my @ordered = ('docs','cprv','new','prnt','chrt','rcrs'); |
|
foreach my $item (@ordered) { |
|
push(@advtools, |
|
'<a title="'.$items{$item}{tooltip}.'" class="LC_menubuttons_link" href="javascript:'. |
|
$items{$item}{action}.';">'. |
|
'<img src="'.'/res/adm/pages/'.$item.'22.png" alt="'.$items{$item}{tooltip}. |
|
'" border="0" class="LC_icon" />'. |
|
'<span class="LC_menubuttons_inline_text">'.$items{$item}{desc}.'</span></a>'); |
|
} |
|
return @advtools; |
|
} |
|
|
|
sub dc_courseid_toggle { |
|
my ($dc_info) = @_; |
|
return ' <span id="dccidtext" class="LC_cusr_subheading">'. |
|
'<a href="javascript:showCourseID();">'. |
|
&mt('(More ...)').'</a></span>'. |
|
'<div id="dccid" class="LC_dccid">'.$dc_info.'</div>'; |
|
} |
|
|
sub make_attr_string { |
sub make_attr_string { |
my ($register,$attr_ref) = @_; |
my ($register,$attr_ref) = @_; |
|
|
Line 4731 body {
|
Line 4947 body {
|
color:$font; |
color:$font; |
} |
} |
|
|
a:link, |
|
a:visited { |
|
font-size:100%; |
|
} |
|
|
|
a:focus { |
a:focus { |
color: red; |
color: red; |
background: yellow; |
background: yellow; |
Line 4762 form, .inline {
|
Line 4973 form, .inline {
|
.LC_filename { |
.LC_filename { |
font-family: $mono; |
font-family: $mono; |
white-space:pre; |
white-space:pre; |
|
font-size: 120%; |
} |
} |
|
|
.LC_fileicon { |
.LC_fileicon { |
Line 4852 table.LC_pastsubmission {
|
Line 5064 table.LC_pastsubmission {
|
margin: 2px; |
margin: 2px; |
} |
} |
|
|
table#LC_top_nav, |
table#LC_menubuttons { |
table#LC_menubuttons, |
|
table#LC_nav_location { |
|
width: 100%; |
width: 100%; |
background: $pgbg; |
background: $pgbg; |
border: 2px; |
border: 2px; |
Line 4885 table#LC_title_bar.LC_with_remote {
|
Line 5095 table#LC_title_bar.LC_with_remote {
|
margin: 0; |
margin: 0; |
} |
} |
|
|
table#LC_title_bar td { |
ul.LC_breadcrumb_tools_outerlist { |
background: $tabbg; |
margin: 0; |
|
padding: 0; |
|
position: relative; |
|
list-style: none; |
|
} |
|
ul.LC_breadcrumb_tools_outerlist li { |
|
display: inline; |
} |
} |
|
|
table#LC_menubuttons img { |
.LC_breadcrumb_tools_navigation { |
border: none; |
padding: 0; |
|
margin: 0; |
|
float: left; |
|
} |
|
.LC_breadcrumb_tools_tools { |
|
padding: 0; |
|
margin: 0; |
|
float: right; |
} |
} |
|
|
table#LC_top_nav td { |
div.LC_GCI_Menu { |
background: $tabbg; |
width:900px; |
border: none; |
|
font-size: small; |
|
vertical-align:top; |
|
padding:2px 5px 2px 5px; |
|
} |
} |
|
|
table#LC_top_nav td a, |
div.LC_GCI_Menu:after { |
div#LC_top_nav a { |
content:''; |
color: $font; |
display:block; |
|
clear:both; |
} |
} |
|
|
table#LC_top_nav td.LC_top_nav_logo { |
div.LC_GCI_Menu_left { |
background: $tabbg; |
float:left; |
text-align: left; |
width:400px; |
white-space: nowrap; |
|
width: 31px; |
|
} |
} |
|
|
table#LC_top_nav td.LC_top_nav_logo img { |
div.LC_GCI_Menu_right { |
border: none; |
float:left; |
vertical-align: bottom; |
width:400px;; |
} |
} |
|
|
table#LC_top_nav td.LC_top_nav_exit, |
dl.LC_GCI_Menu { |
table#LC_top_nav td.LC_top_nav_help { |
width:300px; |
width: 2.0em; |
float:left; |
|
margin-right:2em; |
} |
} |
|
|
table#LC_top_nav td.LC_top_nav_login { |
dl.LC_GCI_Menu dt { |
width: 4.0em; |
font-weight: bold; |
text-align: center; |
font-size:0.9em; |
|
margin-bottom:0.7em; |
|
} |
|
|
|
dl.LC_GCI_Menu dt a { |
|
color: $font; |
|
} |
|
|
|
dl.LC_GCI_Menu dd { |
|
font-size:0.8em; |
|
margin:0 0 2em 0; |
|
padding-left:4.5em; |
|
line-height:1.5em; |
|
background:none no-repeat left top; |
|
} |
|
|
|
table#LC_title_bar td { |
|
background: $tabbg; |
|
} |
|
|
|
table#LC_menubuttons img { |
|
border: none; |
} |
} |
|
|
.LC_breadcrumbs_component { |
.LC_breadcrumbs_component { |
float: right; |
float: right; |
margin: 0 1em; |
margin: 0.25em 1em; |
} |
} |
.LC_breadcrumbs_component img { |
.LC_breadcrumbs_component img { |
vertical-align: middle; |
vertical-align: middle; |
Line 4940 td.LC_table_cell_checkbox {
|
Line 5180 td.LC_table_cell_checkbox {
|
text-align: center; |
text-align: center; |
} |
} |
|
|
table#LC_mainmenu td.LC_mainmenu_column { |
|
vertical-align: top; |
|
} |
|
|
|
.LC_fontsize_small { |
.LC_fontsize_small { |
font-size: 70%; |
font-size: 70%; |
} |
} |
Line 4953 table#LC_mainmenu td.LC_mainmenu_column
|
Line 5189 table#LC_mainmenu td.LC_mainmenu_column
|
background: $sidebg; |
background: $sidebg; |
border-bottom: 1px solid $lg_border_color; |
border-bottom: 1px solid $lg_border_color; |
line-height: 2.5em; |
line-height: 2.5em; |
/* SD working here |
overflow: hidden; |
height: 2.5em; |
|
overflow: hidden; */ |
|
margin: 0; |
margin: 0; |
padding: 0; |
padding: 0; |
|
text-align: left; |
} |
} |
|
|
/* Preliminary fix to hide breadcrumbs inside remote control window */ |
/* Preliminary fix to hide breadcrumbs inside remote control window */ |
Line 4968 table#LC_mainmenu td.LC_mainmenu_column
|
Line 5203 table#LC_mainmenu td.LC_mainmenu_column
|
#LC_head_subbox { |
#LC_head_subbox { |
clear:both; |
clear:both; |
background: #F8F8F8; /* $sidebg; */ |
background: #F8F8F8; /* $sidebg; */ |
border-bottom: 1px solid $lg_border_color; |
border: 1px solid $sidebg; |
margin: 0 0 10px 0; |
margin: 0 0 0 0; |
padding: 5px; |
|
} |
} |
|
|
.LC_fontsize_medium { |
.LC_fontsize_medium { |
Line 5006 td.LC_menubuttons_text {
|
Line 5240 td.LC_menubuttons_text {
|
background: $tabbg; |
background: $tabbg; |
} |
} |
|
|
.LC_new_mail { |
|
background: $tabbg; |
|
font-weight: bold; |
|
} |
|
|
|
table.LC_data_table, |
table.LC_data_table, |
table.LC_mail_list { |
table.LC_mail_list { |
border: 1px solid #000000; |
border: 1px solid #000000; |
Line 5060 table.LC_data_table tr.LC_info_row > td
|
Line 5289 table.LC_data_table tr.LC_info_row > td
|
text-align: left; |
text-align: left; |
} |
} |
|
|
table.LC_data_table tr.LC_odd_row > td, |
table.LC_data_table tr.LC_odd_row > td { |
|
background-color: $data_table_light; |
|
padding: 2px; |
|
vertical-align: top; |
|
} |
|
|
table.LC_pick_box tr > td.LC_odd_row { |
table.LC_pick_box tr > td.LC_odd_row { |
background-color: $data_table_light; |
background-color: $data_table_light; |
|
vertical-align: top; |
|
} |
|
|
|
table.LC_data_table tr.LC_even_row > td { |
|
background-color: $data_table_dark; |
padding: 2px; |
padding: 2px; |
vertical-align: top; |
vertical-align: top; |
} |
} |
|
|
table.LC_data_table tr.LC_even_row > td, |
|
table.LC_pick_box tr > td.LC_even_row { |
table.LC_pick_box tr > td.LC_even_row { |
background-color: $data_table_dark; |
background-color: $data_table_dark; |
padding: 2px; |
|
vertical-align: top; |
vertical-align: top; |
} |
} |
|
|
Line 5159 table.LC_createuser tr.LC_info_row td {
|
Line 5396 table.LC_createuser tr.LC_info_row td {
|
table.LC_calendar { |
table.LC_calendar { |
border: 1px solid #000000; |
border: 1px solid #000000; |
border-collapse: collapse; |
border-collapse: collapse; |
|
width: 98%; |
} |
} |
|
|
table.LC_calendar_pickdate { |
table.LC_calendar_pickdate { |
Line 5168 table.LC_calendar_pickdate {
|
Line 5406 table.LC_calendar_pickdate {
|
table.LC_calendar tr td { |
table.LC_calendar tr td { |
border: 1px solid #000000; |
border: 1px solid #000000; |
vertical-align: top; |
vertical-align: top; |
|
width: 14%; |
} |
} |
|
|
table.LC_calendar tr td.LC_calendar_day_empty { |
table.LC_calendar tr td.LC_calendar_day_empty { |
Line 5186 table.LC_mail_list tr.LC_mail_new:hover
|
Line 5425 table.LC_mail_list tr.LC_mail_new:hover
|
background-color: $mail_new_hover; |
background-color: $mail_new_hover; |
} |
} |
|
|
table.LC_mail_list tr.LC_mail_even { |
|
} |
|
|
|
table.LC_mail_list tr.LC_mail_odd { |
|
} |
|
|
|
table.LC_mail_list tr.LC_mail_read { |
table.LC_mail_list tr.LC_mail_read { |
background-color: $mail_read; |
background-color: $mail_read; |
} |
} |
Line 5471 table.LC_notify_front_page td {
|
Line 5704 table.LC_notify_front_page td {
|
|
|
.LC_topic_bar { |
.LC_topic_bar { |
font-weight: bold; |
font-weight: bold; |
width: 100%; |
|
background: $tabbg; |
background: $tabbg; |
vertical-align: middle; |
margin: 1em 0em 1em 2em; |
margin: 2ex 0ex 2ex 0ex; |
|
padding: 3px; |
padding: 3px; |
|
font-size: 1.2em; |
} |
} |
|
|
.LC_topic_bar span { |
.LC_topic_bar span { |
|
left: 0.5em; |
|
position: absolute; |
vertical-align: middle; |
vertical-align: middle; |
|
font-size: 1.2em; |
} |
} |
|
|
.LC_topic_bar img { |
.LC_topic_bar img { |
Line 5595 span.LC_prior_string,
|
Line 5830 span.LC_prior_string,
|
span.LC_prior_custom, |
span.LC_prior_custom, |
span.LC_prior_reaction, |
span.LC_prior_reaction, |
span.LC_prior_math { |
span.LC_prior_math { |
font-family: monospace; |
font-family: $mono; |
white-space: pre; |
white-space: pre; |
} |
} |
|
|
span.LC_prior_string { |
span.LC_prior_string { |
font-family: monospace; |
font-family: $mono; |
white-space: pre; |
white-space: pre; |
} |
} |
|
|
Line 5633 span.LC_cusr_subheading {
|
Line 5868 span.LC_cusr_subheading {
|
font-size: 85%; |
font-size: 85%; |
} |
} |
|
|
table.LC_docs_documents { |
|
background: #BBBBBB; |
|
border-width: 0; |
|
border-collapse: collapse; |
|
} |
|
|
|
table.LC_docs_documents td.LC_docs_document { |
|
border: 2px solid black; |
|
padding: 4px; |
|
} |
|
|
|
div.LC_docs_entry_move { |
div.LC_docs_entry_move { |
border: 1px solid #BBBBBB; |
border: 1px solid #BBBBBB; |
background: #DDDDDD; |
background: #DDDDDD; |
Line 5844 img.stift {
|
Line 6068 img.stift {
|
vertical-align: middle; |
vertical-align: middle; |
} |
} |
|
|
table#LC_mainmenu { |
table td.LC_mainmenu_col_fieldset { |
margin-top:10px; |
|
width:80%; |
|
} |
|
|
|
table#LC_mainmenu td.LC_mainmenu_col_fieldset { |
|
vertical-align: top; |
vertical-align: top; |
width: 45%; |
|
} |
|
|
|
.LC_mainmenu_fieldset_category { |
|
color: $font; |
|
background: $pgbg; |
|
font-size: small; |
|
font-weight: bold; |
|
} |
} |
|
|
div.LC_createcourse { |
div.LC_createcourse { |
margin: 10px 10px 10px 10px; |
margin: 10px 10px 10px 10px; |
} |
} |
|
|
|
.LC_dccid { |
|
margin: 0.2em 0 0 0; |
|
padding: 0; |
|
font-size: 90%; |
|
display:none; |
|
} |
|
|
/* ---- Remove when done ---- |
/* ---- Remove when done ---- |
# The following styles is part of the redesign of LON-CAPA and are |
# The following styles is part of the redesign of LON-CAPA and are |
# subject to change during this project. |
# subject to change during this project. |
Line 5914 h6 {
|
Line 6132 h6 {
|
border: 0; |
border: 0; |
} |
} |
|
|
.LC_Right { |
|
float: right; |
|
margin: 0; |
|
padding: 0; |
|
} |
|
|
|
.LC_FormSectionClearButton input { |
.LC_FormSectionClearButton input { |
background-color:transparent; |
background-color:transparent; |
border: none; |
border: none; |
Line 5950 fieldset > legend {
|
Line 6162 fieldset > legend {
|
padding: 0 5px 0 5px; |
padding: 0 5px 0 5px; |
} |
} |
|
|
|
div.LC_page_header { |
|
background-color: $pgbg_or_bgcolor; |
|
margin: 0 0 1.0em 0; |
|
} |
|
|
#LC_nav_bar { |
#LC_nav_bar { |
float: left; |
float: left; |
margin: 0.2em 0 0 0; |
margin: 0.2em 0 0 0; |
} |
} |
|
|
|
#LC_realm { |
|
margin: 0.2em 0 0 0; |
|
padding: 0; |
|
font-weight: bold; |
|
text-align: center; |
|
} |
|
|
#LC_nav_bar em { |
#LC_nav_bar em { |
font-weight: bold; |
font-weight: bold; |
font-style: normal; |
font-style: normal; |
Line 5985 ol.LC_primary_menu a {
|
Line 6209 ol.LC_primary_menu a {
|
text-decoration: none; |
text-decoration: none; |
} |
} |
|
|
|
ol.LC_primary_menu a.LC_new_message { |
|
font-weight:bold; |
|
color: darkred; |
|
} |
|
|
ul#LC_secondary_menu { |
ul#LC_secondary_menu { |
clear: both; |
clear: both; |
color: $fontmenu; |
color: $fontmenu; |
Line 6118 ol#LC_MenuBreadcrumbs,
|
Line 6347 ol#LC_MenuBreadcrumbs,
|
ol#LC_PathBreadcrumbs { |
ol#LC_PathBreadcrumbs { |
padding-left: 10px; |
padding-left: 10px; |
margin: 0; |
margin: 0; |
list-style-position: inside; |
margin: 0; |
/* SD working here |
height: 2.5em; /* equal to #LC_breadcrumbs line-height */ |
white-space: nowrap; */ |
|
} |
} |
|
|
ol#LC_MenuBreadcrumbs li, |
ol#LC_MenuBreadcrumbs li, |
ol#LC_PathBreadcrumbs li, |
ol#LC_PathBreadcrumbs li, |
ul.LC_CourseBreadcrumbs li { |
ul.LC_CourseBreadcrumbs li { |
display: inline; |
display: inline; |
white-space: nowrap; |
white-space: normal; |
/* SD working here |
|
white-space: normal; */ |
|
} |
} |
|
|
ol#LC_MenuBreadcrumbs li a, |
ol#LC_MenuBreadcrumbs li a, |
Line 6138 ul.LC_CourseBreadcrumbs li a {
|
Line 6364 ul.LC_CourseBreadcrumbs li a {
|
font-size:90%; |
font-size:90%; |
} |
} |
|
|
|
ol#LC_MenuBreadcrumbs h1 { |
|
display: inline; |
|
font-size: 90%; |
|
line-height: 2.5em; |
|
margin: 0; |
|
padding: 0; |
|
} |
|
|
ol#LC_PathBreadcrumbs li a { |
ol#LC_PathBreadcrumbs li a { |
text-decoration:none; |
text-decoration:none; |
font-size:100%; |
font-size:100%; |
Line 6170 dl.LC_ListStyleClean dd {
|
Line 6404 dl.LC_ListStyleClean dd {
|
.LC_ListStyleClean, |
.LC_ListStyleClean, |
.LC_ListStyleSimple, |
.LC_ListStyleSimple, |
.LC_ListStyleNormal, |
.LC_ListStyleNormal, |
.LC_ListStyle_Border, |
|
.LC_ListStyleSpecial { |
.LC_ListStyleSpecial { |
/* display:block; */ |
/* display:block; */ |
list-style-position: inside; |
list-style-position: inside; |
Line 6305 table.LC_tableOfContent a {
|
Line 6538 table.LC_tableOfContent a {
|
text-decoration: none; |
text-decoration: none; |
} |
} |
|
|
table.LC_tableBrowseRes tr.LC_trOdd, |
|
table.LC_tableOfContent tr.LC_trOdd { |
|
background-color: #EEEEEE; |
|
} |
|
|
|
table.LC_tableOfContent img { |
table.LC_tableOfContent img { |
border: none; |
border: none; |
height: 1.3em; |
height: 1.3em; |
Line 6349 a#LC_content_toolbar_changefolder_toggle
|
Line 6577 a#LC_content_toolbar_changefolder_toggle
|
background-image:url(/res/adm/pages/open-all-folders.gif); |
background-image:url(/res/adm/pages/open-all-folders.gif); |
} |
} |
|
|
|
a#LC_content_toolbar_management { |
|
background-image:url(/res/adm/pages/navtomenu.png); |
|
} |
|
|
ul#LC_toolbar li a:hover { |
ul#LC_toolbar li a:hover { |
background-position: bottom center; |
background-position: bottom center; |
} |
} |
Line 6383 a.LC_toolbarItem {
|
Line 6615 a.LC_toolbarItem {
|
background-color:transparent; |
background-color:transparent; |
} |
} |
|
|
|
ul.LC_funclist { |
|
margin: 0; |
|
padding: 0.5em 1em 0.5em 0; |
|
} |
|
|
|
ul.LC_funclist > li:first-child { |
|
font-weight:bold; |
|
margin-left:0.8em; |
|
} |
|
|
|
ul.LC_funclist + ul.LC_funclist { |
|
/* |
|
left border as a seperator if we have more than |
|
one list |
|
*/ |
|
border-left: 1px solid $sidebg; |
|
/* |
|
this hides the left border behind the border of the |
|
outer box if element is wrapped to the next 'line' |
|
*/ |
|
margin-left: -1px; |
|
} |
|
|
ul.LC_funclist li { |
ul.LC_funclist li { |
float: left; |
display: inline; |
white-space: nowrap; |
white-space: nowrap; |
height: 35px; /* at least as high as heighest list item */ |
margin: 0 0 0 25px; |
margin: 0 15px 15px 10px; |
line-height: 150%; |
} |
} |
|
|
|
#gciheader { |
|
float:left; |
|
width:100%; |
|
background:#DAE0D2 url("/gcimenu_bg.gif") repeat-x bottom; |
|
font-size:93%; |
|
line-height:normal; |
|
margin: 0.5em 0 0.5em 0; |
|
} |
|
#gciheader ul { |
|
margin:0; |
|
padding:10px 10px 0; |
|
list-style:none; |
|
} |
|
#gciheader li { |
|
float:left; |
|
background:url("/gcimenu_left.gif") no-repeat left top; |
|
margin:0; |
|
padding:0 0 0 9px; |
|
} |
|
#gciheader a { |
|
display:block; |
|
background:url("/gcimenu_right.gif") no-repeat right top; |
|
padding:5px 15px 4px 6px; |
|
} |
|
#gciheader #current { |
|
background-image:url("/gcimenu_left_on.gif"); |
|
} |
|
#gciheader #current a { |
|
background-image:url("/gcimenu_right_on.gif"); |
|
padding-bottom:5px; |
|
} |
|
|
END |
END |
} |
} |
Line 6666 sub start_page {
|
Line 6952 sub start_page {
|
# Don't add anything more if only_body wanted |
# Don't add anything more if only_body wanted |
return $result if $args->{'only_body'}; |
return $result if $args->{'only_body'}; |
|
|
|
#Breadcrumbs for Construction Space provided by &bodytag. |
|
if (($env{'environment.remote'} eq 'off') && ($env{'request.state'} eq 'construct')) { |
|
return $result; |
|
} |
|
|
#Breadcrumbs |
#Breadcrumbs |
if (exists($args->{'bread_crumbs'}) or exists($args->{'bread_crumbs_component'})) { |
if (exists($args->{'bread_crumbs'}) or exists($args->{'bread_crumbs_component'})) { |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
Line 6679 sub start_page {
|
Line 6970 sub start_page {
|
#if bread_crumbs_component exists show it as headline else show only the breadcrumbs |
#if bread_crumbs_component exists show it as headline else show only the breadcrumbs |
if(exists($args->{'bread_crumbs_component'})){ |
if(exists($args->{'bread_crumbs_component'})){ |
$result .= &Apache::lonhtmlcommon::breadcrumbs($args->{'bread_crumbs_component'}); |
$result .= &Apache::lonhtmlcommon::breadcrumbs($args->{'bread_crumbs_component'}); |
}else{ |
} elsif (exists($args->{'bread_crumbs_menulink'})) { |
$result .= &Apache::lonhtmlcommon::breadcrumbs(); |
$result .= &Apache::lonhtmlcommon::breadcrumbs('','',$args->{'bread_crumbs_menulink'}); |
|
} else { |
|
$result .= &Apache::lonhtmlcommon::breadcrumbs(); |
} |
} |
} |
} |
return $result; |
return $result; |
Line 7611 sub user_picker {
|
Line 7904 sub user_picker {
|
'whse' => "When searching by last,first you must include at least one character in the first name.", |
'whse' => "When searching by last,first you must include at least one character in the first name.", |
'thfo' => "The following need to be corrected before the search can be run:", |
'thfo' => "The following need to be corrected before the search can be run:", |
); |
); |
my $domform = &select_dom_form($currdom,'srchdomain',1,1); |
my $domform = &select_dom_form($currdom,'srchdomain',undef,1); |
my $srchinsel = ' <select name="srchin">'; |
my $srchinsel = ' <select name="srchin">'; |
|
|
my @srchins = ('crs','dom','alc','instd'); |
my @srchins = ('crs','dom','alc','instd'); |
|
|
foreach my $option (@srchins) { |
foreach my $option (@srchins) { |
Line 7623 sub user_picker {
|
Line 7916 sub user_picker {
|
next if ($option eq 'alc'); |
next if ($option eq 'alc'); |
next if (($option eq 'crs') && ($env{'form.form'} eq 'requestcrs')); |
next if (($option eq 'crs') && ($env{'form.form'} eq 'requestcrs')); |
next if ($option eq 'crs' && !$env{'request.course.id'}); |
next if ($option eq 'crs' && !$env{'request.course.id'}); |
|
next if ($option eq 'instd'); |
if ($curr_selected{'srchin'} eq $option) { |
if ($curr_selected{'srchin'} eq $option) { |
$srchinsel .= ' |
$srchinsel .= ' |
<option value="'.$option.'" selected="selected">'.$lt{$option}.'</option>'; |
<option value="'.$option.'" selected="selected">'.$lt{$option}.'</option>'; |
} else { |
} else { |
$srchinsel .= ' |
$srchinsel .= ' |
<option value="'.$option.'">'.$lt{$option}.'</option>'; |
<option value="'.$option.'">'.$lt{$option}.'</option>'; |
} |
} |
} |
} |
$srchinsel .= "\n </select>\n"; |
$srchinsel .= "\n </select>\n"; |
Line 7672 sub user_picker {
|
Line 7966 sub user_picker {
|
); |
); |
$new_user_create = '<p class="LC_warning">' |
$new_user_create = '<p class="LC_warning">' |
.&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.") |
.&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.") |
.' ' |
.'<br />' |
.&mt('Please contact the [_1]helpdesk[_2] for assistance.' |
.&mt('Enter a valid e-mail address as the username for the new user.').' '.&mt('Please contact the [_1]helpdesk[_2] for assistance.' |
,'<a href="'.$helplink.'">','</a>') |
,'<a href="'.$helplink.'">','</a>') |
.'</p><br />'; |
.'</p><br />'; |
} |
} |
} |
} |
Line 9544 sub extract_categories {
|
Line 9838 sub extract_categories {
|
my $trailstr; |
my $trailstr; |
if ($name eq 'instcode') { |
if ($name eq 'instcode') { |
$trailstr = &mt('Official courses (with institutional codes)'); |
$trailstr = &mt('Official courses (with institutional codes)'); |
|
} elsif ($name eq 'communities') { |
|
$trailstr = &mt('Communities'); |
} else { |
} else { |
$trailstr = $name; |
$trailstr = $name; |
} |
} |
Line 9656 cathash - reference to hash of categorie
|
Line 9952 cathash - reference to hash of categorie
|
|
|
currcat - scalar with an & separated list of categories assigned to a course. |
currcat - scalar with an & separated list of categories assigned to a course. |
|
|
|
type - scalar contains course type (Course or Community). |
|
|
Returns: $output (markup to be displayed) |
Returns: $output (markup to be displayed) |
|
|
=cut |
=cut |
|
|
sub assign_categories_table { |
sub assign_categories_table { |
my ($cathash,$currcat) = @_; |
my ($cathash,$currcat,$type) = @_; |
my $output; |
my $output; |
if (ref($cathash) eq 'HASH') { |
if (ref($cathash) eq 'HASH') { |
my (@cats,@trails,%allitems,%idx,@jsarray,@path,$maxdepth); |
my (@cats,@trails,%allitems,%idx,@jsarray,@path,$maxdepth); |
Line 9670 sub assign_categories_table {
|
Line 9968 sub assign_categories_table {
|
if (@cats > 0) { |
if (@cats > 0) { |
my $itemcount = 0; |
my $itemcount = 0; |
if (ref($cats[0]) eq 'ARRAY') { |
if (ref($cats[0]) eq 'ARRAY') { |
$output = &Apache::loncommon::start_data_table(); |
|
my @currcategories; |
my @currcategories; |
if ($currcat ne '') { |
if ($currcat ne '') { |
@currcategories = split('&',$currcat); |
@currcategories = split('&',$currcat); |
} |
} |
|
my $table; |
for (my $i=0; $i<@{$cats[0]}; $i++) { |
for (my $i=0; $i<@{$cats[0]}; $i++) { |
my $parent = $cats[0][$i]; |
my $parent = $cats[0][$i]; |
my $css_class = $itemcount%2?' class="LC_odd_row"':''; |
|
next if ($parent eq 'instcode'); |
next if ($parent eq 'instcode'); |
|
if ($type eq 'Community') { |
|
next unless ($parent eq 'communities'); |
|
} else { |
|
next if ($parent eq 'communities'); |
|
} |
|
my $css_class = $itemcount%2?' class="LC_odd_row"':''; |
my $item = &escape($parent).'::0'; |
my $item = &escape($parent).'::0'; |
my $checked = ''; |
my $checked = ''; |
if (@currcategories > 0) { |
if (@currcategories > 0) { |
Line 9686 sub assign_categories_table {
|
Line 9989 sub assign_categories_table {
|
$checked = ' checked="checked"'; |
$checked = ' checked="checked"'; |
} |
} |
} |
} |
$output .= '<tr '.$css_class.'><td><span class="LC_nobreak">'. |
my $parent_title = $parent; |
'<input type="checkbox" name="usecategory" value="'. |
if ($parent eq 'communities') { |
$item.'"'.$checked.' />'.$parent.'</span>'. |
$parent_title = &mt('Communities'); |
'<input type="hidden" name="catname" value="'.$parent.'" /></td>'; |
} |
|
$table .= '<tr '.$css_class.'><td><span class="LC_nobreak">'. |
|
'<input type="checkbox" name="usecategory" value="'. |
|
$item.'"'.$checked.' />'.$parent_title.'</span>'. |
|
'<input type="hidden" name="catname" value="'.$parent.'" /></td>'; |
my $depth = 1; |
my $depth = 1; |
push(@path,$parent); |
push(@path,$parent); |
$output .= &assign_category_rows($itemcount,\@cats,$depth,$parent,\@path,\@currcategories); |
$table .= &assign_category_rows($itemcount,\@cats,$depth,$parent,\@path,\@currcategories); |
pop(@path); |
pop(@path); |
$output .= '</tr><tr><td colspan="'.$maxdepth.'" class="LC_row_separator"></td></tr>'; |
$table .= '</tr><tr><td colspan="'.$maxdepth.'" class="LC_row_separator"></td></tr>'; |
$itemcount ++; |
$itemcount ++; |
} |
} |
$output .= &Apache::loncommon::end_data_table(); |
if ($itemcount) { |
|
$output = &Apache::loncommon::start_data_table(). |
|
$table. |
|
&Apache::loncommon::end_data_table(); |
|
} |
} |
} |
} |
} |
} |
} |
Line 9942 sub check_clone {
|
Line 10253 sub check_clone {
|
my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom); |
my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom); |
my $clonemsg; |
my $clonemsg; |
my $can_clone = 0; |
my $can_clone = 0; |
my $lctype = lc($args->{'type'}); |
my $lctype = lc($args->{'crstype'}); |
if ($lctype ne 'community') { |
if ($lctype ne 'community') { |
$lctype = 'course'; |
$lctype = 'course'; |
} |
} |
if ($clonehome eq 'no_host') { |
if ($clonehome eq 'no_host') { |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} eq 'Community') { |
$clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a non-existent community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
$clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a non-existent community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
} else { |
} else { |
$clonemsg = &mt('No new course created.').$linefeed.&mt('A new course could not be cloned from the specified original - [_1] - because it is a non-existent course.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
$clonemsg = &mt('No new course created.').$linefeed.&mt('A new course could not be cloned from the specified original - [_1] - because it is a non-existent course.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
} |
} |
} else { |
} else { |
my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1}); |
my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1}); |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} eq 'Community') { |
if ($clonedesc{'type'} ne 'Community') { |
if ($clonedesc{'type'} ne 'Community') { |
$clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a course not a community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
$clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a course not a community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
return ($can_clone, $clonemsg, $cloneid, $clonehome); |
return ($can_clone, $clonemsg, $cloneid, $clonehome); |
Line 9973 sub check_clone {
|
Line 10284 sub check_clone {
|
$can_clone = 1; |
$can_clone = 1; |
} else { |
} else { |
my $ccrole = 'cc'; |
my $ccrole = 'cc'; |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} eq 'Community') { |
$ccrole = 'co'; |
$ccrole = 'co'; |
} |
} |
my %roleshash = |
my %roleshash = |
Line 9984 sub check_clone {
|
Line 10295 sub check_clone {
|
if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) { |
if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) { |
$can_clone = 1; |
$can_clone = 1; |
} else { |
} else { |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} eq 'Community') { |
$clonemsg = &mt('No new community created.').$linefeed.&mt('The new community could not be cloned from the existing community because the new community owner ([_1]) does not have cloning rights in the existing community ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); |
$clonemsg = &mt('No new community created.').$linefeed.&mt('The new community could not be cloned from the existing community because the new community owner ([_1]) does not have cloning rights in the existing community ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); |
} else { |
} else { |
$clonemsg = &mt('No new course created.').$linefeed.&mt('The new course could not be cloned from the existing course because the new course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); |
$clonemsg = &mt('No new course created.').$linefeed.&mt('The new course could not be cloned from the existing course because the new course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); |
Line 10323 sub construct_course {
|
Line 10634 sub construct_course {
|
$outcome .= ($fatal?$errtext:'write ok').$linefeed; |
$outcome .= ($fatal?$errtext:'write ok').$linefeed; |
} |
} |
|
|
|
if ($args->{'cloneroster'}) { |
|
my ($numadded,$clisterror) = &Apache::lonclonecourse::copyroster($cloneid,$$courseid,$args->{'startaccess'},$args->{'endaccess'}); |
|
if ($clisterror) { |
|
$outcome .= "\0".&mt('An error occurred when copying the student roster from the old course to the new course; the error was: [_1].',$clisterror).$linefeed; |
|
if ($numadded) { |
|
$outcome .= &mt('Although [quant,_1,student] have received roles in the new course the roster does not report this. It is ').$linefeed; |
|
} |
|
} else { |
|
if ($numadded) { |
|
$outcome .= "\0".&mt('[quant,_1,student] copied from roster for old course to roster for new course.',$numadded).$linefeed; |
|
} else { |
|
$outcome .= "\0".&mt('No students have been enrolled in the new Concept Test.').' '.&mt('This is because either (a) an error occurred, or (b) there were no students with either current access or access which ended on/after the current default end date set for access to the old course.').$linefeed; |
|
} |
|
} |
|
} |
return (1,$outcome); |
return (1,$outcome); |
} |
} |
|
|
Line 10589 sub _add_to_env {
|
Line 10915 sub _add_to_env {
|
} |
} |
} |
} |
|
|
|
sub new_roles_update { |
|
my $rolecount = 0; |
|
foreach my $envkey (keys(%env)) { |
|
next unless ($envkey =~ /^user\.role\./); |
|
$rolecount ++; |
|
} |
|
my $newrolecount = 0; |
|
if (!$rolecount) { |
|
my %userenv; |
|
foreach my $crstype ('official','unofficial','community') { |
|
$userenv{'canrequest.'.$crstype} = |
|
&Apache::lonnet::usertools_access($env{'user.name'}, |
|
$env{'user.domain'},$crstype,'reload','requestcourses'); |
|
} |
|
my $then=$env{'user.login.time'}; |
|
my $refresh=time; |
|
my (%userroles,%allroles,%allgroups,@newroles); |
|
my %roleshash = |
|
&Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},'userroles',['active','future','previous'],undef,undef,1); |
|
foreach my $item (keys(%roleshash)) { |
|
my ($uname,$udom,$role,$section) = split(':',$item); |
|
my $where = '/'.$udom.'/'.$uname; |
|
my ($tstart,$tend) = split(':',$roleshash{$item}); |
|
if ($section ne '') { |
|
$where .= '/'.$section; |
|
} |
|
my $spec = $role.'.'.$where; |
|
&Apache::lonnet::set_arearole($role,$where,$tstart,$tend, |
|
$env{'user.domain'},$env{'user.name'}); |
|
$userroles{'user.role.'.$spec} = $tstart.'.'.$tend; |
|
$newrolecount ++; |
|
unless (grep(/^\Q$role\E$/,@newroles)) { |
|
push(@newroles,$role); |
|
} |
|
my $status = |
|
&Apache::lonnet::curr_role_status($tstart,$tend,$refresh,$then); |
|
if ($status eq 'active') { |
|
&Apache::lonnet::gather_roleprivs(\%allroles,\%allgroups,\%userroles, |
|
$where,$role,$tstart,$tend); |
|
} |
|
} |
|
if (@newroles) { |
|
my ($author,$adv) = &Apache::lonnet::set_userprivs(\%userroles,\%allroles, |
|
\%allgroups); |
|
&Apache::lonnet::appenv(\%userroles,[@newroles,'cm']); |
|
$userenv{'user.adv'} = $adv; |
|
$userenv{'user.author'} = $author; |
|
$userenv{'user.refresh.time'} = $refresh; |
|
} |
|
&Apache::lonnet::appenv(\%userenv); |
|
} |
|
return $newrolecount; |
|
} |
|
|
# --- Get the symbolic name of a problem and the url |
# --- Get the symbolic name of a problem and the url |
sub get_symb { |
sub get_symb { |
my ($request,$silent) = @_; |
my ($request,$silent) = @_; |
Line 10630 sub clean_symb {
|
Line 11010 sub clean_symb {
|
return ($symb,$enc); |
return ($symb,$enc); |
} |
} |
|
|
|
sub needs_gci_custom { |
|
my $custommenu; |
|
my $numdc = &check_for_gci_dc(); |
|
my $udom = $env{'user.domain'}; |
|
return if ($udom eq ''); |
|
unless ($numdc) { |
|
my $then=$env{'user.login.time'}; |
|
my $now = time; |
|
my %allnums = &get_faculty_cnums(); |
|
my $cnums = $allnums{$udom}; |
|
return unless (ref($cnums) eq 'HASH'); |
|
if ($env{"user.role.st./$udom/$cnums->{'review'}"}) { |
|
my ($start,$end) = |
|
split('.',$env{"user.role.st./$udom/$cnums->{'review'}"}); |
|
if (((!$start) || ($start && $start <= $now)) && |
|
((!$end) || ($end > $now))) { |
|
$custommenu = 1; |
|
if ($env{"user.role.cc./$udom/$cnums->{'review'}"}) { |
|
my ($ccstart,$ccend) = |
|
split('.',$env{"user.role.cc./$udom/$cnums->{'review'}"}); |
|
if (((!$start) || ($start && $start <= $now)) && |
|
((!$end) || ($end > $now))) { |
|
$custommenu = ''; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return $custommenu; |
|
} |
|
|
|
sub ci_tabs { |
|
my ($domain) = @_; |
|
my %tabs = ( |
|
gci => ['review','submit','managetest','tutorial'], |
|
slci => ['review'], |
|
); |
|
return $tabs{$domain}; |
|
} |
|
|
|
sub check_for_gci_dc { |
|
my $then=$env{'user.login.time'}; |
|
my $numdc = 0; |
|
my @doms = &Apache::lonnet::current_machine_domains(); |
|
foreach my $dom (@doms) { |
|
if ($env{'user.role.dc./'.$dom.'/'}) { |
|
my $livedc = 1; |
|
my ($tstart,$tend)=split(/\./,$env{'user.role.dc./'.$dom.'/'}); |
|
if ($tstart && $tstart>$then) { $livedc = 0; } |
|
if ($tend && $tend <$then) { $livedc = 0; } |
|
if ($livedc) { |
|
$numdc++; |
|
} |
|
} |
|
} |
|
return $numdc; |
|
} |
|
|
|
sub get_faculty_cnums { |
|
my %cnums = ( |
|
gci => { |
|
review => '9615072b469884921gcil1', |
|
submit => '1H96711d710194bfegcil1', |
|
tutorial => '5422913620b814c90gcil1', |
|
}, |
|
slci => { |
|
review => '4V80581c93ffc4c38gcil1', |
|
} |
|
); |
|
return %cnums; |
|
} |
|
|
|
sub existing_gcitest_courses { |
|
my ($role) = @_; |
|
my %courses; |
|
my $cdom = $env{'user.domain'}.'test'; |
|
my $now = time; |
|
foreach my $envkey (keys(%env)) { |
|
my $cnum; |
|
if ($envkey =~ m{^user\.role\.\Q$role\E\./\Q$cdom\E/($match_courseid)$}) { |
|
$cnum = $1; |
|
} else { |
|
next; |
|
} |
|
my ($tstart,$tend) = split(/\./,$env{$envkey}); |
|
if (((!$tstart) || ($tstart < $now)) && ((!$tend) || ($tend > $now))) { |
|
my $descr = $env{'course.'.$cdom.'_'.$cnum.'.description'}; |
|
if ($descr ne '') { |
|
$courses{$cdom.'_'.$cnum}{'description'} = $descr; |
|
} |
|
} |
|
} |
|
return %courses; |
|
} |
|
|
|
sub gcitest_switcher { |
|
my ($role,$formname,%courses) = @_; |
|
my $output; |
|
my %Sortby; |
|
foreach my $course (sort(keys(%courses))) { |
|
next unless (ref($courses{$course}) eq 'HASH'); |
|
my $clean_title = $courses{$course}{'description'}; |
|
$clean_title =~ s/\W+//g; |
|
if ($clean_title eq '') { |
|
$clean_title = $courses{$course}{'description'}; |
|
} |
|
push(@{$Sortby{$clean_title}},$course); |
|
} |
|
my @sorted_courses = sort { lc($a) cmp lc($b) } (keys(%Sortby)); |
|
my $default; |
|
if (@sorted_courses > 1) { |
|
if (($env{'request.course.id'}) && ($courses{$env{'request.course.id'}})) { |
|
$default = &mt('Switch concept test ...'); |
|
} else { |
|
$default = &mt('Select a concept test ...'); |
|
} |
|
} else { |
|
unless (($env{'request.course.id'}) && ($courses{$env{'request.course.id'}})) { |
|
$default = &mt('Select concept test ...'); |
|
} |
|
} |
|
if ($default) { |
|
$output = '<form name="'.$formname.'" action="/adm/roles" method="post">'. |
|
'<select name="newrole" onchange="javascript:courseswitcher();">'. |
|
'<option value="" selected="selected">'.$default.'</option>'; |
|
foreach my $item (@sorted_courses) { |
|
foreach my $course (@{$Sortby{$item}}) { |
|
my ($cdom,$cnum) = split('_',$course); |
|
$output .= '<option value="'.$role.'./'.$cdom.'/'.$cnum.'">'.$courses{$course}{'description'}.'</option>'; |
|
} |
|
} |
|
$output .= '</select><input type="hidden" name="selectrole" value="" /></form>'; |
|
} |
|
return $output; |
|
} |
|
|
|
sub gcitest_switcher_js { |
|
my ($current,$numcourses,$formname) = @_; |
|
my $output = <<"ENDJS"; |
|
|
|
function courseswitcher(caller) { |
|
var numcourses = $numcourses; |
|
var current = '$current'; |
|
var choice = document.$formname.newrole.options[document.$formname.newrole.selectedIndex].value; |
|
if (choice == '') { |
|
if (caller == 'icon') { |
|
alert('No Concept Test selected'); |
|
} |
|
document.$formname.selectrole.value = ''; |
|
return; |
|
} |
|
if (choice == current) { |
|
if ((caller != 'icon') && (numcourses > 1)) { |
|
alert('You have selected the current course.\\nPlease select a different Concept Test course'); |
|
} |
|
document.$formname.newrole.selectedIndex = 0; |
|
document.$formname.selectrole.value = ''; |
|
return; |
|
} |
|
document.$formname.selectrole.value = '1'; |
|
document.$formname.submit(); |
|
return; |
|
} |
|
|
|
ENDJS |
|
return $output; |
|
} |
|
|
|
sub get_citest_map { |
|
my ($cdom) = @_; |
|
my %questionnaires = ( |
|
gcitest => 'default_1261144274.sequence', |
|
slcitest => 'default_1261144274.sequence', |
|
); |
|
return $questionnaires{$cdom}; |
|
} |
|
|
=pod |
=pod |
|
|
=back |
=back |