home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / xampp / xampp-cocoon-addon-1.4.9-installer.exe / webdav.js < prev    next >
Encoding:
JavaScript  |  2004-07-12  |  3.5 KB  |  139 lines

  1. /*
  2. * Copyright 1999-2004 The Apache Software Foundation
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. *     http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16.  
  17. //importPackage(Packages.org.apache.cocoon.components.repository);
  18. //var repository = cocoon.getComponent(SourceRepository.ROLE);
  19. var repository = cocoon.getComponent("org.apache.cocoon.components.repository.SourceRepository");
  20.  
  21. function selectMethod() {
  22.   var page = cocoon.parameters["page"];
  23.   var requestURI = cocoon.parameters["requestURI"];
  24.   var method = cocoon.request.getMethod();
  25.   cocoon.sendPage(method+"/"+page, {"requestURI":requestURI});
  26. }
  27.  
  28. function sendStatus(sc) {
  29.   cocoon.sendStatus(sc);
  30. }
  31.  
  32. function put() {
  33.   var src  = cocoon.parameters["src"];
  34.   var dest = cocoon.parameters["dest"];
  35.   try {
  36.     var status = repository.save(src,dest);
  37.     sendStatus(status);
  38.   }
  39.   catch (e) {
  40.     cocoon.log.error(e);
  41.     sendStatus(500);
  42.   }
  43. }
  44.  
  45. function remove() {
  46.   var location = cocoon.parameters["location"];
  47.   try {
  48.     var status = repository.remove(location);
  49.     sendStatus(status);
  50.   }
  51.   catch (e) {
  52.     cocoon.log.error(e);
  53.     sendStatus(500);
  54.   }
  55. }
  56.  
  57. function mkcol() {
  58.   var location = cocoon.parameters["location"];
  59.   try {
  60.     var status = repository.makeCollection(location);
  61.     sendStatus(status);
  62.   }
  63.   catch (e) {
  64.     cocoon.log.error(e);
  65.     sendStatus(500);
  66.   }
  67. }
  68.  
  69. function copy() {
  70.   var from      = cocoon.parameters["from"];
  71.   var to        = cocoon.parameters["to"];
  72.   var recurse   = isRecurse(cocoon.parameters["depth"]);
  73.   var overwrite = isOverwrite(cocoon.parameters["overwrite"]);
  74.   try {
  75.     var status = repository.copy(from,to,recurse,overwrite);
  76.     sendStatus(status);
  77.   } catch (e) {
  78.     sendStatus(500);
  79.   }
  80. }
  81.  
  82. function move() {
  83.   var from      = cocoon.parameters["from"];
  84.   var to        = cocoon.parameters["to"];
  85.   var recurse   = isRecurse(cocoon.parameters["depth"]);
  86.   var overwrite = isOverwrite(cocoon.parameters["overwrite"]);
  87.   try {
  88.     var status = repository.move(from,to,recurse,overwrite);
  89.     sendStatus(status);
  90.   } catch (e) {
  91.     sendStatus(500);
  92.   }
  93. }
  94.  
  95. function options() {
  96.   cocoon.response.setHeader("DAV","1");
  97.   var options = "OPTIONS,GET,HEAD,POST,DELETE,TRACE,PUT" 
  98.               + ",MKCOL,PROPFIND,PROPPATCH,COPY,MOVE";
  99.   cocoon.response.setHeader("Allow",options);
  100.  
  101.   //interoperability with Windows 2000
  102.   var w2kDAVDiscoverAgent = "Microsoft Data Access Internet"
  103.                           + " Publishing Provider Protocol Discovery";
  104.   if (cocoon.request.getHeader("User-Agent") == w2kDAVDiscoverAgent) {
  105.       cocoon.response.setHeader("MS-Author-Via","DAV");
  106.   }
  107.  
  108.   sendStatus(200);
  109. }
  110.  
  111. /*
  112.  * parse the depth header to find out if recursion
  113.  * take place. (used by MOVE and COPY)
  114.  */
  115. function isRecurse(depth) {
  116.   var recurse;
  117.   if (depth == null || depth == '') {
  118.     recurse = true;
  119.   }
  120.   else if (depth == 'Infinity') {
  121.     recurse = true;
  122.   }
  123.   else {
  124.     recurse = false;
  125.   }
  126.   return recurse;
  127. }
  128.  
  129. /*
  130.  * convert the overwrite header into a boolean type
  131.  */
  132. function isOverwrite(header) {
  133.   var overwrite = true;
  134.   if (header == 'F') {
  135.     overwrite = false;
  136.   }
  137.   return overwrite;
  138. }
  139.