--- loncom/interface/loncommon.pm 2009/04/25 20:22:07 1.796 +++ loncom/interface/loncommon.pm 2009/05/27 17:14:56 1.828 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.796 2009/04/25 20:22:07 www Exp $ +# $Id: loncommon.pm,v 1.828 2009/05/27 17:14:56 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -407,6 +407,7 @@ sub studentbrowser_javascript { ) { return ''; } return (<<'ENDSTDBRW'); ENDSTDBRW } @@ -461,6 +463,7 @@ sub selectstudent_link { sub authorbrowser_javascript { return <<"ENDAUTHORBRW"; ENDAUTHORBRW } @@ -482,6 +486,7 @@ sub coursebrowser_javascript { 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'); my $output = ' '; return $output; } @@ -825,6 +835,7 @@ sub linked_select_forms { # output the javascript to do the changing my $result = ''; $result.=' END # output the initial values for the selection lists @@ -931,9 +943,6 @@ sub help_open_topic { my ($topic, $text, $stayOnPage, $width, $height) = @_; $text = "" if (not defined $text); $stayOnPage = 0 if (not defined $stayOnPage); - if ($env{'browser.interface'} eq 'textual') { - $stayOnPage=1; - } $width = 350 if (not defined $width); $height = 400 if (not defined $height); my $filename = $topic; @@ -1026,7 +1035,9 @@ sub update_help_link { my $banner_link = "/adm/helpmenu?page=banner&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage"; my $output .= <<"ENDOUTPUT"; ENDOUTPUT return $output; @@ -1039,8 +1050,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; @@ -1064,8 +1074,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); @@ -1082,8 +1091,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; @@ -1142,8 +1150,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); @@ -1187,8 +1194,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); @@ -1398,6 +1404,7 @@ sub resize_textarea_js { my $geometry = &viewport_geometry_js(); return <<"RESIZE"; RESIZE @@ -1859,7 +1867,7 @@ sub home_server_form_item { if ($numlib > 1) { $result .= '".&mt('Visible input').''; + $result.="'; return $result; } @@ -2818,6 +2826,26 @@ sub screenname { } +# ------------------------------------------------------------- Confirm Wrapper +=pod + +=item confirmwrapper + +Wrap messages about completion of operation in box + +=cut + +sub confirmwrapper { + my ($message)=@_; + if ($message) { + return "\n".'
'."\n" + .$message."\n" + .'
'."\n"; + } else { + return $message; + } +} + # ------------------------------------------------------------- Message Wrapper sub messagewrapper { @@ -2828,6 +2856,7 @@ sub messagewrapper { '&subject='.&escape($subject).'&text='.&escape($text).'" '. 'title="'.&mt('Send message').'">'.$link.''; } + # --------------------------------------------------------------- Notes Wrapper sub noteswrapper { @@ -2835,6 +2864,7 @@ sub noteswrapper { return "$link"; } + # ------------------------------------------------------------- Aboutme Wrapper sub aboutmewrapper { @@ -2848,12 +2878,13 @@ sub aboutmewrapper { # ------------------------------------------------------------ Syllabus Wrapper - sub syllabuswrapper { my ($linktext,$coursedir,$domain)=@_; return qq{$linktext}; } +# ----------------------------------------------------------------------------- + sub track_student_link { my ($linktext,$sname,$sdom,$target,$start) = @_; my $link ="/adm/trackstudent?"; @@ -4125,41 +4156,92 @@ 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 * &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 = + '
' #FIXME: solve conflicts with lonhtmlcommon:breadcrumbs LC_head_subbox + .$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() + .'
'; +} + ############################################### ############################################### @@ -4196,13 +4278,11 @@ Inputs: 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 @@ -4223,7 +4303,7 @@ other decorations will be returned. sub bodytag { my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,$customtitle, - $notopbar,$bgcolor,$notitle,$no_inline_link,$args)=@_; + $no_nav_bar,$bgcolor,$no_inline_link,$args)=@_; if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); } @@ -4232,7 +4312,7 @@ sub bodytag { my $font = &designparm($function.'.font',$domain); my $pgbg = $bgcolor || &designparm($function.'.pgbg',$domain); - my %design = ( 'style' => 'margin-top: 0px', + my %design = ( 'style' => 'margin-top: 0', 'bgcolor' => $pgbg, 'text' => $font, 'alink' => &designparm($function.'.alink',$domain), @@ -4268,15 +4348,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') { @@ -4322,43 +4394,19 @@ ENDROLE $forcereg=1; } - 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 = - ''. - "".$roleinfo. - '
$titleinfo $dc_info
'; - } - if ($notopbar) { + if (!$customtitle && $env{'request.state'} eq 'construct') { + $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls + } + + my $titletable = '' + ."".$roleinfo + .'
$titleinfo $dc_info
'; + + if ($no_nav_bar) { $bodytag .= $titletable; } else { + $bodytag .= qq|
$name ($role)
+ $realm $dc_info
|; if ($env{'request.state'} eq 'construct') { $bodytag .= &Apache::lonmenu::menubuttons($forcereg,$forcereg, $titletable); @@ -4384,9 +4432,6 @@ ENDROLE my $menu= ($no_inline_link?'' :'
'.&mt('Switch to Inline Menu Mode').''); # - if ($notitle) { - return $bodytag; - } return(< @@ -4439,15 +4484,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}.'" '; @@ -4508,6 +4544,7 @@ 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 = @@ -4542,8 +4579,8 @@ sub standard_css { my $lg_border_color = '#C8C8C8'; my $border = ($env{'browser.type'} eq 'explorer' || - $env{'browser.type'} eq 'safari' ) ? '0px 2px 0px 2px' - : '0px 3px 0px 4px'; + $env{'browser.type'} eq 'safari' ) ? '0 2px 0 2px' + : '0 3px 0 4px'; return < td } 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_pick_box tr > td.LC_odd_row { background-color: $data_table_light; padding: 2px; } 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; } @@ -4958,6 +4982,7 @@ table.LC_nested tr.LC_empty_row td { table.LC_nested_outer tr th { font-weight: bold; + color:$fontmenu; background-color: $data_table_head; font-size: small; border-bottom: 1px solid #000000; @@ -5126,7 +5151,6 @@ span.LC_current_location { span.LC_parm_menu_item { font-size: larger; - font-family: $sans; } span.LC_parm_scope_all { @@ -5174,9 +5198,9 @@ table.LC_parm_overview_restrictions th { } table#LC_helpmenu { - border: 0px; + border: none; height: 55px; - border-spacing: 0px; + border-spacing: 0; } table#LC_helpmenu fieldset legend { @@ -5188,7 +5212,7 @@ table#LC_helpmenu_links { width: 100%; border: 1px solid black; background: $pgbg; - padding: 0px; + padding: 0; border-spacing: 1px; } @@ -5261,7 +5285,7 @@ table.LC_pick_box td.LC_pick_box_select } table.LC_pick_box td.LC_pick_box_separator { - padding: 0px; + padding: 0; height: 1px; background: black; } @@ -5311,7 +5335,7 @@ table.LC_helpform_receipt td.LC_oddrow_v } table.LC_helpform_receipt td.LC_pick_box_separator { - padding: 0px; + padding: 0; height: 1px; background: black; } @@ -5351,7 +5375,7 @@ table.LC_group_priv_box td.LC_groups_fun table.LC_group_priv td { text-align: left; - padding: 0px; + padding: 0; } table.LC_notify_front_page { @@ -5369,12 +5393,12 @@ table.LC_notify_front_page td { } .LC_topic_bar { - font-family: $sans; font-weight: bold; width: 100%; background: $tabbg; vertical-align: middle; margin: 2ex 0ex 2ex 0ex; + padding: 3px; } .LC_topic_bar span { @@ -5395,12 +5419,6 @@ table.LC_status_selector td { 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; @@ -5431,14 +5449,12 @@ table.LC_prior_tries td { .LC_answer_correct { background: lightgreen; - font-family: $sans; color: darkgreen; padding: 6px; } .LC_answer_charged_try { - background: lightred; - font-family: $sans; + background: #FFAAAA; color: darkred; padding: 6px; } @@ -5447,28 +5463,24 @@ table.LC_prior_tries td { .LC_answer_no_grade, .LC_answer_late { background: lightyellow; - font-family: $sans; color: black; padding: 6px; } .LC_answer_previous { background: lightblue; - font-family: $sans; color: darkblue; padding: 6px; } .LC_answer_no_message { background: #FFFFFF; - font-family: $sans; color: black; padding: 6px; } .LC_answer_unknown { background: orange; - font-family: $sans; color: black; padding: 6px; } @@ -5519,7 +5531,7 @@ span.LC_cusr_subheading { table.LC_docs_documents { background: #BBBBBB; - border-width: 0px; + border-width: 0; border-collapse: collapse; } @@ -5529,7 +5541,7 @@ table.LC_docs_documents td.LC_docs_docum } .LC_docs_entry_move { - border: 0px; + border: none; border-collapse: collapse; } @@ -5591,7 +5603,7 @@ table.LC_sty_end { } table.LC_double_column { - border-width: 0px; + border-width: 0; border-collapse: collapse; width: 100%; padding: 2px; @@ -5728,7 +5740,7 @@ table.LC_edit_problem_header_title { border-width: $border; background: $tabbg; border-collapse: collapse; - padding: 0px + padding: 0; } div.LC_edit_problem_discards { @@ -5746,12 +5758,12 @@ hr.LC_edit_problem_divide { color: $tabbg; background-color: $tabbg; height: 3px; - border: 0px; + border: none; } img.stift{ - border-width:0; - vertical-align:middle; + border-width: 0; + vertical-align: middle; } table#LC_mainmenu{ @@ -5767,7 +5779,6 @@ table#LC_mainmenu td.LC_mainmenu_col_fie .LC_mainmenu_fieldset_category { color: $font; background: $pgbg; - font-family: $sans; font-size: small; font-weight: bold; } @@ -5795,25 +5806,26 @@ ul.LC_TabContent li:hover a { } h1 { - padding:5px 10px 5px 20px; + padding: 0; line-height:130%; } h2,h3,h4,h5,h6 { - margin:5px 0px 5px 0px; - padding:0px; + margin: 5px 0 5px 0; + padding: 0; line-height:130%; } .LC_hcell { padding:3px 15px 3px 15px; - margin:0px; + margin: 0; background-color:$tabbg; + color:$fontmenu; border-bottom:solid 1px $lg_border_color; } .LC_noBorder { - border:0px; + border: 0; } @@ -5821,13 +5833,13 @@ h2,h3,h4,h5,h6 { .LC_Right { float: right; - margin: 0px; - padding: 0px; + margin: 0; + padding: 0; } .LC_FormSectionClearButton input { background-color:transparent; - border:0px; + border: none; cursor:pointer; text-decoration:underline; } @@ -5843,17 +5855,31 @@ h2,h3,h4,h5,h6 { } dl,ul,div,fieldset { - margin: 10px 10px 10px 0px; - overflow:hidden; + margin: 10px 10px 10px 0; +/* overflow: hidden; */ +} + +#LC_nav_bar { + float: left; + margin: 0; +} + +#LC_nav_bar em{ + font-weight: bold; + font-style: normal; +} + +ol.LC_smallMenu { + float: right; } ol.LC_smallMenu, ol#LC_PathBreadcrumbs { - margin: 0px; + margin: 0; } ol.LC_smallMenu li { display: inline; - padding: 5px 5px 0px 10px; + padding: 5px 5px 0 10px; vertical-align: top; } @@ -5867,16 +5893,35 @@ ol.LC_smallMenu a { text-decoration: none; } -ol#LC_TabMainMenuContent, +ul#LC_TabMainMenuContent { + clear: both; + color: $fontmenu; + background: $tabbg; + list-style: none; + padding: 0; + margin: 0; + float:left; + width: 100%; +} + +ul#LC_TabMainMenuContent li { + float: left; + font-weight: bold; + line-height: 1.8em; + padding: 0 0.8em; + border-right: 1px solid black; + display: inline; + vertical-align: middle; +} + ul.LC_TabContent , ul.LC_TabContentBigger { display:block; list-style:none; - margin: 0px; - padding: 0px; + margin: 0; + padding: 0; } -ol#LC_TabMainMenuContent li, ul.LC_TabContent li, ul.LC_TabContentBigger li { display: inline; @@ -5886,18 +5931,8 @@ ul.LC_TabContentBigger li { white-space:nowrap; } -ol#LC_TabMainMenuContent li { - vertical-align: bottom; - border-bottom: solid 1px RGB(175, 175, 175); - padding: 5px 10px 5px 10px; - margin-right:5px; - margin-bottom:3px; - font-weight: bold; - background: url(/adm/lonIcons/lightGreyBG.png) repeat-x left top; -} - -ol#LC_TabMainMenuContent li a { - color: RGB(47, 47, 47); +ul#LC_TabMainMenuContent li a { + color: $fontmenu; text-decoration: none; } @@ -5907,7 +5942,7 @@ ul.LC_TabContent { ul.LC_TabContent li { vertical-align:middle; - padding:0px 10px 0px 10px; + padding: 0 10px 0 10px; background-color:$tabbg; border-bottom:solid 1px $lg_border_color; } @@ -5948,30 +5983,22 @@ ul.LC_TabContentBigger li a { ol#LC_MenuBreadcrumbs, ol#LC_PathBreadcrumbs, -ul.LC_CourseBreadcrumbs { - border-top: solid 1px RGB(255, 255, 255); - height: 20px; - line-height: 20px; - vertical-align: bottom; - margin: 0px 0px 30px 0px; +ul#LC_CourseBreadcrumbs { padding-left: 10px; + margin: 0; list-style-position: inside; - background: url(/adm/lonIcons/lightGreyBG.png) repeat-x left top; } ol#LC_MenuBreadcrumbs li, ol#LC_PathBreadcrumbs li, -ul.LC_CourseBreadcrumbs li { -/* - background: url(/adm/lonIcons/arrow_white.png) no-repeat left center; -*/ +ul#LC_CourseBreadcrumbs li { display: inline; - padding: 0px 0px 0px 10px; -/* vertical-align: bottom; */ + padding: 0 0 0 10px; overflow:hidden; } -ol#LC_MenuBreadcrumbs li a, ul.LC_CourseBreadcrumbs li a { +ol#LC_MenuBreadcrumbs li a, +ul#LC_CourseBreadcrumbs li a { text-decoration: none; font-size:90%; } @@ -6023,7 +6050,7 @@ dl.LC_ListStyleClean dd { list-style-position: inside; list-style-type: none; overflow: hidden; - padding: 0px; + padding: 0; } .LC_ListStyleSimple li, @@ -6032,15 +6059,15 @@ dl.LC_ListStyleClean dd { .LC_ListStyleNormal dd, .LC_ListStyleSpecial li, .LC_ListStyleSpecial dd { - margin: 0px; + margin: 0; padding: 5px 5px 5px 10px; clear: both; } .LC_ListStyleClean li, .LC_ListStyleClean dd { - padding-top: 0px; - padding-bottom: 0px; + padding-top: 0; + padding-bottom: 0; } .LC_ListStyleSimple dd, @@ -6061,7 +6088,7 @@ table.LC_SimpleTable { } table.LC_SimpleTable tr { - padding:0px; + padding: 0; border:solid 1px $lg_border_color; } @@ -6073,12 +6100,12 @@ div.LC_columnSection { display: block; clear: both; overflow: hidden; - margin:0px; + margin: 0; } div.LC_columnSection>* { float: left; - margin: 10px 20px 10px 0px; + margin: 10px 20px 10px 0; overflow:hidden; } @@ -6097,9 +6124,9 @@ div.LC_columnSection > .ContentBoxSpecia .clear { clear: both; - line-height: 0px; - font-size: 0px; - height: 0px; + line-height: 0; + font-size: 0; + height: 0; } .LC_loginpage_container { @@ -6122,7 +6149,7 @@ div.LC_columnSection > .ContentBoxSpecia } .LC_loginpage_loginContainer h2 { - margin-top:0; + margin-top: 0; display:block; background:$bgcol; color:$textcol; @@ -6221,7 +6248,7 @@ ul#LC_toolbar li a:hover { } ul#LC_toolbar { - padding:0; + padding: 0; margin: 2px; list-style:none; position:relative; @@ -6230,7 +6257,7 @@ ul#LC_toolbar { ul#LC_toolbar li { border:1px solid white; - padding:0; + padding: 0; margin: 0; float: left; display:inline; @@ -6240,12 +6267,12 @@ ul#LC_toolbar li { a.LC_toolbarItem { display:block; - padding:0; - margin:0; + padding: 0; + margin: 0; height: 32px; width: 32px; color:white; - border:0 none; + border: none; background-repeat:no-repeat; background-color:transparent; } @@ -6254,7 +6281,7 @@ ul.LC_functionslist li { float: left; white-space: nowrap; height: 35px; /* at least as high as heighest list item */ - margin: 0px 15px 15px 10px; + margin: 0 15px 15px 10px; } @@ -6447,7 +6474,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 @@ -6466,7 +6493,6 @@ $args - additional optional args support 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 @@ -6515,7 +6541,7 @@ sub start_page { $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->{'no_inline_link'}, $args); } } @@ -6527,7 +6553,15 @@ sub start_page { $result = &html_encode($result); } - #Breadcrumbs + # 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 @@ -6771,14 +6805,17 @@ 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'; } if ($env{'request.role'}=~/^(su|dc|ad|li)/) { $function='admin'; } - if (($env{'request.role'}=~/^(au|ca)/) || + if (($env{'request.role'}=~/^(au|ca|aa)/) || ($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) { $function='author'; } @@ -6789,6 +6826,38 @@ sub get_users_function { =pod +=item * &show_course() + +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 + +Outputs: +Scalar: 1 if 'Course' to be used, 0 otherwise. + +=cut + +############################################### +sub show_course { + my $course = !$env{'user.adv'}; + if (!$env{'user.adv'}) { + foreach my $env (keys(%env)) { + next if ($env !~ m/^user\.priv\./); + if ($env !~ m/^user\.priv\.(?:st|cm)/) { + $course = 0; + last; + } + } + } + return $course; +} + +############################################### + +=pod + =item * &check_user_status() Determines current status of supplied role for a @@ -7485,12 +7554,17 @@ sub user_picker { if ($cancreate) { $new_user_create = '

&"').'" onclick="javascript:setSearch(\'1\','.$caller.');" />

'; } else { - my $helplink = ' href="javascript:helpMenu('."'display'".')"'; + my $helplink = 'javascript:helpMenu('."'display'".')'; my %usertypetext = ( official => 'institutional', unofficial => 'non-institutional', ); - $new_user_create = '
'.&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.").' '.&mt('Contact the helpdesk for assistance.',$helplink).'

'; + $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.' + ,'','') + .'


'; } } } @@ -7527,6 +7601,7 @@ ENDSCRIPT my $output = <<"END_BLOCK"; $new_user_create @@ -10202,7 +10278,23 @@ sub escape_url { return join('/',@urlslices).'/'.$lastitem; } -# -------------------------------------------------------- Initliaze user login +sub compare_arrays { + my ($arrayref1,$arrayref2) = @_; + my (@difference,%count); + @difference = (); + %count = (); + if ((ref($arrayref1) eq 'ARRAY') && (ref($arrayref2) eq 'ARRAY')) { + foreach my $element (@{$arrayref1}, @{$arrayref2}) { $count{$element}++; } + foreach my $element (keys(%count)) { + if ($count{$element} == 1) { + push(@difference,$element); + } + } + } + return @difference; +} + +# -------------------------------------------------------- Initialize user login sub init_user_environment { my ($r, $username, $domain, $authhost, $form, $args) = @_; my $lonids=$Apache::lonnet::perlvar{'lonIDsDir'}; @@ -10256,19 +10348,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); @@ -10286,10 +10365,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 @@ -10323,13 +10400,6 @@ 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') {