--- loncom/interface/loncommon.pm 2010/12/07 04:33:49 1.925.2.26 +++ loncom/interface/loncommon.pm 2009/12/08 14:44:17 1.926 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.925.2.26 2010/12/07 04:33:49 raeburn Exp $ +# $Id: loncommon.pm,v 1.926 2009/12/08 14:44:17 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1978,16 +1978,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 +2469,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,''.$autharg); + $result = &mt + ('[_1] Internally authenticated (with initial password [_2])', + ''.$autharg); $result.="'; return $result; } @@ -4463,11 +4452,6 @@ sub bodytag { my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, $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); } $function = &get_users_function() if (!$function); @@ -4483,10 +4467,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 +4476,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=' '; } @@ -4533,7 +4501,7 @@ sub bodytag { } my $name = &plainname($env{'user.name'},$env{'user.domain'}); - if ($public) { + if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') { undef($role); } else { $name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); @@ -4554,7 +4522,7 @@ sub bodytag { $role = '('.$role.')' if $role; &get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']); - if ($env{'environment.remote'} ne 'on') { + if ($env{'environment.remote'} eq 'off') { # No Remote if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') { return $bodytag; @@ -4566,72 +4534,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 +4544,11 @@ 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 .= '
'; - } - - $bodytag .= qq|
$name $role $role_selector
|; + $bodytag .= qq|
$name $role
|; $bodytag .= Apache::lonhtmlcommon::scripttag( - Apache::lonmenu::utilityfunctions('',$custommenu), 'start'); + Apache::lonmenu::utilityfunctions(), 'start'); $bodytag .= Apache::lonmenu::primary_menu(); @@ -4661,18 +4556,10 @@ ENDSCRIPT $dc_info = &dc_courseid_toggle($dc_info); } $bodytag .= qq|
$realm $dc_info
|; - 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($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public'){ + $bodytag .= Apache::lonmenu::secondary_menu(); $bodytag .= Apache::lonmenu::serverform(); $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); if ($env{'request.state'} eq 'construct') { @@ -4680,28 +4567,6 @@ ENDSCRIPT $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 = ''.&mt('Management').''; - &Apache::lonhtmlcommon::render_advtools(\$advlinks,$legendtext); - $bodytag .= $advlinks; - } } }else{ # this is to seperate menu from content when there's no secondary @@ -4710,6 +4575,8 @@ ENDSCRIPT $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); } + #SD testing + #$bodytag .= Apache::lonmenu::menubuttons($forcereg); return $bodytag; } @@ -4747,52 +4614,6 @@ $bodytag 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, - ''. - ''.$items{$item}{tooltip}.
-                  ''. - ''.$items{$item}{desc}.''); - } - return @advtools; -} - sub dc_courseid_toggle { my ($dc_info) = @_; return ' '. @@ -5095,70 +4916,46 @@ table#LC_title_bar.LC_with_remote { margin: 0; } -ul.LC_breadcrumb_tools_outerlist { +/* #SD START (work in progress)*/ + +ul.LC_bct { margin: 0; padding: 0; - position: relative; - list-style: none; } -ul.LC_breadcrumb_tools_outerlist li { +ul.LC_bct ol { display: inline; } - -.LC_breadcrumb_tools_navigation { - padding: 0; - margin: 0; - float: left; -} -.LC_breadcrumb_tools_tools { +ul.LC_bct ul { + display: inline; padding: 0; - margin: 0; - float: right; } - -div.LC_GCI_Menu { - width:900px; +ul.LC_bct li { + list-style-type: none; + display: inline; } -div.LC_GCI_Menu:after { - content:''; - display:block; - clear:both; -} -div.LC_GCI_Menu_left { - float:left; - width:400px; +ul.LC_breadcrumb_tools { } -div.LC_GCI_Menu_right { - float:left; - width:400px;; +li.LC_breadcrumb_tools { } - -dl.LC_GCI_Menu { - width:300px; - float:left; - margin-right:2em; +li.LC_breadcrumb_tools img{ + vertical-align: middle; } -dl.LC_GCI_Menu dt { - font-weight: bold; - font-size:0.9em; - margin-bottom:0.7em; +.LC_breadcrumb_tools_A { + margin: 0 0 0 1em; } - -dl.LC_GCI_Menu dt a { - color: $font; +.LC_breadcrumb_tools_B { + float: right; + margin-top: 0.4em; } - -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; +.LC_breadcrumb_tools_C { + margin: 0 1em 0 0; + float: right; } +/* #SD END */ table#LC_title_bar td { background: $tabbg; @@ -5170,7 +4967,7 @@ table#LC_menubuttons img { .LC_breadcrumbs_component { float: right; - margin: 0.25em 1em; + margin: 0 1em; } .LC_breadcrumbs_component img { vertical-align: middle; @@ -5189,10 +4986,11 @@ td.LC_table_cell_checkbox { background: $sidebg; border-bottom: 1px solid $lg_border_color; line-height: 2.5em; - overflow: hidden; + /* SD working here + height: 2.5em; + overflow: hidden; */ margin: 0; padding: 0; - text-align: left; } /* Preliminary fix to hide breadcrumbs inside remote control window */ @@ -5204,7 +5002,7 @@ td.LC_table_cell_checkbox { clear:both; background: #F8F8F8; /* $sidebg; */ border: 1px solid $sidebg; - margin: 0 0 0 0; + margin: 0 0 10px 0; } .LC_fontsize_medium { @@ -5717,10 +5515,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; } @@ -6162,11 +5956,6 @@ 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; @@ -6209,11 +5998,6 @@ ol.LC_primary_menu a { text-decoration: none; } -ol.LC_primary_menu a.LC_new_message { - font-weight:bold; - color: darkred; -} - ul#LC_secondary_menu { clear: both; color: $fontmenu; @@ -6347,15 +6131,18 @@ ol#LC_MenuBreadcrumbs, ol#LC_PathBreadcrumbs { padding-left: 10px; margin: 0; - margin: 0; - height: 2.5em; /* equal to #LC_breadcrumbs line-height */ + list-style-position: inside; + /* SD working here + white-space: nowrap; */ } ol#LC_MenuBreadcrumbs li, ol#LC_PathBreadcrumbs li, ul.LC_CourseBreadcrumbs li { display: inline; - white-space: normal; + white-space: nowrap; + /* SD working here + white-space: normal; */ } ol#LC_MenuBreadcrumbs li a, @@ -6364,14 +6151,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%; @@ -6577,10 +6356,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; } @@ -6620,11 +6395,6 @@ ul.LC_funclist { 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 @@ -6645,37 +6415,6 @@ 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; -} END } @@ -6970,10 +6709,8 @@ 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; @@ -7904,9 +7641,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 = ' \n"; @@ -7966,9 +7702,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.' + ,'','') .'


'; } } @@ -10253,19 +9989,19 @@ sub check_clone { my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom); my $clonemsg; my $can_clone = 0; - my $lctype = lc($args->{'crstype'}); + my $lctype = lc($args->{'type'}); if ($lctype ne 'community') { $lctype = 'course'; } if ($clonehome eq 'no_host') { - if ($args->{'crstype'} eq 'Community') { + if ($args->{'type'} 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'}); } 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'}); } } else { my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1}); - if ($args->{'crstype'} eq 'Community') { + if ($args->{'type'} eq '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'}); return ($can_clone, $clonemsg, $cloneid, $clonehome); @@ -10284,7 +10020,7 @@ sub check_clone { $can_clone = 1; } else { my $ccrole = 'cc'; - if ($args->{'crstype'} eq 'Community') { + if ($args->{'type'} eq 'Community') { $ccrole = 'co'; } my %roleshash = @@ -10295,7 +10031,7 @@ sub check_clone { if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) { $can_clone = 1; } else { - if ($args->{'crstype'} eq 'Community') { + if ($args->{'type'} 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 { $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'}); @@ -10634,21 +10370,6 @@ 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); } @@ -10915,60 +10636,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 +10677,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./$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 = '
'. - '
'; - } - 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