var fs = require('fs');
module.exports = function(qwiki) {
qwiki.rule('edit', '@@CONTENT@@', function(req, res, instance, next) {
var area = (req.area == '' ? 'front' : req.area);
var path = 'wiki/'+area+'.qwk';
res.write('
');
next();
});
});
qwiki.rule('edit', '@@CONTROLS@@', function(req, res, instance, next) {
res.write('
View
Revisions
Delete');
next();
});
qwiki.act('edit', function(req, res) {
var area = (req.area == '' ? 'front' : req.area);
// handle POST
if ('submit' in req.fields && req.fields['submit'] == 'save') {
var old_area = area;
if ('page' in req.fields) {
area = req.fields['page'];
}
if (typeof qwiki.wiki_index.pages[area] == 'undefined') {
qwiki.wiki_index.pages[area] = {
format: qwiki.getDefault('format')
};
}
// get our format
if ('format' in req.fields) {
qwiki.wiki_index.pages[area].format = req.fields['format'];
}
//
console.log(old_area + ' vs ' + area);
if (old_area != area) {
fs.rename('wiki/'+old_area+'.qwk', 'wiki/'+area+'.qwk', function() {
qwiki.deleteCache(old_area, function() {
if ('content' in req.fields) {
qwiki.savePage(area, req.fields['content'], function(err) {
if (err) {
res.write(err.code);
res.end();
} else {
qwiki.createCache(area, req.fields['content'], function(err) {
if (err) {
res.write(err.code);
res.end();
} else {
res.writeHead(302, {'Location': '/'+area+'/edit'});
res.end();
}
});
}
});
}
});
});
} else {
if ('content' in req.fields) {
qwiki.savePage(area, req.fields['content'], function(err) {
if (err) {
res.write(err.code);
res.end();
} else {
qwiki.createCache(area, req.fields['content'], function(err) {
if (err) {
res.write(err.code);
res.end();
} else {
res.writeHead(302, {'Location': req.url});
res.end();
}
});
}
});
}
}
return;
}
res.writeHead(200, "OK", {
"Content-Type": "text/html",
});
qwiki.parsePage('edit', '', req, res);
});
};