[LON-CAPA-cvs] cvs: loncom /interface loncommon.pm lonmenu.pm /publisher lonconstruct.pm lonpubdir.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Fri, 29 Oct 2004 18:40:40 -0000
This is a MIME encoded message
--raeburn1099075240
Content-Type: text/plain
raeburn Fri Oct 29 14:40:40 2004 EDT
Modified files:
/loncom/publisher lonconstruct.pm lonpubdir.pm
/loncom/interface loncommon.pm lonmenu.pm
Log:
Changes to allow construction space operations without need for Remote Control. The top frame - publisher.html is not used in inline mode. Work in progress.
--raeburn1099075240
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20041029144040.txt"
Index: loncom/publisher/lonconstruct.pm
diff -u loncom/publisher/lonconstruct.pm:1.22 loncom/publisher/lonconstruct.pm:1.23
--- loncom/publisher/lonconstruct.pm:1.22 Wed Mar 31 00:24:00 2004
+++ loncom/publisher/lonconstruct.pm Fri Oct 29 14:40:40 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Construction Space Page Wrapper for Construction
#
-# $Id: lonconstruct.pm,v 1.22 2004/03/31 05:24:00 albertel Exp $
+# $Id: lonconstruct.pm,v 1.23 2004/10/29 18:40:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -40,7 +40,7 @@
use strict;
-use Apache::Constants qw(:common :http :methods);
+use Apache::Constants qw(:common :http :methods REDIRECT);
use Apache::lonnet;
use Apache::Log ();
use HTML::Entities();
@@ -85,8 +85,6 @@
}
-
-
# ================================================================ Main Handler
sub handler {
@@ -119,6 +117,16 @@
if ($ENV{'form.forceColoredit'}) {
$lowerframe.='?editmode=Edit&problemmode=Edit';
}
+
+#
+# Checking to see if we should display the topframe
+#
+ my $toprows = 0;
+ my $topsrc = '';
+ if ($ENV{'environment.remote'} eq 'on') {
+ $toprows = '110';
+ $topsrc = '/adm/localize/adm/publisher.html';
+ }
$r->print(<<ENDPAGE);
<html>
<head><title>LON-CAPA Construction Space</title>
@@ -126,8 +134,8 @@
var lastknownpriv="$lowerframe";
</script>
</head>
-<frameset rows="110,*" border="0">
-<frame src='/adm/localize/adm/publisher.html'>
+<frameset rows="$toprows,*" border="0">
+<frame src='$topsrc'>
<frame src="$lowerframe" name="LONCAPAToBePublished">
</frameset>
</html>
Index: loncom/publisher/lonpubdir.pm
diff -u loncom/publisher/lonpubdir.pm:1.63 loncom/publisher/lonpubdir.pm:1.64
--- loncom/publisher/lonpubdir.pm:1.63 Fri Aug 20 12:29:15 2004
+++ loncom/publisher/lonpubdir.pm Fri Oct 29 14:40:40 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Construction Space Directory Lister
#
-# $Id: lonpubdir.pm,v 1.63 2004/08/20 16:29:15 www Exp $
+# $Id: lonpubdir.pm,v 1.64 2004/10/29 18:40:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -38,6 +38,8 @@
use Apache::lonhtmlcommon();
use Apache::lonlocal;
use Apache::lonmsg;
+use Apache::lonmenu;
+use Apache::lonnet;
sub handler {
@@ -89,13 +91,24 @@
my %bombs=&Apache::lonmsg::all_url_author_res_msg($uname,$udom);
&startpage($r, $uname, $udom, $thisdisfn); # Put out the start of page.
+
+ &dircontrols($r,$uname,$udom,$thisdisfn); # Put out actions for directory,
+ # browse/upload + new file page.
+
+ &resourceactions($r,$uname,$udom,$thisdisfn); #Put out form used for printing/deletion etc.
+
+ my $numdir = 0;
+ my $numres = 0;
# Start off the directory table.
-
- $r->print('<table border="0" cellspacing="2" cellpadding="2">'.
- '<tr><th> </th><th>'.&mt('Actions').'</th><th>'.&mt('Name').'</th><th>'.
- &mt('Title').'</th>'.
- '<th>'.&mt('Status').'</th><th>'.&mt('Last Modified').
+ $r->print('<h3>Directory Contents:</h3>');
+ $r->print('<table border="0" cellspacing="2" cellpadding="2"><tr>'.
+ '<th bgcolor="#DDDDDD">'.&mt('Type').'</th>'.
+ '<th bgcolor="#DDDDDD">'.&mt('Actions').'</th>'.
+ '<th bgcolor="#DDDDDD">'.&mt('Name').'</th>'.
+ '<th bgcolor="#DDDDDD">'.&mt('Title').'</th>'.
+ '<th bgcolor="#DDDDDD">'.&mt('Status').'</th>'.
+ '<th bgcolor="#DDDDDD">'.&mt('Last Modified').
'</th></tr>');
my $filename;
@@ -112,10 +125,10 @@
my $extension='';
if ($filename=~/\.(\w+)$/) { $extension=$1; }
if ($cmode&$dirptr) {
- putdirectory($r, $thisdisfn, $linkdir, $filename, $cmtime,$targetdir,\%bombs);
+ putdirectory($r, $thisdisfn, $linkdir, $filename, $cmtime,$targetdir,\%bombs,\$numdir);
} elsif (&Apache::loncommon::fileembstyle($extension) ne 'hdn') {
- putresource($r, $uname, $filename, $thisdisfn, $resdir,
- $targetdir, $linkdir, $cmtime,\%bombs);
+ putresource($r, $udom, $uname, $filename, $thisdisfn, $resdir,
+ $targetdir, $linkdir, $cmtime,\%bombs,\$numres);
} else {
# "hidden" extension and not a directory, so hide it away.
}
@@ -173,13 +186,27 @@
sub startpage {
my ($r, $uname, $udom, $thisdisfn) = @_;
-
+ my $currdir = '/priv/'.$uname.$thisdisfn;
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
-
+
$r->print('<html><head><title>LON-CAPA Construction Space</title></head>');
-
- $r->print(&Apache::loncommon::bodytag(undef,undef,undef,1));
+
+ my $pagetitle;
+ my $formaction='/priv/'.$uname.'/'.$thisdisfn;
+ $formaction=~s/\/+/\//g;
+ $pagetitle .= ('<form name="dirs" method="post" action="'.$formaction
+ .'" target="_parent">'.
+ '<font face="Arial, Helvetica, sans-serif"><b>Construction Space</b>:</font> '.
+ &Apache::lonhtmlcommon::crumbs($uname.'/'.$thisdisfn,'top','/priv','','-1').
+ &Apache::lonhtmlcommon::select_recent('construct','recent',
+ 'this.form.action=this.form.recent.value;this.form.submit()').
+ '</form>');
+ &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction);
+
+ $r->print(&Apache::loncommon::bodytag('Construction Space',undef,undef,undef,undef,undef,$pagetitle));
+
+ $r->print(&Apache::loncommon::help_open_menu('','','','',3,'Authoring'));
my $pubdirscript=(<<ENDPUBDIRSCRIPT);
<script>
// Store directory location for menu bar to find
@@ -188,49 +215,243 @@
// Confirmation dialogues
+ function currdiract(theform) {
+ if (theform.dirtask.options[theform.dirtask.selectedIndex].value == 'publish') {
+ document.publishdir.filename.value = theform.filename.value
+ pubdir(document.publishdir)
+ }
+ if (theform.dirtask.options[theform.dirtask.selectedIndex].value == 'publishsub') {
+ document.publishdir.filename.value = theform.filename.value
+ pubrecdir(document.publishdir)
+ }
+ if (theform.dirtask.options[theform.dirtask.selectedIndex].value == 'editcat') {
+ window.location=theform.filename.value+'default.meta'
+ }
+ if (theform.dirtask.options[theform.dirtask.selectedIndex].value == 'printdir' ) {
+ document.printdir.postdata.value=theform.filename.value
+ document.printdir.submit();
+ }
+ }
+
function pubdir(theform) {
if (confirm('Publish complete directory?')) {
+ forcepub(theform)
theform.submit();
}
}
- function pubrecdir(theform) {
+ function pubrecdir(theform) {
if (confirm('Publish directory and all subdirectories?')) {
+ forcepub(theform);
theform.pubrec.value='1';
theform.submit();
}
}
+
+ function forcepub(theform) {
+ if (confirm('Force publication of unmodified files? - OK=yes; Cancel=No.')) {
+ theform.forcerepub.value="ON";
+ }
+ }
+
+ function checkUpload(theform) {
+ if (theform.file == '') {
+ alert("Please use 'Browse..' to choose a file first, before uploading")
+ return
+ }
+ theform.submit()
+ }
+
+ function SetPubDir(theform,printForm) {
+ if (theform.diraction.options[theform.diraction.selectedIndex].value == "open") {
+ window.location = theform.filename.value
+ return
+ }
+ if (theform.diraction.options[theform.diraction.selectedIndex].value == "publish") {
+ pubdir(theform)
+ }
+ if (theform.diraction.options[theform.diraction.selectedIndex].value == "publishsub") {
+ pubrecdir(theform)
+ }
+ if (theform.diraction.options[theform.diraction.selectedIndex].value == "editcat") {
+ window.location=theform.filename.value+'default.meta'
+ }
+ if (theform.diraction.options[theform.diraction.selectedIndex].value == "print") {
+ theform.action = '/adm/printout'
+ theform.postdata.value = theform.filename.value
+ theform.submit()
+ }
+ return
+ }
+ function SetResChoice(theform) {
+ var activity = theform.reschoice.options[theform.reschoice.selectedIndex].value
+ if ((activity == 'rename') || (activity == 'copy') || (activity == 'move')) {
+ changename(theform,activity)
+ }
+ if (activity == 'publish') {
+ var pubform = document.pubresource
+ pubform.filename.value = theform.filename.value
+ pubform.submit()
+ }
+ if (activity == 'delete') {
+ var delform = document.delresource
+ delform.filename.value = theform.filename.value
+ if (confirm("Are you sure you want to delete "+theform.filename.value+"?")) {
+ delform.submit()
+ }
+ }
+ if (activity == 'obsolete') {
+ alert("Mark as obsolete - still to be implemented")
+ }
+ if (activity == 'print') {
+ document.printresource.postdata = theform.filename.value
+ document.printresource.curseed = getcurseed()
+ document.printresource.problemtype = getproblemtype()
+ document.printresource.submit()
+ }
+ if (activity == 'retrieve') {
+ retrieveres.filename.value = theform.filename.value
+ retrieveres.submit()
+ }
+ return
+ }
+ function changename(theform,activity) {
+ var newname=prompt('New Name');
+ if (newname == "" || !newname) {
+ return
+ }
+ document.moveresource.newfilename.value = newname
+ document.moveresource.filename.value = theform.filename.value
+ document.moveresource.action.value = activity
+ document.moveresource.submit();
+ }
+
+ function getcurseed() {
+ if (parent.document.lonhomework
+ &&
+ parent.document.lonhomework.rndseed
+ &&
+ parent.document.lonhomework.rndseed.value) {
+ return parent.document.lonhomework.rndseed.value;
+ }
+ return 0;
+ }
+
+ function getproblemtype() {
+ if (parent.document.lonhomework) {
+ var optionelement;
+ var valueIndex=0;
+ for (var optionIndex=0;
+ optionIndex < parent.document.lonhomework.problemtype.options.length;
+ optionIndex++)
+ {
+ optionElement=parent.document.lonhomework.problemtype.options[optionIndex];
+ if (optionElement.selected) {
+ return optionElement.value;
+ }
+ }
+ }
+ return 0;
+ }
</script>
ENDPUBDIRSCRIPT
+ $r->print($pubdirscript);
- $r->print('<h2>'.&mt('Construction Space Directory').'</h2>'.
- '<script type="text/javascript">top.document.title = \''.
- $thisdisfn.'/ - LON-CAPA Construction Space\';</script>'.
- $pubdirscript.
- '<form method="post" action="/adm/publish" target="_parent">'.
- '<table><tr><td><input type="hidden" name="filename" value="/~'.
- $uname.$thisdisfn.'/" />'.
- '<input type="button" onClick="pubdir(this.form);" value="'.
-&mt('Publish Directory').'" />'.
- '<input type="hidden" name="pubrec" value="" />'.
- '<input type="button" onClick="pubrecdir(this.form);" value="'.
-&mt('Publish Directory and Sub Directories').'" /></td><td>'.
-'<input type="button" onClick="window.location='."'/~".
- $uname.$thisdisfn."/default.meta'".'" value="'.
-&mt('Edit Directory Catalog Information').'" /></td></tr><tr><td><input type="checkbox" name="forcerepub" /> '.&mt('Force publication of unmodified files').'.</td><td> </td></tr></table></form>');
-
if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {
$r->print('<h3>'.&mt('Co-Author').': '.$uname.' at '.$udom.
'</h3>');
}
- my $formaction='/priv/'.$uname.'/'.$thisdisfn.'/';
- $formaction=~s/\/+/\//g;
- $r->print('<form name="dirs" method="post" action="'.$formaction
- .'" target="_top">'.
- &Apache::lonhtmlcommon::crumbs($uname.'/'.$thisdisfn.'/','_top','/priv').
- &Apache::lonhtmlcommon::select_recent('construct','recent',
- 'this.form.action=this.form.recent.value;this.form.submit()').
- '</form>');
- &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction);
+}
+
+sub dircontrols {
+ my ($r,$uname,$udom,$thisdisfn) = @_;
+ $r->print(<<END);
+ <table cellspacing="4" cellpadding="4" width="100%">
+ <tr>
+ <th bgcolor="#DDDDDD">Actions for current directory</th>
+ <th bgcolor="#DDDDDD">Upload a new document</th>
+ <th bgcolor="#DDDDDD">Create a new directory or LON-CAPA document</th>
+ </tr>
+ <tr>
+ <td bgcolor="#ccddaa" valign="top" align="center">
+ <form name="curractions" method="post" action="">
+ <select name="dirtask" onChange="currdiract(this.form)">
+ <option>Select action</option>
+ <option value="publish">Publish directory</option>
+ <option value="publishsub">Publish with subdirectories</option>
+ <option value="editcat">Edit catalog information</option>
+ <option value="printdir">Print contents of directory</option>
+ </select>
+ <input type="hidden" name="filename" value="/~$uname$thisdisfn/" />
+ </form>
+ <form name="publishdir" method="post" action="/adm/publish" target="_parent">
+ <input type="hidden" name="pubrec" value="" />
+ <input type="hidden" name="filename" value="" />
+ <input type="hidden" name="forcerepub" value="NO" />
+ </form>
+ <form name="printdir" method="post" action="/adm/printout" target="_parent">
+ <input type="hidden" name="postdata" value="" />
+ <input type="hidden" name="curseed" value="0" />
+ <input type="hidden" name="problemtype" value="0" />
+ </form>
+ </td>
+ <td bgcolor="#ccddaa" valign="top" align="center">
+ <form name="upublisher" enctype="multipart/form-data" method="post" action="/adm/upload" target="_parent">
+ <input type="hidden" name="filename" value="/~$uname$thisdisfn/" />
+ <input type="file" name="upfile" size="20" />
+ <input type="button" value="Upload file" onclick="checkUpload(this.form)" />
+ </form>
+ </td>
+ <td bgcolor="#ccddaa" align="center">
+ <form name="fileaction" method="post" action="/adm/cfile" target="_parent">
+ <nobr>
+ <input type="hidden" name="filename" value="/~$uname$thisdisfn/" />
+ <select name="action">
+ <option>Select action</option>
+ <option value="newfile">New file:</option>
+ <option value="newhtmlfile">New HTML file:</option>
+ <option value="newproblemfile">New problem:</option>
+ <option value="newpagefile">New assembled page:</option>
+ <option value="newsequencefile">New assembled sequence:</option>
+ <option value="newrightsfile">New custom rights file:</option>
+ <option value="newstyfile">New style file:</option>
+ <option value="newdir">New subdirectory:</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()" />
+ </nobr>
+ </form>
+ </td>
+ </tr>
+ </table>
+ <br />
+ <br />
+END
+}
+
+sub resourceactions {
+ my ($r,$uname,$udom,$thisdisfn) = @_;
+ $r->print(<<END);
+ <form name="moveresource" action="/adm/cfile" target="_parent" method="post">
+ <input type="hidden" name="filename" value="" />
+ <input type="hidden" name="newfilename" value="" />
+ <input type="hidden" name="action" value="" />
+ </form>
+ <form name="delresource" action="/adm/cfile" target="_parent" method="post">
+ <input type="hidden" name="filename" value="" />
+ <input type="hidden" name="action" value="delete" />
+ </form>
+ <form name="pubresource" action="/adm/publish" target="_parent" method="post">
+ <input type="hidden" name="pubrec" value="" />
+ <input type="hidden" name="filename" value="" />
+ <input type="hidden" name="forcerepub" value="NO" />
+ </form>
+ <form name="printresource" action="/adm/printout" target="_parent" method="post">
+ <input type="hidden" name="postdata" value="" />
+ <input type="hidden" name="curseed" value="" />
+ <input type="hidden" name="problemtype" value="" />
+ </form>
+ <form name="retrieveres" action="/adm/retrieve" target="_parent" method="post">
+ <input type="hidden" name="filename" value="" />
+ </form>
+END
}
#
@@ -271,16 +492,14 @@
# modtime - Encoded modification time.
#
sub putdirectory {
- my ($r, $reqfile, $here, $dirname, $modtime, $resdir, $bombs) = @_;
-
+ my ($r, $reqfile, $here, $dirname, $modtime, $resdir, $bombs, $numdir) = @_;
# construct the display filename: the directory name unless ..:
my $disfilename = $dirname;
if ($dirname eq '..') {
$disfilename = '<i>'.&mt('Parent Directory').'</i>';
}
- unless (( ($dirname eq '..') && ($reqfile eq '')) ||
- ($dirname eq '.')) {
+ unless ( (($dirname eq '..') && ($reqfile eq '')) || ($dirname eq '.')) {
my $kaputt=0;
foreach (keys %{$bombs}) {
if ($_=~m:^\Q$resdir\E/\Q$disfilename\E/:) { $kaputt=1; last; }
@@ -292,62 +511,90 @@
&Apache::lonpublisher::metaeval(&Apache::lonnet::getfile(
$construct.'/'.$dirname.'/default.meta'
));
+ my $actionitem = '';
+ if ($dirname eq '..') {
+ $actionitem = 'Go to ...';
+ } else {
+ $actionitem =
+ '<form name="dirselect_'.$$numdir.
+ '" action="/adm/publish" target="_parent">'.
+ '<select name="diraction" onChange="SetPubDir(this.form,document)">'.
+ '<option selected="selected">'.&mt('Select action').'</option>'.
+ '<option value="open">'.&mt('Open').'</option>'.
+ '<option value="publish">'.&mt('Publish').'</option>'.
+ '<option value="publishsub">'.&mt('Publish with subdirectories').'</option>'.
+ '<option value="editcat">'.&mt('Edit catalog information').'</option>'.
+ '<option value="printdir">'.&mt('Print directory').
+ '</select>'.
+ '<input type="hidden" name="filename" value="'.$here.'/'.$dirname.'" />'.
+ '<input type="hidden" name="pubrec" value="" />'.
+ '<input type="hidden" name="forcerepub" value="" />'.
+ '<input type="hidden" name="curseed" value="0" />'.
+ '<input type="hidden" name="problemtype" value="0" />'.
+ '<input type="hidden" name="postdata" value="" />'.
+ '</form>';
+ $$numdir ++;
+ }
$r->print('<tr bgcolor="#CCCCFF">'.
'<td><img src="'.
$Apache::lonnet::perlvar{'lonIconsURL'}.'/folder_closed.gif" /></td>'.
- '<td>'.&mt('Go to ...').'</td>'.
- '<td><font face="arial"><a href="'.$here.'/'.$dirname.'/" target="_top">'.
+ '<td>'.$actionitem.'</td>'.
+ '<td><font face="arial"><a href="'.$here.'/'.$dirname.'/" target="_parent">'.
$disfilename.'</a></font></td>'.
'<td colspan="2">'.($kaputt?&Apache::lonhtmlcommon::authorbombs($resdir.'/'.$disfilename.'/'):'').$Apache::lonpublisher::metadatafields{'title'}.' <i>'.
$Apache::lonpublisher::metadatafields{'subject'}.'</i> '.
$Apache::lonpublisher::metadatafields{'keywords'}.'</td>'.
'<td>'.&Apache::lonlocal::locallocaltime($modtime).'</td>'.
"</tr>\n");
- }
+ }
return OK;
}
#
# Put a table row for a file resource.
#
sub putresource {
- my ($r, $uname, $filename, $thisdisfn,
+ my ($r, $udom, $uname, $filename, $thisdisfn,
$resdir, $targetdir, $linkdir,
- $cmtime,$bombs) = @_;
-
+ $cmtime,$bombs,$numres) = @_;
+ my $pubstatus = 'unpublished';
my $status=&mt('Unpublished');
my $bgcolor='#FFAA99';
my $title=' ';
my $publish_button=&mt('Publish');
- my $action_buttons=
- '<br /><a target="_top" href="/adm/cfile?action=delete&filename=/~'.
- $uname.'/'.$thisdisfn.'/'.$filename.'">'.
- &mt('Delete').'</a>';
+# my $action_buttons=
+# '<br /><a target="_parent" href="/adm/cfile?action=delete&filename=/~'.
+# $uname.'/'.$thisdisfn.'/'.$filename.'">'.
+# &mt('Delete').'</a>';
if (-e $resdir.'/'.$filename) {
my ($rdev,$rino,$rmode,$rnlink,
$ruid,$rgid,$rrdev,$rsize,
$ratime,$rmtime,$rctime,
$rblksize,$rblocks)=stat($resdir.'/'.$filename);
- $publish_button=&mt('Re-Publish');
+ $publish_button=&mt('Re-publish');
if ($rmtime>=$cmtime) {
+ $pubstatus = 'published';
$status=&mt('Published').'<br />'.
&mt(&getCopyRightString($targetdir.'/'.$filename)).' '.
&mt(&getSourceRightString($targetdir.'/'.$filename));
$bgcolor='#CCFF88';
if (&Apache::lonnet::metadata($targetdir.'/'.$filename,'obsolete')) {
+ $pubstatus = 'obsolete';
$status=&mt('Obsolete');
$bgcolor='#AAAAAA';
- } else {
- $action_buttons='';
- }
+ }
+# } else {
+# $action_buttons='';
+# }
$title='<a href="/res/'.$targetdir.'/'.$filename.
'.meta" target=cat>'.
&getTitleString($targetdir.'/'.$filename).'</a>';
} else {
+ $pubstatus = 'modified';
$status=&mt('Modified').'<br />'.
&mt(&getCopyRightString($targetdir.'/'.$filename)).' '.
&mt(&getSourceRightString($targetdir.'/'.$filename));
$bgcolor='#FFFF77';
- $action_buttons='';
+# $action_buttons='';
$title='<a href="/res/'.$targetdir.'/'.$filename.'.meta" target=cat>'.
&getTitleString($targetdir.'/'.$filename).'</a>';
if (&Apache::loncommon::fileembstyle(($filename=~/\.(\w+)$/)) eq 'ssi') {
@@ -359,30 +606,29 @@
$title.='<br /><a href="/~'.$uname.$thisdisfn.'/'.$filename.'.meta">'.
($$bombs{$targetdir.'/'.$filename}?'<img src="/adm/lonMisc/bomb.gif" border="0" />':'Edit Metadata').'</a>';
$status.='<br><a href="/adm/retrieve?filename=/~'.$uname.
- $thisdisfn.'/'.$filename.'" target="_top">'.&mt('Retrieve').'</a>';
+ $thisdisfn.'/'.$filename.'" target="_parent">'.&mt('Retrieve').'</a>';
}
my $editlink='';
my $editlink2='';
if ($filename=~/\.(xml|html|htm|xhtml|xhtm|sty)$/) {
- $editlink=' <br />(<a href="'.$linkdir.'/'.$filename.'?forceedit=1" target="_top">'.&mt('Edit').'</a>)';
+ $editlink=' <br />(<a href="'.$linkdir.'/'.$filename.'?forceedit=1" target="_parent">'.&mt('Edit').'</a>)';
}
if ($filename=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
- $editlink=' (<a href="'.$linkdir.'/'.$filename.'?forceedit=1" target="_top">'.&mt('EditXML').'</a>)';
- $editlink2=' <br />(<a href="'.$linkdir.'/'.$filename.'?forceColoredit=1" target="_top">'.&mt('Edit').'</a>)';
+ $editlink=' (<a href="'.$linkdir.'/'.$filename.'?forceedit=1" target="_parent">'.&mt('EditXML').'</a>)';
+ $editlink2=' <br />(<a href="'.$linkdir.'/'.$filename.'?forceColoredit=1" target="_parent">'.&mt('Edit').'</a>)';
}
if ($filename=~/\.(zip|tar|bz2|gz|tar.gz|tar.bz2|tgz)$/) {
$editlink=' (<a target="_parent" href="/adm/cfile?decompress=/~'.
$uname.$thisdisfn.'/'.$filename.'">'.&mt('Decompress').'</a>)';
}
+ my $pub_select = '';
+ &create_pubselect($r,\$pub_select,$udom,$uname,$thisdisfn,$filename,$resdir,$pubstatus,$publish_button,$numres);
$r->print('<tr bgcolor="'.$bgcolor.'">'.
'<td>'.($filename=~/[\#\~]$/?' ':
'<img src="'.&Apache::loncommon::icon($filename).'" /></td>').
- '<td><a target="_parent" href="/adm/publish?filename=/~'.
- $uname.$thisdisfn.'/'.$filename.'">'.$publish_button.'</a>'.
- $action_buttons.
- '</td>'.
+ '<td>'.$pub_select.'</td>'.
'<td><font face="arial">'.
- '<a href="'.$linkdir.'/'.$filename.'" target="_top">'.
+ '<a href="'.$linkdir.'/'.$filename.'" target="_parent">'.
$filename.'</a></font>'.$editlink2.$editlink.
'</td>'.
'<td>'.$title.'</td>'.
@@ -391,6 +637,59 @@
"</tr>\n");
return OK;
}
+
+sub create_pubselect {
+ my ($r,$pub_select,$udom,$uname,$thisdisfn,$filename,$resdir,$pubstatus,$publish_button,$numres) = @_;
+ $$pub_select = '
+<form name="resselect_'.$$numres.'" action="">
+<select name="reschoice" onChange="SetResChoice(this.form)">
+<option>'.&mt('Select action').
+'<option value="rename"/>'.&mt('Rename').
+'<option value="move"/>'.&mt('Move').
+'<option value="copy"/>'.&mt('Copy').
+'<option value="publish"/>'.$publish_button;
+ if ($pubstatus eq 'obsolete' || $pubstatus eq 'unpublished') {
+ $$pub_select .= '
+<option value="delete"/>'.&mt('Delete');
+ } else {
+ $$pub_select .= '
+<option value="obsolete"/>'.&mt('Mark obsolete');
+ }
+ $$pub_select .= '
+<option value="print"/>'.&mt('Print');
+
+# check for versions
+ my $versions = &check_for_versions($r,'/'.$filename,$udom,$uname);
+ if ($versions > 0) {
+ $$pub_select .='
+<option value="retrieve"/>'.&mt('Retrieve old version');
+ }
+ $$pub_select .= '
+</select>
+<input type="hidden" name="filename" value="/~'.
+ $uname.'/'.$thisdisfn.'/'.$filename.'"></form>';
+ $$numres ++;
+}
+
+sub check_for_versions {
+ my ($r,$fn,$udom,$uname) = @_;
+ my $versions = 0;
+ my $docroot=$r->dir_config('lonDocRoot');
+ my $resfn=$docroot.'/res/'.$udom.'/'.$uname.$fn;
+ my $resdir=$resfn;
+ $resdir=~s/\/[^\/]+$/\//;
+ $fn=~/\/([^\/]+)\.(\w+)$/;
+ my $main=$1;
+ my $suffix=$2;
+ opendir(DIR,$resdir);
+ while (my $filename=readdir(DIR)) {
+ if ($filename=~/^\Q$main\E\.(\d+)\.\Q$suffix\E$/) {
+ $versions ++;
+ }
+ }
+ return $versions;
+}
+
#
# Categorize files in the directory.
# For each file in a list of files in a file directory,
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.223 loncom/interface/loncommon.pm:1.224
--- loncom/interface/loncommon.pm:1.223 Fri Oct 22 20:38:01 2004
+++ loncom/interface/loncommon.pm Fri Oct 29 14:40:40 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.223 2004/10/23 00:38:01 albertel Exp $
+# $Id: loncommon.pm,v 1.224 2004/10/29 18:40:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2518,7 +2518,7 @@
=cut
sub bodytag {
- my ($title,$function,$addentries,$bodyonly,$domain,$forcereg)=@_;
+ my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,$customtitle)=@_;
$title=&mt($title);
$function = &get_users_function() if (!$function);
my $img=&designparm($function.'.img',$domain);
@@ -2564,6 +2564,7 @@
return $bodytag;
} elsif ($ENV{'browser.interface'} eq 'textual') {
# Accessibility
+
return $bodytag.&Apache::lonmenu::menubuttons($forcereg,'web',
$forcereg).
'<h1>LON-CAPA: '.$title.'</h1>';
@@ -2585,15 +2586,23 @@
</p>
</td>
ENDROLE
+ my $titleinfo = '<font face="Arial, Helvetica, sans-serif" size="+3" color="'.
+ $font.'"><b>'.$title.'</b></font>';
+ if ($customtitle) {
+ $titleinfo = $customtitle;
+ }
return $bodytag.&Apache::lonmenu::menubuttons($forcereg,'web',
$forcereg).
- '<table bgcolor="'.$pgbg.'" width="100%" border="0" cellspacing="3" cellpadding="3"><tr><td rowspan="3" bgcolor="'.$tabbg.'"><font face="Arial, Helvetica, sans-serif" size="+3" color="'.$font.'"><b>'.$title.
-'</b></font></td>'.$roleinfo.'</tr></table>';
+ '<table bgcolor="'.$pgbg.'" width="100%" border="0" cellspacing="3" cellpadding="3"><tr><td rowspan="3" bgcolor="'.$tabbg.'">'.$titleinfo.'</td>'.$roleinfo.'</tr></table>';
}
#
# Top frame rendering, Remote is up
#
+ my $titleinfo = ' <font size="5" face="Arial, Helvetica, sans-serif"><b>'.$title.'</b></font>';
+ if ($customtitle) {
+ $titleinfo = $customtitle;
+ }
return(<<ENDBODY);
$bodytag
<table width="100%" cellspacing="0" border="0" cellpadding="0">
@@ -2603,7 +2612,7 @@
</tr>
<tr>
<td rowspan="3" bgcolor="$tabbg">
- <font size="5" face="Arial, Helvetica, sans-serif"><b>$title</b></font>
+$titleinfo
<td bgcolor="$tabbg" align="right">
<font size="2" face="Arial, Helvetica, sans-serif">
$ENV{'environment.firstname'}
Index: loncom/interface/lonmenu.pm
diff -u loncom/interface/lonmenu.pm:1.119 loncom/interface/lonmenu.pm:1.120
--- loncom/interface/lonmenu.pm:1.119 Thu Oct 28 14:12:48 2004
+++ loncom/interface/lonmenu.pm Fri Oct 29 14:40:40 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.119 2004/10/28 18:12:48 www Exp $
+# $Id: lonmenu.pm,v 1.120 2004/10/29 18:40:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -226,6 +226,14 @@
my $forcereg=shift;
my $target = shift;
my $result = '';
+ my ($uname,$thisdisfn);
+ my $const_space = 0;
+ if ($ENV{'request.filename'} =~ /^\/home\/([^\/]+)\/public_html\/(.*)/) {
+ $const_space = 1;
+ $uname = $1;
+ $thisdisfn = $2;
+ }
+
if ($ENV{'request.noversionuri'} eq '/res/adm/pages/menu.html') { return ''; }
$Apache::lonxml::registered=1;
@@ -244,6 +252,17 @@
if ($noremote) {
$newmail='<font face="Arial,Helvetica,sans-serif"><table bgcolor="'.$pgbg.'" border="0" cellspacing="1" cellpadding="1" width="100%"><tr><td bgcolor="'.$tabbg.'">';
}
+ if ($textual && $const_space) {
+ my $formaction='/priv/'.$uname.'/'.$thisdisfn;
+ $formaction=~s/\/+/\//g;
+ $newmail .= ('<form name="dirs" method="post" action="'.$formaction
+ .'" target="_top">'.
+ &Apache::lonhtmlcommon::crumbs($uname.'/'.$thisdisfn,'_top','/priv','','-1').
+ &Apache::lonhtmlcommon::select_recent('construct','recent',
+ 'this.form.action=this.form.recent.value;this.form.submit()').
+ '</form>');
+ &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction);
+ }
if (($textual) && ($ENV{'request.symb'}) && ($ENV{'request.course.id'})) {
my ($mapurl,$rid,$resurl)=&Apache::lonnet::decode_symb($ENV{'request.symb'});
$newmail.=$ENV{'course.'.$ENV{'request.course.id'}.'.description'};
@@ -348,7 +367,7 @@
}
}
# Finally, turn the button on or off
- if ($cfile) {
+ if ($cfile && !$const_space) {
$editbutton=&switch
('','',6,1,'cstr.gif','edit[_1]','resource[_2]',
"go('".$cfile."');","Edit this resource");
@@ -359,7 +378,18 @@
###
###
# Prepare the rest of the buttons
- my $menuitems=(<<ENDMENUITEMS);
+ my $menuitems;
+ if ($const_space) {
+ my $dir_catalog = '/priv/'.$uname.'/'.$thisdisfn.'/default.meta';
+ $menuitems=(<<ENDMENUITEMS);
+s&2&1&mcrs.gif&list[_1]&dir[_1]&gopost('/adm/pubdir',currentURL)&List current directory
+s&2&3&mcrs.gif&retrieve[_1]&version[_1]&gopost('/adm/retrieve',currentURL)&Retreive old version
+s&6&1&mcrs.gif&publish[_1]&resource[_1]&gopost('/adm/publish',currentURL)&Publish this resource
+s&6&3&mcrs.gif&delete[_1]&resource[_2]&gopost('/adm/cfile?action=delete',currentURL)&Delete this resource
+s&8&3&prt.gif&prepare[_1]&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document
+ENDMENUITEMS
+ } else {
+ $menuitems=(<<ENDMENUITEMS);
c&3&1
s&2&1&back.gif&backward[_1]&&gopost('/adm/flip','back:'+currentURL)&Go to the previous resource in the course sequence&1
s&2&3&forw.gif&forward[_1]&&gopost('/adm/flip','forward:'+currentURL)&Go to the next resource in the course sequence&3
@@ -370,13 +400,14 @@
s&9&1&sbkm.gif&set[_1]&bookmark[_2]&set_bookmark()&Set a bookmark for this resource&2
s&9&3&anot.gif&anno-[_1]&tations[_1]&annotate()&Make notes and annotations about this resource&2
ENDMENUITEMS
- unless ($ENV{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) {
- $menuitems.=(<<ENDREALRES);
+ unless ($ENV{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) {
+ $menuitems.=(<<ENDREALRES);
s&6&3&catalog.gif&catalog[_1]&info[_1]&catalog_info()&Show catalog information
s&8&1&eval.gif&evaluate[_1]&this[_1]&gopost('/adm/evaluate',currentURL,1)&Provide my evaluation of this resource
s&8&2&fdbk.gif&feedback[_1]&discuss[_1]&gopost('/adm/feedback',currentURL,1)&Provide feedback messages or contribute to the course discussion about this resource
ENDREALRES
- }
+ }
+ }
my $buttons='';
foreach (split(/\n/,$menuitems)) {
my ($command,@rest)=split(/\&/,$_);
--raeburn1099075240--