--- loncom/interface/loncommon.pm 2013/06/05 13:25:41 1.1075.2.39 +++ loncom/interface/loncommon.pm 2012/08/07 10:52:17 1.1090 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.1075.2.39 2013/06/05 13:25:41 raeburn Exp $ +# $Id: loncommon.pm,v 1.1090 2012/08/07 10:52:17 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -67,13 +67,9 @@ use Apache::lonhtmlcommon(); use Apache::loncoursedata(); use Apache::lontexconvert(); use Apache::lonclonecourse(); -use Apache::lonuserutils(); -use Apache::lonuserstate(); use LONCAPA qw(:DEFAULT :match); use DateTime::TimeZone; use DateTime::Locale::Catalog; -use Authen::Captcha; -use Captcha::reCAPTCHA; # ---------------------------------------------- Designs use vars qw(%defaultdesign); @@ -158,6 +154,7 @@ sub ssi_with_retries { # ----------------------------------------------- Filetypes/Languages/Copyright my %language; my %supported_language; +my %supported_codes; my %latex_language; # For choosing hyphenation in my %latex_language_bykey; # for choosing hyphenation from metadata my %cprtag; @@ -192,14 +189,15 @@ BEGIN { while (my $line = <$fh>) { next if ($line=~/^\#/); chomp($line); - my ($key,$two,$country,$three,$enc,$val,$sup,$latex)=(split(/\t/,$line)); + my ($key,$code,$country,$three,$enc,$val,$sup,$latex)=(split(/\t/,$line)); $language{$key}=$val.' - '.$enc; if ($sup) { $supported_language{$key}=$sup; + $supported_codes{$key} = $code; } if ($latex) { $latex_language_bykey{$key} = $latex; - $latex_language{$two} = $latex; + $latex_language{$code} = $latex; } } close($fh); @@ -528,8 +526,7 @@ ENDAUTHORBRW } sub coursebrowser_javascript { - my ($domainfilter,$sec_element,$formname,$role_element,$crstype, - $credits_element) = @_; + my ($domainfilter,$sec_element,$formname,$role_element,$crstype) = @_; my $wintitle = 'Course_Browser'; if ($crstype eq 'Community') { $wintitle = 'Community_Browser'; @@ -592,9 +589,8 @@ sub coursebrowser_javascript { } $id_functions ENDSTDBRW - if (($sec_element ne '') || ($role_element ne '') || ($credits_element ne '')) { - $output .= &setsec_javascript($sec_element,$formname,$role_element, - $credits_element); + if (($sec_element ne '') || ($role_element ne '')) { + $output .= &setsec_javascript($sec_element,$formname,$role_element); } $output .= ' // ]]> @@ -663,7 +659,7 @@ if (!Array.prototype.indexOf) { var n = 0; if (arguments.length > 0) { n = Number(arguments[1]); - if (n !== n) { // shortcut for verifying if it's NaN + if (n !== n) { // shortcut for verifying if it is NaN n = 0; } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) { n = (n > 0 || -1) * Math.floor(Math.abs(n)); @@ -751,7 +747,7 @@ ENDUSERBRW } sub setsec_javascript { - my ($sec_element,$formname,$role_element,$credits_element) = @_; + my ($sec_element,$formname,$role_element) = @_; my (@courserolenames,@communityrolenames,$rolestr,$courserolestr, $communityrolestr); if ($role_element ne '') { @@ -846,14 +842,6 @@ function setRole(crstype) { } |; } - if ($credits_element) { - $setsections .= qq| -function setCredits(defaultcredits) { - document.$formname.$credits_element.value = defaultcredits; - return; -} -|; - } return $setsections; } @@ -899,14 +887,10 @@ sub check_uncheck_jscript { function checkAll(field) { if (field.length > 0) { for (i = 0; i < field.length; i++) { - if (!field[i].disabled) { - field[i].checked = true; - } + field[i].checked = true ; } } else { - if (!field.disabled) { - field.checked = true; - } + field.checked = true } } @@ -1008,12 +992,38 @@ sub select_language { $langchoices{$code} = &plainlanguagedescription($id); } } - %langchoices = &Apache::lonlocal::texthash(%langchoices); return &select_form($selected,$name,\%langchoices); } =pod + +=item * &list_languages() + +Returns an array reference that is suitable for use in language prompters. +Each array element is itself a two element array. The first element +is the language code. The second element a descsriptiuon of the +language itself. This is suitable for use in e.g. +&Apache::edit::select_arg (once dereferenced that is). + +=cut + +sub list_languages { + my @lang_choices; + + foreach my $id (&languageids()) { + my $code = &supportedlanguagecode($id); + if ($code) { + my $selector = $supported_codes{$id}; + my $description = &plainlanguagedescription($id); + push (@lang_choices, [$selector, $description]); + } + } + return \@lang_choices; +} + +=pod + =item * &linked_select_forms(...) linked_select_forms returns a string containing a block @@ -1040,12 +1050,6 @@ linked_select_forms takes the following =item * $menuorder, the order of values in the first menu -=item * $onchangefirst, additional javascript call to execute for an onchange - event for the first tag - =back Below is an example of such a hash. Only the 'text', 'default', and @@ -1099,8 +1103,6 @@ sub linked_select_forms { $secondselectname, $hashref, $menuorder, - $onchangefirst, - $onchangesecond ) = @_; my $second = "document.$formname.$secondselectname"; my $first = "document.$formname.$firstselectname"; @@ -1157,7 +1159,7 @@ function select1_changed() { END # output the initial values for the selection lists - $result .= "\n"; my @order = sort(keys(%{$hashref})); if (ref($menuorder) eq 'ARRAY') { @order = @{$menuorder}; @@ -1170,11 +1172,7 @@ END $result .= "\n"; my %select2 = %{$hashref->{$firstdefault}->{'select2'}}; $result .= $middletext; - $result .= " form to allow a user to select the domain to preform an operation in. @@ -2174,31 +2172,25 @@ If the $showdomdesc flag is set, the dom The optional $onchange argument specifies what should occur if the domain selector is changed, e.g., 'this.form.submit()' if the form is to be automatically submitted. -The optional $incdoms is a reference to an array of domains which will be the only available options. - -The optional $excdoms is a reference to an array of domains which will be excluded from the available options. +The optional $incdoms is a reference to an array of domains which will be the only available options. =cut #------------------------------------------- sub select_dom_form { - my ($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoms,$excdoms) = @_; + my ($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoms) = @_; if ($onchange) { $onchange = ' onchange="'.$onchange.'"'; } - my (@domains,%exclude); + my @domains; if (ref($incdoms) eq 'ARRAY') { @domains = sort {lc($a) cmp lc($b)} (@{$incdoms}); } else { @domains = sort {lc($a) cmp lc($b)} (&Apache::lonnet::all_domains()); } if ($includeempty) { @domains=('',@domains); } - if (ref($excdoms) eq 'ARRAY') { - map { $exclude{$_} = 1; } @{$excdoms}; - } my $selectdomain = "'; } if (($can_assign{'krb4'} && $can_assign{'krb5'}) || - ($can_assign{'krb4'} && !$can_assign{'krb5'} && + ($can_assign{'krb4'} && !$can_assign{'krb5'} && $in{'curr_authtype'} eq 'krb5') || - (!$can_assign{'krb4'} && $can_assign{'krb5'} && + (!$can_assign{'krb4'} && $can_assign{'krb5'} && $in{'curr_authtype'} eq 'krb4')) { $result .= &mt ('[_1] Kerberos authenticated with domain [_2] '. @@ -2650,14 +2642,14 @@ sub authform_kerberos { return $result; } -sub authform_internal { +sub authform_internal{ my %in = ( formname => 'document.cu', kerb_def_dom => 'MSU.EDU', @_, ); my ($intcheck,$intarg,$result,$authtype,$autharg,$jscall); - my ($authnum,%can_assign) = &get_assignable_auth($in{'domain'}); + my ($authnum,%can_assign) = &get_assignable_auth($in{'domain'}); if (defined($in{'curr_authtype'})) { if ($in{'curr_authtype'} eq 'int') { if ($can_assign{'int'}) { @@ -2686,7 +2678,7 @@ sub authform_internal { if (defined($in{'mode'})) { if ($in{'mode'} eq 'modifycourse') { if ($authnum == 1) { - $authtype = ''; + $authtype = ''; } } } @@ -2705,14 +2697,14 @@ sub authform_internal { return $result; } -sub authform_local { +sub authform_local{ my %in = ( formname => 'document.cu', kerb_def_dom => 'MSU.EDU', @_, ); my ($loccheck,$locarg,$result,$authtype,$autharg,$jscall); - my ($authnum,%can_assign) = &get_assignable_auth($in{'domain'}); + my ($authnum,%can_assign) = &get_assignable_auth($in{'domain'}); if (defined($in{'curr_authtype'})) { if ($in{'curr_authtype'} eq 'loc') { if ($can_assign{'loc'}) { @@ -2741,7 +2733,7 @@ sub authform_local { if (defined($in{'mode'})) { if ($in{'mode'} eq 'modifycourse') { if ($authnum == 1) { - $authtype = ''; + $authtype = ''; } } } @@ -2759,14 +2751,14 @@ sub authform_local { return $result; } -sub authform_filesystem { +sub authform_filesystem{ my %in = ( formname => 'document.cu', kerb_def_dom => 'MSU.EDU', @_, ); my ($fsyscheck,$result,$authtype,$autharg,$jscall); - my ($authnum,%can_assign) = &get_assignable_auth($in{'domain'}); + my ($authnum,%can_assign) = &get_assignable_auth($in{'domain'}); if (defined($in{'curr_authtype'})) { if ($in{'curr_authtype'} eq 'fsys') { if ($can_assign{'fsys'}) { @@ -2792,7 +2784,7 @@ sub authform_filesystem { if (defined($in{'mode'})) { if ($in{'mode'} eq 'modifycourse') { if ($authnum == 1) { - $authtype = ''; + $authtype = ''; } } } @@ -3023,6 +3015,45 @@ sub get_related_words { untie %thesaurus_db; return @Words; } +############################################################### +# +# Spell checking +# + +=pod + +=head1 Spell checking + +=over 4 + +=item * &check_spelling($wordlist $language) + +Takes a string containing words and feeds it to an external +spellcheck program via a pipeline. Returns a string containing +them mis-spelled words. + +Parameters: + +=over 4 + +=item - $wordlist + +String that will be fed into the spellcheck program. + +=item - $language + +Language string that specifies the language for which the spell +check will be performed. + +=back + +=back + +Note: This sub assumes that aspell is installed. + + +=cut + =pod @@ -3030,6 +3061,45 @@ sub get_related_words { =cut +sub check_spelling { + my ($wordlist, $language) = @_; + + # Format the command. If $language is null then + # don't request a language - Note that's dangerous + # because there's no assurance the server is running the intended default + # language. + + my $langswitch = ''; + if ($language) { + $langswitch = "--lang=$language"; + } + + my $aspell_command = "aspell -a $language"; + my $full_command = "echo $wordlist | $aspell_command"; + + my $ispell_result = `$full_command`; + + # The result is several lines of text. + # the first line will start with @(#). Other wise + # There's an error. With an error our fallback is to declare + # all the words are correctly spelled (return empty string). + + my @misspellings; + my @lines = split(/\n/, $ispell_result); + my $heading = shift(@lines); # header + if ($heading =~ /^\@\(#\) /) { + foreach my $word (split(/\s+/, $wordlist)) { + my $spellok = pop(@lines); + if (!($spellok =~ /^\*/)) { + push(@misspellings, $word); + } + } + return join(' ', (@misspellings)); # empty if all words ok. + } else { + return ""; + } +} + # -------------------------------------------------------------- Plaintext name =pod @@ -3263,7 +3333,7 @@ sub aboutmewrapper { if (!defined($username) && !defined($domain)) { return; } - return ''.$link.''; } @@ -4916,7 +4986,7 @@ sub CSTR_pageheader { my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; my ($udom,$uname,$thisdisfn)= - ($trailfile =~ m{^\Q$londocroot\E/priv/([^/]+)/([^/]+)(?:|/(.*))$}); + ($trailfile =~ m{^\Q$londocroot\E/priv/([^/]+)/([^/]+)/(.*)$}); my $formaction = "/priv/$udom/$uname/$thisdisfn"; $formaction =~ s{/+}{/}g; @@ -4991,19 +5061,12 @@ 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, should it have jsmath forced on by the current page -=item * $advtoolsref, optional argument, ref to an array containing - inlineremote items to be added in "Functions" menu below - breadcrumbs. - =back Returns: A uniform header for LON-CAPA web pages. @@ -5015,7 +5078,7 @@ other decorations will be returned. sub bodytag { my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, - $no_nav_bar,$bgcolor,$no_inline_link,$args,$advtoolsref)=@_; + $no_nav_bar,$bgcolor,$args)=@_; my $public; if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) @@ -5064,14 +5127,16 @@ sub bodytag { my $bodytag = "". &Apache::lontexconvert::init_math_support($args->{'inherit_jsmath'}); - &get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']); - - if (($bodyonly) || ($no_nav_bar) || ($env{'form.inhibitmenu'} eq 'yes')) { + if ($bodyonly) { return $bodytag; - } + } + my $name = &plainname($env{'user.name'},$env{'user.domain'}); if ($public) { undef($role); + } else { + $name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}, + undef,'LC_menubuttons_link'); } my $titleinfo = '

'.$title.'

'; @@ -5087,48 +5152,37 @@ sub bodytag { } $role = '('.$role.')' if $role; + &get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']); - if ($env{'request.state'} eq 'construct') { $forcereg=1; } - + if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') { + return $bodytag; + } - - my $funclist; - if (($env{'environment.remote'} eq 'on') && ($env{'request.state'} ne 'construct')) { - $bodytag .= Apache::lonhtmlcommon::scripttag(Apache::lonmenu::utilityfunctions(), 'start')."\n". - Apache::lonmenu::serverform(); - my $forbodytag; - &Apache::lonmenu::prepare_functions($env{'request.noversionuri'}, - $forcereg,$args->{'group'}, - $args->{'bread_crumbs'}, - $advtoolsref,'',\$forbodytag); - unless (ref($args->{'bread_crumbs'}) eq 'ARRAY') { - $funclist = $forbodytag; - } - } else { + if ($env{'request.state'} eq 'construct') { $forcereg=1; } # if ($env{'request.state'} eq 'construct') { # $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls # } - $bodytag .= Apache::lonhtmlcommon::scripttag( - Apache::lonmenu::utilityfunctions(), 'start'); - my ($left,$right) = Apache::lonmenu::primary_menu(); if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { - if ($dc_info) { + if ($dc_info) { $dc_info = qq|$dc_info|; - } - $bodytag .= qq|
$left $role
- $realm $dc_info
|; + } + $bodytag .= qq|
$name $role
+ $realm $dc_info
|; return $bodytag; } unless ($env{'request.symb'} =~ m/\.page___\d+___/) { - $bodytag .= qq|
$left $role
|; + $bodytag .= qq|
$name $role
|; } - $bodytag .= $right; + $bodytag .= Apache::lonhtmlcommon::scripttag( + Apache::lonmenu::utilityfunctions(), 'start'); + + $bodytag .= Apache::lonmenu::primary_menu(); if ($dc_info) { $dc_info = &dc_courseid_toggle($dc_info); @@ -5144,17 +5198,7 @@ sub bodytag { $bodytag .= &Apache::lonmenu::innerregister($forcereg, $args->{'bread_crumbs'}); } elsif ($forcereg) { - $bodytag .= &Apache::lonmenu::innerregister($forcereg,undef, - $args->{'group'}); - } else { - my $forbodytag; - &Apache::lonmenu::prepare_functions($env{'request.noversionuri'}, - $forcereg,$args->{'group'}, - $args->{'bread_crumbs'}, - $advtoolsref,'',\$forbodytag); - unless (ref($args->{'bread_crumbs'}) eq 'ARRAY') { - $bodytag .= $forbodytag; - } + $bodytag .= &Apache::lonmenu::innerregister($forcereg); } }else{ # this is to seperate menu from content when there's no secondary @@ -5164,50 +5208,6 @@ sub bodytag { } return $bodytag; - } - -# -# Top frame rendering, Remote is up -# - - my $imgsrc = $img; - if ($img =~ /^\/adm/) { - $imgsrc = &lonhttpdurl($img); - } - my $upperleft=''.$function.''; - - # 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)|; - } - - my $name = &plainname($env{'user.name'},$env{'user.domain'}); - unless ($public) { - $name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}, - undef,'LC_menubuttons_link'); - } - - unless ($env{'form.inhibitmenu'}) { - $bodytag .= qq|
$name $role
-
    -
  1. $menu
  2. -
$realm $dc_info
|; - } - if ($env{'request.state'} eq 'construct') { - if (!$public){ - if ($env{'request.state'} eq 'construct') { - $funclist = &Apache::lonhtmlcommon::scripttag( - &Apache::lonmenu::utilityfunctions(), 'start'). - &Apache::lonhtmlcommon::scripttag('','end'). - &Apache::lonmenu::innerregister($forcereg, - $args->{'bread_crumbs'}); - } - } - } - return $bodytag."\n".$funclist; } sub dc_courseid_toggle { @@ -5239,15 +5239,8 @@ sub make_attr_string { delete($attr_ref->{$key}); } } - if ($env{'environment.remote'} eq 'on') { - $attr_ref->{'onload'} = - &Apache::lonmenu::loadevents(). $on_load; - $attr_ref->{'onunload'}= - &Apache::lonmenu::unloadevents().$on_unload; - } else { - $attr_ref->{'onload'} = $on_load; - $attr_ref->{'onunload'}= $on_unload; - } + $attr_ref->{'onload'} = $on_load; + $attr_ref->{'onunload'}= $on_unload; } my $attr_string; @@ -5382,14 +5375,6 @@ form, .inline { vertical-align:middle; } -.LC_floatleft { - float: left; -} - -.LC_floatright { - float: right; -} - .LC_400Box { width:400px; } @@ -5428,12 +5413,10 @@ form, .inline { .LC_error { color: red; + font-size: larger; } -.LC_warning { - color: darkorange; -} - +.LC_warning, .LC_diff_removed { color: red; } @@ -5596,11 +5579,11 @@ td.LC_table_cell_checkbox { text-align: left; } -.LC_head_subbox, .LC_actionbox { +.LC_head_subbox { clear:both; background: #F8F8F8; /* $sidebg; */ border: 1px solid $sidebg; - margin: 0 0 10px 0; + margin: 0 0 10px 0; padding: 3px; text-align: left; } @@ -5733,8 +5716,7 @@ table.LC_nested tr.LC_empty_row td { padding: 8px; } -table.LC_data_table tr.LC_empty_row td, -table.LC_data_table tr.LC_footer_row td { +table.LC_data_table tr.LC_empty_row td { background-color: $sidebg; } @@ -6296,6 +6278,7 @@ div.LC_docs_entry_move { table.LC_data_table tr > td.LC_docs_entry_commands, table.LC_data_table tr > td.LC_docs_entry_parameter { + background: #DDDDDD; font-size: x-small; } @@ -6460,11 +6443,6 @@ div.LC_edit_problem_saves { padding-bottom: 5px; } -.LC_edit_opt { - padding-left: 1em; - white-space: nowrap; -} - img.stift { border-width: 0; vertical-align: middle; @@ -6479,7 +6457,6 @@ div.LC_createcourse { } .LC_dccid { - float: right; margin: 0.2em 0 0 0; padding: 0; font-size: 90%; @@ -6577,6 +6554,7 @@ fieldset > legend { } ol.LC_primary_menu { + float: right; margin: 0; padding: 0; background-color: $pgbg_or_bgcolor; @@ -6673,7 +6651,7 @@ ol.LC_docs_parameters li.LC_docs_paramet } ul#LC_secondary_menu { - clear: right; + clear: both; color: $fontmenu; background: $tabbg; list-style: none; @@ -6681,53 +6659,15 @@ ul#LC_secondary_menu { margin: 0; width: 100%; text-align: left; - float: left; } ul#LC_secondary_menu li { font-weight: bold; line-height: 1.8em; - border-right: 1px solid black; - vertical-align: middle; - float: left; -} - -ul#LC_secondary_menu li.LC_hoverable:hover, ul#LC_secondary_menu li.hover { - background-color: $data_table_light; -} - -ul#LC_secondary_menu li a { padding: 0 0.8em; -} - -ul#LC_secondary_menu li ul { - display: none; -} - -ul#LC_secondary_menu li:hover ul, ul#LC_secondary_menu li.hover ul { - display: block; - position: absolute; - margin: 0; - padding: 0; - list-style:none; - float: none; - background-color: $data_table_light; - z-index: 2; - margin-left: -1px; -} - -ul#LC_secondary_menu li ul li { - font-size: 90%; - vertical-align: top; - border-left: 1px solid black; border-right: 1px solid black; - background-color: $data_table_light; - list-style:none; - float: none; -} - -ul#LC_secondary_menu li ul li:hover, ul#LC_secondary_menu li ul li.hover { - background-color: $data_table_dark; + display: inline; + vertical-align: middle; } ul.LC_TabContent { @@ -7174,27 +7114,6 @@ ul.LC_funclist li { cursor:pointer; } -/* - styles used by TTH when "Default set of options to pass to tth/m - when converting TeX" in course settings has been set - - option passed: -t - -*/ - -td div.comp { margin-top: -0.6ex; margin-bottom: -1ex;} -td div.comb { margin-top: -0.6ex; margin-bottom: -.6ex;} -td div.hrcomp { line-height: 0.9; margin-top: -0.8ex; margin-bottom: -1ex;} -td div.norm {line-height:normal;} - -/* - option passed -y3 -*/ - -span.roman {font-family: serif; font-style: normal; font-weight: normal;} -span.overacc2 {position: relative; left: .8em; top: -1.2ex;} -span.overacc1 {position: relative; left: .6em; top: -1.2ex;} - END } @@ -7248,8 +7167,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'} @@ -7458,16 +7377,12 @@ $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 current page bread_crumbs -> Array containing breadcrumbs bread_crumbs_component -> if exists show it as headline else show only the breadcrumbs - group -> includes the current group, if page is for a - specific group =back @@ -7480,7 +7395,7 @@ sub start_page { #&Apache::lonnet::logthis("start_page ".join(':',caller(0))); $env{'internal.start_page'}++; - my ($result,@advtools); + my $result; if (! exists($args->{'skip_phases'}{'head'}) ) { $result .= &xml_begin() . &headtag($title, $head_extra, $args); @@ -7497,8 +7412,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, \@advtools); + $args->{'bgcolor'}, $args); } } @@ -7527,10 +7441,6 @@ sub start_page { &Apache::lonhtmlcommon::add_breadcrumb($crumb); } } - # if @advtools array contains items add then to the breadcrumbs - if (@advtools > 0) { - &Apache::lonmenu::advtools_crumbs(@advtools); - } #if bread_crumbs_component exists show it as headline else show only the breadcrumbs if(exists($args->{'bread_crumbs_component'})){ @@ -7538,11 +7448,6 @@ sub start_page { }else{ $result .= &Apache::lonhtmlcommon::breadcrumbs(); } - } elsif (($env{'environment.remote'} eq 'on') && - ($env{'form.inhibitmenu'} ne 'yes') && - ($env{'request.noversionuri'} =~ m{^/res/}) && - ($env{'request.noversionuri'} !~ m{^/res/adm/pages/})) { - $result .= '

'; } return $result; } @@ -7806,9 +7711,11 @@ sub LCprogressbar { $LCcurrentid=$$.'_'.$LCidcnt; my $starting=&mt('Starting'); my $content=(<
$starting
+

ENDPROGBAR &r_print($r,$content.&LCprogressbar_script($LCcurrentid)); } @@ -7929,7 +7836,7 @@ sub simple_error_page { my ($r,$title,$msg) = @_; my $page = &Apache::loncommon::start_page($title). - '

'.&mt($msg).'

'. + &mt($msg). &Apache::loncommon::end_page(); if (ref($r)) { $r->print($page); @@ -8222,19 +8129,7 @@ sub get_sections { my %sectioncount; my $now = time; - my $check_students = 1; - my $only_students = 0; - if (ref($possible_roles) eq 'ARRAY') { - if (grep(/^st$/,@{$possible_roles})) { - if (@{$possible_roles} == 1) { - $only_students = 1; - } - } else { - $check_students = 0; - } - } - - if ($check_students) { + if (!defined($possible_roles) || (grep(/^st$/,@$possible_roles))) { my ($classlist) = &Apache::loncoursedata::get_classlist($cdom,$cnum); my $sec_index = &Apache::loncoursedata::CL_SECTION(); my $status_index = &Apache::loncoursedata::CL_STATUS(); @@ -8261,9 +8156,6 @@ sub get_sections { } } } - if ($only_students) { - return %sectioncount; - } my %courseroles = &Apache::lonnet::dump('nohist_userroles',$cdom,$cnum); foreach my $user (sort(keys(%courseroles))) { if ($user !~ /^(\w{2})/) { next; } @@ -8411,7 +8303,7 @@ sub get_course_users { active => 'Active', future => 'Future', ); - my (%nothide,@possdoms); + my %nothide; if ($hidepriv) { my %coursehash=&Apache::lonnet::coursedescription($cdom.'_'.$cnum); foreach my $user (split(/\s*\,\s*/,$coursehash{'nothideprivileged'})) { @@ -8421,10 +8313,6 @@ sub get_course_users { $nothide{$user} = 1; } } - my @possdoms = ($cdom); - if ($coursehash{'checkforpriv'}) { - push(@possdoms,split(/,/,$coursehash{'checkforpriv'})); - } } foreach my $person (sort(keys(%coursepersonnel))) { my $match = 0; @@ -8460,7 +8348,7 @@ sub get_course_users { } if ($uname ne '' && $udom ne '') { if ($hidepriv) { - if ((&Apache::lonnet::privileged($uname,$udom,\@possdoms)) && + if ((&Apache::lonnet::privileged($uname,$udom)) && (!$nothide{$uname.':'.$udom})) { next; } @@ -9065,10 +8953,7 @@ sub user_rule_formats { my ($rules,$ruleorder) = &Apache::lonnet::inst_userrules($domain,$check); if ((ref($rules) eq 'HASH') && (ref($ruleorder) eq 'ARRAY')) { if (@{$ruleorder} > 0) { - $output = '
'. - &mt($text{$check}.' with the following format(s) may [_1]only[_2] be used for verified users at [_3]:', - '','',$domdesc). - '