--- loncom/interface/loncommon.pm 2009/10/24 03:32:49 1.692.4.20 +++ loncom/interface/loncommon.pm 2009/10/28 08:47:56 1.904 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.692.4.20 2009/10/24 03:32:49 raeburn Exp $ +# $Id: loncommon.pm,v 1.904 2009/10/28 08:47:56 droeschl Exp $ # # Copyright Michigan State University Board of Trustees # @@ -271,7 +271,7 @@ BEGIN { } } &Apache::lonnet::logthis( - "INFO: Read file types"); + "INFO: Read file types"); $readit=1; } # end of unless($readit) @@ -452,7 +452,7 @@ sub selectstudent_link { &mt('Select User').''; } if ($env{'request.role'}=~/^(au|dc|su)/) { - $callargs .= ",1"; + $callargs .= ",1"; return ''. ''. &mt('Select User').''; @@ -462,7 +462,7 @@ sub selectstudent_link { sub authorbrowser_javascript { return <<"ENDAUTHORBRW"; - ENDAUTHORBRW @@ -512,6 +513,10 @@ sub coursebrowser_javascript { else { if (formname == 'portform') { url += '&setroles='+extra_element; + } else { + if (formname == 'rules') { + url += '&fixeddom='+extra_element; + } } } } @@ -655,7 +660,6 @@ $id_functions ENDUSERBRW } - sub setsec_javascript { my ($sec_element,$formname) = @_; my $setsections = qq| @@ -700,7 +704,7 @@ sub selectcourse_link { my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype)=@_; my $linktext = &mt('Select Course'); if ($selecttype eq 'Community') { - $linktext = &mt('Select Community'); + $linktext = &mt('Select Community'); } return '' ."". - "$text"; + if ($text ne "") { + $template.='' + .'' + .$text.''; } - # Add the graphic + # (Always) Add the graphic my $title = &mt('Online Help'); my $helpicon=&lonhttpdurl("/adm/help/help.png"); - $template .= ''. - ''.&mt('Help: [_1]',$topic).
-                 ''; - if ($text ne '') { - $template.=''; + $template.=' ' + .''.&mt('Help: [_1]',$topic).''; + if ($text ne "") { + $template.=''; } return $template; @@ -1079,25 +1082,26 @@ sub helpLatexCheatsheet { my $out; my $addOther = ''; if ($topic) { - $addOther = &Apache::loncommon::help_open_topic($topic,$text, - undef, undef, 600) . - ''; - } - $out = ''; + $addOther = ''.&Apache::loncommon::help_open_topic($topic,&mt($text), + undef, undef, 600). + ' '; + } + $out = '' # Start cheatsheet + .$addOther + .'' + .&Apache::loncommon::help_open_topic('Greek_Symbols',&mt('Greek Symbols'), + undef,undef,600) + .' ' + .&Apache::loncommon::help_open_topic('Other_Symbols',&mt('Other Symbols'), + undef,undef,600) + .''; unless ($not_author) { - $out .= ''; + $out .= ' ' + .&Apache::loncommon::help_open_topic('Authoring_Output_Tags',&mt('Output Tags'), + undef,undef,600) + .''; } - $out .= '
'. - $addOther . - &Apache::loncommon::help_open_topic("Greek_Symbols",&mt('Greek Symbols'), - undef,undef,600). - ''. - &Apache::loncommon::help_open_topic("Other_Symbols",&mt('Other Symbols'), - undef,undef,600). - ''. - &Apache::loncommon::help_open_topic("Authoring_Output_Tags",&mt('Output Tags'), - undef,undef,600). - '
'; + $out .= ''; # End cheatsheet return $out; } @@ -1140,8 +1144,7 @@ sub help_open_menu { $stayOnPage = 0 if (not defined $stayOnPage); # only use pop-up help (stayOnPage == 0) # if environment.remote is on (using remote control UI) - if ($env{'browser.interface'} eq 'textual' || - $env{'environment.remote'} eq 'off' ) { + if ($env{'environment.remote'} eq 'off' ) { $stayOnPage=1; } my $output; @@ -1165,8 +1168,7 @@ sub top_nav_help { my ($text) = @_; $text = &mt($text); my $stay_on_page = - ($env{'browser.interface'} eq 'textual' || - $env{'environment.remote'} eq 'off' ); + ($env{'environment.remote'} eq 'off' ); my $link = ($stay_on_page) ? "javascript:helpMenu('display')" : "javascript:helpMenu('open')"; my $banner_link = &update_help_link(undef,undef,undef,undef,$stay_on_page); @@ -1183,8 +1185,7 @@ sub help_menu_js { my ($text) = @_; my $stayOnPage = - ($env{'browser.interface'} eq 'textual' || - $env{'environment.remote'} eq 'off' ); + ($env{'environment.remote'} eq 'off' ); my $width = 620; my $height = 600; @@ -1243,8 +1244,7 @@ sub help_open_bug { unless ($Apache::lonnet::perlvar{'BugzillaHost'}) { return ''; } $text = "" if (not defined $text); $stayOnPage = 0 if (not defined $stayOnPage); - if ($env{'browser.interface'} eq 'textual' || - $env{'environment.remote'} eq 'off' ) { + if ($env{'environment.remote'} eq 'off' ) { $stayOnPage=1; } $width = 600 if (not defined $width); @@ -1268,7 +1268,7 @@ sub help_open_bug { { $template .= "". - " - + + -$roleinfo
$text"; + "$text"; } # Add the graphic @@ -1288,8 +1288,7 @@ sub help_open_faq { unless ($Apache::lonnet::perlvar{'FAQHost'}) { return ''; } $text = "" if (not defined $text); $stayOnPage = 0 if (not defined $stayOnPage); - if ($env{'browser.interface'} eq 'textual' || - $env{'environment.remote'} eq 'off' ) { + if ($env{'environment.remote'} eq 'off' ) { $stayOnPage=1; } $width = 350 if (not defined $width); @@ -1313,7 +1312,7 @@ sub help_open_faq { { $template .= "". - " - - - - -'; - foreach my $course (keys(%{$setters})) { - my %courseinfo=&Apache::lonnet::coursedescription($course); - for (my $i=0; $i<@{$$setters{$course}{staff}}; $i++) { - my ($uname,$udom) = @{$$setters{$course}{staff}[$i]}; - my $fullname = &plainname($uname,$udom); - if (defined($env{'user.name'}) && defined($env{'user.domain'}) - && $env{'user.name'} ne 'public' - && $env{'user.domain'} ne 'public') { - $fullname = &aboutmewrapper($fullname,$uname,$udom); - } - my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]}; - $openblock = &Apache::lonlocal::locallocaltime($openblock); - $closeblock= &Apache::lonlocal::locallocaltime($closeblock); - $output .= &Apache::loncommon::start_data_table_row(). - ''. - ''. - ''. - &Apache::loncommon::end_data_table_row(); - } - } - $output .= &end_data_table(); -} - sub blocking_status { - my ($activity,$uname,$udom) = @_; - my %setters; - my ($blocked,$output,$ownitem,$is_course); - my ($startblock,$endblock)=&blockcheck(\%setters,$activity,$uname,$udom); - if ($startblock && $endblock) { - $blocked = 1; - if (wantarray) { - my $category; - if ($activity eq 'boards') { - $category = 'Discussion posts in this course'; - } elsif ($activity eq 'blogs') { - $category = 'Blogs'; - } elsif ($activity eq 'port') { - if (defined($uname) && defined($udom)) { - if ($uname eq $env{'user.name'} && - $udom eq $env{'user.domain'}) { - $ownitem = 1; - } - } - $is_course = &Apache::lonnet::is_course($udom,$uname); - if ($ownitem) { - $category = 'Your portfolio files'; - } elsif ($is_course) { - my $coursedesc; - foreach my $course (keys(%setters)) { - my %courseinfo = - &Apache::lonnet::coursedescription($course); - $coursedesc = $courseinfo{'description'}; - } - $category = "Group portfolio files in the course '$coursedesc'"; - } else { - $category = 'Portfolio files belonging to '; - if ($env{'user.name'} eq 'public' && - $env{'user.domain'} eq 'public') { - $category .= &plainname($uname,$udom); - } else { - $category .= &aboutmewrapper(&plainname($uname,$udom),$uname,$udom); - } - } - } elsif ($activity eq 'groups') { - $category = 'Groups in this course'; - } - my $showstart = &Apache::lonlocal::locallocaltime($startblock); - my $showend = &Apache::lonlocal::locallocaltime($endblock); - $output = '
'.&mt('[_1] will be inaccessible between [_2] and [_3] because communication is being blocked.',$category,$showstart,$showend).'
'; - if (!($activity eq 'port' && !($ownitem) && !($is_course))) { - $output .= &build_block_table($startblock,$endblock,\%setters); - } - } - } - if (wantarray) { - return ($blocked,$output); - } else { - return $blocked; - } + my ($activity,$uname,$udom) = @_; + my %setters; + + # check for active blocking + my ($startblock,$endblock)=&blockcheck(\%setters,$activity,$uname,$udom); + + my $blocked = $startblock && $endblock ? 1 : 0; + + # caller just wants to know whether a block is active + if (!wantarray) { return $blocked; } + + # build a link to a popup window containing the details + my $querystring = "?activity=$activity"; + # $uname and $udom decide whose portfolio the user is trying to look at + $querystring .= "&udom=$udom" if $udom; + $querystring .= "&uname=$uname" if $uname; + + my $output .= <<'END_MYBLOCK'; + function openWindow(url, wdwName, w, h, toolbar,scrollbar) { + var options = "width=" + w + ",height=" + h + ","; + options += "resizable=yes,scrollbars="+scrollbar+",status=no,"; + options += "menubar=no,toolbar="+toolbar+",location=no,directories=no"; + var newWin = window.open(url, wdwName, options); + newWin.focus(); + } +END_MYBLOCK + + $output = Apache::lonhtmlcommon::scripttag($output); + + my $popupUrl = "/adm/blockingstatus/$querystring"; + my $text = mt('Communication Blocked'); + + $output .= <<"END_BLOCK"; +
+ + $text + $text +
+ +END_BLOCK + + return ($blocked, $output); } ############################################### @@ -4129,7 +4078,7 @@ sub get_domainconf { 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} = + $designhash{$udom.'.login.'.$key.'_'.$img} = $domconfig{'login'}{$key}{$img}; } } else { @@ -4249,41 +4198,120 @@ Returns: value of designparamter $which ############################################## sub designparm { my ($which,$domain)=@_; - if ($env{'browser.blackwhite'} eq 'on') { - if ($which=~/\.(font|alink|vlink|link|textcol)$/) { - return '#000000'; - } - if ($which=~/\.(pgbg|sidebg|bgcol)$/) { - return '#FFFFFF'; - } - if ($which=~/\.tabbg$/) { - return '#CCCCCC'; - } - } if (exists($env{'environment.color.'.$which})) { - return $env{'environment.color.'.$which}; + return $env{'environment.color.'.$which}; } $domain=&determinedomain($domain); my %domdesign = &get_domainconf($domain); my $output; if ($domdesign{$domain.'.'.$which} ne '') { - $output = $domdesign{$domain.'.'.$which}; + $output = $domdesign{$domain.'.'.$which}; } else { $output = $defaultdesign{$which}; } if (($which =~ /^(student|coordinator|author|admin)\.img$/) || ($which =~ /login\.(img|logo|domlogo|login)/)) { if ($output =~ m{^/(adm|res)/}) { - if ($output =~ m{^/res/}) { - my $local_name = &Apache::lonnet::filelocation('',$output); - &Apache::lonnet::repcopy($local_name); - } + if ($output =~ m{^/res/}) { + my $local_name = &Apache::lonnet::filelocation('',$output); + &Apache::lonnet::repcopy($local_name); + } $output = &lonhttpdurl($output); } } return $output; } +############################################## +=pod + +=item * &authorspace() + +Inputs: ./. + +Returns: Path to the Construction Space of the current user's + accessed author space + The author space will be that of the current user + when accessing the own author space + and that of the co-author/assistent co-author + when accessing the co-author's/assistent co-author's + space + +=cut + +sub authorspace { + my $caname = ''; + if ($env{'request.role'} =~ /^ca|^aa/) { + (undef,$caname) = + ($env{'request.role'}=~/($match_domain)\/($match_username)$/); + } else { + $caname = $env{'user.name'}; + } + return '/priv/'.$caname.'/'; +} + +############################################## +=pod + +=item * &head_subbox() + +Inputs: $content (contains HTML code with page functions, etc.) + +Returns: HTML div with $content + To be included in page header + +=cut + +sub head_subbox { + my ($content)=@_; + my $output = + '
' + .$content + .'
' +} + +############################################## +=pod + +=item * &CSTR_pageheader() + +Inputs: ./. + +Returns: HTML div with CSTR path and recent box + To be included on Construction Space pages + +=cut + +sub CSTR_pageheader { + # this is for resources; directories have customtitle, and crumbs + # and select recent are created in lonpubdir.pm + my ($uname,$thisdisfn)= + ($env{'request.filename'} =~ m|^/home/([^/]+)/public_html/(.*)|); + my $formaction='/priv/'.$uname.'/'.$thisdisfn; + $formaction=~s/\/+/\//g; + + my $parentpath = ''; + my $lastitem = ''; + if ($thisdisfn =~ m-(.+/)([^/]*)$-) { + $parentpath = $1; + $lastitem = $2; + } else { + $lastitem = $thisdisfn; + } + return + '
' + .&Apache::loncommon::help_open_menu('','',3,'Authoring') #FIXME: Broken? Where is it? + .''.&mt('Construction Space:').' ' + .'
' #FIXME lonpubdir: target="_parent" + .&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv','','+1',1)."$lastitem
" + #FIXME lonpubdir: &Apache::lonhtmlcommon::crumbs($uname.$thisdisfn.'/','_top','/priv','','+1',1)."
" + .&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()') + .'' + .&Apache::lonmenu::constspaceform() + .'
'; +} + ############################################### ############################################### @@ -4316,17 +4344,11 @@ Inputs: =item * $forcereg, if page should register as content page (relevant for text interface only) -=item * $customtitle, alternate text to use instead of $title - in the title box that appears, this text - is not auto translated like the $title is - -=item * $notopbar, if true, keep the 'what is this' info but remove the - navigational links +=item * $no_nav_bar, if true, keep the 'what is this' info but remove the + navigational links =item * $bgcolor, used to override the bgcolor on a webpage to a specific value -=item * $notitle, if true keep the nav controls, but remove the title bar - =item * $no_inline_link, if true and in remote mode, don't show the 'Switch To Inline Menu' link @@ -4346,8 +4368,8 @@ other decorations will be returned. =cut sub bodytag { - my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,$customtitle, - $notopbar,$bgcolor,$notitle,$no_inline_link,$args)=@_; + my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, + $no_nav_bar,$bgcolor,$no_inline_link,$args)=@_; if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); } @@ -4375,6 +4397,9 @@ sub bodytag { if ($env{'request.role'} !~ /^cr/) { $role = &Apache::lonnet::plaintext($role,&course_type()); } + if ($env{'request.course.sec'}) { + $role .= (' 'x2).'- '.&mt('section:').' '.$env{'request.course.sec'}; + } $realm = $env{'course.'.$env{'request.course.id'}.'.description'}; } else { $role = &Apache::lonnet::plaintext($role); @@ -4392,15 +4417,7 @@ sub bodytag { if ($bodyonly) { return $bodytag; - } elsif ($env{'browser.interface'} eq 'textual') { -# Accessibility - - $bodytag.=&Apache::lonmenu::menubuttons($forcereg,$forcereg); - if (!$notitle) { - $bodytag.='

LON-CAPA: '.$title.'

'; - } - return $bodytag; - } + } my $name = &plainname($env{'user.name'},$env{'user.domain'}); if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') { @@ -4409,25 +4426,7 @@ sub bodytag { $name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); } - my $roleinfo=(< -
- $name -   -
-
-$role  -
-
-$realm  -
- -ENDROLE - - my $titleinfo = ''.$title.''; - if ($customtitle) { - $titleinfo = $customtitle; - } + my $titleinfo = '

'.$title.'

'; # # Extra info if you are the DC my $dc_info = ''; @@ -4440,57 +4439,49 @@ ENDROLE $dc_info = '('.$dc_info.')'; } - if (($env{'environment.remote'} eq 'off') || ($args->{'suppress_header_logos'})) { + $role = '('.$role.')' if $role; + &get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']); + + if ($env{'environment.remote'} eq 'off') { # No Remote - if ($env{'request.state'} eq 'construct') { - $forcereg=1; - } + if ($no_nav_bar) { return $bodytag; } - if (!$customtitle && $env{'request.state'} eq 'construct') { - # this is for resources; directories have customtitle, and crumbs - # and select recent are created in lonpubdir.pm - my ($uname,$thisdisfn)= - ($env{'request.filename'} =~ m|^/home/([^/]+)/public_html/(.*)|); - my $formaction='/priv/'.$uname.'/'.$thisdisfn; - $formaction=~s/\/+/\//g; - - my $parentpath = ''; - my $lastitem = ''; - if ($thisdisfn =~ m-(.+/)([^/]*)$-) { - $parentpath = $1; - $lastitem = $2; - } else { - $lastitem = $thisdisfn; - } - $titleinfo = - &Apache::loncommon::help_open_menu('','',3,'Authoring') - .''.&mt('Construction Space').': ' - .'
' - .&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv','','+1',1)."$lastitem
" - .&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()') - .'' - .&Apache::lonmenu::constspaceform(); - } - - my $titletable; - if (!$notitle) { - $titletable = - '
$text"; + "$text"; } # Add the graphic @@ -1893,7 +1892,7 @@ selected"); If the $showdomdesc flag is set, the domain name is followed by the domain description. -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 $onchange argumnet specifies what should occur if the domain selector is changed, e.g., 'this.form.submit()' if the form is to be automatically submitted. =cut @@ -2919,6 +2918,7 @@ sub screenname { return $names{'screenname'}; } + # ------------------------------------------------------------- Confirm Wrapper =pod @@ -2949,13 +2949,15 @@ sub messagewrapper { '&subject='.&escape($subject).'&text='.&escape($text).'" '. 'title="'.&mt('Send message').'">'.$link.''; } + # --------------------------------------------------------------- Notes Wrapper sub noteswrapper { my ($link,$un,$do)=@_; return -"$link"; +"$link"; } + # ------------------------------------------------------------- Aboutme Wrapper sub aboutmewrapper { @@ -2963,21 +2965,19 @@ sub aboutmewrapper { if (!defined($username) && !defined($domain)) { return; } - return ''.$link.''; } # ------------------------------------------------------------ Syllabus Wrapper - sub syllabuswrapper { - my ($linktext,$coursedir,$domain,$fontcolor)=@_; - if ($fontcolor) { - $linktext=''.$linktext.''; - } + my ($linktext,$coursedir,$domain)=@_; return qq{$linktext}; } +# ----------------------------------------------------------------------------- + sub track_student_link { my ($linktext,$sname,$sdom,$target,$start,$only_body) = @_; my $link ="/adm/trackstudent?"; @@ -3280,6 +3280,7 @@ sub user_lang { return $user_lh; } + ############################################################### ## Student Answer Attempts ## ############################################################### @@ -3859,7 +3860,7 @@ sub blockcheck { ($env{'request.role'} !~ m{^st\./\Q$cdom\E/\Q$cnum\E})); next if ($no_userblock); - # Retrieve blocking times and identity of blocker for course + # Retrieve blocking times and identity of locker for course # of specified user, unless user has 'evb' privilege. my ($start,$end)=&get_blocks($setters,$activity,$cdom,$cnum); @@ -3924,103 +3925,51 @@ sub parse_block_record { return ($setuname,$setudom,$title,$blocks); } -sub build_block_table { - my ($startblock,$endblock,$setters) = @_; - my %lt = &Apache::lonlocal::texthash( - 'cacb' => 'Currently active communication blocks', - 'cour' => 'Course', - 'dura' => 'Duration', - 'blse' => 'Block set by' - ); - my $output; - $output = '
'.$lt{'cacb'}.':
'; - $output .= &start_data_table(); - $output .= ' -
'.$lt{'cour'}.''.$lt{'dura'}.''.$lt{'blse'}.'
'.$courseinfo{'description'}.''.$openblock.' to '.$closeblock.''.$fullname.'
'. - "".$roleinfo. - '
$titleinfo $dc_info
'; - } - if ($notopbar) { - $bodytag .= $titletable; - } else { - if ($env{'request.state'} eq 'construct') { - $bodytag .= &Apache::lonmenu::menubuttons($forcereg,$forcereg, - $titletable); - } else { - $bodytag .= &Apache::lonmenu::menubuttons($forcereg,$forcereg). - $titletable; - } + 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 .= qq|
$name $role
+ $realm $dc_info
| unless $env{'form.inhibitmenu'}; + + if ( $env{'form.inhibitmenu'} eq 'yes' + || $ENV{'REQUEST_URI'} eq '/adm/logout' + || $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { + + return $bodytag; + } + + $bodytag .= Apache::lonhtmlcommon::scripttag( + Apache::lonmenu::utilityfunctions(), 'start'); + + $bodytag .= Apache::lonmenu::primary_menu(); + + #don't show menus for public users + 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'); + $bodytag .= Apache::lonmenu::innerregister($forcereg) if $forcereg; + }else{ + # this is to seperate menu from content when there's no secondary + # menu. Especially needed for public accessible ressources. + $bodytag .= '
'; + $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); } + + #SD testing + #$bodytag .= Apache::lonmenu::menubuttons($forcereg); return $bodytag; } @@ -4506,19 +4497,20 @@ ENDROLE # Explicit link to get inline menu my $menu= ($no_inline_link?'' - :'
'.&mt('Switch to Inline Menu Mode').''); + :''.&mt('Switch to Inline Menu Mode').''); + $bodytag .= qq|
$name $role + $realm $dc_info
+
    +
  1. $menu
  2. +
| unless $env{'form.inhibitmenu'}; # - if ($notitle) { - return $bodytag; - } return(< -
$upperleft$messages 
$titleinfo $dc_info $menu
ENDBODY @@ -4563,15 +4555,6 @@ sub make_attr_string { $attr_ref->{'style'}=$style.'; font-size: x-large;'; } - if ($env{'browser.blackwhite'} eq 'on') { - delete($attr_ref->{'font'}); - delete($attr_ref->{'link'}); - delete($attr_ref->{'alink'}); - delete($attr_ref->{'vlink'}); - delete($attr_ref->{'bgcolor'}); - delete($attr_ref->{'background'}); - } - my $attr_string; foreach my $attr (keys(%$attr_ref)) { $attr_string .= " $attr=\"".$attr_ref->{$attr}.'" '; @@ -4632,6 +4615,8 @@ sub standard_css { my $img = &designparm($function.'.img', $domain); my $tabbg = &designparm($function.'.tabbg', $domain); my $font = &designparm($function.'.font', $domain); + my $fontmenu = &designparm($function.'.fontmenu', $domain); +#second colour for later usage my $sidebg = &designparm($function.'.sidebg',$domain); my $pgbg_or_bgcolor = $bgcolor || @@ -4641,9 +4626,13 @@ sub standard_css { my $vlink = &designparm($function.'.vlink', $domain); my $link = &designparm($function.'.link', $domain); + my $loginbg = &designparm('login.sidebg',$domain); + my $bgcol = &designparm('login.bgcol',$domain); + my $textcol = &designparm('login.textcol',$domain); + my $sans = 'Verdana,Arial,Helvetica,sans-serif'; my $mono = 'monospace'; - my $data_table_head = $tabbg; + my $data_table_head = $sidebg; my $data_table_light = '#FAFAFA'; my $data_table_dark = '#F0F0F0'; my $data_table_darker = '#CCCCCC'; @@ -4658,7 +4647,7 @@ sub standard_css { my $mail_other_hover = '#669999'; my $table_header = '#DDDDDD'; my $feedback_link_bg = '#BBBBBB'; - my $lg_border_color = '#C8C8C8'; + my $lg_border_color = '#C8C8C8'; my $border = ($env{'browser.type'} eq 'explorer' || $env{'browser.type'} eq 'safari' ) ? '0 2px 0 2px' @@ -4666,36 +4655,56 @@ sub standard_css { return < td { background-color: #CCCCCC; font-weight: bold; text-align: left; } -table.LC_data_table tr.LC_odd_row > td, -table.LC_pick_box tr > td.LC_odd_row, -table.LC_aboutme_port tr td { + +table.LC_data_table tr.LC_odd_row > td, +table.LC_pick_box tr > td.LC_odd_row { background-color: $data_table_light; padding: 2px; + vertical-align: top; } + table.LC_data_table tr.LC_even_row > td, -table.LC_pick_box tr > td.LC_even_row, -table.LC_aboutme_port tr.LC_even_row td { +table.LC_pick_box tr > td.LC_even_row { background-color: $data_table_dark; padding: 2px; + vertical-align: top; } + table.LC_data_table tr.LC_data_table_highlight td { background-color: $data_table_darker; } + table.LC_data_table tr td.LC_leftcol_header { background-color: $data_table_head; font-weight: bold; } + table.LC_data_table tr.LC_empty_row td, table.LC_nested tr.LC_empty_row td { background-color: #FFFFFF; @@ -5012,15 +5019,22 @@ table.LC_nested tr.LC_empty_row td { text-align: center; padding: 8px; } + +table.LC_caption { +} + table.LC_nested tr.LC_empty_row td { padding: 4ex } + table.LC_nested_outer tr th { font-weight: bold; + color:$fontmenu; background-color: $data_table_head; - font-size: smaller; + font-size: small; border-bottom: 1px solid #000000; } + table.LC_nested_outer tr td.LC_subheader { background-color: $data_table_head; font-weight: bold; @@ -5028,20 +5042,24 @@ table.LC_nested_outer tr td.LC_subheader border-bottom: 1px solid #000000; text-align: right; } + table.LC_nested tr.LC_info_row td { background-color: #CCCCCC; font-weight: bold; font-size: small; text-align: center; } + table.LC_nested tr.LC_info_row td.LC_left_item, table.LC_nested_outer tr th.LC_left_item { text-align: left; } + table.LC_nested td { background-color: #FFFFFF; font-size: small; } + table.LC_nested_outer tr th.LC_right_item, table.LC_nested tr.LC_info_row td.LC_right_item, table.LC_nested tr.LC_odd_row td.LC_right_item, @@ -5057,7 +5075,7 @@ table.LC_createuser { } table.LC_createuser tr.LC_section_row td { - font-size: smaller; + font-size: small; } table.LC_createuser tr.LC_info_row td { @@ -5070,16 +5088,20 @@ table.LC_calendar { border: 1px solid #000000; border-collapse: collapse; } + table.LC_calendar_pickdate { font-size: xx-small; } + table.LC_calendar tr td { border: 1px solid #000000; vertical-align: top; } + table.LC_calendar tr td.LC_calendar_day_empty { background-color: $data_table_dark; } + table.LC_calendar tr td.LC_calendar_day_current { background-color: $data_table_highlight; } @@ -5087,159 +5109,141 @@ table.LC_calendar tr td.LC_calendar_day_ table.LC_mail_list tr.LC_mail_new { background-color: $mail_new; } + table.LC_mail_list tr.LC_mail_new:hover { background-color: $mail_new_hover; } + +table.LC_mail_list tr.LC_mail_even { +} + +table.LC_mail_list tr.LC_mail_odd { +} + table.LC_mail_list tr.LC_mail_read { background-color: $mail_read; } + table.LC_mail_list tr.LC_mail_read:hover { background-color: $mail_read_hover; } + table.LC_mail_list tr.LC_mail_replied { background-color: $mail_replied; } + table.LC_mail_list tr.LC_mail_replied:hover { background-color: $mail_replied_hover; } + table.LC_mail_list tr.LC_mail_other { background-color: $mail_other; } + table.LC_mail_list tr.LC_mail_other:hover { background-color: $mail_other_hover; } -table.LC_mail_list tr.LC_mail_even { -} -table.LC_mail_list tr.LC_mail_odd { -} - - -table#LC_portfolio_actions { - width: auto; - background: $pgbg; - border: none; - border-spacing: 2px 2px; - padding: 0; - margin: 0; - 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_cstr_controls { - width: 100%; - border-collapse: collapse; -} -table#LC_cstr_controls tr td { - border: 4px solid $pgbg; - padding: 4px; - text-align: center; - background: $tabbg; -} -table#LC_cstr_controls tr th { - border: 4px solid $pgbg; - background: $table_header; - text-align: center; - font-family: $sans; - font-size: smaller; +table.LC_data_table tr > td.LC_browser_file, +table.LC_data_table tr > td.LC_browser_file_published { + background: #AAEE77; } -table#LC_browser { - -} -table#LC_browser tr th { - background: $table_header; -} -table#LC_browser tr td { - padding: 2px; -} -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 { +table.LC_data_table tr > td.LC_browser_file_locked, +table.LC_data_table tr > td.LC_browser_file_unpublished { background: #FFAA99; } -table#LC_browser tr.LC_browser_file_obsolete { - background: #AAAAAA; + +table.LC_data_table tr > td.LC_browser_file_obsolete { + background: #888888; } -table#LC_browser tr.LC_browser_file_modified, -table#LC_browser tr.LC_browser_file_metamodified { - background: #FFFF77; + +table.LC_data_table tr > td.LC_browser_file_modified, +table.LC_data_table tr > td.LC_browser_file_metamodified { + background: #F8F866; } -table#LC_browser tr.LC_browser_folder { - background: #CCCCFF; + +table.LC_data_table tr.LC_browser_folder > td { + background: #E0E8FF; } table.LC_data_table tr > td.LC_roles_is { /* background: #77FF77; */ } + table.LC_data_table tr > td.LC_roles_future { background: #FFFF77; } + table.LC_data_table tr > td.LC_roles_will { background: #FFAA77; } + table.LC_data_table tr > td.LC_roles_expired { background: #FF7777; } + table.LC_data_table tr > td.LC_roles_will_not { background: #AAFF77; } + table.LC_data_table tr > td.LC_roles_selected { background: #11CC55; } span.LC_current_location { - font-size: x-large; + font-size:larger; background: $pgbg; } span.LC_parm_menu_item { font-size: larger; - font-family: $sans; } + span.LC_parm_scope_all { color: red; } + span.LC_parm_scope_folder { color: green; } + span.LC_parm_scope_resource { color: orange; } + span.LC_parm_part { color: blue; } + span.LC_parm_folder, span.LC_parm_symb { font-size: x-small; font-family: $mono; color: #AAAAAA; } -td.LC_parm_overview_level_menu, td.LC_parm_overview_map_menu, -td.LC_parm_overview_parm_selectors, td.LC_parm_overview_parm_restrictions { +td.LC_parm_overview_level_menu, +td.LC_parm_overview_map_menu, +td.LC_parm_overview_parm_selectors, +td.LC_parm_overview_restrictions { border: 1px solid black; border-collapse: collapse; } + table.LC_parm_overview_restrictions td { border-width: 1px 4px 1px 4px; border-style: solid; border-color: $pgbg; text-align: center; } + table.LC_parm_overview_restrictions th { background: $tabbg; border-width: 1px 4px 1px 4px; border-style: solid; border-color: $pgbg; } + table#LC_helpmenu { border: none; height: 55px; @@ -5248,8 +5252,8 @@ table#LC_helpmenu { table#LC_helpmenu fieldset legend { font-size: larger; - font-weight: bold; } + table#LC_helpmenu_links { width: 100%; border: 1px solid black; @@ -5257,6 +5261,7 @@ table#LC_helpmenu_links { padding: 0; border-spacing: 1px; } + table#LC_helpmenu_links tr td { padding: 1px; background: $tabbg; @@ -5264,11 +5269,13 @@ table#LC_helpmenu_links tr td { font-weight: bold; } -table#LC_helpmenu_links a:link, table#LC_helpmenu_links a:visited, +table#LC_helpmenu_links a:link, +table#LC_helpmenu_links a:visited, table#LC_helpmenu_links a:active { text-decoration: none; color: $font; } + table#LC_helpmenu_links a:hover { text-decoration: underline; color: $vlink; @@ -5278,118 +5285,98 @@ table#LC_helpmenu_links a:hover { border: 1px solid #339933; margin: -1px; } + .LC_chrt_popup_up { border: 1px solid yellow; margin: -1px; } + .LC_chrt_popup { border: 1px solid #8888FF; background: #CCCCFF; } + table.LC_pick_box { border-collapse: separate; background: white; border: 1px solid black; border-spacing: 1px; } + table.LC_pick_box td.LC_pick_box_title { - background: $tabbg; + background: $sidebg; font-weight: bold; - text-align: right; + text-align: left; vertical-align: top; width: 184px; padding: 8px; } -table.LC_pick_box td.LC_selfenroll_pick_box_title { - background: $tabbg; - font-weight: bold; - text-align: right; - width: 350px; - padding: 8px; -} table.LC_pick_box td.LC_pick_box_value { text-align: left; padding: 8px; } + table.LC_pick_box td.LC_pick_box_select { text-align: left; padding: 8px; } + table.LC_pick_box td.LC_pick_box_separator { padding: 0; height: 1px; background: black; } + table.LC_pick_box td.LC_pick_box_submit { text-align: right; } + table.LC_pick_box td.LC_evenrow_value { text-align: left; padding: 8px; background-color: $data_table_light; } + table.LC_pick_box td.LC_oddrow_value { text-align: left; padding: 8px; background-color: $data_table_light; } -table.LC_helpform_receipt { - width: 620px; - border-collapse: separate; - background: white; - border: 1px solid black; - border-spacing: 1px; -} -table.LC_helpform_receipt td.LC_pick_box_title { - background: $tabbg; - font-weight: bold; - text-align: right; - width: 184px; - padding: 8px; -} -table.LC_helpform_receipt td.LC_evenrow_value { - text-align: left; - padding: 8px; - background-color: $data_table_light; -} -table.LC_helpform_receipt td.LC_oddrow_value { - text-align: left; - padding: 8px; - background-color: $data_table_light; -} -table.LC_helpform_receipt td.LC_pick_box_separator { - padding: 0; - height: 1px; - background: black; -} + span.LC_helpform_receipt_cat { font-weight: bold; } + table.LC_group_priv_box { background: white; border: 1px solid black; border-spacing: 1px; } + table.LC_group_priv_box td.LC_pick_box_title { background: $tabbg; font-weight: bold; text-align: right; width: 184px; } + table.LC_group_priv_box td.LC_groups_fixed { background: $data_table_light; text-align: center; } + table.LC_group_priv_box td.LC_groups_optional { background: $data_table_dark; text-align: center; } + table.LC_group_priv_box td.LC_groups_functionality { background: $data_table_darker; text-align: center; font-weight: bold; } + table.LC_group_priv td { text-align: left; padding: 0; @@ -5400,14 +5387,16 @@ table.LC_notify_front_page { border: 1px solid black; padding: 8px; } + table.LC_notify_front_page td { padding: 8px; } + .LC_navbuttons { margin: 2ex 0ex 2ex 0ex; } + .LC_topic_bar { - font-family: $sans; font-weight: bold; width: 100%; background: $tabbg; @@ -5415,36 +5404,66 @@ table.LC_notify_front_page td { margin: 2ex 0ex 2ex 0ex; padding: 3px; } + .LC_topic_bar span { vertical-align: middle; } + .LC_topic_bar img { vertical-align: bottom; } + table.LC_course_group_status { margin: 20px; } + table.LC_status_selector td { vertical-align: top; text-align: center; padding: 4px; } -table.LC_descriptive_input td.LC_description { - vertical-align: top; - text-align: right; - font-weight: bold; -} + div.LC_feedback_link { clear: both; - background: white; - width: 100%; + background: $sidebg; + width: 100%; + padding-bottom: 10px; + border: 1px $tabbg solid; + height: 22px; + line-height: 22px; + padding-top: 5px; } + +div.LC_feedback_link img { + height: 22px; + vertical-align:middle; +} + +div.LC_feedback_link a{ + text-decoration: none; +} + +div.LC_comblock { + display:inline; + color:$font; + font-size:90%; +} + +div.LC_feedback_link div.LC_comblock { + padding-left:5px; +} + +div.LC_feedback_link div.LC_comblock a { + color:$font; +} + span.LC_feedback_link { - background: $feedback_link_bg; + /* background: $feedback_link_bg; */ font-size: larger; } + span.LC_message_link { - background: $feedback_link_bg; + /* background: $feedback_link_bg; */ font-size: larger; position: absolute; right: 1em; @@ -5461,33 +5480,43 @@ table.LC_prior_tries td { } .LC_answer_correct { - background: #AAFFAA; - color: black; + background: lightgreen; + color: darkgreen; + padding: 6px; } + .LC_answer_charged_try { - background: #FFAAAA ! important; - color: black; + background: #FFAAAA; + color: darkred; + padding: 6px; } -.LC_answer_not_charged_try, + +.LC_answer_not_charged_try, .LC_answer_no_grade, .LC_answer_late { - background: #FFFFAA; + background: lightyellow; color: black; + padding: 6px; } + .LC_answer_previous { - background: #AAAAFF; - color: black; + background: lightblue; + color: darkblue; + padding: 6px; } + .LC_answer_no_message { background: #FFFFFF; color: black; + padding: 6px; } + .LC_answer_unknown { background: orange; color: black; + padding: 6px; } - span.LC_prior_numerical, span.LC_prior_string, span.LC_prior_custom, @@ -5506,16 +5535,19 @@ table.LC_prior_option { width: 100%; border-collapse: collapse; } -table.LC_prior_rank, table.LC_prior_match { + +table.LC_prior_rank, +table.LC_prior_match { border-collapse: collapse; } + table.LC_prior_option tr td, table.LC_prior_rank tr td, table.LC_prior_match tr td { border: 1px solid #000000; } -span.LC_nobreak { +.LC_nobreak { white-space: nowrap; } @@ -5539,36 +5571,36 @@ table.LC_docs_documents td.LC_docs_docum padding: 4px; } -.LC_docs_course_commands div { - float: left; - border: 4px solid #AAAAAA; - padding: 4px; - background: #DDDDCC; -} - -.LC_docs_entry_move { - border: none; - border-collapse: collapse; -} - -.LC_docs_entry_move td { - border: 2px solid #BBBBBB; +div.LC_docs_entry_move { + border: 1px solid #BBBBBB; background: #DDDDDD; + width: 22px; + padding: 1px; + margin: 0; } -.LC_docs_editor td.LC_docs_entry_commands { +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; } + +.LC_docs_entry_parameter { + white-space: nowrap; +} + .LC_docs_copy { color: #000099; } + .LC_docs_cut { color: #550044; } + .LC_docs_rename { color: #009900; } + .LC_docs_remove { color: #990000; } @@ -5578,16 +5610,6 @@ table.LC_docs_documents td.LC_docs_docum font-size: x-small; } -.LC_docs_editor td.LC_docs_entry_title, -.LC_docs_editor td.LC_docs_entry_icon { - background: #FFFFBB; -} -.LC_docs_editor td.LC_docs_entry_parameter { - background: #BBBBFF; - font-size: x-small; - white-space: nowrap; -} - table.LC_docs_adddocs td, table.LC_docs_adddocs th { border: 1px solid #BBBBBB; @@ -5598,6 +5620,7 @@ table.LC_docs_adddocs th { table.LC_sty_begin { background: #BBFFBB; } + table.LC_sty_end { background: #FFBBBB; } @@ -5618,15 +5641,11 @@ table.LC_double_column tr td.LC_left_col table.LC_double_column tr td.LC_right_col { top: 2px; - right: 2px; + right: 2px; width: 47%; vertical-align: top; } -span.LC_role_level { - font-weight: bold; -} - div.LC_left_float { float: left; padding-right: 5%; @@ -5642,33 +5661,18 @@ div.LC_clear_float_footer { clear: both; } - -div.LC_grade_select_mode { - font-family: $sans; -} -div.LC_grade_select_mode div div { - margin: 5px; -} -div.LC_grade_select_mode_selector { - margin: 5px; - float: left; -} -div.LC_grade_select_mode_selector_header { - font: bold medium $sans; -} -div.LC_grade_select_mode_type { - clear: left; -} - div.LC_grade_show_user { margin-top: 20px; border: 1px solid black; } + div.LC_grade_user_name { background: #DDDDEE; border-bottom: 1px solid black; - font: bold large $sans; + font-weight: bold; + font-size: large; } + div.LC_grade_show_user_odd_row div.LC_grade_user_name { background: #DDEEDD; } @@ -5682,12 +5686,15 @@ div.LC_grade_assign { 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 { - font: bold large $sans; + font-weight: bold; + font-size: large; } + div.LC_grade_show_problem_problem, div.LC_grade_submissions_body, div.LC_grade_message_center_body, @@ -5696,8 +5703,10 @@ div.LC_grade_assign_body { width: 99%; background: #FFFFFF; } + span.LC_grade_check_note { - font: normal medium $sans; + font-weight: normal; + font-size: medium; display: inline; position: absolute; right: 1em; @@ -5706,15 +5715,19 @@ span.LC_grade_check_note { table.LC_scantron_action { width: 100%; } + table.LC_scantron_action tr th { - font: normal bold $sans; + font-weight:bold; + font-style:normal; } -div.LC_edit_problem_header, +.LC_edit_problem_header, div.LC_edit_problem_footer { - font: normal medium $sans; + font-weight: normal; + font-size: medium; margin: 2px; } + div.LC_edit_problem_header, div.LC_edit_problem_header div, div.LC_edit_problem_footer, @@ -5723,23 +5736,21 @@ div.LC_edit_problem_editxml_header, div.LC_edit_problem_editxml_header div { margin-top: 5px; } -div.LC_edit_problem_header_edit_row { - background: $tabbg; - padding: 3px; - margin-bottom: 5px; -} + div.LC_edit_problem_header_title { - font: larger bold $sans; + font-weight: bold; + font-size: larger; background: $tabbg; padding: 3px; } + table.LC_edit_problem_header_title { - font: larger bold $sans; + font-size: larger; + font-weight: bold; width: 100%; border-color: $pgbg; border-style: solid; border-width: $border; - background: $tabbg; border-collapse: collapse; padding: 0; @@ -5749,48 +5760,555 @@ div.LC_edit_problem_discards { float: left; padding-bottom: 5px; } + div.LC_edit_problem_saves { float: right; padding-bottom: 5px; } -hr.LC_edit_problem_divide { - clear: both; - color: $tabbg; - background-color: $tabbg; - height: 3px; - border: none; -} + img.stift{ - border-width:0; - vertical-align:middle; + border-width: 0; + vertical-align: middle; } table#LC_mainmenu{ margin-top:10px; width:80%; - } table#LC_mainmenu td.LC_mainmenu_col_fieldset{ vertical-align: top; width: 45%; } + .LC_mainmenu_fieldset_category { color: $font; background: $pgbg; - font-family: $sans; font-size: small; font-weight: bold; } -fieldset#LC_mainmenu_fieldset { - margin:0 10px 10px 0; - -} div.LC_createcourse { margin: 10px 10px 10px 10px; } +/* ---- 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, +ol#LC_PathBreadcrumbs a:hover, +ul#LC_secondary_menu a:hover, +.LC_FormSectionClearButton input:hover +ul.LC_TabContent li:hover a { + color:#BF2317; + text-decoration:none; +} + +h1 { + padding: 0; + line-height:130%; +} + +h2,h3,h4,h5,h6 { + margin: 5px 0 5px 0; + padding: 0; + line-height:130%; +} + +.LC_hcell { + padding:3px 15px 3px 15px; + margin: 0; + background-color:$tabbg; + color:$fontmenu; + border-bottom:solid 1px $lg_border_color; +} + +.LC_Box > .LC_hcell { + margin: 0 -10px 10px -10px; +} + +.LC_noBorder { + border: 0; +} + +.LC_Right { + float: right; + margin: 0; + padding: 0; +} + +.LC_FormSectionClearButton input { + background-color:transparent; + border: none; + cursor:pointer; + text-decoration:underline; +} + +.LC_help_open_topic { + color: #FFFFFF; + background-color: #EEEEFF; + margin: 1px; + padding: 4px; + border: 1px solid #000033; + white-space: nowrap; +/* vertical-align: middle; */ +} + +dl,ul,div,fieldset { + margin: 10px 10px 10px 0; +/* overflow: hidden; */ +} + +fieldset > legend { + font-weight: bold; + padding: 0 5px 0 5px; +} + +#LC_nav_bar { + float: left; + margin: 0.2em 0 0 0; +} + +#LC_nav_bar em{ + font-weight: bold; + font-style: normal; +} + +ol.LC_primary_menu { + float: right; + margin: 0.2em 0 0 0; +} + +ol#LC_PathBreadcrumbs { + margin: 0; +} + +ol.LC_primary_menu li { + display: inline; + padding: 5px 5px 0 10px; + vertical-align: top; +} + +ol.LC_primary_menu li img { + vertical-align: bottom; +} + +ol.LC_primary_menu a { + font-size: 90%; + color: RGB(80, 80, 80); + text-decoration: none; +} + +ul#LC_secondary_menu { + clear: both; + color: $fontmenu; + background: $tabbg; + list-style: none; + padding: 0; + margin: 0; + width: 100%; +} + +ul#LC_secondary_menu li { + font-weight: bold; + line-height: 1.8em; + padding: 0 0.8em; + border-right: 1px solid black; + display: inline; + vertical-align: middle; +} + +ul.LC_TabContent { + display:block; + background: $sidebg; + border-bottom: solid 1px $lg_border_color; + list-style:none; + margin: 0 -10px; + padding: 0; +} + +ul.LC_TabContent li, +ul.LC_TabContentBigger li { + float:left; +} + +ul#LC_secondary_menu li a { + color: $fontmenu; + text-decoration: none; +} + +ul.LC_TabContent { + min-height:1.5em; +} + +ul.LC_TabContent li { + vertical-align:middle; + padding: 0 10px 0 10px; + background-color:$tabbg; + border-bottom:solid 1px $lg_border_color; +} + +ul.LC_TabContent .right { + float:right; +} + +ul.LC_TabContent li a, ul.LC_TabContent li { + color:rgb(47,47,47); + text-decoration:none; + font-size:95%; + font-weight:bold; + padding-right: 16px; +} + +ul.LC_TabContent li:hover, ul.LC_TabContent li.active { + background:#FFFFFF url(/adm/lonIcons/open.gif) no-repeat scroll right center; + border-bottom:solid 2px #FFFFFF; + padding-right: 16px; +} + +#maincoursedoc { + clear:both; +} + +ul.LC_TabContentBigger { + display:block; + list-style:none; + padding: 0; +} + +ul.LC_TabContentBigger li { + vertical-align:bottom; + height: 30px; + font-size:110%; + font-weight:bold; + color: #737373; +} + + +ul.LC_TabContentBigger li a { + background:url('/adm/lonIcons/tabbgleft.gif') left bottom no-repeat; + height: 30px; + line-height: 30px; + text-align: center; + display: block; + text-decoration: 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; +} + +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; +} + + +ul.LC_CourseBreadcrumbs { + background: $sidebg; + line-height: 32px; + padding-left: 10px; + margin: 0 0 10px 0; + list-style-position: inside; + +} + +ol#LC_MenuBreadcrumbs, +ol#LC_PathBreadcrumbs { + padding-left: 10px; + margin: 0; + 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: nowrap; + /* SD working here + white-space: normal; */ +} + +ol#LC_MenuBreadcrumbs li a, +ul.LC_CourseBreadcrumbs li a { + text-decoration: none; + font-size:90%; +} + +ol#LC_PathBreadcrumbs li a { + text-decoration:none; + font-size:100%; + font-weight:bold; +} + +.LC_Box { + border: solid 1px $lg_border_color; + padding: 0 10px 10px 10px; +} + +.LC_AboutMe_Image { + float:left; + margin-right:10px; +} + +.LC_Clear_AboutMe_Image { + clear:left; +} + +dl.LC_ListStyleClean dt { + padding-right: 5px; + display: table-header-group; +} + +dl.LC_ListStyleClean dd { + display: table-row; +} + +.LC_ListStyleClean, +.LC_ListStyleSimple, +.LC_ListStyleNormal, +.LC_ListStyle_Border, +.LC_ListStyleSpecial { + /*display:block; */ + list-style-position: inside; + list-style-type: none; + overflow: hidden; + padding: 0; +} + +.LC_ListStyleSimple li, +.LC_ListStyleSimple dd, +.LC_ListStyleNormal li, +.LC_ListStyleNormal dd, +.LC_ListStyleSpecial li, +.LC_ListStyleSpecial dd { + margin: 0; + padding: 5px 5px 5px 10px; + clear: both; +} + +.LC_ListStyleClean li, +.LC_ListStyleClean dd { + padding-top: 0; + padding-bottom: 0; +} + +.LC_ListStyleSimple dd, +.LC_ListStyleSimple li { + border-bottom: solid 1px $lg_border_color; +} + +.LC_ListStyleSpecial li, +.LC_ListStyleSpecial dd { + list-style-type: none; + background-color: RGB(220, 220, 220); + margin-bottom: 4px; +} + +table.LC_SimpleTable { + margin:5px; + border:solid 1px $lg_border_color; +} + +table.LC_SimpleTable tr { + padding: 0; + border:solid 1px $lg_border_color; +} + +table.LC_SimpleTable thead { + background:rgb(220,220,220); +} + +div.LC_columnSection { + display: block; + clear: both; + overflow: hidden; + margin: 0; +} + +div.LC_columnSection>* { + float: left; + margin: 10px 20px 10px 0; + overflow:hidden; +} + +.LC_loginpage_container { + text-align:left; + margin : 0 auto; + width:90%; + padding: 10px; + height: auto; + background-color:#FFFFFF; + border:1px solid #CCCCCC; +} + + +.LC_loginpage_loginContainer { + float:left; + width: 182px; + padding: 2px; + border:1px solid #CCCCCC; + background-color:$loginbg; +} + +.LC_loginpage_loginContainer h2 { + margin-top: 0; + display:block; + background:$bgcol; + color:$textcol; + padding-left:5px; +} + +.LC_loginpage_loginInfo { + float:left; + width:182px; + border:1px solid #CCCCCC; + padding:2px; +} + +.LC_loginpage_space { + clear: both; + margin-bottom: 20px; + border-bottom: 1px solid #CCCCCC; +} + +.LC_loginpage_floatLeft { + float: left; + width: 200px; + margin: 0; +} + +table em { + font-weight: bold; + font-style: normal; +} + +table.LC_tableBrowseRes, +table.LC_tableOfContent { + border:none; + border-spacing: 1px; + padding: 3px; + background-color: #FFFFFF; + font-size: 90%; +} + +table.LC_tableOfContent{ + border-collapse: collapse; +} + +table.LC_tableBrowseRes a, +table.LC_tableOfContent a { + background-color: transparent; + text-decoration: none; +} + +table.LC_tableBrowseRes tr.LC_trOdd, +table.LC_tableOfContent tr.LC_trOdd{ + background-color: #EEEEEE; +} + +table.LC_tableOfContent img { + border: none; + height: 1.3em; + vertical-align: text-bottom; + margin-right: 0.3em; +} + +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); +} + +a#LC_content_toolbar_uncompleted { + background-image:url(/res/adm/pages/show-incomplete-problems.gif); +} + +#LC_content_toolbar_clearbubbles { + background-image:url(/res/adm/pages/mark-discussionentries-read.gif); +} + +a#LC_content_toolbar_changefolder { + background : url(/res/adm/pages/close-all-folders.gif) top center ; +} + +a#LC_content_toolbar_changefolder_toggled { + background-image:url(/res/adm/pages/open-all-folders.gif); +} + +ul#LC_toolbar li a:hover { + background-position: bottom center; +} + +ul#LC_toolbar { + padding: 0; + margin: 2px; + list-style:none; + position:relative; + background-color:white; +} + +ul#LC_toolbar li { + border:1px solid white; + padding: 0; + margin: 0; + float: left; + display:inline; + vertical-align:middle; +} + + +a.LC_toolbarItem { + display:block; + padding: 0; + margin: 0; + height: 32px; + width: 32px; + color:white; + border: none; + background-repeat:no-repeat; + background-color:transparent; +} + +ul.LC_funclist li { + float: left; + white-space: nowrap; + height: 35px; /* at least as high as heighest list item */ + margin: 0 15px 15px 10px; +} + + END } @@ -5918,8 +6436,8 @@ sub xml_begin { .''; } else { - $output=''. - ''; + $output='' + .''; } return $output; } @@ -5981,7 +6499,7 @@ $args - additional optional args support only_body -> is true will set &bodytag() onlybodytag arg on - no_nav_bar -> is true will set &bodytag() notopbar arg on + no_nav_bar -> is true will set &bodytag() no_nav_bar arg on add_entries -> additional attributes to add to the domain -> force to color decorate a page for a specific domain @@ -5995,12 +6513,8 @@ $args - additional optional args support a html attribute force_register -> if is true will turn on the &bodytag() $forcereg arg - body_title -> alternate text to use instead of $title - in the title box that appears, this text - is not auto translated like the $title is frameset -> if true will start with a rather than - no_title -> if true the title bar won't be shown skip_phases -> hash ref of head -> skip the generation body -> skip all generation @@ -6010,6 +6524,8 @@ $args - additional optional args support 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_components -> if exists show it as headline else show only the breadcrumbs =back @@ -6042,44 +6558,53 @@ sub start_page { my $attr_string = &make_attr_string($args->{'force_register'}, $args->{'add_entries'}); $result .= "\n\n"; - } else { - $result .= - &bodytag($title, - $args->{'function'}, $args->{'add_entries'}, - $args->{'only_body'}, $args->{'domain'}, - $args->{'force_register'}, $args->{'body_title'}, - $args->{'no_nav_bar'}, $args->{'bgcolor'}, - $args->{'no_title'}, $args->{'no_inline_link'}, - $args); - } + } else { + $result .= + &bodytag($title, + $args->{'function'}, $args->{'add_entries'}, + $args->{'only_body'}, $args->{'domain'}, + $args->{'force_register'}, $args->{'no_nav_bar'}, + $args->{'bgcolor'}, $args->{'no_inline_link'}, + $args); + } } if ($args->{'js_ready'}) { - $result = &js_ready($result); + $result = &js_ready($result); } if ($args->{'html_encode'}) { - $result = &html_encode($result); + $result = &html_encode($result); } + + # Preparation for new and consistent functionlist at top of screen + # if ($args->{'functionlist'}) { + # $result .= &build_functionlist(); + #} + + # Don't add anything more if only_body wanted + return $result if $args->{'only_body'}; + #Breadcrumbs if (exists($args->{'bread_crumbs'}) or exists($args->{'bread_crumbs_component'})) { - &Apache::lonhtmlcommon::clear_breadcrumbs(); - #if any br links exists, add them to the breadcrumbs - if (exists($args->{'bread_crumbs'}) and ref($args->{'bread_crumbs'}) eq 'ARRAY') { - foreach my $crumb (@{$args->{'bread_crumbs'}}){ - &Apache::lonhtmlcommon::add_breadcrumb($crumb); - } - } + &Apache::lonhtmlcommon::clear_breadcrumbs(); + #if any br links exists, add them to the breadcrumbs + if (exists($args->{'bread_crumbs'}) and ref($args->{'bread_crumbs'}) eq 'ARRAY') { + foreach my $crumb (@{$args->{'bread_crumbs'}}){ + &Apache::lonhtmlcommon::add_breadcrumb($crumb); + } + } - #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'}); - } else { - $result .= &Apache::lonhtmlcommon::breadcrumbs(); - } + #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'}); + }else{ + $result .= &Apache::lonhtmlcommon::breadcrumbs(); + } } return $result; } + =pod =item * &head() @@ -6206,14 +6731,14 @@ sub simple_error_page { my ($add_class) = @_; $row_count[0]++; my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row'; - $css_class = (join(' ',$css_class,$add_class)); + $css_class = (join(' ',$css_class,$add_class)) unless ($add_class eq ''); return ''."\n";; } sub continue_data_table_row { my ($add_class) = @_; my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row'; - $css_class = (join(' ',$css_class,$add_class)); + $css_class = (join(' ',$css_class,$add_class)) unless ($add_class eq '');; return ''."\n";; } @@ -6222,7 +6747,7 @@ sub simple_error_page { } sub start_data_table_empty_row { - $row_count[0]++; +# $row_count[0]++; return ''."\n";; } @@ -6237,6 +6762,11 @@ sub simple_error_page { sub end_data_table_header_row { return ''."\n";; } + + sub data_table_caption { + my $caption = shift; + return "$caption"; + } } =pod @@ -6303,7 +6833,10 @@ Returns either 'student','coordinator',' ############################################### sub get_users_function { - my $function = 'student'; + my $function = 'norole'; + if ($env{'request.role'}=~/^(st)/) { + $function='student'; + } if ($env{'request.role'}=~/^(cc|in|ta|ep)/) { $function='coordinator'; } @@ -6325,6 +6858,7 @@ sub get_users_function { Used by lonmenu.pm and lonroles.pm to determine whether to use the word 'Courses' or 'Roles' in inline navigation and on screen displaying user's roles. + Inputs: None @@ -7005,7 +7539,7 @@ sub user_picker { # loncreateuser::print_user_query_page() # has been completed. next if ($option eq 'alc'); - next if (($option eq 'crs') && ($env{'form.form'} eq 'requestcrs')); + next if (($option eq 'crs') && ($env{'form.form'} eq 'requestcrs')); next if ($option eq 'crs' && !$env{'request.course.id'}); if ($curr_selected{'srchin'} eq $option) { $srchinsel .= ' @@ -7054,9 +7588,12 @@ sub user_picker { official => 'institutional', unofficial => 'non-institutional', ); - $new_user_create = '

'. - &mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.").' '. - &mt('Please contact the [_1]helpdesk[_2] for assistance.','','').'


'; + $new_user_create = '

' + .&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.") + .' ' + .&mt('Please contact the [_1]helpdesk[_2] for assistance.' + ,'','') + .'


'; } } } @@ -7175,10 +7712,10 @@ END_BLOCK &Apache::lonhtmlcommon::row_closure(). &Apache::lonhtmlcommon::row_title($lt{'usr'}). $srchbysel. - $srchtypesel. + $srchtypesel. ''. $srchinsel. - &Apache::lonhtmlcommon::row_closure(1). + &Apache::lonhtmlcommon::row_closure(1). &Apache::lonhtmlcommon::end_pick_box(). '
'; return $output; @@ -7412,7 +7949,7 @@ sub get_institutional_codes { =item * sorted_slots() -Sorts an array of slot names in order of slot start time (earliest first). +Sorts an array of slot names in order of slot start time (earliest first). Inputs: @@ -7454,6 +7991,7 @@ sub sorted_slots { return @sorted; } + =pod =head1 HTTP Helpers @@ -7745,9 +8283,9 @@ sub upload_embedded { ' '. $orig_uploaded_filename.'
'; } else { - $output .= ''. + $output .= ''. &mt('View embedded file: [_1]',''. - $orig_uploaded_filename.'').'
'; + $orig_uploaded_filename.'').'
'; } } close($fh); @@ -8052,8 +8590,7 @@ sub csv_print_samples { $r->print(&mt('Samples').'
'.&start_data_table(). &start_data_table_header_row()); foreach my $sample (sort({$a <=> $b} keys(%{ $samples->[0] }))) { - $r->print(''.&mt('Column [_1]',($sample+1)).''); - } + $r->print(''.&mt('Column [_1]',($sample+1)).''); } $r->print(&end_data_table_header_row()); foreach my $hash (@$samples) { $r->print(&start_data_table_row()); @@ -8097,7 +8634,7 @@ sub csv_print_select_table { my ($value,$display,$defaultcol)=@{ $array_ref }; $r->print(&start_data_table_row().''.$display.''); - $r->print(''); $r->print(''); foreach my $sample (sort({$a <=> $b} keys(%{ $samples->[0] }))) { @@ -8784,7 +9321,7 @@ sub build_recipient_list { my @contacts = ('adminemail','supportemail'); foreach my $item (@contacts) { if ($domconfig{'contacts'}{$mailing}{$item}) { - my $addr = $domconfig{'contacts'}{$item}; + my $addr = $domconfig{'contacts'}{$item}; if (!grep(/^\Q$addr\E$/,@recipients)) { push(@recipients,$addr); } @@ -9064,7 +9601,7 @@ sub assign_categories_table { my $checked = ''; if (@currcategories > 0) { if (grep(/^\Q$item\E$/,@currcategories)) { - $checked = ' checked="checked" '; + $checked = ' checked="checked"'; } } $output .= ''. @@ -9130,7 +9667,7 @@ sub assign_category_rows { if (ref($currcategories) eq 'ARRAY') { if (@{$currcategories} > 0) { if (grep(/^\Q$item\E$/,@{$currcategories})) { - $checked = ' checked="checked" '; + $checked = ' checked="checked"'; } } } @@ -9328,9 +9865,9 @@ sub check_clone { $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 (($env{'request.role.domain'} eq $args->{'clonedomain'}) && + if (($env{'request.role.domain'} eq $args->{'clonedomain'}) && (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) { - $can_clone = 1; + $can_clone = 1; } else { my %clonehash = &Apache::lonnet::get('environment',['cloners'], $args->{'clonedomain'},$args->{'clonecourse'}); @@ -9398,7 +9935,6 @@ sub construct_course { $args->{'crstype'}, $cnum,$context,$category); - # Note: The testing routines depend on this being output; see # Utils::Course. This needs to at least be output as a comment # if anyone ever decides to not show this, and Utils::Course::new @@ -9705,7 +10241,7 @@ sub course_type { sub group_term { my $crstype = &course_type(); my %names = ( - 'Course' => 'group', + 'Course' => 'group', 'Community' => 'group', ); return $names{$crstype}; @@ -9796,7 +10332,7 @@ sub compare_arrays { return @difference; } -# -------------------------------------------------------- Initliaze user login +# -------------------------------------------------------- Initialize user login sub init_user_environment { my ($r, $username, $domain, $authhost, $form, $args) = @_; my $lonids=$Apache::lonnet::perlvar{'lonIDsDir'}; @@ -9850,19 +10386,6 @@ sub init_user_environment { my ($httpbrowser,$clientbrowser,$clientversion,$clientmathml, $clientunicode,$clientos) = &decode_user_agent($r); -# -------------------------------------- Any accessibility options to remember? - if (($form->{'interface'}) && ($form->{'remember'} eq 'true')) { - foreach my $option ('imagesuppress','appletsuppress', - 'embedsuppress','fontenhance','blackwhite') { - if ($form->{$option} eq 'true') { - &Apache::lonnet::put('environment',{$option => 'on'}, - $domain,$username); - } else { - &Apache::lonnet::del('environment',[$option], - $domain,$username); - } - } - } # ------------------------------------------------------------- Get environment my %userenv = &Apache::lonnet::dump('environment',$domain,$username); @@ -9880,10 +10403,8 @@ sub init_user_environment { if ($userenv{'texengine'} eq 'ttm') { $clientmathml=1; } # --------------- Do not trust query string to be put directly into environment - foreach my $option ('imagesuppress','appletsuppress', - 'embedsuppress','fontenhance','blackwhite', - 'interface','localpath','localres') { - $form->{$option}=~s/[\n\r\=]//gs; + foreach my $option ('interface','localpath','localres') { + $form->{$option}=~s/[\n\r\=]//gs; } # --------------------------------------------------------- Write first profile @@ -9917,17 +10438,10 @@ sub init_user_environment { $form->{'interface'}=~s/\W//gs; $initial_env{"browser.interface"} = $form->{'interface'}; $env{'browser.interface'}=$form->{'interface'}; - foreach my $option ('imagesuppress','appletsuppress', - 'embedsuppress','fontenhance','blackwhite') { - if (($form->{$option} eq 'true') || - ($userenv{$option} eq 'on')) { - $initial_env{"browser.$option"} = "on"; - } - } } foreach my $tool ('aboutme','blog','portfolio') { - $userenv{'availabletools.'.$tool} = + $userenv{'availabletools.'.$tool} = &Apache::lonnet::usertools_access($username,$domain,$tool,'reload'); } @@ -9949,8 +10463,8 @@ sub init_user_environment { } untie(%disk_env); } else { - &Apache::lonnet::logthis("WARNING: ". - 'Could not create environment storage in lonauth: '.$!.''); + &Apache::lonnet::logthis("WARNING: ". + 'Could not create environment storage in lonauth: '.$!.''); return 'error: '.$!; } } 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.