--- loncom/interface/londocs.pm 2008/12/15 06:09:37 1.322 +++ loncom/interface/londocs.pm 2009/09/24 22:15:27 1.325.4.2 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.322 2008/12/15 06:09:37 raeburn Exp $ +# $Id: londocs.pm,v 1.325.4.2 2009/09/24 22:15:27 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -44,6 +44,7 @@ use HTML::Entities; use GDBM_File; use Apache::lonlocal; use Cwd; +use Apache::londocsgci(); use LONCAPA qw(:DEFAULT :match); my $iconpath; @@ -280,6 +281,15 @@ sub exportcourse { $env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); my $numdisc = keys(%discussiontime); my $navmap = Apache::lonnavmaps::navmap->new(); + if (!defined($navmap)) { + $r->print(&Apache::loncommon::start_page('Export '.lc($type).' to IMS content package'). + '<h2>IMS Export Failed</h2>'. + '<div class="LC_error">'. + &mt('Unable to retrieve information about course contents'). + '</div><a href="/adm/coursedocs">'.&mt('Return to Course Editor').'</a>'); + &Apache::lonnet::logthis('IMS export failed - could not create navmap object in '.lc($type).':'.$env{'request.course.id'}); + return; + } my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef); my $curRes; my $outcome; @@ -392,10 +402,10 @@ sub exportcourse { $display .= '<img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" /><img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" />'."\n"; } if ($curRes->is_sequence()) { - $display .= '<img src="/adm/lonIcons/navmap.folder.open.gif"> '."\n"; + $display .= '<img src="/adm/lonIcons/navmap.folder.open.gif" alt="" /> '."\n"; $lastcontainer = $count + $startcount + $boards; } elsif ($curRes->is_page()) { - $display .= '<img src="/adm/lonIcons/navmap.page.open.gif"> '."\n"; + $display .= '<img src="/adm/lonIcons/navmap.page.open.gif" alt="" /> '."\n"; $lastcontainer = $count + $startcount + $boards; } my $currelem = $count+$boards+$startcount; @@ -469,10 +479,9 @@ function containerCheck(item) { $scripttag)); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Export '.lc($type).' to IMS content package')); $r->print($display.'</table>'. - '<p><input type="hidden" name="finishexport" value="1">'. + '<p><input type="hidden" name="finishexport" value="1" />'. '<input type="submit" name="exportcourse" value="'. - &mt('Export '.$type.' DOCS').'" /></p></form>'. - &Apache::loncommon::end_page()); + &mt('Export '.$type.' DOCS').'" /></p></form>'); } } @@ -1219,7 +1228,7 @@ sub update_paste_buffer { &Apache::lonnet::appenv({'docs.markedcopy_supplemental' => $title}); ($title) = &parse_supplemental_title($title); } elsif ($env{'docs.markedcopy_supplemental'}) { - &Apache::lonnet::delenv('docs\\.markedcopy_supplemental'); + &Apache::lonnet::delenv('docs.markedcopy_supplemental'); } $url=~s{http(:|:)//https(:|:)//}{https$2//}; @@ -1280,7 +1289,7 @@ sub do_paste_from_buffer { # Maps need to be copied first if (($url=~/\.(page|sequence)$/) && ($url=~/^\/uploaded\//)) { $title=&mt('Copy of').' '.$title; - my $newid=$$.time; + my $newid=$$.int(rand(100)).time; my ($oldid,$ext) = ($url=~/^(.+)\.(\w+)$/); if ($oldid =~ m{^(/uploaded/\Q$coursedom\E/\Q$coursenum\E/)(\D+)(\d+)$}) { my $path = $1; @@ -1323,7 +1332,7 @@ sub do_paste_from_buffer { } # published maps can only exists once, so remove it from paste buffer when done if (($url=~/\.(page|sequence)$/) && ($url=~m {^/res/})) { - &Apache::lonnet::delenv('docs\\.markedcopy'); + &Apache::lonnet::delenv('docs.markedcopy'); } if ($url=~ m{/smppg$}) { my $db_name = &Apache::lonsimplepage::get_db_name($url); @@ -1771,7 +1780,7 @@ sub entryline { '<select name="newpos" onChange="this.form.submit()">'; for (my $i=1;$i<=$#LONCAPA::map::order+1;$i++) { if ($i==$incindex) { - $selectbox.='<option value="" selected="1">('.$i.')</option>'; + $selectbox.='<option value="" selected="selected">('.$i.')</option>'; } else { $selectbox.='<option value="'.$i.'">'.$i.'</option>'; } @@ -1895,6 +1904,7 @@ END } my $orig_url = $url; + $orig_url=~s{http(:|:)//https(:|:)//}{https$2//}; my $external = ($url=~s{^http(|s)(:|:)//}{/adm/wrapper/ext/}); if ((!$isfolder) && ($residx) && ($folder!~/supplemental/) && (!$ispage)) { my $symb=&Apache::lonnet::symbclean( @@ -1995,9 +2005,9 @@ END 'hd' => 'Hidden', 'ec' => 'URL hidden'); my $enctext= - ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="1"':''); + ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="checked"':''); my $hidtext= - ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="1"':''); + ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="checked"':''); $line.=(<<ENDPARMS); <td class="LC_docs_entry_parameter"> $form_start @@ -2089,7 +2099,7 @@ sub checkonthis { if (($errorcount) || ($warningcount)) { if ($errorcount) { - $r->print('<img src="/adm/lonMisc/bomb.gif" /><span class="LC_error">'. + $r->print('<img src="/adm/lonMisc/bomb.gif" alt="" /><span class="LC_error">'. &mt('[quant,_1,error]',$errorcount).'</span>'); } if ($warningcount) { @@ -2114,7 +2124,7 @@ sub checkonthis { unless ($url=~/\$/) { $r->print('<span class="LC_error">'.&mt('not found').'</b></span>'); } else { - $r->print('<span class="LC_unknown">'.&mt('unable to verify variable URL').'</span>'); + $r->print('<span class="LC_error">'.&mt('unable to verify variable URL').'</span>'); } } else { $r->print('<span class="LC_error">'.&mt('access denied').'</span>'); @@ -2136,19 +2146,27 @@ List Symbs sub list_symbs { my ($r) = @_; + my $type = &Apache::loncommon::course_type(); $r->print(&Apache::loncommon::start_page('Symb List')); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Symb List')); my $navmap = Apache::lonnavmaps::navmap->new(); - $r->print("<pre>\n"); - foreach my $res ($navmap->retrieveResources()) { - $r->print($res->compTitle()."\t".$res->symb()."\n"); + if (!defined($navmap)) { + $r->print('<h2>'.&mt('Retrieval of List Failed').'</h2>'. + '<div class="LC_error">'. + &mt('Unable to retrieve information about course contents'). + '</div>'); + &Apache::lonnet::logthis('Symb list failed - could not create navmap object in '.lc($type).':'.$env{'request.course.id'}); + } else { + $r->print("<pre>\n"); + foreach my $res ($navmap->retrieveResources()) { + $r->print($res->compTitle()."\t".$res->symb()."\n"); + } + $r->print("\n</pre>\n"); } - $r->print("\n</pre>\n"); $r->print('<a href="/adm/coursedocs">'.&mt('Return to DOCS').'</a>'); } - sub verifycontent { my ($r) = @_; my $type = &Apache::loncommon::course_type(); @@ -2506,6 +2524,15 @@ sub handler { return OK if $r->header_only; my $type = &Apache::loncommon::course_type(); + my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'}; + if ($coursedom eq 'gcitest') { + my $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'}); + if ($allowed) { + &concept_test_builder($r); + return OK; + } + } + # --------------------------------------------- Initialize help topics for this foreach my $topic ('Adding_Course_Doc','Main_Course_Documents', 'Adding_External_Resource','Navigate_Content', @@ -2632,9 +2659,10 @@ sub handler { } # -------------------------------------------------------------------- Body tag $script = '<script type="text/javascript">'."\n".$script."\n".'</script>'; - my @brcrum = [{href=>"/adm/createuser",text=>"$type Documents"}]; + my $brcrum = [{href=>"/adm/createuser",text=>"$type Documents"}]; $r->print(&Apache::loncommon::start_page("$type Documents", $script, - {'force_register' => $showdoc, bread_crumbs => @brcrum}). + {'force_register' => $showdoc, + 'bread_crumbs' => $brcrum}). &Apache::loncommon::help_open_menu('','',273,'RAT')); my %allfiles = (); @@ -2745,13 +2773,13 @@ sub handler { 'extr' => 'External Resource', 'syll' => 'Syllabus', 'navc' => 'Navigate Contents', - 'sipa' => 'Simple Page', + 'sipa' => 'Simple Course Page', 'sipr' => 'Simple Problem', 'drbx' => 'Drop Box', 'scuf' => 'Score Upload Form', - 'bull' => 'Bulletin Board', - 'mypi' => 'My Personal Info', - 'grpo' => 'Group Files', + 'bull' => 'Discussion Board', + 'mypi' => 'My Personal Information Page', + 'grpo' => 'Group Portfolios', 'rost' => 'Course Roster', 'abou' => 'About User', 'imsf' => 'Import IMS package', @@ -3121,7 +3149,7 @@ ENDBLOCK </span> <br /><br /> $lt{'comment'}:<br /> -<textarea cols=50 rows=4 name='comment'> +<textarea cols="50" rows="4" name="comment"> </textarea> <br /> <input type="hidden" name="folderpath" value="$path" /> @@ -3196,8 +3224,21 @@ ENDSUPFORM } $r->print(&Apache::loncommon::end_page()); return OK; -} +} +sub concept_test_builder { + my ($r) = @_; + $r->print(&Apache::loncommon::start_page('Assemble Test')); + &Apache::londocsgci::setdefaults(); + if ($env{'form.phase'} eq 'storemap') { + &Apache::londocsgci::evaluate(); + &Apache::londocsgci::store($r); + } + &Apache::londocsgci::load(); + &Apache::londocsgci::listresources($r); + $r->print(&Apache::loncommon::end_page()); + return; +} sub editing_js { my ($udom,$uname) = @_; @@ -3208,10 +3249,10 @@ sub editing_js { p_mnp => 'Name of New Page', t_mnp => 'New Page', p_mxu => 'Title for the Uploaded Score', - p_msp => 'Title for the Page', + p_msp => 'Name of the Simple Course Page', p_msb => 'Title for the Problem', p_mdb => 'Title for the Drop Box', - p_mbb => 'Title for the Bulletin Board', + p_mbb => 'Title for the Discussion Board', p_mab => "Enter user:domain for User's 'About Me' Page", p_mab2 => "About [_99]", p_mab_alrt1 => 'Not a valid user:domain',