--- loncom/homework/structuretags.pm 2001/02/19 21:02:59 1.33 +++ loncom/homework/structuretags.pm 2015/09/14 13:45:19 1.539 @@ -1,310 +1,3096 @@ -# The LearningOnline Network with CAPA # +JS +} + +sub setmode_javascript { + return <<"ENDSCRIPT"; + +ENDSCRIPT +} + +sub page_start { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$name, + $extra_head)=@_; + my %found; + foreach my $taginside (@$tagstack) { + foreach my $taglookedfor ('html','body','form') { + if ($taginside =~ /^$taglookedfor$/i) {$found{$taglookedfor} = 1;} + } + } + + if ($target eq 'tex') { + return + &Apache::londefdef::start_html($target,$token,$tagstack, + $parstack,$parser,$safeeval); + } + + $extra_head .= &homework_js(). + &Apache::lonhtmlcommon::dragmath_js("EditMathPopup"); + if (&Apache::lonhtmlcommon::htmlareabrowser()) { + my %textarea_args = ( + dragmath => 'math', + ); + $extra_head .= &Apache::lonhtmlcommon::htmlareaselectactive(\%textarea_args); + } + my $is_task = ($env{'request.uri'} =~ /\.task$/); + my ($needs_upload,$partlist); + my ($symb)= &Apache::lonnet::whichuser(); + my ($map,$resid,$resurl)=&Apache::lonnet::decode_symb($symb); + if ($is_task) { + $extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js(); + } else { + if (&Apache::lonnet::EXT("resource.$Apache::inputtags::part.uploadedfiletypes") ne '') { + unless ($env{'request.state'} eq 'construct') { + my $navmap = Apache::lonnavmaps::navmap->new(); + if (ref($navmap)) { + my $mapres = $navmap->getResourceByUrl($map); + my $is_page; + if (ref($mapres)) { + $is_page = $mapres->is_page(); + } + unless ($is_page) { + $needs_upload = 1; + } + if ((ref($tagstack) eq 'ARRAY') && ($tagstack->[-1] eq 'problem')) { + my $res = $navmap->getBySymb($symb); + if (ref($res)) { + $partlist = $res->parts(); + } + } + } + } + } else { + unless ($env{'request.state'} eq 'construct') { + my $navmap = Apache::lonnavmaps::navmap->new(); + if (ref($navmap)) { + my $mapres = $navmap->getResourceByUrl($map); + my $is_page; + if (ref($mapres)) { + $is_page = $mapres->is_page(); + } + if ($is_page) { + if ((ref($tagstack) eq 'ARRAY') && ($tagstack->[-1] eq 'problem')) { + my $res = $navmap->getBySymb($symb); + if (ref($res)) { + $partlist = $res->parts(); + } + } + } else { + my $res = $navmap->getBySymb($symb); + if (ref($res)) { + $partlist = $res->parts(); + if (ref($partlist) eq 'ARRAY') { + foreach my $part (@{$partlist}) { + my @types = $res->responseType($part); + my @ids = $res->responseIds($part); + for (my $i=0; $i < scalar(@ids); $i++) { + if ($types[$i] eq 'essay') { + my $partid = $part.'_'.$ids[$i]; + if (&Apache::lonnet::EXT("resource.$partid.uploadedfiletypes") ne '') { + $needs_upload = 1; + last; + } + } + } + } + } + } + } + } + } + } + if ($needs_upload) { + $extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js() + .''; + } + } + + my %body_args; + if (defined($found{'html'})) { + $body_args{'skip_phases'}{'head'}=1; + } else { + + $extra_head .= &Apache::lonhtmlcommon::spellheader(); + + $extra_head .= &Apache::londefdef::generate_css_links(); + + if ($env{'request.state'} eq 'construct') { + $extra_head.=&Apache::edit::js_change_detection(). + "\n"; + if ($target eq 'edit') { + $extra_head .= &Apache::edit::js_update_linknum(); + } + } + } + + my $pageheader = ''; + if (defined($found{'body'})) { + $body_args{'skip_phases'}{'body'}=1; + } elsif (!defined($found{'body'}) + && $env{'request.state'} eq 'construct') { + if ($target eq 'web' || $target eq 'edit') { + # Breadcrumbs for Authoring Space + &Apache::lonhtmlcommon::clear_breadcrumbs(); + &Apache::lonhtmlcommon::add_breadcrumb({ + 'text' => 'Authoring Space', + 'href' => &Apache::loncommon::authorspace($env{'request.uri'}), + }); + # breadcrumbs (and tools) will be created + # in start_page->bodytag->innerregister + +# FIXME Where are we? +# &Apache::lonhtmlcommon::add_breadcrumb({ +# 'text' => 'Problem Editing', # 'Problem Testing' +# 'href' => '', +# }); + $pageheader =&Apache::loncommon::head_subbox( + &Apache::loncommon::CSTR_pageheader()); + } + } elsif (!defined($found{'body'})) { + my %add_entries; + my $background=&Apache::lonxml::get_param('background',$parstack, + $safeeval); + if ($background ne '' ) { + $add_entries{'background'} = $background; + } + + my $bgcolor=&Apache::lonxml::get_param('bgcolor',$parstack, + $safeeval); + if ($bgcolor eq '' ) { $bgcolor = '#FFFFFF'; } + + $body_args{'bgcolor'} = $bgcolor; + # $body_args{'no_title'} = 1; + $body_args{'force_register'} = 1; + $body_args{'add_entries'} = \%add_entries; + if ( $env{'request.state'} eq 'construct') { + $body_args{'only_body'} = 1; + } elsif ($target eq 'web') { + $body_args{'print_suppress'} = 1; + } + } + $body_args{'no_auto_mt_title'} = 1; + my $page_start = &Apache::loncommon::start_page($name,$extra_head, + \%body_args); + $page_start .= $pageheader; + if (!defined($found{'body'}) + && $env{'request.state'} ne 'construct' + && ($target eq 'web' || $target eq 'webgrade')) { + + my ($symb,undef,undef,undef,$publicuser)= &Apache::lonnet::whichuser(); + if ($symb eq '' && !$publicuser) { + $page_start .= '
' + .&mt('Browsing resource, all submissions are temporary.') + .'
'; + } + } + + if (!defined($found{'body'}) && $env{'request.state'} ne 'construct') { + $page_start .= &Apache::lonxml::message_location(); + } + my $form_tag_start; + if (!defined($found{'form'})) { + $form_tag_start='\n".&Apache::loncommon::end_page(); +} + +sub option { + my ($value,$name) = @_; + my $result ="