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>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.