UNPKG

sheercms

Version:

Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.

95 lines (88 loc) 2.79 kB
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); } }); };