--- loncom/interface/loncommon.pm 2010/12/19 22:34:42 1.948.2.14 +++ loncom/interface/loncommon.pm 2010/03/29 13:40:03 1.963 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.948.2.14 2010/12/19 22:34:42 raeburn Exp $ +# $Id: loncommon.pm,v 1.963 2010/03/29 13:40:03 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -900,7 +900,7 @@ sub select_language { $langchoices{$code} = &plainlanguagedescription($id); } } - return &select_form($selected,$name,\%langchoices); + return &select_form($selected,$name,%langchoices); } =pod @@ -1072,7 +1072,7 @@ END =pod -=item * &help_open_topic($topic,$text,$stayOnPage,$width,$height,$imgid) +=item * &help_open_topic($topic,$text,$stayOnPage,$width,$height) Returns a string corresponding to an HTML link to the given help $topic, where $topic corresponds to the name of a .tex file in @@ -1095,7 +1095,7 @@ be useful for certain help topics with b =cut sub help_open_topic { - my ($topic, $text, $stayOnPage, $width, $height, $imgid) = @_; + my ($topic, $text, $stayOnPage, $width, $height) = @_; $text = "" if (not defined $text); $stayOnPage = 0 if (not defined $stayOnPage); $width = 350 if (not defined $width); @@ -1124,15 +1124,12 @@ sub help_open_topic { # (Always) Add the graphic my $title = &mt('Online Help'); my $helpicon=&lonhttpdurl("/adm/help/help.png"); - if ($imgid ne '') { - $imgid = ' id="'.$imgid.'"'; - } $template.=' ' .''.&mt('Help: [_1]',$topic).''; - if ($text ne "") { + if ($text ne "") { $template.=''; } return $template; @@ -1205,12 +1202,7 @@ ENDOUTPUT sub help_open_menu { my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text) = @_; - $stayOnPage = 0 if (not defined $stayOnPage); - # only use pop-up help (stayOnPage == 0) - # if environment.remote is on (using remote control UI) - if ($env{'environment.remote'} eq 'off' ) { - $stayOnPage=1; - } + $stayOnPage = 1; my $output; if ($component_help) { if (!$text) { @@ -1231,8 +1223,8 @@ sub help_open_menu { sub top_nav_help { my ($text) = @_; $text = &mt($text); - my $stay_on_page = - ($env{'environment.remote'} eq 'off' ); + my $stay_on_page = 1; + my $link = ($stay_on_page) ? "javascript:helpMenu('display')" : "javascript:helpMenu('open')"; my $banner_link = &update_help_link(undef,undef,undef,undef,$stay_on_page); @@ -1247,10 +1239,7 @@ END sub help_menu_js { my ($text) = @_; - - my $stayOnPage = - ($env{'environment.remote'} eq 'off' ); - + my $stayOnPage = 1; my $width = 620; my $height = 600; my $helptopic=&general_help(); @@ -1307,10 +1296,7 @@ sub help_open_bug { unless ($env{'user.adv'}) { return ''; } unless ($Apache::lonnet::perlvar{'BugzillaHost'}) { return ''; } $text = "" if (not defined $text); - $stayOnPage = 0 if (not defined $stayOnPage); - if ($env{'environment.remote'} eq 'off' ) { $stayOnPage=1; - } $width = 600 if (not defined $width); $height = 600 if (not defined $height); @@ -1351,10 +1337,7 @@ sub help_open_faq { unless ($env{'user.adv'}) { return ''; } unless ($Apache::lonnet::perlvar{'FAQHost'}) { return ''; } $text = "" if (not defined $text); - $stayOnPage = 0 if (not defined $stayOnPage); - if ($env{'environment.remote'} eq 'off' ) { $stayOnPage=1; - } $width = 350 if (not defined $width); $height = 400 if (not defined $height); @@ -1803,7 +1786,7 @@ sub domain_select { return &multiple_select_form($name,$value,4,\%domains); } else { $domains{'select_form_order'} = [sort {lc($a) cmp lc($b) } (keys(%domains))]; - return &select_form($name,$value,\%domains); + return &select_form($name,$value,%domains); } } @@ -1865,36 +1848,29 @@ sub multiple_select_form { =pod -=item * &select_form($defdom,$name,$hashref,$onchange) +=item * &select_form($defdom,$name,%hash) Returns a string containing a \n"; + my ($def,$name,%hash) = @_; + my $selectform = ""; return $selectform; @@ -1912,9 +1888,9 @@ sub display_filter { &mt('Filter [_1]', &select_form($env{'form.displayfilter'}, 'displayfilter', - {'currentfolder' => 'Current folder/page', + ('currentfolder' => 'Current folder/page', 'containing' => 'Containing phrase', - 'none' => 'None'})). + 'none' => 'None'))). ''; } @@ -2284,16 +2260,12 @@ function changed_text(choice,currentform } function set_auth_radio_buttons(newvalue,currentform) { - var numauthchoices = currentform.login.length; - if (typeof numauthchoices == "undefined") { - return; - } var i=0; - while (i < numauthchoices) {) { + while (i < currentform.login.length) { if (currentform.login[i].value == newvalue) { break; } i++; } - if (i == numauthchoices) { + if (i == currentform.login.length) { return; } current.radiovalue = newvalue; @@ -3261,7 +3233,7 @@ sub filecategoryselect { my ($name,$value)=@_; return &select_form($value,$name, '' => &mt('Any category'), - {'' => &mt('Any category'), map { $_,$_ } sort(keys(%category_extensions))}); + map { $_,$_ } sort(keys(%category_extensions))); } =pod @@ -3426,7 +3398,7 @@ sub get_previous_attempt { } $prevattempts=&start_data_table().&start_data_table_header_row(); $prevattempts.=''.&mt('History').''; - my (%typeparts,%lasthidden); + my %typeparts; my $showsurv=&Apache::lonnet::allowed('vas',$env{'request.course.id'}); foreach my $key (sort(keys(%lasthash))) { my ($ign,@parts) = split(/\./,$key); @@ -3437,9 +3409,6 @@ sub get_previous_attempt { unless ($showsurv) { my $id = join(',',@parts); $typeparts{$ign.'.'.$id} = $lasthash{$key}; - if (($lasthash{$key} eq 'anonsurvey') || ($lasthash{$key} eq 'anonsurveycred')) { - $lasthidden{$ign.'.'.$id} = 1; - } } delete($lasthash{$key}); } else { @@ -3454,6 +3423,7 @@ sub get_previous_attempt { } } $prevattempts.=&end_data_table_header_row(); + my %lasthidden; if ($getattempt eq '') { for ($version=1;$version<=$returnhash{'version'};$version++) { my @hidden; @@ -3461,6 +3431,11 @@ sub get_previous_attempt { foreach my $id (keys(%typeparts)) { if (($returnhash{$version.':'.$id.'.type'} eq 'anonsurvey') || ($returnhash{$version.':'.$id.'.type'} eq 'anonsurveycred')) { push(@hidden,$id); + $lasthidden{$id} = 1; + } elsif ($lasthidden{$id}) { + if (exists($returnhash{$version.':'.$id.'.award'})) { + delete($lasthidden{$id}); + } } } } @@ -3562,29 +3537,6 @@ sub format_previous_attempt_value { $value = &Apache::lonlocal::locallocaltime($value); } elsif (ref($value) eq 'ARRAY') { $value = '('.join(', ', @{ $value }).')'; - } elsif ($key =~ /answerstring$/) { - my %answers = &Apache::lonnet::str2hash($value); - my @anskeys = sort(keys(%answers)); - if (@anskeys == 1) { - my $answer = $answers{$anskeys[0]}; - if ($answer =~ m{\Q\0\E}) { - $answer =~ s{\Q\0\E}{, }g; - } - my $tag_internal_answer_name = 'INTERNAL'; - if ($anskeys[0] eq $tag_internal_answer_name) { - $value = $answer; - } else { - $value = $anskeys[0].'='.$answer; - } - } else { - foreach my $ans (@anskeys) { - my $answer = $answers{$ans}; - if ($answer =~ m{\Q\0\E}) { - $answer =~ s{\Q\0\E}{, }g; - } - $value .= $ans.'='.$answer.'
';; - } - } } else { $value = &unescape($value); } @@ -3863,9 +3815,7 @@ sub findallcourses { $udom = $env{'user.domain'}; } if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { - my $extra = &Apache::lonnet::freeze_escape({'skipcheck' => 1}); - my %roleshash = &Apache::lonnet::dump('roles',$udom,$uname,'.',undef, - $extra); + my %roleshash = &Apache::lonnet::dump('roles',$udom,$uname); if (!%roles) { %roles = ( cc => 1, @@ -4589,9 +4539,6 @@ 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, @@ -4609,7 +4556,7 @@ other decorations will be returned. sub bodytag { my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, - $no_nav_bar,$bgcolor,$no_inline_link,$args)=@_; + $no_nav_bar,$bgcolor,$args)=@_; my $public; if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) @@ -4670,7 +4617,7 @@ sub bodytag { } else { $name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); } - + my $titleinfo = '

'.$title.'

'; # # Extra info if you are the DC @@ -4686,8 +4633,6 @@ sub bodytag { $role = '('.$role.')' if $role; &get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']); - if ($env{'environment.remote'} eq 'off') { - # No Remote if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') { return $bodytag; } @@ -4729,7 +4674,7 @@ sub bodytag { $bodytag .= Apache::lonmenu::serverform(); $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); if ($env{'request.state'} eq 'construct') { - $bodytag .= &Apache::lonmenu::innerregister($forcereg,'', + $bodytag .= &Apache::lonmenu::innerregister($forcereg, $args->{'bread_crumbs'}); } elsif ($forcereg) { $bodytag .= &Apache::lonmenu::innerregister($forcereg); @@ -4742,45 +4687,11 @@ 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)|; - } - - $bodytag .= qq|
$name $role
-
    -
  1. $menu
  2. -
$realm $dc_info
| unless $env{'form.inhibitmenu'}; - return(< -$upperleft - $messages  - -$titleinfo $dc_info $menu - - -ENDBODY } sub dc_courseid_toggle { my ($dc_info) = @_; - return ' '. + return ' '. ''. &mt('(More ...)').''. '
'.$dc_info.'
'; @@ -4807,22 +4718,8 @@ sub make_attr_string { delete($attr_ref->{$key}); } } - $attr_ref->{'onload'} = - &Apache::lonmenu::loadevents(). $on_load; - $attr_ref->{'onunload'}= - &Apache::lonmenu::unloadevents().$on_unload; - } - -# Accessibility font enhance - if ($env{'browser.fontenhance'} eq 'on') { - my $style; - foreach my $key (keys(%{$attr_ref})) { - if (lc($key) eq 'style') { - $style.=$attr_ref->{$key}.';'; - delete($attr_ref->{$key}); - } - } - $attr_ref->{'style'}=$style.'; font-size: x-large;'; + $attr_ref->{'onload'} = $on_load; + $attr_ref->{'onunload'}= $on_unload; } my $attr_string; @@ -4896,6 +4793,10 @@ 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 = $sidebg; @@ -4920,6 +4821,7 @@ sub standard_css { $env{'browser.type'} eq 'safari' ) ? '0 2px 0 2px' : '0 3px 0 4px'; + return < legend { #LC_nav_bar { float: left; - margin: 0 0 2px 0; + margin: 0; } #LC_realm { @@ -6155,21 +6043,11 @@ fieldset > legend { font-style: normal; } -/* Preliminary fix to hide nav_bar inside bookmarks window */ -#LC_bookmarks #LC_nav_bar { - display:none; -} - ol.LC_primary_menu { float: right; margin: 0; } -span.LC_new_message{ - font-weight:bold; - color: darkred; -} - ol#LC_PathBreadcrumbs { margin: 0; } @@ -6190,28 +6068,9 @@ ol.LC_primary_menu a { text-decoration: none; } -ol.LC_docs_parameters { - margin-left: 0; - padding: 0; - list-style: none; -} - -ol.LC_docs_parameters li { - margin: 0; - padding-right: 20px; - display: inline; -} - -ol.LC_docs_parameters li:before { - content: "\\002022 \\0020"; -} - -li.LC_docs_parameters_title { - font-weight: bold; -} - -ol.LC_docs_parameters li.LC_docs_parameters_title:before { - content: ""; +ol.LC_primary_menu a.LC_new_message { + font-weight:bold; + color: darkred; } ul#LC_secondary_menu { @@ -6331,7 +6190,7 @@ ul.LC_TabContentBigger li a { text-align: center; display: block; text-decoration: none; - outline: none; + outline: none; } ul.LC_TabContentBigger li.active a { @@ -6358,6 +6217,7 @@ ul.LC_TabContentBigger li.active b { cursor:default; } + ul.LC_CourseBreadcrumbs { background: $sidebg; line-height: 32px; @@ -6387,14 +6247,6 @@ ul.LC_CourseBreadcrumbs li a { font-size:90%; } -ol#LC_MenuBreadcrumbs h1 { - display: inline; - font-size: 90%; - line-height: 2.5em; - margin: 0; - padding: 0; -} - ol#LC_PathBreadcrumbs li a { text-decoration:none; font-size:100%; @@ -6491,6 +6343,52 @@ div.LC_columnSection>* { 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; @@ -6526,14 +6424,6 @@ 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); } @@ -6675,8 +6565,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'} @@ -6702,7 +6592,7 @@ ADDMETA $result .= ' LON-CAPA '.$title.'' .'' .$head_extra; - return $result; + return $result.''; } =pod @@ -6737,6 +6627,10 @@ Inputs: none sub xml_begin { my $output=''; + if ($env{'internal.start_page'}==1) { + &Apache::lonhtmlcommon::init_htmlareafields(); + } + if ($env{'browser.mathml'}) { $output='' #.''."\n" @@ -6755,43 +6649,6 @@ sub xml_begin { =pod -=item * &endheadtag() - -Returns a uniform for LON-CAPA web pages. - -Inputs: none - -=cut - -sub endheadtag { - return ''; -} - -=pod - -=item * &head() - -Returns a uniform complete .. section for LON-CAPA web pages. - -Inputs: - -=over 4 - -$title - optional title for the page - -$head_extra - optional extra HTML to put inside the - -=back - -=cut - -sub head { - my ($title,$head_extra,$args) = @_; - return &headtag($title,$head_extra,$args).&endheadtag(); -} - -=pod - =item * &start_page() Returns a complete .. section for LON-CAPA web pages. @@ -6829,14 +6686,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 + bread_crumbs_components -> if exists show it as headline else show only the breadcrumbs =back @@ -6861,7 +6716,7 @@ sub start_page { if (! exists($args->{'skip_phases'}{'head'}) ) { $result.= &xml_begin(). - &headtag($title,$head_extra,\%head_args).&endheadtag(); + &headtag($title,$head_extra,\%head_args); } if (! exists($args->{'skip_phases'}{'body'}) ) { @@ -6875,8 +6730,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); + $args->{'bgcolor'}, $args); } } @@ -6896,7 +6750,8 @@ sub start_page { return $result if $args->{'only_body'}; #Breadcrumbs for Construction Space provided by &bodytag. - if (($env{'environment.remote'} eq 'off') && ($env{'request.state'} eq 'construct')) { + if ( + $env{'request.state'} eq 'construct') { return $result; } @@ -6920,28 +6775,6 @@ sub start_page { return $result; } - -=pod - -=item * &head() - -Returns a complete section for LON-CAPA web pages. - -Inputs: $args - additional optional args supported are: - js_ready -> return a string ready for being used in - a javascript writeln - html_encode -> return a string ready for being used in - a html attribute - frameset -> if true will start with a - rather than - dicsussion -> if true will get discussion from - lonxml::xmlend - (you can pass the target and parser arguments - through optional 'target' and 'parser' args - to this routine) - -=cut - sub end_page { my ($args) = @_; $env{'internal.end_page'}++; @@ -7045,12 +6878,12 @@ sub simple_error_page { sub start_data_table { my ($add_class) = @_; my $css_class = (join(' ','LC_data_table',$add_class)); - &start_data_table_count(); + &start_data_table_count(); return ''."\n"; } sub end_data_table { - &end_data_table_count(); + &end_data_table_count(); return '
'."\n";; } @@ -7229,8 +7062,7 @@ role status: active, previous or future. sub check_user_status { my ($udom,$uname,$cdom,$crs,$role,$sec) = @_; - my $extra = &Apache::lonnet::freeze_escape({'skipcheck' => 1}); - my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname,'.',undef,$extra); + my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname); my @uroles = keys %userinfo; my $srchstr; my $active_chk = 'none'; @@ -8269,10 +8101,6 @@ sub get_institutional_codes { return; } -sub get_standard_codeitems { - return ('Year','Semester','Department','Number','Section'); -} - =pod =head1 Slot Helpers @@ -8464,83 +8292,14 @@ sub get_env_multiple { sub ask_for_embedded_content { my ($actionurl,$state,$allfiles,$codebase,$args)=@_; - my (%subdependencies,%dependencies,%newfiles); + my $upload_output = ' +
'; + $upload_output .= $state; + $upload_output .= 'Upload embedded files:
'.&start_data_table(); + my $num = 0; - my $upload_output; - foreach my $embed_file (keys(%{$allfiles})) { - unless ($embed_file =~ m{^\w+://} || $embed_file =~ m{^/}) { - my ($relpath,$fname); - if ($embed_file =~ m{/}) { - my ($path,$fname) = ($embed_file =~ m{^(.+)/([^/]*)$}); - $subdependencies{$path}{$fname} = 1; - } else { - $dependencies{$embed_file} = 1; - } - } - } - my ($url,$udom,$uname,$getpropath); - if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) { - my $current_path='/'; - if ($env{'form.currentpath'}) { - $current_path = $env{'form.currentpath'}; - } - if ($actionurl eq '/adm/coursegrp_portfolio') { - $udom = $env{'course.'.$env{'request.course.id'}.'.domain'}; - $uname = $env{'course.'.$env{'request.course.id'}.'.num'}; - $url = '/userfiles/groups/'.$env{'form.group'}.'/portfolio'; - } else { - $udom = $env{'user.domain'}; - $uname = $env{'user.name'}; - $url = '/userfiles/portfolio'; - } - $url .= $current_path; - $getpropath = 1; - } elsif ($actionurl eq '/adm/upload') { - ($uname,my $rest) = ($args->{'current_path'} =~ m{/priv/($match_username)/?(.*)$}); - $url = '/home/'.$uname.'/public_html'; - if ($rest ne '') { - $url .= '/'.$rest; - } - } - foreach my $path (keys(%subdependencies)) { - my %currsubfile; - if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) { - my @subdir_list = &Apache::lonnet::dirlist($url.$path,$udom,$uname,$getpropath); - foreach my $line (@subdir_list) { - my ($file_name,$rest) = split(/\&/,$line,2); - $currsubfile{$file_name} = 1; - } - } elsif ($actionurl eq '/adm/upload') { - if (opendir(my $dir,$url.'/'.$path)) { - my @subdir_list = grep(!/^\./,readdir($dir)); - map {$currsubfile{$_} = 1;} @subdir_list; - } - } - foreach my $file (keys(%{$subdependencies{$path}})) { - unless ($currsubfile{$file}) { - $newfiles{$path.'/'.$file} = 1; - } - } - } - my (@dir_list,%currfile); - if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) { - my @dir_list = &Apache::lonnet::dirlist($url,$udom,$uname,$getpropath); - foreach my $line (@dir_list) { - my ($file_name,$rest) = split(/\&/,$line,2); - $currfile{$file_name} = 1; - } - } elsif ($actionurl eq '/adm/upload') { - if (opendir(my $dir,$url)) { - @dir_list = grep(!/^\./,readdir($dir)); - map {$currfile{$_} = 1;} @dir_list; - } - } - foreach my $file (keys(%dependencies)) { - unless ($currfile{$file}) { - $newfiles{$file} = 1; - } - } - foreach my $embed_file (sort {lc($a) cmp lc($b)} keys(%newfiles)) { + foreach my $embed_file (sort {lc($a) cmp lc($b)} keys(%{$allfiles})) { $upload_output .= &start_data_table_row(). ''.$embed_file.''; if ($args->{'ignore_remote_references'} @@ -8567,21 +8326,14 @@ sub ask_for_embedded_content { &escape($$codebase{$embed_file}).'" />'; } } - $upload_output .= ''.&Apache::loncommon::end_data_table_row()."\n"; + $upload_output .= ''.&Apache::loncommon::end_data_table_row(); $num++; } - if ($num) { - $upload_output = ''."\n". - $state. - 'Upload embedded files:
'.&start_data_table(). - $upload_output. - &Apache::loncommon::end_data_table().'
'."\n". - ''."\n". - ''."\n". - &mt('(only files for which a location has been provided will be uploaded)')."\n". - '
'; - } + $upload_output .= &Apache::loncommon::end_data_table().'
+ + + '.&mt('(only files for which a location has been provided will be uploaded)').' + '; return $upload_output; } @@ -8617,7 +8369,8 @@ sub upload_embedded { $dir_root,$port_path,$disk_quota, $current_disk_usage,$uname,$udom); if ($state eq 'will_exceed_quota' - || $state eq 'file_locked') { + || $state eq 'file_locked' + || $state eq 'file_exists' ) { $output .= $msg; next; } @@ -8644,25 +8397,18 @@ sub upload_embedded { $env{'form.embedded_item_'.$i.'.filename'}=$fname; if ($context eq 'portfolio') { - my $result; - if ($state eq 'existingfile') { - $result= - &Apache::lonnet::userfileupload('embedded_item_'.$i,'existingfile', - $dirpath.$path,); + my $result= + &Apache::lonnet::userfileupload('embedded_item_'.$i,'', + $dirpath.$path); + if ($result !~ m|^/uploaded/|) { + $output .= '' + .&mt('An error occurred ([_1]) while trying to upload [_2] for embedded element [_3].' + ,$result,$orig_uploaded_filename,$env{'form.embedded_orig_'.$i}) + .'
'; + next; } else { - $result= - &Apache::lonnet::userfileupload('embedded_item_'.$i,'', - $dirpath.$path); - if ($result !~ m|^/uploaded/|) { - $output .= '' - .&mt('An error occurred ([_1]) while trying to upload [_2] for embedded element [_3].' - ,$result,$orig_uploaded_filename,$env{'form.embedded_orig_'.$i}) - .'
'; - next; - } else { - $output .= '

'.&mt('Uploaded [_1]',''. - $path.$fname.'').'

'; - } + $output .= '

'.&mt('Uploaded [_1]',''. + $path.$fname.'').'

'; } } else { # Save the file @@ -8728,24 +8474,14 @@ sub check_for_existing { sub check_for_upload { my ($path,$fname,$group,$element,$portfolio_root,$port_path, $disk_quota,$current_disk_usage,$uname,$udom) = @_; - my $filesize = length($env{'form.'.$element}); - if (!$filesize) { - my $msg = ''. - &mt('Unable to upload [_1]. (size = [_2] bytes)', - ''.$fname.'', - $filesize).'
'. - &mt('Either the file you uploaded was empty, or your web browser was unable to read its contents.').'
'; - '
'; - return ('zero_bytes',$msg); - } - $filesize = $filesize/1000; #express in k (1024?) + my $filesize = (length($env{'form.'.$element})) / 1000; #express in k (1024?) my $getpropath = 1; my @dir_list = &Apache::lonnet::dirlist($portfolio_root.$path,$udom,$uname, $getpropath); my $found_file = 0; my $locked_file = 0; foreach my $line (@dir_list) { - my ($file_name,$rest)=split(/\&/,$line,2); + my ($file_name)=split(/\&/,$line,2); if ($file_name eq $fname){ $file_name = $path.$file_name; if ($group ne '') { @@ -8754,20 +8490,6 @@ sub check_for_upload { $found_file = 1; if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') { $locked_file = 1; - } else { - my @info = split(/\&/,$rest); - my $currsize = $info[6]/1000; - if ($currsize < $filesize) { - my $extra = $filesize - $currsize; - if (($current_disk_usage + $extra) > $disk_quota) { - my $msg = ''. - &mt('Unable to upload [_1]. (size = [_2] kilobytes). Disk quota will be exceeded if existing (smaller) file with same name (size = [_3] kilobytes) is replaced.', - ''.$fname.'',$filesize,$currsize).''. - '
'.&mt('Disk quota is [_1] kilobytes. Your current disk usage is [_2] kilobytes.', - $disk_quota,$current_disk_usage); - return ('will_exceed_quota',$msg); - } - } } } } @@ -8785,9 +8507,11 @@ sub check_for_upload { return ('file_locked',$msg); } else { my $msg = ''; - $msg .= &mt(' A file by that name: [_1] was found in [_2].',''.$fname.'',$port_path.$env{'form.currentpath'}); + $msg .= &mt('Unable to upload [_1]. A file by that name was found in [_2].',''.$fname.'',$port_path.$env{'form.currentpath'}); $msg .= ''; - return ('existingfile',$msg); + $msg .= '
'; + $msg .= &mt('To upload, rename or delete existing [_1] in [_2].',''.$fname.'', $port_path.$env{'form.currentpath'}); + return ('file_exists',$msg); } } } @@ -10714,6 +10438,8 @@ sub construct_course { ############################################################ ############################################################ +#SD +# only Community and Course, or anything else? sub course_type { my ($cid) = @_; if (!defined($cid)) { @@ -10879,15 +10605,12 @@ sub init_user_environment { my %userenv = &Apache::lonnet::dump('environment',$domain,$username); my ($tmp) = keys(%userenv); if ($tmp !~ /^(con_lost|error|no_such_host)/i) { - # default remote control to off - if ($userenv{'remote'} ne 'on') { $userenv{'remote'} = 'off'; } } else { undef(%userenv); } if (($userenv{'interface'}) && (!$form->{'interface'})) { $form->{'interface'}=$userenv{'interface'}; } - $env{'environment.remote'}=$userenv{'remote'}; if ($userenv{'texengine'} eq 'ttm') { $clientmathml=1; } # --------------- Do not trust query string to be put directly into environment @@ -10919,28 +10642,21 @@ sub init_user_environment { $initial_env{"browser.localres"} = $form->{'localres'}; } - if ($public) { - $initial_env{"environment.remote"} = "off"; - } if ($form->{'interface'}) { $form->{'interface'}=~s/\W//gs; $initial_env{"browser.interface"} = $form->{'interface'}; $env{'browser.interface'}=$form->{'interface'}; } - my %is_adv = ( is_adv => $env{'user.adv'} ); - my %domdef = &Apache::lonnet::get_domain_defaults($domain); foreach my $tool ('aboutme','blog','portfolio') { $userenv{'availabletools.'.$tool} = - &Apache::lonnet::usertools_access($username,$domain,$tool,'reload', - undef,\%userenv,\%domdef,\%is_adv); + &Apache::lonnet::usertools_access($username,$domain,$tool,'reload'); } foreach my $crstype ('official','unofficial','community') { $userenv{'canrequest.'.$crstype} = &Apache::lonnet::usertools_access($username,$domain,$crstype, - 'reload','requestcourses', - \%userenv,\%domdef,\%is_adv); + 'reload','requestcourses'); } $env{'user.environment'} = "$lonids/$cookie.id";