94 lines
3.4 KiB
JavaScript
94 lines
3.4 KiB
JavaScript
var fs = require('fs');
|
|
module.exports = function(qwiki) {
|
|
qwiki.rule('edit', '@@CONTENT@@', function(req, res, instance, next) {
|
|
var area = (req.area == '' ? 'front' : req.area.substr(1));
|
|
var path = 'wiki/'+area+'.qwk';
|
|
res.write('<form action="" method="POST"><label for="page">Page</label> <input type="text" name="page" value="'+area+'"><br>');
|
|
res.write('<label for="format">Format</label> <select name="format">');
|
|
for (var format in qwiki.formats) {
|
|
var page_format = (typeof qwiki.wiki_index.pages[area] !== 'undefined' ? qwiki.wiki_index.pages[area].format : qwiki.getDefault('format'));
|
|
res.write('<option ' + (qwiki.formats[format].name == page_format ? 'selected ' : '') + 'value="'+qwiki.formats[format].name+'">'+qwiki.formats[format].fullname+'</option>');
|
|
}
|
|
res.write('</select><br>');
|
|
res.write('<label for="content">Content</label> <textarea width="100%" height="100%" name="content">');
|
|
qwiki.readFile(res, path, function(type, err) {
|
|
if (type == 'FNF') {
|
|
} else if (err) {
|
|
res.write(err);
|
|
}
|
|
res.write('</textarea><input type="submit" name="submit" value="cancel"><input type="submit" name="submit" value="save"></form>');
|
|
next();
|
|
});
|
|
});
|
|
qwiki.act('edit', function(req, res) {
|
|
var area = (req.area == '' ? 'front' : req.area.substr(1));
|
|
// 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': '/'+area+'/edit'});
|
|
res.end();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
res.writeHead(200, "OK", {
|
|
"Content-Type": "text/html",
|
|
});
|
|
qwiki.parsePage('edit', '', req, res);
|
|
});
|
|
};
|