63 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
| // TODO: deletions should check to see if they were the last file in a directory, and if so, to delete the parent folder and redirect to the parent view
 | |
| // TODO: additionally, deletions should work on generic files and even directories!
 | |
| var fs = require('fs');
 | |
| var path = require('path');
 | |
| module.exports = function(qwiki) {
 | |
|   // **** DELETE
 | |
|   qwiki.rule('delete', '@@CONTENT@@', function(req, res, instance, next) {
 | |
|     res.write('<form action="" method="POST"> Deleting this page will also delete all page revisions! Are you sure you wish to do this?<div class="prompt"><input type="submit" name="submit" value="Yes"><input type="submit" name="submit" value="No"></div></form>');
 | |
|     next()
 | |
|   });
 | |
|   qwiki.act('delete', function(req, res) {
 | |
|     var area = (req.area == '' ? 'front' : req.area);
 | |
|     // handle POST
 | |
|     if ('submit' in req.fields) {
 | |
|       if (req.fields['submit'] == 'Yes') {
 | |
|         fs.stat('wiki/'+area+'.qwk', function(err, stat) {
 | |
|           if (err == null) {
 | |
|             qwiki.deletePage(area, function() {
 | |
|               qwiki.deleteCache(area, function() {
 | |
|                 console.log('redirecting to '+req.area);
 | |
|                 res.writeHead(302, {'Location': req.area});
 | |
|                 res.end();
 | |
|               });
 | |
|             });
 | |
|           } else if (err.code == 'ENOENT') {
 | |
|             // does not exist as a wiki document, it's a directory or a file
 | |
|             fs.stat('wiki/'+area, function(err, stat) {
 | |
|               if (err == null) {
 | |
|                 if (stat.isDirectory()) {
 | |
|                   console.log('request to delete directory');
 | |
|                 } else {
 | |
|                   fs.unlink('wiki/'+area, function(err) {
 | |
|                     console.log('deleted file: ' + area);
 | |
|                   });
 | |
|                 }
 | |
|               } else if (err.code == 'ENOENT') {
 | |
|                 console.log('file "' + area + '" does not exist');
 | |
|               } else {
 | |
|                 console.log(err);
 | |
|               }
 | |
|             });
 | |
|             res.writeHead(302, {'Location': '../index'});
 | |
|             res.end();
 | |
|           } else {
 | |
|             console.log(err);
 | |
|             res.writeHead(302, {'Location': '../index'});
 | |
|             res.end();
 | |
|           }
 | |
|         });
 | |
|         return;
 | |
|       } else {
 | |
|           res.writeHead(302, {'Location': req.area+'/edit'});
 | |
|           res.end();
 | |
|       }
 | |
|     } else {
 | |
|       res.writeHead(200, "OK", {
 | |
|         "Content-Type": "text/html",
 | |
|       });
 | |
|     }
 | |
|     qwiki.parsePage('delete', 'edit', req, res);
 | |
|   });
 | |
| }
 |