--- loncom/publisher/lonpubdir.pm 2006/11/22 20:50:44 1.97 +++ loncom/publisher/lonpubdir.pm 2008/01/16 12:08:04 1.106 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Construction Space Directory Lister # -# $Id: lonpubdir.pm,v 1.97 2006/11/22 20:50:44 banghart Exp $ +# $Id: lonpubdir.pm,v 1.106 2008/01/16 12:08:04 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -41,6 +41,7 @@ use Apache::lonlocal; use Apache::lonmsg; use Apache::lonmenu; use Apache::lonnet; +use LONCAPA; sub handler { @@ -104,7 +105,7 @@ sub handler { my $numres = 0; # Start off the directory table. - $r->print('<h3>Directory Contents:</h3>'); + $r->print('<h3>'.&mt('Directory Contents:').'</h3>'); $r->print('<table id="LC_browser"><tr>'. '<th>'.&mt('Type').'</th>'. '<th>'.&mt('Actions').'</th>'. @@ -157,7 +158,7 @@ sub getEffectiveUrl { # $fn=~s/^http\:\/\/[^\/]+\///; $fn=~s/^\///; - $fn=~s/\~(\w+)/\/home\/$1\/public_html/; + $fn=~s{~($LONCAPA::username_re)}{/home/$1/public_html}; # Remove trailing / strings (?) @@ -170,7 +171,7 @@ sub getEffectiveUrl { #internal authentication, needs fixup. $fn = $r->uri(); # non users do not get the full path request # through SCRIPT_FILENAME - $fn=~s|^/~(\w+)|/home/$1/public_html|; + $fn=~s{^/~($LONCAPA::username_re)}{/home/$1/public_html}; } } $fn=~s/\/+/\//g; @@ -196,7 +197,7 @@ sub startpage { my $formaction='/priv/'.$uname.$thisdisfn.'/'; $formaction=~s|/+|/|g; my $pagetitle .= &Apache::loncommon::help_open_menu('','',3,'Authoring'). - '<font face="Arial, Helvetica, sans-serif" size="+1"><b>Construction Space</b>:</font> '. + '<font face="Arial, Helvetica, sans-serif" size="+1"><b>'.&mt('Construction Space').'</b>:</font> '. '<form name="dirs" method="post" action="'.$formaction. '" target="_parent"><tt><b>'. &Apache::lonhtmlcommon::crumbs($uname.$thisdisfn.'/','_top','/priv','','+1',1)."</b></tt><br />". @@ -206,20 +207,22 @@ sub startpage { &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction); if ($env{'environment.remote'} eq 'off') { $env{'request.noversionuri'}=$currdir.'/'; - $r->print(&Apache::loncommon::start_page('Construction Space',undef, + $r->print(&Apache::loncommon::start_page(&mt('Construction Space'),undef, {'body_title' => $pagetitle,})); } else { - $r->print(&Apache::loncommon::start_page('Construction Space',undef)); + $r->print(&Apache::loncommon::start_page(&mt('Construction Space'),undef, + { 'only_body' => 1,})); $r->print($pagetitle); } + my $esc_thisdisfn = &Apache::loncommon::escape_single($thisdisfn); my $pubdirscript=(<<ENDPUBDIRSCRIPT); <script type="text/javascript"> -top.document.title = '$thisdisfn/ - LON-CAPA Construction Space'; +top.document.title = '$esc_thisdisfn/ - '.&mt('LON-CAPA Construction Space'); // Store directory location for menu bar to find -parent.lastknownpriv='/~$uname$thisdisfn/'; +parent.lastknownpriv='/~$uname$esc_thisdisfn/'; // Confirmation dialogues @@ -353,17 +356,20 @@ sub dircontrols { ncrf => 'New custom rights file', nsty => 'New style file', nlib => 'New library file', + nbt => 'New bridgetask file', nsub => 'New subdirectory', renm => 'Rename current file to', move => 'Move current file to', copy => 'Copy current file to', type => 'Type Name Here', - go => 'Go', + go => 'Go', prnt => 'Print contents of directory', crea => 'Create a new directory or LON-CAPA document', acti => 'Actions for current directory', - updc => 'Upload a new document' + updc => 'Upload a new document', + pick => 'Please select an action to perform using the new filename', ); + my $mytype = $lt{'type'}; # avoid conflict with " and ' in javascript $r->print(<<END); <table id="LC_cstr_controls"> <tr> @@ -402,18 +408,29 @@ sub dircontrols { <form name="fileaction" method="post" action="/adm/cfile" target="_parent"> <span style="white-space: nowrap"> <input type="hidden" name="filename" value="/~$uname$thisdisfn/" /> - <select name="action"> - <option value="Select Action">$lt{'sela'}</option> - <option value="newfile">$lt{'nfil'}:</option> - <option value="newhtmlfile">$lt{'nhtm'}:</option> - <option value="newproblemfile">$lt{'nprb'}:</option> - <option value="newpagefile">$lt{'npag'}:</option> - <option value="newsequencefile">$lt{'nseq'}:</option> - <option value="newrightsfile">$lt{'ncrf'}:</option> - <option value="newstyfile">$lt{'nsty'}:</option> - <option value="newlibraryfile">$lt{'nlib'}:</option> - <option value="newdir">$lt{'nsub'}:</option> - </select> <input type="text" name="newfilename" value="Type Name Here" onfocus="if (this.value == 'Type Name Here') this.value=''" /> <input type="button" value="Go" onclick="document.fileaction.submit()" /> + <script type="text/javascript"> + function validate_go() { + var selected = document.fileaction.action.selectedIndex; + if (selected == 0) { + alert('$lt{'pick'}'); + } else { + document.fileaction.submit(); + } + } + </script> + <select name="action"> + <option value="none">$lt{'sela'}</option> + <option value="newfile">$lt{'nfil'}:</option> + <option value="newhtmlfile">$lt{'nhtm'}:</option> + <option value="newproblemfile">$lt{'nprb'}:</option> + <option value="newpagefile">$lt{'npag'}:</option> + <option value="newsequencefile">$lt{'nseq'}:</option> + <option value="newrightsfile">$lt{'ncrf'}:</option> + <option value="newstyfile">$lt{'nsty'}:</option> + <option value="newtaskfile">$lt{'nbt'}:</option> + <option value="newlibraryfile">$lt{'nlib'}:</option> + <option value="newdir">$lt{'nsub'}:</option> + </select> <input type="text" name="newfilename" value="$lt{'type'}" onfocus="if (this.value == '$mytype') this.value=''" /> <input type="button" value="Go" onclick="validate_go();" /> </span> </form> </td> @@ -514,9 +531,9 @@ sub putdirectory { %Apache::lonpublisher::metadatafields=(); %Apache::lonpublisher::metadatakeys=(); my $construct=$here; - $construct=~s:^/priv/(\w+)$:/home/$1/public_html:; + $construct=~s{^/priv/($LONCAPA::username_re)$}{/home/$1/public_html}; my $dirpath = $here; - $dirpath=~s:^/priv/:/~:; + $dirpath=~s{^/priv/}{/~}; &Apache::lonpublisher::metaeval(&Apache::lonnet::getfile( $construct.'/'.$dirname.'/default.meta' )); @@ -608,7 +625,6 @@ sub putresource { $title = '<a href="/res/'.$targetdir.'/'.$filename. '.meta" target="cat">'. &getTitleString($targetdir.'/'.$filename).'</a>'; - &Apache::lonnet::logthis("same $same meta $meta_same"); if ($same) { if (&Apache::lonnet::metadata($targetdir.'/'.$filename,'obsolete')) { $pubstatus = 'obsolete'; @@ -674,7 +690,7 @@ sub putresource { '<td>'.($filename=~/[\#\~]$/?' ': '<img src="'.&Apache::loncommon::icon($filename).'" alt="" />').'</td>'. '<td>'.$pub_select.'</td>'. - '<td><span class="LC_filename"> '. + '<td><span class="LC_filename">'. '<a href="'.$linkdir.'/'.$filename.'" target="_parent">'. $filename.'</a></span>'.$editlink2.$editlink. '</td>'. @@ -715,7 +731,7 @@ sub create_pubselect { <input type="hidden" name="filename" value="/~'. &HTML::Entities::encode($uname.$thisdisfn.'/'.$filename,'<>&"').'" /> <input type="hidden" name="dispfilename" value="'. - &HTML::Entities::encode($filename).'"</form>'; + &HTML::Entities::encode($filename).'" /></form>'; $$numres ++; }