--- loncom/interface/londocs.pm 2006/05/30 20:09:25 1.229 +++ loncom/interface/londocs.pm 2006/07/20 01:46:14 1.239 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.229 2006/05/30 20:09:25 raeburn Exp $ +# $Id: londocs.pm,v 1.239 2006/07/20 01:46:14 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -121,21 +121,18 @@ sub authorhosts { sub dumpbutton { my ($home,$other,%outhash)=&authorhosts(); - my $type = 'Course'; - if (defined($env{'course.'.$env{'request.course.id'}.'.type'})) { - $type = $env{'course.'.$env{'request.course.id'}.'.type'}; - } + my $type = &Apache::loncommon::course_type(); if ($home+$other==0) { return ''; } my $output=''; if ($home) { return ''. ''. + &mt('Dump '.$type.' DOCS to Construction Space').'" />'. &Apache::loncommon::help_open_topic('Docs_Dump_Course_Docs'); } else { return''. - &mt('Dump [_1] DOCS to Construction Space: available on other servers', - $type); + &mt('Dump '.$type. + ' DOCS to Construction Space: available on other servers'); } } @@ -148,12 +145,9 @@ sub clean { sub dumpcourse { my ($r) = @_; - my $type = 'Course'; - if (defined($env{'course.'.$env{'request.course.id'}.'.type'})) { - $type = $env{'course.'.$env{'request.course.id'}.'.type'}; - } - $r->print(&Apache::loncommon::start_page('Dump [_1] DOCS to Construction Space', - $type).'
'); + my $type = &Apache::loncommon::course_type(); + $r->print(&Apache::loncommon::start_page('Dump '.$type.' DOCS to Construction Space'). + ''); my ($home,$other,%outhash)=&authorhosts(); unless ($home) { return ''; } my $origcrsid=$env{'request.course.id'}; @@ -243,8 +237,10 @@ sub dumpcourse { 'ids_/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/'.$_}}; $title=~s/:/:/g; $r->print(''.($title?$title:' ').''); - unless ($title) { + if (!$title) { $title=$_; + } else { + $title=~s|/|_|g; } $title=~s/\.(\w+)$//; $title=&clean($title); @@ -261,22 +257,16 @@ sub dumpcourse { # ------------------------------------------------------ Generate "export" button sub exportbutton { - my $type = 'Course'; - if (defined($env{'course.'.$env{'request.course.id'}.'.type'})) { - $type = $env{'course.'.$env{'request.course.id'}.'.type'}; - } + my $type = &Apache::loncommon::course_type(); return ''. ''. + &mt('Export '.$type.' to IMS').'" />'. &Apache::loncommon::help_open_topic('Docs_Export_Course_Docs'); } sub exportcourse { my $r=shift; - my $type = 'Course'; - if (defined($env{'course.'.$env{'request.course.id'}.'.type'})) { - $type = $env{'course.'.$env{'request.course.id'}.'.type'}; - } + my $type = &Apache::loncommon::course_type(); my %discussiontime = &Apache::lonnet::dump('discussiontimes', $env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); my $numdisc = keys %discussiontime; @@ -317,7 +307,7 @@ sub exportcourse { open(OUTPUT, "zip -r $imszip * 2> /dev/null |"); close(OUTPUT); chdir $cwd; - $outcome .= &mt('Download the zip file from IMS [_2] archive
',$imszipfile,lc($type)); + $outcome .= &mt('Download the zip file from IMS '.lc($type).' archive
',$imszipfile,); if ($copyresult) { $outcome .= 'The following errors occurred during export - '.$copyresult; } @@ -331,7 +321,7 @@ sub exportcourse { } else { my $display; $display = ''."\n"; - $display .= &mt('Choose which items you wish to export from your [_1].

',$type); + $display .= &mt('Choose which items you wish to export from your '.$type.'.

'); $display .= ''. '
 Content items'. 'print($display.'
'. '

'. '

'. + &mt('Export '.$type.' DOCS').'" />

'. &Apache::loncommon::end_page()); } } @@ -966,7 +956,6 @@ sub breadcrumbs { my $folderpath; my $cpinfo=''; if ($env{'form.markedcopy_url'}) { - &Apache::lonnet::logthis('Found '.$env{'form.markedcopy_url'}); $cpinfo='&markedcopy_url='. &escape($env{'form.markedcopy_url'}). '&markedcopy_title='. @@ -988,7 +977,8 @@ sub breadcrumbs { } - return &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'nohelp'); + return &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'nohelp', + 'LC_docs_path'); } sub editor { @@ -1173,6 +1163,8 @@ sub editor { $Apache::lonratedt::order[$idx]]= $comment.':'.join(':',@rrest); } +# Devalidate title cache + &Apache::lonnet::devalidate_title_cache(&unescape($rrest[0])); } # Store the changed version ($errtext,$fatal)=&storemap($coursenum,$coursedom, @@ -1185,6 +1177,7 @@ sub editor { # Group import/search if ($env{'form.importdetail'}) { my @imports; + &Apache::lonnet::logthis("imp detail ".$env{'form.importdetail'}); foreach (split(/\&/,$env{'form.importdetail'})) { if (defined($_)) { my ($name,$url)=split(/\=/,$_); @@ -1780,10 +1773,7 @@ sub list_symbs { # sub verifycontent { my ($r) = @_; - my $type = 'Course'; - if (defined($env{'course.'.$env{'request.course.id'}.'.type'})) { - $type = $env{'course.'.$env{'request.course.id'}.'.type'}; - } + my $type = &Apache::loncommon::course_type(); my $loaderror=&Apache::lonnet::overloaderror($r); if ($loaderror) { return $loaderror; } $r->print(&Apache::loncommon::start_page('Verify '.$type.' Documents')); @@ -1795,7 +1785,7 @@ sub verifycontent { if ($hash{$_}=~/\.(page|sequence)$/) { if (($_=~/^src_/) && ($alreadyseen{&unescape($hash{$_})})) { $r->print('
'. - &mt('The following sequence or page is included more than once in your [_1]: ',$type). + &mt('The following sequence or page is included more than once in your '.$type.': '). &unescape($hash{$_}).'
'. &mt('Note that grading records for problems included in this sequence or folder will overlap.
')); } @@ -1820,10 +1810,7 @@ sub devalidateversioncache { sub checkversions { my ($r) = @_; - my $type = 'Course'; - if (defined($env{'course.'.$env{'request.course.id'}.'.type'})) { - $type = $env{'course.'.$env{'request.course.id'}.'.type'}; - } + my $type = &Apache::loncommon::course_type(); $r->print(&Apache::loncommon::start_page("Check $type Document Versions")); my $header=''; my $startsel=''; @@ -1885,7 +1872,7 @@ sub checkversions { &changewarning($r,''); if ($env{'form.timerange'} eq 'all') { # show all documents - $header=&mt('All Documents in [_1]',$type); + $header=&mt('All Documents in '.$type); $allsel=1; foreach (keys %hash) { if ($_=~/^ids\_(\/res\/.+)$/) { @@ -2101,10 +2088,7 @@ sub changewarning { } $url='/adm/coursedocs?'.$pathvar.'='.$path; } - my $crstype = 'course'; - if (defined($env{'course.'.$env{'request.course.id'}.'.type'})) { - $crstype = $env{'course.'.$env{'request.course.id'}.'.type'}; - } + my $course_type = &Apache::loncommon::course_type(); if (!defined($message)) { $message='Changes will become active for your current session after [_1], or the next time you log in.'; } @@ -2115,7 +2099,7 @@ sub changewarning { '" />

'. &mt($message,' '). + &mt('re-initializing '.$course_type).'" onClick="reinit(this.form)" />'). $help{'Caching'}.'

'."\n\n"); } @@ -2125,12 +2109,7 @@ sub handler { &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; return OK if $r->header_only; -# Identify type - Course or Group. - my $type = 'Course'; - if (defined($env{'course.'.$env{'request.course.id'}.'.type'})) { - $type = $env{'course.'.$env{'request.course.id'}.'.type'}; - } - + my $type = &Apache::loncommon::course_type(); # --------------------------------------------- Initialize help topics for this foreach ('Adding_Course_Doc','Main_Course_Documents', @@ -2199,7 +2178,7 @@ sub handler { $showdoc='/'.$1; } unless ($showdoc) { # got called from remote - if (($env{'form.folder'}=~/^default_/) || + if (($env{'form.folder'}=~/^(?:group|default)_/) || ($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) { $forcestandard = 1; } @@ -2234,7 +2213,7 @@ sub handler { $script = ''; $r->print(&Apache::loncommon::start_page("$type Documents", $script, {'force_register' => $showdoc,}). - &Apache::loncommon::help_open_menu('','','','',273,'RAT')); + &Apache::loncommon::help_open_menu('','',273,'RAT')); my %allfiles = (); my %codebase = (); @@ -2330,6 +2309,7 @@ sub handler { 'upld' => 'Upload Document', 'srch' => 'Search', 'impo' => 'Import', + 'book' => 'Import Bookmarks', 'selm' => 'Select Map', 'load' => 'Load Map', 'reco' => 'Recover Deleted Resources', @@ -2366,7 +2346,7 @@ sub handler { if ($env{'form.folder'} eq '' || $env{'form.folder'} eq 'supplemental') { $folderpath='default&'. - &escape(&mt('Main [_1] Documents',$type)); + &escape(&mt('Main '.$type.' Documents')); } } unless ($env{'form.pagepath'}) { @@ -2399,7 +2379,7 @@ $exportbut ENDCOURSEVERIFY $r->print(&Apache::loncommon::help_open_topic('Docs_Adding_Course_Doc', - &mt('Editing the Table of Contents for your [_1]',$type))); + &mt('Editing the Table of Contents for your '.$type))); } # --------------------------------------------------------- Standard documents $r->print(''); @@ -2410,7 +2390,7 @@ ENDCOURSEVERIFY my $folder=$env{'form.folder'}; if ($folder eq '' || $folder eq 'supplemental') { $folder='default'; - $env{'form.folderpath'}='default&'.&escape(&mt('Main [_1] Documents',$type)); + $env{'form.folderpath'}='default&'.&escape(&mt('Main '.$type.' Documents')); } my $postexec=''; if ($folder eq 'default') { @@ -2466,11 +2446,14 @@ $uploadtag $lt{'pubd'}
$uploadtag - + +
- + $help{'Importing_LON-CAPA_Resource'} +
+


$lt{'copm'}
@@ -2483,7 +2466,7 @@ $help{'Load_Map'}
- + ENDFORM unless ($env{'form.pagepath'}) { @@ -2641,7 +2624,7 @@ ENDBLOCK if ($folder =~ /^supplemental$/ && $env{'form.folderpath'} =~ /^default\&/) { $env{'form.folderpath'}='supplemental&'. - &escape(&mt('Supplemental [_1] Documents',$type)); + &escape(&mt('Supplemental '.$type.' Documents')); } &editor($r,$coursenum,$coursedom,$folder,$allowed); if ($allowed) { @@ -2746,7 +2729,7 @@ sub editing_js { function makenewfolder(targetform,folderseq) { var foldername=prompt('Name of New Folder','New Folder'); if (foldername) { - targetform.importdetail.value=foldername+"="+folderseq; + targetform.importdetail.value=escape(foldername)+"="+folderseq; targetform.submit(); } } @@ -2754,7 +2737,7 @@ function makenewfolder(targetform,folder function makenewpage(targetform,folderseq) { var pagename=prompt('Name of New Page','New Page'); if (pagename) { - targetform.importdetail.value=pagename+"="+folderseq; + targetform.importdetail.value=escape(pagename)+"="+folderseq; targetform.submit(); } } @@ -2768,7 +2751,7 @@ function makeexamupload() { var title=prompt('Listed Title for the Uploaded Score'); if (title) { this.document.forms.newexamupload.importdetail.value= - title+'=/res/lib/templates/examupload.problem'; + escape(title)+'=/res/lib/templates/examupload.problem'; this.document.forms.newexamupload.submit(); } } @@ -2777,7 +2760,7 @@ function makesmppage() { var title=prompt('Listed Title for the Page'); if (title) { this.document.forms.newsmppg.importdetail.value= - title+'=/adm/$udom/$uname/$now/smppg'; + escape(title)+'=/adm/$udom/$uname/$now/smppg'; this.document.forms.newsmppg.submit(); } } @@ -2786,7 +2769,7 @@ function makesmpproblem() { var title=prompt('Listed Title for the Problem'); if (title) { this.document.forms.newsmpproblem.importdetail.value= - title+'=/res/lib/templates/simpleproblem.problem'; + escape(title)+'=/res/lib/templates/simpleproblem.problem'; this.document.forms.newsmpproblem.submit(); } } @@ -2795,7 +2778,7 @@ function makedropbox() { var title=prompt('Listed Title for the Drop Box'); if (title) { this.document.forms.newdropbox.importdetail.value= - title+'=/res/lib/templates/DropBox.problem'; + escape(title)+'=/res/lib/templates/DropBox.problem'; this.document.forms.newdropbox.submit(); } } @@ -2804,26 +2787,26 @@ function makebulboard() { var title=prompt('Listed Title for the Bulletin Board'); if (title) { this.document.forms.newbul.importdetail.value= - title+'=/adm/$udom/$uname/$now/bulletinboard'; + escape(title)+'=/adm/$udom/$uname/$now/bulletinboard'; this.document.forms.newbul.submit(); } } function makeabout() { - var user=prompt("Enter user\@domain for User's 'About Me' Page"); + var user=prompt("Enter user:domain for User's 'About Me' Page"); if (user) { var comp=new Array(); - comp=user.split('\@'); + comp=user.split(':'); if ((typeof(comp[0])!=undefined) && (typeof(comp[1])!=undefined)) { if ((comp[0]) && (comp[1])) { this.document.forms.newaboutsomeone.importdetail.value= - 'About '+user+'=/adm/'+comp[1]+'/'+comp[0]+'/aboutme'; + 'About '+escape(user)+'=/adm/'+comp[1]+'/'+comp[0]+'/aboutme'; this.document.forms.newaboutsomeone.submit(); } else { - alert("Not a valid user\@domain"); + alert("Not a valid user:domain"); } } else { - alert("Please enter both user and domain in the format user\@domain"); + alert("Please enter both user and domain in the format user:domain"); } } }