File:  [LON-CAPA] / loncom / publisher / lonpubmenu.pm
Revision 1.3: download - view: text, annotated - select for diffs
Thu Apr 7 06:56:27 2005 UTC (19 years, 1 month ago) by albertel
Branches: MAIN
CVS tags: version_2_1_X, version_2_1_3, version_2_1_2, version_2_1_1, version_2_1_0, version_2_0_X, version_2_0_99_1, version_2_0_2, version_2_0_1, version_2_0_0, version_1_99_3, version_1_99_2, version_1_99_1_tmcc, version_1_99_1, version_1_99_0_tmcc, version_1_99_0, HEAD
- ENV -> env

    1: # The LearningOnline Network with CAPA
    2: # Construction Space Buttons for Top Frame 
    3: #
    4: # Copyright Michigan State University Board of Trustees
    5: #
    6: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
    7: #
    8: # LON-CAPA is free software; you can redistribute it and/or modify
    9: # it under the terms of the GNU General Public License as published by
   10: # the Free Software Foundation; either version 2 of the License, or
   11: # (at your option) any later version.
   12: #
   13: # LON-CAPA is distributed in the hope that it will be useful,
   14: # but WITHOUT ANY WARRANTY; without even the implied warranty of
   15: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   16: # GNU General Public License for more details.
   17: #
   18: # You should have received a copy of the GNU General Public License
   19: # along with LON-CAPA; if not, write to the Free Software
   20: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   21: #
   22: # /home/httpd/html/adm/gpl.txt
   23: #
   24: # http://www.lon-capa.org/
   25: #
   26: ###
   27: 
   28: package Apache::lonpubmenu;
   29: use Apache::lonlocal;
   30: use Apache::lonnet;
   31: use Apache::loncommon;
   32: 
   33: sub handler {
   34:     my $r = shift;
   35:     my %lt=&Apache::lonlocal::texthash(
   36:                                        cnpd => 'Cannot publish directory',
   37:                                        cnrd => 'Cannot retrieve directory',
   38:                                        mcdi => 'Must create new subdirectory inside a directory',
   39:                                        pubr => 'Publish this Resource',
   40:                                        pubd => 'Publish this Directory',
   41:                                        rtrv => 'Retrieve Old Version',
   42:                                        pubs => 'Publish with Subdirectories',
   43:                                        list => 'List Directory',
   44:                                        uplo => 'Upload file',  
   45:                                        dele => 'Delete',
   46:                                        edit => 'Edit Catalog Information', 
   47:                                        sela => 'Select Action',
   48:                                        nfil => 'New file',
   49:                                        nhtm => 'New HTML file',
   50:                                        nprb => 'New problem',
   51:                                        npag => 'New assembled page',
   52:                                        nseq => 'New assembled sequence',
   53:                                        ncrf => 'New custom rights file',
   54:                                        nsty => 'New style file',
   55:                                        nlib => 'New library file',
   56:                                        nsub => 'New subdirectory',
   57:                                        renm => 'Rename current file to',
   58:                                        move => 'Move current file to',
   59:                                        copy => 'Copy current file to',
   60:                                        type => 'Type Name Here',
   61:                                        go => 'Go',
   62:                                        prnt => 'Print'
   63:                                       );
   64:     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['disp']);
   65:     my $disp = $env{'form.disp'};
   66: # set defaults for parent directory in case frameloc is unable to determine directory
   67:     my $defaultdir = '/priv/'.$env{'user.name'}.'/'; 
   68:     if ($env{'request.role'} =~ m#^ca\./[^/]+/([^/]+)#) {
   69:         $defaultdir = '/priv/'.$1.'/';
   70:     }
   71:     $r->print(<<"ENDONE");
   72: <html>
   73: <head>
   74: <title>LON-CAPA Publishing Frame</title>
   75: <script type="text/javascript">
   76: //<!--
   77: function frameloc() {
   78:     if (parent.LONCAPAToBePublished.location.pathname.indexOf("/~")!=-1) {
   79:        parent.lastknownpriv=parent.LONCAPAToBePublished.location.pathname;
   80:     }
   81: // alert ('We are at '+parent.lastknownpriv);
   82:     return unescape(parent.lastknownpriv);
   83: }
   84: 
   85: function getdfilename() {
   86:     var currloc = frameloc();
   87:     var currdir;
   88:     if (currloc.indexOf("/") != -1) {   
   89:         var loclength = currloc.length;
   90:         var lastslash = currloc.lastIndexOf("/");
   91:         if (loclength == lastslash+1) {
   92:             return;
   93:         }
   94:         else {
   95:             currdir = currloc.substring(0,lastslash+1);
   96:             if (currdir.indexOf("~") != -1) {
   97:                 currdir = currdir.substring(currdir.indexOf("~")+1,currdir.length);
   98:                 currdir = "/priv/"+currdir
   99:                 top.location=currdir
  100:                 return;
  101:             }
  102:         }
  103:     }
  104:     top.location="$defaultdir";
  105: }
  106: 
  107: function getufilename() {
  108:   document.upublisher.filename.value=frameloc();
  109:   if (document.upublisher.filename.value.indexOf('/adm/pubdir')!=-1) {
  110:       document.upublisher.filename.value=document.dpublisher.filename.value;
  111:   }
  112:   document.upublisher.submit();
  113: }
  114: 
  115: function getactionfilename() {
  116:   document.fileaction.filename.value=frameloc();
  117:   var test=document.fileaction.action.selectedIndex;
  118:   if (test == 8) { // trying to create a directory
  119:       if (document.fileaction.filename.value.indexOf('/adm/pubdir')!=-1) {
  120:           document.fileaction.filename.value=document.dpublisher.filename.value;
  121:       }
  122:       if ((document.fileaction.filename.value.charAt(
  123:            document.fileaction.filename.value.length-1)!='/') &&
  124:            (document.fileaction.filename.value.indexOf('/adm/pubdir')==-1)) {
  125:           alert('$lt{'mcdi'}');
  126:           return;
  127:       }
  128:    }
  129:    document.fileaction.submit();
  130: }
  131: 
  132: function getcurseed() {
  133:   if (parent.LONCAPAToBePublished.document.lonhomework
  134:        &&
  135:       parent.LONCAPAToBePublished.document.lonhomework.rndseed
  136:        &&
  137:       parent.LONCAPAToBePublished.document.lonhomework.rndseed.value) {
  138:     return parent.LONCAPAToBePublished.document.lonhomework.rndseed.value;
  139:   }
  140:   return 0;
  141: }
  142: 
  143: function getproblemtype() {
  144:   if (parent.LONCAPAToBePublished.document.lonhomework) {
  145:      var optionelement;
  146:      var valueIndex=0;
  147:      for (var optionIndex=0;
  148:           optionIndex < parent.LONCAPAToBePublished.document.lonhomework.problemtype.options.length;
  149: 	  optionIndex++)
  150:      {
  151:          optionElement=parent.LONCAPAToBePublished.document.lonhomework.problemtype.options[optionIndex];
  152: 	 if (optionElement.selected) {
  153: 	    return optionElement.value;
  154:          }	  
  155:      } 	  
  156:   }
  157:   return 0;
  158: }
  159: 
  160: function getpostdata() {
  161:   document.printout.postdata.value=frameloc();
  162:   document.printout.curseed.value=getcurseed();
  163:   document.printout.problemtype.value=getproblemtype();
  164:   document.printout.submit();
  165: }
  166: ENDONE
  167: 
  168:     if ($disp eq 'dir') {
  169:         $r->print(<<"ENDDIR");
  170: function getdirname() {
  171:     document.publishdir.filename.value=frameloc();
  172:     pubdir(document.publishdir)
  173: }
  174: 
  175: function getsubdirname() {
  176:     document.publishsubdir.filename.value=frameloc();
  177:     pubrecdir(document.publishsubdir)
  178: }
  179: 
  180: function geteditcat() {
  181:     top.location=frameloc()+'default.meta'
  182: }
  183: 
  184: function pubdir(theform) {
  185:     if (confirm('Publish complete directory?')) {
  186:         forcepub(theform)
  187:         theform.submit();
  188:     }
  189: }
  190: function pubrecdir(theform) {
  191:     if (confirm('Publish directory and all subdirectories?')) {
  192:         forcepub(theform);
  193:         theform.submit();
  194:     }
  195: }
  196: 
  197: function forcepub(theform) {
  198:     if (confirm('Force publication of unmodified files? - OK=yes; Cancel=No.')) {
  199:         theform.forcerepub.value="ON";
  200:     }
  201: }
  202: ENDDIR
  203:     } else {
  204:         $r->print(<<"ENDRES");
  205: function getfilename() {
  206:     document.publisher.filename.value=frameloc();
  207:     if ((document.publisher.filename.value.charAt(
  208:       document.publisher.filename.value.length-1)!='/') &&
  209:       (document.publisher.filename.value.indexOf('/adm/pubdir')==-1)) {
  210:         document.publisher.submit();
  211:     } else {
  212:         alert('$lt{'cnpd'}');
  213:     }
  214: }
  215: 
  216: function getrfilename() {
  217:   document.rpublisher.filename.value=frameloc();
  218:    if ((document.rpublisher.filename.value.charAt(
  219:         document.rpublisher.filename.value.length-1)!='/') &&
  220:        (document.rpublisher.filename.value.indexOf('/adm/pubdir')==-1)) {
  221:         document.rpublisher.submit();
  222:    } else {
  223:       alert('$lt{'cnrd'}');
  224:    }
  225: }
  226: 
  227: function getdelfilename() {
  228:   document.del.filename.value=frameloc();
  229:   document.del.submit();
  230: }
  231: ENDRES
  232:     }
  233:     $r->print(<<"END");
  234: //-->
  235: </script>
  236:     </head>
  237:     <body bgcolor="#ccffdd" text='#002200' link='#003333' vlink='#006666'>
  238: 	<table border="0" align="center"><tr><th bgcolor="#004400" height="20">
  239: 	      <table border="0" cellspacing="2" cellpadding="2"><tr valign="middle">
  240: 		  <td bgcolor="#ccddaa" align="center">
  241: END
  242:     if ($disp eq 'dir') {
  243:         $r->print('
  244:                     <form name="publishdir" action="/adm/publish" target="_parent" method="post">
  245:                       <input type="hidden" name="filename" value="" />
  246:                       <input type="hidden" name="forcerepub" value="NO" />
  247:                       <input type="button" value="'.$lt{'pubd'}.'" onclick="getdirname();" />
  248:                     </form>
  249:                  ');
  250:     } else {
  251:         $r->print('
  252:                     <form name="publisher" action="/adm/publish" target="_parent" method="post">
  253:                       <input type="hidden" name="filename" value="" />
  254: 	              <input type="button" value="'.$lt{'pubr'}.'" onclick="getfilename();" />
  255:                     </form>
  256:                    ');
  257:     }
  258:     $r->print(<<"ENDTWO");
  259: 		    </form>
  260: 		  </td>
  261: 		  <td bgcolor="#ccddaa" align="center">
  262: 		    <form name="dpublisher" action="/adm/pubdir" target="LONCAPAToBePublished" method="post">
  263: 		      <input type="hidden" name="filename" value="" />
  264: 		      <input type="button" value="$lt{'list'}" onclick="getdfilename();" />
  265: 		    </form>
  266: 		  </td>
  267: 		  <td bgcolor="#ccddaa" valign="top" align="center">
  268: 		    <form name="upublisher" action="/adm/upload" target="_parent"
  269: 			method="post" enctype="multipart/form-data">
  270: 		      <input type="hidden" name="filename" value="" />
  271: 		      <input type="file" name="upfile" size="20" />
  272: 		      <input type="button" value="$lt{'uplo'}"  onclick="getufilename();" />
  273: 		    </form>
  274: 		  </td>
  275: 		  <td rowspan="2" bgcolor="#ccddaa" align="center">
  276: 		    <form name="printout" target="_parent" action="/adm/printout" method="post" onsubmit="getpostdata();">
  277: 		      <input type="hidden" name="postdata" value="" />
  278: 		      <input type="hidden" name="curseed" value="" />
  279: 		      <input type="hidden" name="problemtype" value="" />
  280: 		      <input type="button" value="$lt{'prnt'}" onclick="getpostdata();" />
  281: 		    </form>
  282: 		  </td>
  283: 		</tr>
  284:                 <tr valign="middle">
  285: ENDTWO
  286:     if ($disp eq 'dir') {
  287:         $r->print(<<"ENDDIR");
  288:                   <td bgcolor="#ccddaa" align="center">
  289:                     <form name="publishsubdir" action="/adm/publish" target="_parent" method="post">
  290:                       <input type="hidden" name="filename" value="" />
  291:                       <input type="hidden" name="forcerepub" value="NO" />
  292:                       <input type="hidden" name="pubrec" value="1" />
  293:                       <input type="button" value="$lt{'pubs'}" onclick="getsubdirname();" />
  294:                     </form>
  295:                   </td>
  296:                   <td bgcolor="#ccddaa">
  297:                     <form name="editcat" action="/adm/cfile" target="_parent" method="post">
  298:                       <input type="hidden" name="filename" value="" />
  299:                       <input type="button" value="$lt{'edit'}" onclick="geteditcat();" />
  300:                     </form>
  301:                   </td>
  302: ENDDIR
  303:     } else {
  304:         $r->print(<<"ENDFILE"); 
  305: 		  <td bgcolor="#ccddaa" align="center">
  306: 		    <form name="rpublisher" action="/adm/retrieve" target="_parent" method="post">
  307: 		      <input type="hidden" name="filename" value="" />
  308: 		      <input type="button" value="$lt{'rtrv'}" onclick="getrfilename();" />
  309: 		    </form>
  310: 		  </td>
  311: 		  <td bgcolor="#ccddaa">
  312: 		    <form name="del" action="/adm/cfile" target="_parent" method="post">
  313: 		      <input type="hidden" name="filename" value="" />
  314: 		      <input type="hidden" name="action" value="delete" />
  315: 	              <input type="button" value="$lt{'dele'}" onclick="getdelfilename();" />
  316: 		    </form>
  317: 		  </td>
  318: ENDFILE
  319:     }
  320:     $r->print(<<"ENDOPTIONS");
  321: 		  <td bgcolor="#ccddaa" align="center">
  322: 		    <form name="fileaction" action="/adm/cfile" target="_parent" method="post" onsubmit="getactionfilename();">
  323: 		      <nobr>
  324: 			<input type="hidden" name="filename" value="" />
  325: 			  <select name="action">
  326: 			    <option value="Select Action">$lt{'sela'}</option>
  327: 			    <option value="newfile">$lt{'nfil'}:</option>
  328: 			    <option value="newhtmlfile">$lt{'nhtm'}:</option>
  329: 			    <option value="newproblemfile">$lt{'nprb'}:</option>
  330:                             <option value="newpagefile">$lt{'npag'}:</option>
  331:                             <option value="newsequencefile">$lt{'nseq'}:</option>
  332:                             <option value="newrightsfile">$lt{'ncrf'}:</option>
  333:                             <option value="newstyfile">$lt{'nsty'}:</option>
  334:                             <option value="newlibraryfile">$lt{'nlib'}:</option>
  335: 			    <option value="newdir">$lt{'nsub'}:</option>
  336: ENDOPTIONS
  337:     if ($disp ne 'dir') {
  338:         $r->print(<<"ENDPROBOPS");
  339: 			    <option value="rename">$lt{'renm'}:</option>
  340: 			    <option value="move">$lt{'move'}:</option>
  341: 			    <option value="copy">$lt{'copy'}:</option>
  342: ENDPROBOPS
  343:     }
  344:     $r->print(<<"ENDPAGE");
  345: 			  </select>&nbsp;<input type="text" name="newfilename" value="$lt{'type'}" onfocus="if (this.value == '$lt{'type'}') this.value=''" />&nbsp;<input type="button" value="$lt{'go'}" onclick="getactionfilename();" />
  346: 		      </nobr>
  347: 		    </form>
  348: 		   </td>
  349: 		</tr>
  350: 	      </table>
  351: 	    </th>
  352: 	  </tr>
  353: 	</table>
  354:     </body>
  355:   </html>
  356: ENDPAGE
  357: }
  358: 
  359: 1;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>