sheercms
Version:
Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.
95 lines (88 loc) • 2.79 kB
JavaScript
var logger = require('../logger');
var api = require('../api');
var util = require('../utilities');
var S = require('string');
var _tags = null;
/*
callback: (err, tags)
*/
module.exports.getAll = function(callback) {
if (callback) {
if (_tags == null) {
api.sysdocs.getOne('tags', function(err, sysdoc) {
if (err)
callback(err);
else if (sysdoc) {
//data is an array of strings
if (sysdoc.data)
_tags = sysdoc.data;
else
_tags = [];
callback(null, _tags);
}
else {
var err = new Error("sysdoc not found: tags");
logger.error(err);
callback(err);
}
});
}
else {
callback(null, _tags);
}
}
};
/*
callback: (err)
*/
module.exports.addTags = function(tags, callback) {
//see if the tags are already in the list
module.exports.getAll(function(err, list) {
try {
if (err) {
if (callback) callback(err);
}
else {
var updated = false;
for (var i = 0; i < tags.length; i++) {
var found = false;
for (var j = 0; j < list.length; j++) {
if (tags[j] == list[i]) {
found = true;
break;
}
}
if (found == false) {
//add to the list
logger.info("Adding tag to tags list: " + tags[i]);
_tags.push(tags[i]);
updated = true;
}
}
if (updated) {
api.sysdocs.getOne('tags', function(err, doc) {
if (err) {
if (callback) callback(err);
}
else {
if (doc)
doc.data = _tags;
else
doc = { key: 'tags', data: _tags };
api.sysdocs.save(doc, function(err) {
if (callback) callback(err);
});
}
});
}
else {
if (callback) callback(null);
}
}
}
catch(e) {
logger.error(e);
if (callback) callback(e);
}
});
};