/** *Init */ function init(module, app, next) { calipso.e.custom('FORM', 'FORM', module.name, addFieldConfiguration); calipso.e.pre('CONTENT_TYPE_MAP_FIELDS', module.name, processFieldConfiguration); module.initialised = true; next(); }
function done() { // Schema var ContentVersion = new calipso.lib.mongoose.Schema({ contentId:{type: String} // All other properties are dynamically mapped, hence use of .set / .get }); calipso.lib.mongoose.model('ContentVersion', ContentVersion); // Version event listeners calipso.e.post('CONTENT_CREATE',module.name,saveVersion); calipso.e.post('CONTENT_UPDATE',module.name,saveVersion); // Form alteration if(calipso.modules.content.fn.originalContentForm) { // We have already altered the form, so lets set it back before altering it calipso.modules.content.fn.contentForm = calipso.modules.content.fn.originalContentForm; } // Now, lets alter the form calipso.modules.content.fn.originalContentForm = calipso.modules.content.fn.contentForm; calipso.modules.content.fn.contentForm = function() { var form = calipso.modules.content.fn.originalContentForm(); form.sections.push(contentVersionFormSection); return form; } next(); }
/** * Save version */ function saveVersion(event,content,next) { var ContentVersion = calipso.lib.mongoose.model('ContentVersion'); // Create version and map fiels var version = new ContentVersion(); calipso.form.mapFields(content.doc,version); version.contentId = content._id; if(version.get("version")) { calipso.e.pre_emit('CONTENT_VERSION',version); } version.save(function(err) { if(err) { calipso.error(err); } if(version.get("version")) { // TODO - enable notification / event? calipso.e.post_emit('CONTENT_VERSION',version); } return next(); }); }
Role.findById(id, function (err, c) { if (!err && c) { calipso.form.mapFields(form.role, c); c.ispublic = form.role.ispublic === "Yes" ? true : false; c.updated = new Date(); calipso.e.pre_emit('USER_ROLE_UPDATE', c, function (c) { c.save(function (err) { if (err) { req.flash('error', req.t('Could not update role because {msg}.', {msg:err.message})); if (res.statusCode != 302) { // Don't redirect if we already are, multiple errors res.redirect('/user/role/edit/' + encodeURIComponent(id)); } next(); } else { calipso.e.post_emit('USER_ROLE_UPDATE', c, function (c) { res.redirect('/user/role/show/' + encodeURIComponent(id)); next(); }); } }); }); } else { req.flash('error', req.t('Could not locate that role.')); res.redirect('/user/role'); next(); } });
calipso.form.process(req, function (form) { if (form) { var Role = calipso.db.model('Role'); var c = new Role(form.role); var saved; calipso.e.pre_emit('USER_ROLE_CREATE', c, function (c) { c.save(function (err) { if (err) { req.flash('error', req.t('Could not save role because {msg}.', {msg:err.message})); if (res.statusCode != 302) { res.redirect('/user/role/new'); } next(); } else { calipso.e.post_emit('USER_ROLE_CREATE', c, function (c) { res.redirect('/user/role'); next(); }); } }); }); } });
u.save(function (err) { if (err) { req.flash('error', req.t('Could not save user because {msg}.', {msg:err.message})); if (res.statusCode != 302) { // Redirect to old page res.redirect('/user/profile/' + encodeURIComponent(username) + '/edit'); return; } } else { calipso.e.post_emit('USER_UPDATE', u); // Update session details if your account if (req.session.user && (req.session.user.username === username)) { // Allows for name change createUserSession(req, res, u, function (err) { if (err) { calipso.error("Error saving session: " + err); } }); } // Redirect to new page res.redirect('/user/profile/' + encodeURIComponent(u.username)); return; } // If not already redirecting, then redirect next(); });
me.render = function (formJson, values, req, next) { var self = this, formData = {formJson: formJson, values: values}; // Store local reference to the request for use during translation t = req.t; // Emit a form pre-render event. calipso.e.custom_emit('FORM', formJson.id, formData, function (formData) { var formJson = formData.formJson, values = formData.values, form = ( self.start_form(formJson) + self.render_sections(formJson, values) + // todo: deprecate - sections should be treated the same as any other field (container) self.render_fields(formJson, values) + self.render_buttons(formJson.buttons) + // todo: deprecate - buttons should be treated the same as any other field (container) self.end_form(formJson) ); // Save the form object in session, this enables us to use it later // To parse the incoming data and validate against. // Saving it in the session allows for per-user customisation of the form without // impacting this code. saveFormInSession(formJson, req, function (err) { if (err) { calipso.error(err.message); } next(form); }) }); };
u.save(function (err) { if (err) { var msg = err.message; if (err.code === 11000) { msg = "a user has already registered with that email"; } req.flash('error', req.t('Could not save user because {msg}.', {msg:msg})); if (res.statusCode != 302 && !res.noRedirect) { res.redirect('back'); return; } } else { calipso.e.post_emit('USER_CREATE', u); if (!res.noRedirect) { req.flash('info', req.t('Profile created, you can now login using this account.')); res.redirect('/user/profile/' + encodeURIComponent(u.username)); return; } } // If not already redirecting, then redirect next(err); });
/** * Save version */ function saveVersion(event, content, next) { var ContentVersion = calipso.db.model('ContentVersion'); // Create version and map fields var version = new ContentVersion(); calipso.utils.copyMongoObject(content, version, content.schema); version.contentId = content._id; if(version.get("version")) { calipso.e.pre_emit('CONTENT_VERSION', version); } version.save(function(err) { if(err) { calipso.error(err); } if(version.get("version")) { // TODO - enable notification / event? calipso.e.post_emit('CONTENT_VERSION',version); } return next(); }); }
ContentType.findById(id, function(err, c) { if (!err && c) { calipso.form.mapFields(form.contentType,c); c.ispublic = form.contentType.ispublic === "Yes" ? true : false; c.updated = new Date(); calipso.e.pre_emit('CONTENT_TYPE_UPDATE',c,function(c) { c.save(function(err) { if(err) { req.flash('error',req.t('Could not update content type because {msg}.',{msg:err.message})); if(res.statusCode != 302) { // Don't redirect if we already are, multiple errors res.redirect('/content/type/edit/' + id); } next(); } else { calipso.e.post_emit('CONTENT_TYPE_UPDATE',c, function(c) { res.redirect('/content/type/show/' + id); next(); }); } }); }); } else { req.flash('error',req.t('Could not locate that content type.')); res.redirect('/content/type'); next(); } });
calipso.form.process(req,function(form) { if(form) { var ContentType = calipso.db.model('ContentType'); var c = new ContentType(form.contentType); c.ispublic = form.contentType.contentType.ispublic === "Yes" ? true : false; var saved; calipso.e.pre_emit('CONTENT_TYPE_CREATE',c, function(c) { c.save(function(err) { if(err) { req.flash('error',req.t('Could not save content type because {msg}.',{msg:err.message})); if(res.statusCode != 302) { res.redirect('/content/type/new'); } next(); } else { calipso.e.post_emit('CONTENT_TYPE_CREATE',c, function(c) { res.redirect('/content/type'); next(); }); } }); }); } });
User.findOne({username:user.username}, function (err, u) { if (err) { return promise.fail(err); } if (u) { return finishUser(u); } u = new User({ username:user.username, fullname:user.name, email:user.email, hash:'external:auth' }); u.roles = ['Guest']; // Todo - need to make sure guest role can't be deleted? calipso.e.pre_emit('USER_CREATE', u); u.save(function (err) { if (err) { return promise.fail(err); } calipso.e.post_emit('USER_CREATE', u); // If not already redirecting, then redirect finishUser(u); return null; }); });
c.save(function(err) { if(err) { calipso.debug(err); // TODO : err.errors is an object that contains actual fields, can pass back actual errors // To the form req.flash('error',req.t('Could not save content because {msg}.',{msg:err.message})); if(res.statusCode != 302) { res.redirect('/content/new?type='+form.content.contentType); } next(); } else { req.flash('info',req.t('Content saved.')); // Raise CONTENT_CREATE event calipso.e.post_emit('CONTENT_CREATE',c,function(c) { if(returnTo) { res.redirect(returnTo); } else { res.redirect('/content/show/' + c._id); } next(); }); } });
c.save(function(err) { if(err) { var errorMsg = ''; if(err.errors) { for(var error in err.errors) { errorMessage = error + " " + err.errors[error] + '\r\n'; } } else { errorMessage = err.message; } req.flash('error',req.t('Could not update content because {msg}',{msg:errorMessage})); if(res.statusCode != 302) { // Don't redirect if we already are, multiple errors res.redirect('back'); } next(); } else { req.flash('info',req.t('Content saved.')); // Raise CONTENT_CREATE event calipso.e.post_emit('CONTENT_UPDATE',c,function(c) { if(returnTo) { res.redirect(returnTo); } else { // use the reference to the originally id deifned by req.moduleParams.id res.redirect('/content/show/' + id); } next(); }); } });
function init(module, app, next) { calipso.e.addEvent('CIRCLE_CREATE'); calipso.e.addEvent('CIRCLE_UPDATE'); calipso.e.addEvent('CIRCLE_DELETE'); calipso.e.addEvent('CALL_CREATE'); calipso.e.addEvent('CALL_UPDATE'); calipso.e.addEvent('CALL_DELETE'); calipso.e.addEvent('PROJECT_CREATE'); calipso.e.addEvent('PROJECT_UPDATE'); calipso.e.addEvent('PROJECT_DELETE'); calipso.e.addEvent('PROJECT_ITERATE'); calipso.permission.Helper.addPermission("ecrafting:circle", "eCrafting", true); calipso.permission.Helper.addPermission("ecrafting:call", "eCrafting", true); calipso.permission.Helper.addPermission("ecrafting:project", "eCrafting", true); calipso.permission.Helper.addPermission("admin:ecrafting:circle", "eCrafting Admin", true); calipso.permission.Helper.addPermission("admin:ecrafting:call", "eCrafting Admin", true); calipso.permission.Helper.addPermission("admin:ecrafting:project", "eCrafting Admin", true); calipso.lib.step( function defineRoutes() { module.router.addRoute('GET /ecrafting', showMain, {template:'ecrafting', admin:true, block:'admin.show'}, this.parallel()); module.router.addRoute('GET /about', showAbout, {template:'about', block:'content.show' }, this.parallel()); module.router.addRoute('GET /locations', showMain, {template:'locations', block:'content.show'}, this.parallel()); module.router.addRoute('GET /timeline', showMain, {template:'timeline', block:'content.show'}, this.parallel()); module.router.addRoute('GET /current', showCurrent, {template:'current', block:'content.show'}, this.parallel()); module.router.addRoute(/.*/, allPages, { end:false, template:'ecrafting.script', block:'scripts.ecrafting' }, this.parallel()); module.router.addRoute(/.*/, allPages, { end:false, template:'ecrafting.style', block:'styles.ecrafting' }, this.parallel()); }, function done() { domain.init(module, app, next); views.init(module, app, next); api.init(module, app, next); registerEventListeners(); next(); }); }
ContentType.findOne({contentType:form.content.contentType}, function (err, contentType) { if (err || !contentType) { req.flash('error', req.t('Could not save content as I was unable to locate content type {type}.', {type:form.content.contentType})); res.redirect('/content'); next(); } else { // Copy over content type data c.contentType = contentType.contentType; c.layout = contentType.layout; c.ispublic = contentType.ispublic; // Emit pre event // This does not allow you to change the content calipso.e.pre_emit('CONTENT_UPDATE', c, function (c) { c.save(function (err) { if (err) { var errorMsg = ''; if (err.errors) { for (var error in err.errors) { errorMessage = error + " " + err.errors[error] + '\r\n'; } } else { errorMessage = err.message; } req.flash('error', req.t('Could not update content because {msg}', {msg:errorMessage})); if (res.statusCode != 302) { // Don't redirect if we already are, multiple errors res.redirect('back'); } next(); } else { req.flash('info', req.t('Content saved.')); // Raise CONTENT_CREATE event calipso.e.post_emit('CONTENT_UPDATE', c, function (c) { if (returnTo) { res.redirect(returnTo); } else { // use the reference to the originally id deifned by req.moduleParams.id res.redirect('/content/show/' + id); } next(); }); } }); }); } });
/** *Init */ function init(module,app,next) { // Register events for the Content Module calipso.e.addEvent('CONTENT_TYPE_CREATE'); calipso.e.addEvent('CONTENT_TYPE_UPDATE'); calipso.e.addEvent('CONTENT_TYPE_DELETE'); // Register event listeners calipso.e.post('CONTENT_TYPE_CREATE',module.name,storeContentTypes); calipso.e.post('CONTENT_TYPE_UPDATE',module.name,storeContentTypes); calipso.e.post('CONTENT_TYPE_DELETE',module.name,storeContentTypes); calipso.e.post('CONTENT_TYPE_CREATE',module.name,updateContentAfterChange); calipso.e.post('CONTENT_TYPE_UPDATE',module.name,updateContentAfterChange); calipso.e.pre('CONTENT_TYPE_CREATE',module.name,compileTemplates); calipso.e.pre('CONTENT_TYPE_UPDATE',module.name,compileTemplates); // Define permissions calipso.permission.Helper.addPermission("admin:content:type","Content Types",true); // Schemea var ContentType = new calipso.lib.mongoose.Schema({ contentType:{type: String, required: true, unique: true, "default": 'default', index: true}, description:{type: String, required: true, "default": 'Default Content Type'}, layout:{type: String, required: true, "default": 'default'}, ispublic:{type: Boolean, required: true, "default": true}, created: { type: Date, "default": Date.now }, updated: { type: Date, "default": Date.now }, fields: {type: String, "default":""}, templateLanguage:{type: String, required: true, "default": 'html'}, viewTemplate:{type: String, "default": ''}, listTemplate:{type: String, "default": ''}, }); calipso.db.model('ContentType', ContentType); // Cache the content types in the calipso.data object if(app.config.get('installed')) { storeContentTypes(null,null,function(){}); } module.initialised = true; next(); }
u.save(function (err) { if (err) { return promise.fail(err); } calipso.e.post_emit('USER_CREATE', u); // If not already redirecting, then redirect finishUser(u); return null; });
function done() { // Define our tag clouds var Tag = new calipso.lib.mongoose.Schema({ // Tag name is in _ID from MR "_id":{type:String}, "value":{type:Number} }); calipso.db.model('Tag', Tag); // Register for events calipso.e.post('CONTENT_CREATE', module.name, mapReduceTagCloud); calipso.e.post('CONTENT_UPDATE', module.name, mapReduceTagCloud); calipso.e.post('CONTENT_DELETE', module.name, mapReduceTagCloud); next(); }
u.save(function (err) { if (err) { req.flash('error', req.t('There was an error unlocking that user account.')); } else { calipso.e.post_emit('USER_UNLOCK', u); req.flash('info', req.t('Account unlocked.')); } res.redirect('/user/profile/' + encodeURIComponent(username)); });
req.session.save(function (err) { // Check for error calipso.e.post_emit('USER_LOGOUT', u); if (res.statusCode != 302) { res.redirect(returnTo || 'back'); return; } next(); });
calipso.lib.async.parallel([function(cb) { wc.save(cb) }, function(cb) { ac.save(cb) }, function(cb) { art.save(cb) }], function(err) { // Allow event to fire calipso.e.post_emit('CONTENT_UPDATE',art,function(artc) {}); // Done calipso.info("Content module installed ... "); next(); });
function done() { // Schema var ContentVersion = new calipso.lib.mongoose.Schema({ contentId:{type: String} // All other properties are dynamically mapped, hence use of .set / .get }); calipso.db.model('ContentVersion', ContentVersion); // Version event listeners calipso.e.post('CONTENT_CREATE', module.name, saveVersion); calipso.e.post('CONTENT_UPDATE', module.name, saveVersion); // Form alter of main content form calipso.e.custom('FORM', 'content-form', module.name, alterContentForm); next(); }
Role.remove({_id:id}, function (err) { if (err) { req.flash('info', req.t('Unable to delete the role because {msg}.', {msg:err.message})); res.redirect("/user/role"); } else { calipso.e.post_emit('USER_ROLE_DELETE', c); req.flash('info', req.t('The role has now been deleted.')); res.redirect("/user/role"); } next(); });
ContentType.findOne({contentType:form.content.contentType}, function(err, contentType) { if(err || !contentType) { calipso.debug(err); req.flash('error',req.t('Could not create content as I was unable to locate content type {type}.',{type:form.content.contentType})); res.redirect('/content'); next(); } else { // Copy over content type data - in meta as this is // not mastered here c.contentType = contentType.contentType; c.layout = contentType.layout; c.ispublic = contentType.ispublic; // Emit event pre-save, this DOES NOT Allow you to change // The content item (yet). calipso.e.pre_emit('CONTENT_CREATE',c,function(c) { c.save(function(err) { if(err) { calipso.debug(err); // TODO : err.errors is an object that contains actual fields, can pass back actual errors // To the form req.flash('error',req.t('Could not save content because {msg}.',{msg:err.message})); if(res.statusCode != 302) { res.redirect('/content/new?type='+form.content.contentType); } next(); } else { req.flash('info',req.t('Content saved.')); // Raise CONTENT_CREATE event calipso.e.post_emit('CONTENT_CREATE',c,function(c) { if(returnTo) { res.redirect(returnTo); } else { res.redirect('/content/show/' + c._id); } next(); }); } }); }); } });
Content.remove({_id:id}, function(err) { if(err) { req.flash('info',req.t('Unable to delete the content because {msg}',{msg:err.message})); res.redirect("/"); } else { calipso.e.post_emit('CONTENT_DELETE',c); req.flash('info',req.t('The content has now been deleted.')); res.redirect("/"); } next(); });
/** * Init */ function init(module, app, next) { // Register events for the Content Module calipso.e.addEvent('PERMISSIONS_UPDATE'); calipso.e.post('PERMISSIONS_UPDATE',module.name,loadPermissionRoles); calipso.permission.Helper.addPermission("admin:permission:configuration","Manage role based permissions."); var PermissionRole = new calipso.lib.mongoose.Schema({ permission:{type: String, required: true}, role:{type: String, required: true} }); calipso.db.model('PermissionRole', PermissionRole); loadPermissionRoles(function(err) { next(err); }); }
/** *Init */ function init(module,app,next) { // Version events calipso.e.addEvent('CONTENT_VERSION'); calipso.lib.step( function defineRoutes() { // Menus module.router.addRoute('GET /content/show/:id',showContent,{admin:true},this.parallel()); module.router.addRoute('GET /content/show/:id',showContent,{admin:true},this.parallel()); // Crud operations module.router.addRoute('GET /content/show/:id/versions',listVersions,{admin:true,template:'list',block:'content.version'},this.parallel()); module.router.addRoute('GET /content/show/:id/versions/diff/:a',diffVersion,{admin:true,template:'diff',block:'content.diff'},this.parallel()); module.router.addRoute('GET /content/show/:id/versions/diff/:a/:b',diffVersion,{admin:true,template:'diff',block:'content.diff'},this.parallel()); module.router.addRoute('GET /content/show/:id/version/:version',showVersion,{admin:true,template:'show',block:'content.version'},this.parallel()); module.router.addRoute('GET /content/show/:id/version/:version/revert',revertVersion,{admin:true},this.parallel()); }, function done() { // Schema var ContentVersion = new calipso.lib.mongoose.Schema({ contentId:{type: String} // All other properties are dynamically mapped, hence use of .set / .get }); calipso.lib.mongoose.model('ContentVersion', ContentVersion); // Version event listeners calipso.e.post('CONTENT_CREATE',module.name,saveVersion); calipso.e.post('CONTENT_UPDATE',module.name,saveVersion); // Form alteration if(calipso.modules.content.fn.originalContentForm) { // We have already altered the form, so lets set it back before altering it calipso.modules.content.fn.contentForm = calipso.modules.content.fn.originalContentForm; } // Now, lets alter the form calipso.modules.content.fn.originalContentForm = calipso.modules.content.fn.contentForm; calipso.modules.content.fn.contentForm = function() { var form = calipso.modules.content.fn.originalContentForm(); form.sections.push(contentVersionFormSection); return form; } next(); } ); }
/** * Initialisation */ function init(module, app, next) { calipso.e.addEvent('USER_ROLE_CREATE'); calipso.e.addEvent('USER_ROLE_UPDATE'); calipso.e.addEvent('USER_ROLE_DELETE'); calipso.permission.Helper.addPermission("admin:roles", "Roles", true); calipso.lib.async.map(routes, function (options, next) { module.router.addRoute(options, next) }, function (err, data) { // Done adding routes var Role = new calipso.lib.mongoose.Schema({ name:{type:String, required:true, unique:true}, description:{type:String, "default":''}, isAdmin:{type:Boolean, required:true, "default":false}, isDefault:{type:Boolean, required:true, "default":false} }); calipso.db.model('Role', Role); // Load roles into calipso data if (app.config.get('installed')) { storeRoles(null, null, next); } }); // Register event listeners calipso.e.post('USER_ROLE_CREATE', module.name, storeRoles); calipso.e.post('USER_ROLE_UPDATE', module.name, storeRoles); calipso.e.post('USER_ROLE_DELETE', module.name, storeRoles); }
User.remove({_id:u._id}, function (err) { if (err) { req.flash('info', req.t('Unable to delete the user because {msg}', {msg:err.message})); res.redirect("/user/list"); return; } else { calipso.e.post_emit('USER_DELETE', u); req.flash('info', req.t('The user has now been deleted.')); res.redirect("/user/list"); return; } next(); });