--- loncom/interface/loncommon.pm 2010/12/06 02:19:38 1.925.2.24
+++ loncom/interface/loncommon.pm 2010/03/29 13:40:03 1.963
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.925.2.24 2010/12/06 02:19:38 raeburn Exp $
+# $Id: loncommon.pm,v 1.963 2010/03/29 13:40:03 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -483,9 +483,9 @@ ENDAUTHORBRW
sub coursebrowser_javascript {
my ($domainfilter,$sec_element,$formname,$role_element,$crstype) = @_;
- my $wintitle = &mt('Course Browser');
- if ($crstype ne '') {
- $wintitle = &mt($crstype);
+ my $wintitle = 'Course_Browser';
+ if ($crstype eq 'Community') {
+ $wintitle = 'Community_Browser';
}
my $id_functions = &javascript_index_functions();
my $output = '
@@ -1127,7 +1127,7 @@ sub help_open_topic {
$template.=' '
.' ';
if ($text ne "") {
$template.='';
@@ -1202,12 +1202,7 @@ ENDOUTPUT
sub help_open_menu {
my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text)
= @_;
- $stayOnPage = 0 if (not defined $stayOnPage);
- # only use pop-up help (stayOnPage == 0)
- # if environment.remote is on (using remote control UI)
- if ($env{'environment.remote'} eq 'off' ) {
- $stayOnPage=1;
- }
+ $stayOnPage = 1;
my $output;
if ($component_help) {
if (!$text) {
@@ -1228,8 +1223,8 @@ sub help_open_menu {
sub top_nav_help {
my ($text) = @_;
$text = &mt($text);
- my $stay_on_page =
- ($env{'environment.remote'} eq 'off' );
+ my $stay_on_page = 1;
+
my $link = ($stay_on_page) ? "javascript:helpMenu('display')"
: "javascript:helpMenu('open')";
my $banner_link = &update_help_link(undef,undef,undef,undef,$stay_on_page);
@@ -1244,10 +1239,7 @@ END
sub help_menu_js {
my ($text) = @_;
-
- my $stayOnPage =
- ($env{'environment.remote'} eq 'off' );
-
+ my $stayOnPage = 1;
my $width = 620;
my $height = 600;
my $helptopic=&general_help();
@@ -1304,10 +1296,7 @@ sub help_open_bug {
unless ($env{'user.adv'}) { return ''; }
unless ($Apache::lonnet::perlvar{'BugzillaHost'}) { return ''; }
$text = "" if (not defined $text);
- $stayOnPage = 0 if (not defined $stayOnPage);
- if ($env{'environment.remote'} eq 'off' ) {
$stayOnPage=1;
- }
$width = 600 if (not defined $width);
$height = 600 if (not defined $height);
@@ -1348,10 +1337,7 @@ sub help_open_faq {
unless ($env{'user.adv'}) { return ''; }
unless ($Apache::lonnet::perlvar{'FAQHost'}) { return ''; }
$text = "" if (not defined $text);
- $stayOnPage = 0 if (not defined $stayOnPage);
- if ($env{'environment.remote'} eq 'off' ) {
$stayOnPage=1;
- }
$width = 350 if (not defined $width);
$height = 400 if (not defined $height);
@@ -1719,10 +1705,13 @@ sub create_workbook {
my $workbook = Spreadsheet::WriteExcel->new('/home/httpd'.$filename);
if (! defined($workbook)) {
$r->log_error("Error creating excel spreadsheet $filename: $!");
- $r->print('
'.&mt("Unable to create new Excel file. ".
- "This error has been logged. ".
- "Please alert your LON-CAPA administrator").
- '
');
+ $r->print(
+ ''
+ .&mt('Problems occurred in creating the new Excel file.')
+ .' '.&mt('This error has been logged.')
+ .' '.&mt('Please alert your LON-CAPA administrator.')
+ .'
'
+ );
return (undef);
}
#
@@ -1762,9 +1751,13 @@ sub create_text_file {
$fh = Apache::File->new('>/home/httpd'.$filename);
if (! defined($fh)) {
$r->log_error("Couldn't open $filename for output $!");
- $r->print(&mt('Problems occurred in creating the output file. '
- .'This error has been logged. '
- .'Please alert your LON-CAPA administrator.'));
+ $r->print(
+ ''
+ .&mt('Problems occurred in creating the output file.')
+ .' '.&mt('This error has been logged.')
+ .' '.&mt('Please alert your LON-CAPA administrator.')
+ .'
'
+ );
}
return ($fh,$filename)
}
@@ -1978,16 +1971,7 @@ sub select_dom_form {
($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom;
if ($showdomdesc) {
if ($dom ne '') {
- my $domdesc;
- if ($name eq 'srchdomain') {
- if ($dom =~ /^\w+ci$/) {
- $domdesc = 'Faculty';
- } else {
- $domdesc = 'Students';
- }
- } else {
- $domdesc = &Apache::lonnet::domain($dom,'description');
- }
+ my $domdesc = &Apache::lonnet::domain($dom,'description');
if ($domdesc ne '') {
$selectdomain .= ' ('.$domdesc.')';
}
@@ -2478,11 +2462,9 @@ sub authform_internal{
}
$autharg = ' ';
- my $authtext = '[_1] Internally authenticated (with initial password [_2])';
- if ($in{'caller'} eq 'requestcrs') {
- $authtext = "[_1] Students' password, if none in the uploaded file: [_2]";
- }
- $result = &mt($authtext,''.$authtype,' '.$autharg);
+ $result = &mt
+ ('[_1] Internally authenticated (with initial password [_2])',
+ ''.$authtype,' '.$autharg);
$result.=" ".&mt('Visible input').' ';
return $result;
}
@@ -3416,12 +3398,22 @@ sub get_previous_attempt {
}
$prevattempts=&start_data_table().&start_data_table_header_row();
$prevattempts.=''.&mt('History').' ';
+ my %typeparts;
+ my $showsurv=&Apache::lonnet::allowed('vas',$env{'request.course.id'});
foreach my $key (sort(keys(%lasthash))) {
my ($ign,@parts) = split(/\./,$key);
if ($#parts > 0) {
my $data=$parts[-1];
pop(@parts);
- $prevattempts.=''.&mt('Part ').join('.',@parts).' '.$data.' ';
+ if ($data eq 'type') {
+ unless ($showsurv) {
+ my $id = join(',',@parts);
+ $typeparts{$ign.'.'.$id} = $lasthash{$key};
+ }
+ delete($lasthash{$key});
+ } else {
+ $prevattempts.=''.&mt('Part ').join('.',@parts).' '.$data.' ';
+ }
} else {
if ($#parts == 0) {
$prevattempts.=''.$parts[0].' ';
@@ -3431,23 +3423,98 @@ sub get_previous_attempt {
}
}
$prevattempts.=&end_data_table_header_row();
+ my %lasthidden;
if ($getattempt eq '') {
for ($version=1;$version<=$returnhash{'version'};$version++) {
- $prevattempts.=&start_data_table_row().
- ''.&mt('Transaction [_1]',$version).' ';
- foreach my $key (sort(keys(%lasthash))) {
- my $value = &format_previous_attempt_value($key,
- $returnhash{$version.':'.$key});
- $prevattempts.=''.$value.' ';
- }
- $prevattempts.=&end_data_table_row();
+ my @hidden;
+ if (%typeparts) {
+ foreach my $id (keys(%typeparts)) {
+ if (($returnhash{$version.':'.$id.'.type'} eq 'anonsurvey') || ($returnhash{$version.':'.$id.'.type'} eq 'anonsurveycred')) {
+ push(@hidden,$id);
+ $lasthidden{$id} = 1;
+ } elsif ($lasthidden{$id}) {
+ if (exists($returnhash{$version.':'.$id.'.award'})) {
+ delete($lasthidden{$id});
+ }
+ }
+ }
+ }
+ $prevattempts.=&start_data_table_row().
+ ''.&mt('Transaction [_1]',$version).' ';
+ if (@hidden) {
+ foreach my $key (sort(keys(%lasthash))) {
+ my $hide;
+ foreach my $id (@hidden) {
+ if ($key =~ /^\Q$id\E/) {
+ $hide = 1;
+ last;
+ }
+ }
+ if ($hide) {
+ my ($id,$data) = ($key =~ /^(.+)\.([^.]+)$/);
+ if (($data eq 'award') || ($data eq 'awarddetail')) {
+ my $value = &format_previous_attempt_value($key,
+ $returnhash{$version.':'.$key});
+ $prevattempts.=''.$value.' ';
+ } else {
+ $prevattempts.=' ';
+ }
+ } else {
+ if ($key =~ /\./) {
+ my $value = &format_previous_attempt_value($key,
+ $returnhash{$version.':'.$key});
+ $prevattempts.=''.$value.' ';
+ } else {
+ $prevattempts.=' ';
+ }
+ }
+ }
+ } else {
+ foreach my $key (sort(keys(%lasthash))) {
+ my $value = &format_previous_attempt_value($key,
+ $returnhash{$version.':'.$key});
+ $prevattempts.=''.$value.' ';
+ }
+ }
+ $prevattempts.=&end_data_table_row();
}
}
+ my @currhidden = keys(%lasthidden);
$prevattempts.=&start_data_table_row().''.&mt('Current').' ';
foreach my $key (sort(keys(%lasthash))) {
- my $value = &format_previous_attempt_value($key,$lasthash{$key});
- if ($key =~/$regexp$/ && (defined &$gradesub)) {$value = &$gradesub($value)}
- $prevattempts.=''.$value.' ';
+ if (%typeparts) {
+ my $hidden;
+ foreach my $id (@currhidden) {
+ if ($key =~ /^\Q$id\E/) {
+ $hidden = 1;
+ last;
+ }
+ }
+ if ($hidden) {
+ my ($id,$data) = ($key =~ /^(.+)\.([^.]+)$/);
+ if (($data eq 'award') || ($data eq 'awarddetail')) {
+ my $value = &format_previous_attempt_value($key,$lasthash{$key});
+ if ($key =~/$regexp$/ && (defined &$gradesub)) {
+ $value = &$gradesub($value);
+ }
+ $prevattempts.=''.$value.' ';
+ } else {
+ $prevattempts.=' ';
+ }
+ } else {
+ my $value = &format_previous_attempt_value($key,$lasthash{$key});
+ if ($key =~/$regexp$/ && (defined &$gradesub)) {
+ $value = &$gradesub($value);
+ }
+ $prevattempts.=''.$value.' ';
+ }
+ } else {
+ my $value = &format_previous_attempt_value($key,$lasthash{$key});
+ if ($key =~/$regexp$/ && (defined &$gradesub)) {
+ $value = &$gradesub($value);
+ }
+ $prevattempts.=''.$value.' ';
+ }
}
$prevattempts.= &end_data_table_row().&end_data_table();
} else {
@@ -3620,10 +3687,13 @@ sub submlink {
}
if (!$symb) { $symb=&Apache::lonnet::symbread(); }
$symb=&escape($symb);
- if ($target) { $target="target=\"$target\""; }
- return ''.$text.' ';
+ if ($target) { $target=" target=\"$target\""; }
+ return
+ ''.$text.' ';
}
##############################################
@@ -4150,16 +4220,39 @@ sub get_domainconf {
if (defined($cached)) { return %{$result}; }
my %domconfig = &Apache::lonnet::get_dom('configuration',
- ['login','rolecolors'],$udom);
+ ['login','rolecolors','autoenroll'],$udom);
my (%designhash,%legacy);
if (keys(%domconfig) > 0) {
if (ref($domconfig{'login'}) eq 'HASH') {
if (keys(%{$domconfig{'login'}})) {
foreach my $key (keys(%{$domconfig{'login'}})) {
if (ref($domconfig{'login'}{$key}) eq 'HASH') {
- foreach my $img (keys(%{$domconfig{'login'}{$key}})) {
- $designhash{$udom.'.login.'.$key.'_'.$img} =
- $domconfig{'login'}{$key}{$img};
+ if ($key eq 'loginvia') {
+ if (ref($domconfig{'login'}{'loginvia'}) eq 'HASH') {
+ my @ids = &Apache::lonnet::current_machine_ids();
+ foreach my $hostname (@ids) {
+ if (ref($domconfig{'login'}{'loginvia'}{$hostname}) eq 'HASH') {
+ if ($domconfig{'login'}{'loginvia'}{$hostname}{'server'}) {
+ my $server = $domconfig{'login'}{'loginvia'}{$hostname}{'server'};
+ $designhash{$udom.'.login.loginvia'} = $server;
+ if ($domconfig{'login'}{'loginvia'}{$hostname}{'serverpath'} eq 'custom') {
+
+ $designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'custompath'};
+ } else {
+ $designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'serverpath'};
+ }
+ if ($domconfig{'login'}{'loginvia'}{$hostname}{'exempt'}) {
+ $designhash{$udom.'.login.loginvia_exempt_'.$hostname} = $domconfig{'login'}{'loginvia'}{$hostname}{'exempt'};
+ }
+ }
+ }
+ }
+ }
+ } else {
+ foreach my $img (keys(%{$domconfig{'login'}{$key}})) {
+ $designhash{$udom.'.login.'.$key.'_'.$img} =
+ $domconfig{'login'}{$key}{$img};
+ }
}
} else {
$designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key};
@@ -4186,6 +4279,11 @@ sub get_domainconf {
} else {
$legacy{'rolecolors'} = 1;
}
+ if (ref($domconfig{'autoenroll'}) eq 'HASH') {
+ if ($domconfig{'autoenroll'}{'co-owners'}) {
+ $designhash{$udom.'.autoassign.co-owners'}=$domconfig{'autoenroll'}{'co-owners'};
+ }
+ }
if (keys(%legacy) > 0) {
my %legacyhash = &get_legacy_domconf($udom);
foreach my $item (keys(%legacyhash)) {
@@ -4441,9 +4539,6 @@ Inputs:
=item * $bgcolor, used to override the bgcolor on a webpage to a specific value
-=item * $no_inline_link, if true and in remote mode, don't show the
- 'Switch To Inline Menu' link
-
=item * $args, optional argument valid values are
no_auto_mt_title -> prevents &mt()ing the title arg
inherit_jsmath -> when creating popup window in a page,
@@ -4461,7 +4556,7 @@ other decorations will be returned.
sub bodytag {
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,
- $no_nav_bar,$bgcolor,$no_inline_link,$args)=@_;
+ $no_nav_bar,$bgcolor,$args)=@_;
my $public;
if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public'))
@@ -4483,10 +4578,6 @@ 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') {
@@ -4496,26 +4587,14 @@ sub bodytag {
# realm
if ($env{'request.course.id'}) {
if ($env{'request.role'} !~ /^cr/) {
- if (($custommenu) && (($role eq 'cm') || ($env{'form.context'} eq 'requestcrs'))) {
- undef($role);
- } else {
- $role = &Apache::lonnet::plaintext($role,&course_type());
- }
+ $role = &Apache::lonnet::plaintext($role,&course_type());
}
- if (defined($role) && $env{'request.course.sec'}) {
+ if ($env{'request.course.sec'}) {
$role .= (' 'x2).'- '.&mt('section:').' '.$env{'request.course.sec'};
- }
- if ($env{'form.context'} eq 'requestcrs') {
- undef($realm);
- } else {
- $realm = $env{'course.'.$env{'request.course.id'}.'.description'};
- }
+ }
+ $realm = $env{'course.'.$env{'request.course.id'}.'.description'};
} else {
- if (($custommenu) && ($role eq 'cm')) {
- undef($role);
- } else {
- $role = &Apache::lonnet::plaintext($role);
- }
+ $role = &Apache::lonnet::plaintext($role);
}
if (!$realm) { $realm=' '; }
@@ -4554,8 +4633,6 @@ sub bodytag {
$role = '('.$role.') ' if $role;
&get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']);
- if ($env{'environment.remote'} ne 'on') {
- # No Remote
if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') {
return $bodytag;
}
@@ -4566,72 +4643,7 @@ sub bodytag {
# $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls
# }
- my $role_selector;
- 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 = ' '.$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";
-
-ENDSCRIPT
- }
- }
- if ($switcher) {
- $switcher = $switcher_js.$switcher;
- if ($role_selector) {
- $role_selector .= ' '.$switcher;
- } else {
- $role_selector .= ' '.$switcher;
- }
- }
- }
if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) {
if ($dc_info) {
@@ -4641,19 +4653,13 @@ ENDSCRIPT
$realm $dc_info|;
return $bodytag;
}
- if ($env{'request.noversionuri'} eq '/adm/navmaps' &&
- $env{'environment.remotenavmap'} eq 'on') {
- return $bodytag;
- }
- if ($cid && $cicourses{$cid} eq 'tutorial') {
- $bodytag .= '';
- }
#don't show menus for public users
- if(!$public){
- 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();
- }
+ if (!$public){
+ $bodytag .= Apache::lonmenu::secondary_menu();
$bodytag .= Apache::lonmenu::serverform();
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end');
if ($env{'request.state'} eq 'construct') {
- $bodytag .= &Apache::lonmenu::innerregister($forcereg,'',
+ $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 = '';
- &Apache::lonhtmlcommon::render_advtools(\$advlinks,$legendtext);
- $bodytag .= $advlinks;
- }
}
}else{
# this is to seperate menu from content when there's no secondary
@@ -4711,86 +4687,6 @@ ENDSCRIPT
}
return $bodytag;
- }
-
-#
-# Top frame rendering, Remote is up
-#
-
- my $imgsrc = $img;
- if ($img =~ /^\/adm/) {
- $imgsrc = &lonhttpdurl($img);
- }
- my $upperleft=' ';
-
- # Explicit link to get inline menu
- my $menu= ($no_inline_link?''
- :''.&mt('Switch to Inline Menu Mode').' ');
-
- if ($dc_info) {
- $dc_info = qq|($dc_info) |;
- }
-
- $bodytag .= qq|$name $role
- $realm $dc_info
| unless $env{'form.inhibitmenu'};
- return(<
-$upperleft
- $messages
-
-$titleinfo $dc_info $menu
-
-
-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,
- '');
- }
- return @advtools;
}
sub dc_courseid_toggle {
@@ -4822,22 +4718,8 @@ sub make_attr_string {
delete($attr_ref->{$key});
}
}
- $attr_ref->{'onload'} =
- &Apache::lonmenu::loadevents(). $on_load;
- $attr_ref->{'onunload'}=
- &Apache::lonmenu::unloadevents().$on_unload;
- }
-
-# Accessibility font enhance
- if ($env{'browser.fontenhance'} eq 'on') {
- my $style;
- foreach my $key (keys(%{$attr_ref})) {
- if (lc($key) eq 'style') {
- $style.=$attr_ref->{$key}.';';
- delete($attr_ref->{$key});
- }
- }
- $attr_ref->{'style'}=$style.'; font-size: x-large;';
+ $attr_ref->{'onload'} = $on_load;
+ $attr_ref->{'onunload'}= $on_unload;
}
my $attr_string;
@@ -4933,6 +4815,7 @@ sub standard_css {
my $table_header = '#DDDDDD';
my $feedback_link_bg = '#BBBBBB';
my $lg_border_color = '#C8C8C8';
+ my $button_hover = '#BF2317';
my $border = ($env{'browser.type'} eq 'explorer' ||
$env{'browser.type'} eq 'safari' ) ? '0 2px 0 2px'
@@ -4940,6 +4823,14 @@ sub standard_css {
return < td.LC_browser_file,
table.LC_data_table tr > td.LC_browser_file_published {
@@ -5477,23 +5374,23 @@ table.LC_data_table tr > td.LC_roles_is
}
table.LC_data_table tr > td.LC_roles_future {
- background: #FFFF77;
+ border-right: 8px solid #FFFF77;
}
table.LC_data_table tr > td.LC_roles_will {
- background: #FFAA77;
+ border-right: 8px solid #FFAA77;
}
table.LC_data_table tr > td.LC_roles_expired {
- background: #FF7777;
+ border-right: 8px solid #FF7777;
}
table.LC_data_table tr > td.LC_roles_will_not {
- background: #AAFF77;
+ border-right: 8px solid #AAFF77;
}
table.LC_data_table tr > td.LC_roles_selected {
- background: #11CC55;
+ border-right: 8px solid #11CC55;
}
span.LC_current_location {
@@ -5717,10 +5614,6 @@ table.LC_notify_front_page td {
font-size: 1.2em;
}
-.LC_topic_bar img {
- vertical-align: bottom;
-}
-
table.LC_course_group_status {
margin: 20px;
}
@@ -5959,56 +5852,41 @@ div.LC_clear_float_footer {
}
div.LC_grade_show_user {
- margin-top: 20px;
- border: 1px solid black;
+/* border-left: 5px solid $sidebg; */
+ border-top: 5px solid #000000;
+ margin: 50px 0 0 0;
+ padding: 15px 0 5px 10px;
}
-div.LC_grade_user_name {
- background: #DDDDEE;
- border-bottom: 1px solid black;
- font-weight: bold;
- font-size: large;
+div.LC_grade_show_user_odd_row {
+/* border-left: 5px solid #000000; */
}
-div.LC_grade_show_user_odd_row div.LC_grade_user_name {
- background: #DDEEDD;
+div.LC_grade_show_user div.LC_Box {
+ margin-right: 50px;
}
-div.LC_grade_show_problem,
div.LC_grade_submissions,
div.LC_grade_message_center,
-div.LC_grade_info_links,
-div.LC_grade_assign {
+div.LC_grade_info_links {
margin: 5px;
width: 99%;
background: #FFFFFF;
}
-div.LC_grade_show_problem_header,
div.LC_grade_submissions_header,
-div.LC_grade_message_center_header,
-div.LC_grade_assign_header {
+div.LC_grade_message_center_header {
font-weight: bold;
font-size: large;
}
-div.LC_grade_show_problem_problem,
div.LC_grade_submissions_body,
-div.LC_grade_message_center_body,
-div.LC_grade_assign_body {
+div.LC_grade_message_center_body {
border: 1px solid black;
width: 99%;
background: #FFFFFF;
}
-span.LC_grade_check_note {
- font-weight: normal;
- font-size: medium;
- display: inline;
- position: absolute;
- right: 1em;
-}
-
table.LC_scantron_action {
width: 100%;
}
@@ -6042,15 +5920,8 @@ div.LC_edit_problem_header_title {
}
table.LC_edit_problem_header_title {
- font-size: larger;
- font-weight: bold;
width: 100%;
- border-color: $pgbg;
- border-style: solid;
- border-width: $border;
background: $tabbg;
- border-collapse: collapse;
- padding: 0;
}
div.LC_edit_problem_discards {
@@ -6083,13 +5954,6 @@ div.LC_createcourse {
display:none;
}
-/* ---- Remove when done ----
-# The following styles is part of the redesign of LON-CAPA and are
-# subject to change during this project.
-# Don't rely on their current functionality as they might be
-# changed or removed.
-# --------------------------*/
-
a:hover,
ol.LC_primary_menu a:hover,
ol#LC_MenuBreadcrumbs a:hover,
@@ -6097,7 +5961,7 @@ ol#LC_PathBreadcrumbs a:hover,
ul#LC_secondary_menu a:hover,
.LC_FormSectionClearButton input:hover
ul.LC_TabContent li:hover a {
- color:#BF2317;
+ color:$button_hover;
text-decoration:none;
}
@@ -6162,14 +6026,9 @@ fieldset > legend {
padding: 0 5px 0 5px;
}
-div.LC_page_header {
- background-color: $pgbg_or_bgcolor;
- margin: 0 0 1.0em 0;
-}
-
#LC_nav_bar {
float: left;
- margin: 0.2em 0 0 0;
+ margin: 0;
}
#LC_realm {
@@ -6186,7 +6045,7 @@ div.LC_page_header {
ol.LC_primary_menu {
float: right;
- margin: 0.2em 0 0 0;
+ margin: 0;
}
ol#LC_PathBreadcrumbs {
@@ -6201,10 +6060,10 @@ ol.LC_primary_menu li {
ol.LC_primary_menu li img {
vertical-align: bottom;
+ height: 1.1em;
}
ol.LC_primary_menu a {
- font-size: 90%;
color: RGB(80, 80, 80);
text-decoration: none;
}
@@ -6253,14 +6112,15 @@ ul#LC_secondary_menu li a {
}
ul.LC_TabContent {
- min-height:1.5em;
+ min-height:20px;
}
ul.LC_TabContent li {
vertical-align:middle;
- padding: 0 10px 0 10px;
+ padding: 0 16px 0 10px;
background-color:$tabbg;
border-bottom:solid 1px $lg_border_color;
+ border-right: solid 1px $font;
}
ul.LC_TabContent .right {
@@ -6273,16 +6133,33 @@ ul.LC_TabContent li {
text-decoration:none;
font-size:95%;
font-weight:bold;
- padding-right: 16px;
+ min-height:20px;
+}
+
+ul.LC_TabContent li a:hover,
+ul.LC_TabContent li a:focus {
+ color: $button_hover;
+ background:none;
+ outline:none;
+}
+
+ul.LC_TabContent li:hover {
+ color: $button_hover;
+ cursor:pointer;
}
-ul.LC_TabContent li:hover,
ul.LC_TabContent li.active {
+ color: $font;
background:#FFFFFF url(/adm/lonIcons/open.gif) no-repeat scroll right center;
- border-bottom:solid 2px #FFFFFF;
- padding-right: 16px;
+ border-bottom:solid 1px #FFFFFF;
+ cursor: default;
}
+ul.LC_TabContent li.active a {
+ color:$font;
+ background:#FFFFFF;
+ outline: none;
+}
#maincoursedoc {
clear:both;
}
@@ -6301,6 +6178,10 @@ ul.LC_TabContentBigger li {
color: #737373;
}
+ul.LC_TabContentBigger li.active {
+ position: relative;
+ top: 1px;
+}
ul.LC_TabContentBigger li a {
background:url('/adm/lonIcons/tabbgleft.gif') left bottom no-repeat;
@@ -6309,28 +6190,31 @@ ul.LC_TabContentBigger li a {
text-align: center;
display: block;
text-decoration: none;
+ outline: none;
}
-ul.LC_TabContentBigger li:hover a,
ul.LC_TabContentBigger li.active a {
background:url('/adm/lonIcons/tabbgleft.gif') left top no-repeat;
color:$font;
- text-decoration: underline;
}
-
ul.LC_TabContentBigger li b {
background: url('/adm/lonIcons/tabbgright.gif') no-repeat right bottom;
display: block;
float: left;
padding: 0 30px;
+ border-bottom: 1px solid $lg_border_color;
+}
+
+ul.LC_TabContentBigger li:hover b {
+ color:$button_hover;
}
-ul.LC_TabContentBigger li:hover b,
ul.LC_TabContentBigger li.active b {
background:url('/adm/lonIcons/tabbgright.gif') right top no-repeat;
color:$font;
- border-bottom: 1px solid #FFFFFF;
+ border: 0;
+ cursor:default;
}
@@ -6347,7 +6231,6 @@ ol#LC_MenuBreadcrumbs,
ol#LC_PathBreadcrumbs {
padding-left: 10px;
margin: 0;
- margin: 0;
height: 2.5em; /* equal to #LC_breadcrumbs line-height */
}
@@ -6355,7 +6238,7 @@ ol#LC_MenuBreadcrumbs li,
ol#LC_PathBreadcrumbs li,
ul.LC_CourseBreadcrumbs li {
display: inline;
- white-space: normal;
+ white-space: normal;
}
ol#LC_MenuBreadcrumbs li a,
@@ -6364,14 +6247,6 @@ ul.LC_CourseBreadcrumbs li a {
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 {
text-decoration:none;
font-size:100%;
@@ -6549,14 +6424,6 @@ a#LC_content_toolbar_firsthomework {
background-image:url(/res/adm/pages/open-first-problem.gif);
}
-a#LC_content_toolbar_launchnav {
- background-image:url(/res/adm/pages/start-navigation.gif);
-}
-
-a#LC_content_toolbar_closenav {
- background-image:url(/res/adm/pages/close-navigation.gif);
-}
-
a#LC_content_toolbar_everything {
background-image:url(/res/adm/pages/show-all.gif);
}
@@ -6577,10 +6444,6 @@ a#LC_content_toolbar_changefolder_toggle
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 {
background-position: bottom center;
}
@@ -6621,7 +6484,7 @@ ul.LC_funclist {
}
ul.LC_funclist > li:first-child {
- font-weight:bold;
+ font-weight:bold;
margin-left:0.8em;
}
@@ -6645,36 +6508,10 @@ 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;
- 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;
+.ui-accordion .LC_advanced_toggle {
+ float: right;
+ font-size: 90%;
+ padding: 0px 4px
}
END
@@ -6728,8 +6565,8 @@ sub headtag {
if (!$args->{'frameset'}) {
$result .= &Apache::lonhtmlcommon::htmlareaheaders();
}
- if ($args->{'force_register'}) {
- $result .= &Apache::lonmenu::registerurl(1);
+ if ($args->{'force_register'} && $env{'request.noversionuri'} !~ m{^/res/adm/pages/}) {
+ $result .= Apache::lonxml::display_title();
}
if (!$args->{'no_nav_bar'}
&& !$args->{'only_body'}
@@ -6755,7 +6592,7 @@ ADDMETA
$result .= ' LON-CAPA '.$title.' '
.' '
.$head_extra;
- return $result;
+ return $result.'';
}
=pod
@@ -6812,43 +6649,6 @@ sub xml_begin {
=pod
-=item * &endheadtag()
-
-Returns a uniform for LON-CAPA web pages.
-
-Inputs: none
-
-=cut
-
-sub endheadtag {
- return '';
-}
-
-=pod
-
-=item * &head()
-
-Returns a uniform complete .. section for LON-CAPA web pages.
-
-Inputs:
-
-=over 4
-
-$title - optional title for the page
-
-$head_extra - optional extra HTML to put inside the
-
-=back
-
-=cut
-
-sub head {
- my ($title,$head_extra,$args) = @_;
- return &headtag($title,$head_extra,$args).&endheadtag();
-}
-
-=pod
-
=item * &start_page()
Returns a complete .. section for LON-CAPA web pages.
@@ -6886,8 +6686,6 @@ $args - additional optional args support
skip_phases -> hash ref of
head -> skip the generation
body -> skip all generation
- no_inline_link -> if true and in remote mode, don't show the
- 'Switch To Inline Menu' link
no_auto_mt_title -> prevent &mt()ing the title arg
inherit_jsmath -> when creating popup window in a page,
should it have jsmath forced on by the
@@ -6918,7 +6716,7 @@ sub start_page {
if (! exists($args->{'skip_phases'}{'head'}) ) {
$result.=
&xml_begin().
- &headtag($title,$head_extra,\%head_args).&endheadtag();
+ &headtag($title,$head_extra,\%head_args);
}
if (! exists($args->{'skip_phases'}{'body'}) ) {
@@ -6932,8 +6730,7 @@ sub start_page {
$args->{'function'}, $args->{'add_entries'},
$args->{'only_body'}, $args->{'domain'},
$args->{'force_register'}, $args->{'no_nav_bar'},
- $args->{'bgcolor'}, $args->{'no_inline_link'},
- $args);
+ $args->{'bgcolor'}, $args);
}
}
@@ -6953,7 +6750,8 @@ sub start_page {
return $result if $args->{'only_body'};
#Breadcrumbs for Construction Space provided by &bodytag.
- if (($env{'environment.remote'} eq 'off') && ($env{'request.state'} eq 'construct')) {
+ if (
+ $env{'request.state'} eq 'construct') {
return $result;
}
@@ -6970,37 +6768,13 @@ sub start_page {
#if bread_crumbs_component exists show it as headline else show only the breadcrumbs
if(exists($args->{'bread_crumbs_component'})){
$result .= &Apache::lonhtmlcommon::breadcrumbs($args->{'bread_crumbs_component'});
- } elsif (exists($args->{'bread_crumbs_menulink'})) {
- $result .= &Apache::lonhtmlcommon::breadcrumbs('','',$args->{'bread_crumbs_menulink'});
- } else {
- $result .= &Apache::lonhtmlcommon::breadcrumbs();
+ }else{
+ $result .= &Apache::lonhtmlcommon::breadcrumbs();
}
}
return $result;
}
-
-=pod
-
-=item * &head()
-
-Returns a complete section for LON-CAPA web pages.
-
-Inputs: $args - additional optional args supported are:
- js_ready -> return a string ready for being used in
- a javascript writeln
- html_encode -> return a string ready for being used in
- a html attribute
- frameset -> if true will start with a
- rather than
- dicsussion -> if true will get discussion from
- lonxml::xmlend
- (you can pass the target and parser arguments
- through optional 'target' and 'parser' args
- to this routine)
-
-=cut
-
sub end_page {
my ($args) = @_;
$env{'internal.end_page'}++;
@@ -7090,15 +6864,26 @@ sub simple_error_page {
{
my @row_count;
+
+ sub start_data_table_count {
+ unshift(@row_count, 0);
+ return;
+ }
+
+ sub end_data_table_count {
+ shift(@row_count);
+ return;
+ }
+
sub start_data_table {
my ($add_class) = @_;
my $css_class = (join(' ','LC_data_table',$add_class));
- unshift(@row_count,0);
+ &start_data_table_count();
return ''."\n";
}
sub end_data_table {
- shift(@row_count);
+ &end_data_table_count();
return '
'."\n";;
}
@@ -7904,9 +7689,9 @@ sub user_picker {
'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:",
);
- my $domform = &select_dom_form($currdom,'srchdomain',undef,1);
+ my $domform = &select_dom_form($currdom,'srchdomain',1,1);
my $srchinsel = ' ';
-
+
my @srchins = ('crs','dom','alc','instd');
foreach my $option (@srchins) {
@@ -7916,13 +7701,12 @@ sub user_picker {
next if ($option eq 'alc');
next if (($option eq 'crs') && ($env{'form.form'} eq 'requestcrs'));
next if ($option eq 'crs' && !$env{'request.course.id'});
- next if ($option eq 'instd');
if ($curr_selected{'srchin'} eq $option) {
$srchinsel .= '
- '.$lt{$option}.' ';
+ '.$lt{$option}.' ';
} else {
$srchinsel .= '
- '.$lt{$option}.' ';
+ '.$lt{$option}.' ';
}
}
$srchinsel .= "\n \n";
@@ -7966,9 +7750,9 @@ sub user_picker {
);
$new_user_create = ''
.&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.")
- .' '
- .&mt('Enter a valid e-mail address as the username for the new user.').' '.&mt('Please contact the [_1]helpdesk[_2] for assistance.'
- ,'',' ')
+ .' '
+ .&mt('Please contact the [_1]helpdesk[_2] for assistance.'
+ ,'',' ')
.'
';
}
}
@@ -10293,8 +10077,10 @@ sub check_clone {
'userroles',['active'],[$ccrole],
[$args->{'clonedomain'}]);
if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) {
- $can_clone = 1;
- } else {
+ $can_clone = 1;
+ } elsif (&Apache::lonnet::is_course_owner($args->{'clonedomain'},$args->{'clonecourse'},$args->{'ccuname'},$args->{'ccdomain'})) {
+ $can_clone = 1;
+ } else {
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'});
} else {
@@ -10354,11 +10140,19 @@ sub construct_course {
# if anyone ever decides to not show this, and Utils::Course::new
# will need to be suitably modified.
$outcome .= &mt('New LON-CAPA [_1] ID: [_2]',$crstype,$$courseid).$linefeed;
+ if ($$courseid =~ /^error:/) {
+ return (0,$outcome);
+ }
+
#
# Check if created correctly
#
($$crsudom,$$crsunum)= &LONCAPA::split_courseid($$courseid);
my $crsuhome=&Apache::lonnet::homeserver($$crsunum,$$crsudom);
+ if ($crsuhome eq 'no_host') {
+ $outcome .= &mt('Course creation failed, unrecognized course home server.').$linefeed;
+ return (0,$outcome);
+ }
$outcome .= &mt('Created on').': '.$crsuhome.$linefeed;
#
@@ -10377,6 +10171,10 @@ sub construct_course {
$cenv{'url'}=$oldcenv{'url'};
# Restore title
$cenv{'description'}=$oldcenv{'description'};
+# Restore creation date, creator and creation context.
+ $cenv{'internal.created'}=$oldcenv{'internal.created'};
+ $cenv{'internal.creator'}=$oldcenv{'internal.creator'};
+ $cenv{'internal.creationcontext'}=$oldcenv{'internal.creationcontext'};
# Mark as cloned
$cenv{'clonedfrom'}=$cloneid;
# Need to clone grading mode
@@ -10623,7 +10421,7 @@ sub construct_course {
$title=&mt('Syllabus');
$url='/public/'.$$crsudom.'/'.$$crsunum.'/syllabus';
} else {
- $title=&mt('Navigate Contents');
+ $title=&mt('Table of Contents');
$url='/adm/navmaps';
}
@@ -10634,27 +10432,14 @@ sub construct_course {
$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);
}
############################################################
############################################################
+#SD
+# only Community and Course, or anything else?
sub course_type {
my ($cid) = @_;
if (!defined($cid)) {
@@ -10820,15 +10605,12 @@ sub init_user_environment {
my %userenv = &Apache::lonnet::dump('environment',$domain,$username);
my ($tmp) = keys(%userenv);
if ($tmp !~ /^(con_lost|error|no_such_host)/i) {
- # default remote control to off
- if ($userenv{'remote'} ne 'on') { $userenv{'remote'} = 'off'; }
} else {
undef(%userenv);
}
if (($userenv{'interface'}) && (!$form->{'interface'})) {
$form->{'interface'}=$userenv{'interface'};
}
- $env{'environment.remote'}=$userenv{'remote'};
if ($userenv{'texengine'} eq 'ttm') { $clientmathml=1; }
# --------------- Do not trust query string to be put directly into environment
@@ -10860,9 +10642,6 @@ sub init_user_environment {
$initial_env{"browser.localres"} = $form->{'localres'};
}
- if ($public) {
- $initial_env{"environment.remote"} = "off";
- }
if ($form->{'interface'}) {
$form->{'interface'}=~s/\W//gs;
$initial_env{"browser.interface"} = $form->{'interface'};
@@ -10915,60 +10694,6 @@ 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
sub get_symb {
my ($request,$silent) = @_;
@@ -11010,183 +10735,6 @@ sub clean_symb {
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./\Q$udom\E/'.$cnums->{'review'}}) {
- my ($start,$end) =
- split('.',$env{'user.role.st./\Q$udom\E/'.$cnums->{'review'}});
- if (((!$start) || ($start && $start <= $now)) &&
- ((!$end) || ($end > $now))) {
- $custommenu = 1;
- if ($env{'user.role.cc./\Q$udom\E/'.$cnums->{'review'}}) {
- my ($ccstart,$ccend) =
- split('.',$env{'user.role.cc./\Q$udom\E/'.$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 = '';
- }
- 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
=back