version 1.917, 2009/11/20 04:12:43
|
version 1.925.2.7, 2010/01/06 22:53:58
|
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 4367 sub CSTR_pageheader {
|
Line 4367 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 4455 sub bodytag {
|
Line 4467 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 4480 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')) { |
|
undef($role); |
|
} else { |
|
$role = &Apache::lonnet::plaintext($role,&course_type()); |
|
} |
} |
} |
if ($env{'request.course.sec'}) { |
if ($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'}; |
$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 4522 sub bodytag {
|
Line 4546 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 |
# } |
# } |
|
|
|
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 = '<br />'.$role_selector; |
|
} |
|
} |
|
|
if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { |
if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { |
if ($dc_info) { |
if ($dc_info) { |
Line 4533 sub bodytag {
|
Line 4567 sub bodytag {
|
return $bodytag; |
return $bodytag; |
} |
} |
|
|
$bodytag .= qq|<div id="LC_nav_bar">$name $role</div>|; |
$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(); |
|
|
Line 4547 sub bodytag {
|
Line 4581 sub bodytag {
|
|
|
#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($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::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); |
|
} |
}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 4751 body {
|
Line 4795 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 4782 form, .inline {
|
Line 4821 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 4872 table.LC_pastsubmission {
|
Line 4912 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 4954 table#LC_menubuttons img {
|
Line 4992 table#LC_menubuttons img {
|
border: none; |
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 { |
.LC_breadcrumbs_component { |
float: right; |
float: right; |
margin: 0 1em; |
margin: 0 1em; |
Line 5001 td.LC_table_cell_checkbox {
|
Line 5004 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 5066 td.LC_menubuttons_text {
|
Line 5065 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 5256 table.LC_mail_list tr.LC_mail_new:hover
|
Line 5250 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 5541 table.LC_notify_front_page td {
|
Line 5529 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 5665 span.LC_prior_string,
|
Line 5655 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 5703 span.LC_cusr_subheading {
|
Line 5693 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 5914 img.stift {
|
Line 5893 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 { |
Line 5991 h6 {
|
Line 5957 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 6254 dl.LC_ListStyleClean dd {
|
Line 6214 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 6389 table.LC_tableOfContent a {
|
Line 6348 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 6492 ul.LC_funclist li {
|
Line 6446 ul.LC_funclist li {
|
line-height: 150%; |
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 |
END |
} |
} |
Line 6768 sub start_page {
|
Line 6752 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 9646 sub extract_categories {
|
Line 9635 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 9758 cathash - reference to hash of categorie
|
Line 9749 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 9772 sub assign_categories_table {
|
Line 9765 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 9788 sub assign_categories_table {
|
Line 9786 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 10732 sub clean_symb {
|
Line 10738 sub clean_symb {
|
return ($symb,$enc); |
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 |
=pod |
|
|
=back |
=back |