--- loncom/interface/loncommon.pm 2006/05/30 12:46:08 1.376 +++ loncom/interface/loncommon.pm 2006/06/22 20:09:51 1.389 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.376 2006/05/30 12:46:08 www Exp $ +# $Id: loncommon.pm,v 1.389 2006/06/22 20:09:51 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -386,10 +386,11 @@ sub selectstudent_link { sub coursebrowser_javascript { my ($domainfilter)=@_; + my $crs_or_grp_alert = &mt('Please select the type of LON-CAPA entity - Course or Group - for which you wish to add/modify a user role'); return (< var stdeditbrowser; - function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag) { + function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag,crstype) { var url = '/adm/pickcourse?'; var filter; if (filter != null) { @@ -415,6 +416,18 @@ sub coursebrowser_javascript { if (multflag !=null && multflag != '') { url += '&multiple='+multflag; } + if (crstype == 'Course/Group') { + if (formname == 'cu') { + crstype = document.cu.crstype.options[document.cu.crstype.selectedIndex].value; + if (crstype == "") { + alert("$crs_or_grp_alert"); + return; + } + } + } + if (crstype !=null && crstype != '') { + url += '&type='+crstype; + } var title = 'Course_Browser'; var options = 'scrollbars=1,resizable=1,menubar=0'; options += ',width=700,height=600'; @@ -426,9 +439,9 @@ ENDSTDBRW } sub selectcourse_link { - my ($form,$unameele,$udomele,$desc,$extra_element,$multflag)=@_; + my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype)=@_; return "".&mt('Select Course').""; + '","'.$udomele.'","'.$desc.'","'.$extra_element.'","'.$multflag.'","'.$selecttype.'");'."'>".&mt('Select [_1]',$selecttype).""; } sub check_uncheck_jscript { @@ -717,8 +730,8 @@ sub help_open_menu { } else { $link = "javascript:helpMenu('display')"; } - my $banner_link = "/adm/helpmenu?page=banner&color=$color&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage"; - my $details_link = "/adm/helpmenu?page=body&color=$color&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp"; + my $banner_link = "/adm/helpmenu?page=banner&color=$color&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage"; + my $details_link = "/adm/helpmenu?page=body&color=$color&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp"; my $template; if ($text ne "") { $template .= @@ -803,8 +816,8 @@ sub help_open_bug { $topic=~s/\W+/\+/g; my $link=''; my $template=''; - my $url=$Apache::lonnet::perlvar{'BugzillaHost'}.'enter_bug.cgi?product=LON-CAPA&bug_file_loc='. - &escape($ENV{'REQUEST_URI'}).'&component='.$topic; + my $url=$Apache::lonnet::perlvar{'BugzillaHost'}.'enter_bug.cgi?product=LON-CAPA&bug_file_loc='. + &escape($ENV{'REQUEST_URI'}).'&component='.$topic; if (!$stayOnPage) { $link = "javascript:void(open('$url', 'Bugzilla', 'menubar=0,toolbar=1,scrollbars=1,width=$width,height=$height,resizable=yes'))"; @@ -2813,11 +2826,19 @@ sub bodytag { @$addentries{keys(%design)} = @design{keys(%design)}; # role and realm - my ($role,$realm) = - &Apache::lonnet::plaintext((split(/\./,$env{'request.role'}))[0]); + my ($role,$realm) = split(/\./,$env{'request.role'},2); + if ($role eq 'ca') { + my ($rdom,$rname) = ($realm =~ m-^/(\w+)/(\w+)$-); + $realm = &plainname($rname,$rdom).':'.$rdom; + } # realm if ($env{'request.course.id'}) { + if ($env{'request.role'} !~ /^cr/) { + $role = &Apache::lonnet::plaintext($role,&course_type()); + } $realm = $env{'course.'.$env{'request.course.id'}.'.description'}; + } else { + $role = &Apache::lonnet::plaintext($role); } if (!$realm) { $realm=' '; } # Set messages @@ -2878,6 +2899,7 @@ ENDROLE '.domain'}.'/'})) { my $cid = $env{'request.course.id'}; $dc_info.= $cid.' '.$env{'course.'.$cid.'.internal.coursecode'}; + $dc_info =~ s/\s+$//; $dc_info = '('.$dc_info.')'; } @@ -3076,8 +3098,10 @@ sub standard_css { my $tabbg = &designparm($function.'.tabbg', $domain); my $font = &designparm($function.'.font', $domain); my $sidebg = &designparm($function.'.sidebg',$domain); - my $pgbg = $bgcolor || + my $pgbg_or_bgcolor = + $bgcolor || &designparm($function.'.pgbg', $domain); + my $pgbg = &designparm($function.'.pgbg', $domain); my $alink = &designparm($function.'.alink', $domain); my $vlink = &designparm($function.'.vlink', $domain); my $link = &designparm($function.'.link', $domain); @@ -3103,7 +3127,7 @@ table.thinborder { border-collapse: coll table.thinborder tr th, table.thinborder tr td { border-style: solid; border-width: 1px} form, .inline { display: inline; } .center { text-align: center; } -.filename {font-family: monospace;} +.LC_filename {font-family: monospace;} .LC_error { color: red; font-size: larger; @@ -3112,11 +3136,11 @@ form, .inline { display: inline; } color: green; } -table#LC_top_nav, table#LC_menubuttons, table#LC_nav_location, table#LC_breadcrumbs { +table#LC_top_nav, table#LC_menubuttons, table#LC_nav_location { width: 100%; background: $pgbg; border: 0px; - border-spacing: 2px 1px; + border-spacing: 2px 2px; padding: 0px; margin: 0px; border-collapse: separate; @@ -3124,7 +3148,16 @@ table#LC_top_nav, table#LC_menubuttons, table#LC_title_bar { width: 100%; border: 0; - border-spacing: 0px 1px; + border-spacing: 0px 0px; + padding: 0px 2px 0px 2px; + background: $pgbg; + font-family: $sans; + border-collapse: separate; +} +table#LC_breadcrumbs { + width: 100%; + border: 0; + border-spacing: 0px; padding: 0px 2px 0px 2px; background: $pgbg; font-family: $sans; @@ -3196,6 +3229,10 @@ table#LC_breadcrumbs td.LC_breadcrumb_co font-size: larger; text-align: right; } +td.LC_table_cell_checkbox { + text-align: center; +} + .LC_menubuttons_inline_text { color: $font; font-family: $sans; @@ -3278,6 +3315,52 @@ table.LC_mail_list tr.LC_mail_other { table.LC_mail_list tr.LC_mail_other:hover { background-color: $mail_other_hover; } + +table#LC_portfolio_actions { + width: auto; + background: $pgbg; + border: 0px; + border-spacing: 2px 2px; + padding: 0px; + margin: 0px; + border-collapse: separate; +} +table#LC_portfolio_actions td.LC_label { + background: $tabbg; + text-align: right; +} +table#LC_portfolio_actions td.LC_value { + background: $tabbg; +} + +table#LC_browser { + +} +table#LC_browser tr th { + background: #DDDDDD; +} +table#LC_browser tr.LC_browser_file, +table#LC_browser tr.LC_browser_file_published { + background: #CCFF88; +} +table#LC_browser tr.LC_browser_file_locked, +table#LC_browser tr.LC_browser_file_unpublished { + background: #FFAA99; +} +table#LC_browser tr.LC_browser_file_obsolete { + background: #AAAAAA; +} +table#LC_browser tr.LC_browser_file_modified { + background: #FFFF77; +} +table#LC_browser tr.LC_browser_folder { + background: #CCCCFF; +} +span.LC_current_location { + font-size: x-large; + background: $pgbg; +} + END } @@ -3643,29 +3726,29 @@ sub simple_error_page { my $row_count; sub start_data_table { undef($row_count); - return ''; + return '
'."\n"; } sub end_data_table { undef($row_count); - return '
'; + return ''."\n";; } sub start_data_table_row { $row_count++; - return ''; + return ''."\n";; } sub end_data_table_row { - return ''; + return ''."\n";; } sub start_data_table_header_row { - return ''; + return ''."\n";; } sub end_data_table_header_row { - return ''; + return ''."\n";; } } @@ -3947,6 +4030,43 @@ sub get_user_info { return; } +sub get_secgrprole_info { + my ($cdom,$cnum,$needroles,$type) = @_; + my %sections_count = &get_sections($cdom,$cnum); + my @sections = (sort {$a <=> $b} keys(%sections_count)); + my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); + my @groups = sort(keys(%curr_groups)); + my $allroles = []; + my $rolehash; + my $accesshash = { + active => 'Currently has access', + future => 'Will have future access', + previous => 'Previously had access', + }; + if ($needroles) { + $rolehash = {'all' => 'all'}; + my %user_roles = &Apache::lonnet::dump('nohist_userroles',$cdom,$cnum); + if (&Apache::lonnet::error(%user_roles)) { + undef(%user_roles); + } + foreach my $item (keys(%user_roles)) { + my ($role)=split(/\:/,$item,2); + if ($role eq 'cr') { next; } + if ($role =~ /^cr/) { + $$rolehash{$role} = (split('/',$role))[3]; + } else { + $$rolehash{$role} = &Apache::lonnet::plaintext($role,$type); + } + } + foreach my $key (sort(keys(%{$rolehash}))) { + push(@{$allroles},$key); + } + push (@{$allroles},'st'); + $$rolehash{'st'} = &Apache::lonnet::plaintext('st',$type); + } + return (\@sections,\@groups,$allroles,$rolehash,$accesshash); +} + =pod =item * get_unprocessed_cgi($query,$possible_names) @@ -4962,6 +5082,17 @@ sub restore_course_settings { ############################################################ ############################################################ +sub course_type { + my ($cid) = @_; + if (!defined($cid)) { + $cid = $env{'request.course.id'}; + } + if (defined($env{'course.'.$cid.'type'})) { + return $env{'course.'.$cid.'type'}; + } else { + return 'Course'; + } +} sub icon { my ($file)=@_;