--- loncom/homework/edit.pm 2013/07/04 16:35:07 1.147 +++ loncom/homework/edit.pm 2017/10/04 12:55:09 1.155 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # edit mode helpers # -# $Id: edit.pm,v 1.147 2013/07/04 16:35:07 bisitz Exp $ +# $Id: edit.pm,v 1.155 2017/10/04 12:55:09 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -134,10 +134,11 @@ package Apache::edit; use strict; use Apache::lonnet; +use Apache::loncommon; use HTML::Entities(); use Apache::lonlocal; use lib '/home/httpd/lib/perl/'; -use LONCAPA; +use LONCAPA qw(:DEFAULT :match); # Global Vars @@ -161,21 +162,18 @@ sub tag_start { if ($target eq "edit") { my $tag=$token->[1]; if (!$description) { - $description=&Apache::lonxml::description($token); + $description=&mt(&Apache::lonxml::description($token)); if (!$description) { $description="<$tag>"; } } - $result.= &start_table($token)."$description - ".&mt('Delete?').' '. - &deletelist($target,$token) - ." - ". - &insertlist($target,$token); + $result.= &start_table($token)."".&Apache::loncommon::insert_folding_button(). + " $description".&mt('Delete?')." ".&deletelist($target,$token). + "".&insertlist($target,$token); #". # &movebuttons($target,$token). # "\n"; my @help = Apache::lonxml::helpinfo($token); if ($help[0]) { - $result .= '' . + $result .= ''. Apache::loncommon::help_open_topic(@help); } else { $result .= " "; } $result .= &end_row().&start_spanning_row(); @@ -203,7 +201,7 @@ sub start_table { } $Apache::edit::colordepth++; push(@Apache::edit::inserttag,$token->[1]); - my $result='
'; + my $result='
'; $result.=''; return $result; } @@ -211,7 +209,7 @@ sub start_table { sub end_table { $Apache::edit::colordepth--; my $result='
'; - $result.='
'; + $result.='
'; } @@ -296,7 +297,7 @@ sub get_insert_list { my $descrip=$Apache::lonxml::insertlist{"$tag.description"}; my $tagnum =$Apache::lonxml::insertlist{"$tag.num"}; $options{$descrip} ="\n"; + &mt($descrip)."\n"; } foreach my $option (sort(keys(%options))) {$result.=$options{$option};} if ($result) { $result=''.$result; } @@ -788,14 +789,59 @@ sub element_change_detection { sub submit_ask_anyway { my ($extra_action) = @_; - return ' onclick="still_ask=true;'.$extra_action.'" '; + my $resource = &Apache::loncommon::escape_single($env{'request.ambiguous'}); + return ' onclick="saveScrollPosition(\''.$resource.'\');still_ask=true;'.$extra_action.';" '; } sub submit_dont_ask { my ($extra_action) = @_; - return ' onclick="is_submit=true;'.$extra_action.'" '; + my $resource = &Apache::loncommon::escape_single($env{'request.ambiguous'}); + return ' onclick="saveScrollPosition(\''.$resource.'\');is_submit=true;'.$extra_action.';" '; } +sub js_update_linknum { + return (< +// '+picknum+''; + } else { + if (caller == 'check') { + pickitem.checked=false; + pickitem.value='nochoice'; + } + return; + } + } + } else { + pickitem.value = ''; + picknumtext.innerHTML = ''; + } +} + +// ]]> + +SCRIPT + +} sub textarea_sizes { my ($data)=@_; @@ -941,7 +987,7 @@ sub hidden_arg { } sub checked_arg { - my ($description,$name,$list,$token) = @_; + my ($description,$name,$list,$token,$onclick,$useid) = @_; my $result; my $optionlist=""; my $allselected=$token->[2]{$name}; @@ -950,10 +996,10 @@ sub checked_arg { my ($value,$text); if ( ref($option) eq 'ARRAY') { $value='value="'.$$option[0].'"'; - $text=$$option[1]; + $text=&mt($$option[1]); $option=$$option[0]; } else { - $text=$option; + $text=&mt($option); $value='value="'.$option.'"'; } $result.=' '."\n"; } return $result; } @@ -1147,52 +1196,162 @@ sub deletecoorddata { &Apache::lonnet::delenv('imagechoice.'); } +#----------------------------------------------------- browse and search links +sub browse_or_search { + my ($id,$mode,$titleid,$only,$crsonly,$usesearch) = @_; + my $output; + my ($cnum,$cdom) = &Apache::loncommon::crsauthor_url(); + if ($cnum) { + my $form = 'lonhomework'; + my ($element,$bretitleelement,$srchtitleelement); + $element = &get_element($id,$mode); + my %lt = &Apache::lonlocal::texthash ( + uacf => 'Use a course file', + uanf => 'Use a new file', + impo => 'Import', + sear => 'Search', + sefi => 'Select File', + upfi => 'Upload File', + dire => 'Directory', + news => 'New sub-directory', + ); + my ($importcrsres,$uploadfile,$allonly); + if ($only) { + $allonly = $only; + if ($crsonly) { + $allonly .= ','.$crsonly; + } + } elsif ($crsonly) { + $allonly = $crsonly; + } + my ($numdirs,$pickfile) = + &Apache::loncommon::import_crsauthor_form($form,'coursepath_'.$element,'coursefile_'.$element,undef,$allonly,$element); + if ($pickfile) { + $importcrsres=(< + $lt{'uacf'} + $pickfile + + +CRSRES + } + my %subdirs; + my $toppath="/priv/$cdom/$cnum"; + my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; + &Apache::lonnet::recursedirs(1,'priv',$londocroot,$toppath,'',\%subdirs); + my $numcrsdirs = keys(%subdirs); + my $pickdir; + if ($numcrsdirs) { + $pickdir = $lt{'dire'}.'
'; + } else { + $pickdir = ''."\n"; + } + my $uploadfile =(< + $lt{'uanf'} +

+ $pickdir + $lt{'news'}?  + +   + + + +

+ + + + + +CRSUPL + if ($titleid) { + $bretitleelement=",'$only','','".&escape("$titleid\_$Apache::lonxml::curdepth")."'"; + $srchtitleelement=",'".&escape("$titleid\_$Apache::lonxml::curdepth")."'"; + } else { + $bretitleelement=",'$only'"; + } + $output = ''. + &mt('Choose File').''. + ''; + + } else { + $output = &browse($id, $mode, $titleid, $only); + if ($usesearch) { + $output .= ' '.&search($id, $mode, $titleid); + } + } + return $output; +} + #----------------------------------------------------- browse sub browse { # insert a link to call up the filesystem browser (lonindexer) my ($id, $mode, $titleid, $only) = @_; + my %lt = &Apache::lonlocal::texthash ( + se => 'Select', + ); my $form = 'lonhomework'; - my $element; - if (! defined($mode) || $mode eq 'attribute') { - $element = &escape("$id\_$Apache::lonxml::curdepth"); - } elsif ($mode eq 'textnode') { # for data between ... - $element = &escape('homework_edit_'. - $Apache::lonxml::curdepth); - } + my $element = &get_element($id,$mode); my $titleelement; if ($titleid) { $titleelement=",'$only','','".&escape("$titleid\_$Apache::lonxml::curdepth")."'"; } else { $titleelement=",'$only'"; } - my $result = <<"ENDBUTTON"; -Select + return <<"ENDBUTTON"; +$lt{'se'} ENDBUTTON - return $result; } -#----------------------------------------------------- browse +#----------------------------------------------------- search sub search { # insert a link to call up the filesystem browser (lonindexer) my ($id, $mode, $titleid) = @_; my $form = 'lonhomework'; - my $element; - if (! defined($mode) || $mode eq 'attribute') { - $element = &escape("$id\_$Apache::lonxml::curdepth"); - } elsif ($mode eq 'textnode') { # for data between ... - $element = &escape('homework_edit_'. - $Apache::lonxml::curdepth); - } + my $element = &get_element($id,$mode); my $titleelement; if ($titleid) { $titleelement=",'".&escape("$titleid\_$Apache::lonxml::curdepth")."'"; } + my $linktext = &mt('Search'); my $result = <<"ENDBUTTON"; -Search +$linktext ENDBUTTON return $result; } +sub get_element { + my ($id,$mode) = @_; + my $element; + if (! defined($mode) || $mode eq 'attribute') { + $element = &escape("$id\_$Apache::lonxml::curdepth"); + } elsif ($mode eq 'textnode') { # for data between ... + $element = &escape('homework_edit_'. + $Apache::lonxml::curdepth); + } + return $element; +} 1; __END__
'; my ($tagname,$closingtag); if (defined($Apache::edit::inserttag[-2])) { @@ -232,7 +230,10 @@ sub end_table { return $result; } -sub start_spanning_row { return '
';} +sub start_spanning_row { + return '
'; +} sub start_row { return '
'; } sub end_row { return '