--- loncom/interface/loncommon.pm 2009/11/30 21:29:47 1.920
+++ 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.920 2009/11/30 21:29:47 raeburn Exp $
+# $Id: loncommon.pm,v 1.925.2.7 2010/01/06 22:53:58 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1877,7 +1877,7 @@ sub select_form {
$selectform.=
'\n";
+ ">".$hash{$key}."\n";
}
$selectform.="";
return $selectform;
@@ -4367,18 +4367,30 @@ sub CSTR_pageheader {
} else {
$lastitem = $thisdisfn;
}
- return
+
+ my $output =
'
'
.&Apache::loncommon::help_open_menu('','',3,'Authoring') #FIXME: Broken? Where is it?
.''.&mt('Construction Space:').' '
.''
.&Apache::lonmenu::constspaceform()
.'
';
+
+ return $output;
}
###############################################
@@ -4455,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') {
@@ -4464,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=' '; }
@@ -4522,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) {
@@ -4533,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();
@@ -4547,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') {
@@ -4756,11 +4795,6 @@ body {
color:$font;
}
-a:link,
-a:visited {
- font-size:100%;
-}
-
a:focus {
color: red;
background: yellow;
@@ -4787,6 +4821,7 @@ form, .inline {
.LC_filename {
font-family: $mono;
white-space:pre;
+ font-size: 120%;
}
.LC_fileicon {
@@ -4877,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;
@@ -4959,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;
@@ -5006,10 +5004,6 @@ td.LC_table_cell_checkbox {
text-align: center;
}
-table#LC_mainmenu td.LC_mainmenu_column {
- vertical-align: top;
-}
-
.LC_fontsize_small {
font-size: 70%;
}
@@ -5071,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;
@@ -5261,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;
}
@@ -5672,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;
}
@@ -5710,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;
@@ -5921,21 +5893,8 @@ img.stift {
vertical-align: middle;
}
-table#LC_mainmenu {
- margin-top:10px;
- width:80%;
-}
-
-table#LC_mainmenu td.LC_mainmenu_col_fieldset {
+table td.LC_mainmenu_col_fieldset {
vertical-align: top;
- width: 45%;
-}
-
-.LC_mainmenu_fieldset_category {
- color: $font;
- background: $pgbg;
- font-size: small;
- font-weight: bold;
}
div.LC_createcourse {
@@ -5998,12 +5957,6 @@ h6 {
border: 0;
}
-.LC_Right {
- float: right;
- margin: 0;
- padding: 0;
-}
-
.LC_FormSectionClearButton input {
background-color:transparent;
border: none;
@@ -6261,7 +6214,6 @@ dl.LC_ListStyleClean dd {
.LC_ListStyleClean,
.LC_ListStyleSimple,
.LC_ListStyleNormal,
-.LC_ListStyle_Border,
.LC_ListStyleSpecial {
/* display:block; */
list-style-position: inside;
@@ -6396,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;
@@ -6499,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
}
@@ -10761,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