--- loncom/interface/loncommon.pm 2009/12/03 14:27:16 1.923 +++ loncom/interface/loncommon.pm 2010/01/06 22:53:58 1.925.2.7 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.923 2009/12/03 14:27:16 bisitz Exp $ +# $Id: loncommon.pm,v 1.925.2.7 2010/01/06 22:53:58 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -4467,6 +4467,10 @@ sub bodytag { 'link' => &designparm($function.'.link',$domain),); @design{keys(%$addentries)} = @$addentries{keys(%$addentries)}; + my $custommenu; + if ($env{'environment.remote'} eq 'off') { + $custommenu = &needs_gci_custom(); + } # role and realm my ($role,$realm) = split(/\./,$env{'request.role'},2); if ($role eq 'ca') { @@ -4476,14 +4480,22 @@ sub bodytag { # realm if ($env{'request.course.id'}) { if ($env{'request.role'} !~ /^cr/) { - $role = &Apache::lonnet::plaintext($role,&course_type()); + if (($custommenu) && ($role eq 'cm')) { + undef($role); + } else { + $role = &Apache::lonnet::plaintext($role,&course_type()); + } } if ($env{'request.course.sec'}) { $role .= (' 'x2).'- '.&mt('section:').' '.$env{'request.course.sec'}; } $realm = $env{'course.'.$env{'request.course.id'}.'.description'}; } else { - $role = &Apache::lonnet::plaintext($role); + if (($custommenu) && ($role eq 'cm')) { + undef($role); + } else { + $role = &Apache::lonnet::plaintext($role); + } } if (!$realm) { $realm=' '; } @@ -4534,7 +4546,17 @@ sub bodytag { # $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls # } - + my $role_selector; + if (($custommenu) && ($env{'request.course.id'}) && + ($env{'course.'.$env{'request.course.id'}.'.domain'} eq 'gcitest') && + ($env{'request.role'} !~ m{^st\./gcitest/$match_courseid})) { + $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 = '
'.$role_selector; + } + } if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { if ($dc_info) { @@ -4545,10 +4567,10 @@ sub bodytag { return $bodytag; } - $bodytag .= qq|
$name $role
|; + $bodytag .= qq|
$name $role $role_selector
|; $bodytag .= Apache::lonhtmlcommon::scripttag( - Apache::lonmenu::utilityfunctions(), 'start'); + Apache::lonmenu::utilityfunctions('',$custommenu), 'start'); $bodytag .= Apache::lonmenu::primary_menu(); @@ -4559,7 +4581,12 @@ sub bodytag { #don't show menus for public users if($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public'){ - $bodytag .= Apache::lonmenu::secondary_menu(); + if (($custommenu) && + ($env{'request.role'} !~ m{^st\./gcitest/$match_courseid})) { + $bodytag .= &Apache::lonmenu::gci_secondary_menu(); + } else { + $bodytag .= Apache::lonmenu::secondary_menu(); + } $bodytag .= Apache::lonmenu::serverform(); $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); if ($env{'request.state'} eq 'construct') { @@ -4885,9 +4912,7 @@ table.LC_pastsubmission { margin: 2px; } -table#LC_top_nav, -table#LC_menubuttons, -table#LC_nav_location { +table#LC_menubuttons { width: 100%; background: $pgbg; border: 2px; @@ -4967,41 +4992,6 @@ table#LC_menubuttons img { border: none; } -table#LC_top_nav td { - background: $tabbg; - border: none; - font-size: small; - vertical-align:top; - padding:2px 5px 2px 5px; -} - -table#LC_top_nav td a, -div#LC_top_nav a { - color: $font; -} - -table#LC_top_nav td.LC_top_nav_logo { - background: $tabbg; - text-align: left; - white-space: nowrap; - width: 31px; -} - -table#LC_top_nav td.LC_top_nav_logo img { - border: none; - vertical-align: bottom; -} - -table#LC_top_nav td.LC_top_nav_exit, -table#LC_top_nav td.LC_top_nav_help { - width: 2.0em; -} - -table#LC_top_nav td.LC_top_nav_login { - width: 4.0em; - text-align: center; -} - .LC_breadcrumbs_component { float: right; margin: 0 1em; @@ -5075,11 +5065,6 @@ td.LC_menubuttons_text { background: $tabbg; } -.LC_new_mail { - background: $tabbg; - font-weight: bold; -} - table.LC_data_table, table.LC_mail_list { border: 1px solid #000000; @@ -5265,12 +5250,6 @@ table.LC_mail_list tr.LC_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 { background-color: $mail_read; } @@ -5676,12 +5655,12 @@ span.LC_prior_string, span.LC_prior_custom, span.LC_prior_reaction, span.LC_prior_math { - font-family: monospace; + font-family: $mono; white-space: pre; } span.LC_prior_string { - font-family: monospace; + font-family: $mono; white-space: pre; } @@ -5714,17 +5693,6 @@ span.LC_cusr_subheading { 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 { border: 1px solid #BBBBBB; background: #DDDDDD; @@ -5989,12 +5957,6 @@ h6 { border: 0; } -.LC_Right { - float: right; - margin: 0; - padding: 0; -} - .LC_FormSectionClearButton input { background-color:transparent; border: none; @@ -6252,7 +6214,6 @@ dl.LC_ListStyleClean dd { .LC_ListStyleClean, .LC_ListStyleSimple, .LC_ListStyleNormal, -.LC_ListStyle_Border, .LC_ListStyleSpecial { /* display:block; */ list-style-position: inside; @@ -6387,11 +6348,6 @@ table.LC_tableOfContent a { text-decoration: none; } -table.LC_tableBrowseRes tr.LC_trOdd, -table.LC_tableOfContent tr.LC_trOdd { - background-color: #EEEEEE; -} - table.LC_tableOfContent img { border: none; height: 1.3em; @@ -6490,6 +6446,36 @@ ul.LC_funclist li { line-height: 150%; } +#gciheader { + float:left; + width:100%; + background:#DAE0D2 url("/gcimenu_bg.gif") repeat-x bottom; + font-size:93%; + line-height:normal; +} +#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 } @@ -10752,6 +10738,76 @@ sub clean_symb { return ($symb,$enc); } +sub needs_gci_custom { + my $custommenu; + my $numdc = &check_for_gci_dc(); + unless ($numdc) { + my $then=$env{'user.login.time'}; + my $now = time; + my %cnums = ( + review => '9615072b469884921gcil1', + submit => '1H96711d710194bfegcil1', + ); + if ($env{'user.role.st./gci/'.$cnums{'review'}}) { + my ($start,$end) = + split('.',$env{'user.role.st./gci/'.$cnums{'review'}}); + if (((!$start) || ($start && $start <= $now)) && + ((!$end) || ($end > $now))) { + $custommenu = 1; + if ($env{'user.role.cc./gci/'.$cnums{'review'}}) { + my ($ccstart,$ccend) = + split('.',$env{'user.role.cc./gci/'.$cnums{'review'}}); + if (((!$start) || ($start && $start <= $now)) && + ((!$end) || ($end > $now))) { + $custommenu = ''; + } + } + } + } + } + return $custommenu; +} + +sub check_for_gci_dc { + my $then=$env{'user.login.time'}; + my $numdc = 0; + foreach my $dom ('gci','gcitest') { + 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 existing_gcitest_courses { + my ($role) = @_; + my %courses; + my $cdom = 'gcitest'; + 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; +} + =pod =back