/** * Function to enable ajax testing of the mongo configuration */ function installMongoTest(req, res, template, block, next) { if (calipso.config.get('installed')) { res.format = "json"; res.end(JSON.stringify({status:"Invalid Request"}), "UTF-8"); } calipso.form.process(req, function (form) { var dbUri = form.dbUri; var output = {}; if (dbUri) { calipso.storage.mongoConnect(dbUri, true, function (err, connected) { if (!err) { output.status = "OK"; } else { output.status = "FAILED"; output.message = "Failed to connect to MongoDB because: " + err.message; } res.format = "json"; res.end(JSON.stringify(output), "UTF-8"); }); } else { output.status = "FAILED"; output.message = "You need to provide a valid database uri, in the format described."; res.format = "json"; res.end(JSON.stringify(output), "UTF-8"); } }); }
/** * Installation mongodb - called by install router, not a routing function. */ function installMongo(req, res, next) { // Manually grab the template var template = calipso.modules.admin.templates.install_mongo; // Create the form var mongoForm = {id:'install-mongo-form', title:'', type:'form', method:'POST', action:'/admin/install', fields:[ {label:'MongoDB URI', name:'database:uri', cls:'database-uri', type:'text', description:'Enter the database URI, in the form: mongodb://servername:port/database', required:true, placeholder:"mongodb://servername:port/database"}, {label:'', name:'installStep', type:'hidden'}, {label:'', name:'installPassword', type:'hidden'} ], buttons:[]}; // Submitted via template var formValues = { database:{ uri:calipso.config.get('database:uri') }, 'installStep':'user', installPassword: installPass } calipso.form.render(mongoForm, formValues, req, function (form) { calipso.theme.renderItem(req, res, template, 'admin.install.mongo', {form:form}, next); }); }
ScheduledJob.findOne({name:jobName}, function(err, job) { if(err || job === null) { res.statusCode = 404; next(); } else { // Setup form jobForm.action = '/scheduler/' + job.name; jobForm.title = "Job: " + job.name; // Assign value object var values = { job: job }; // Concatenate method values.job.moduleMethod = job.module + "." + job.method; values.job.enabled = job.enabled ? "Yes" : "No"; // Render form calipso.form.render(jobForm,values,req,function(form) { calipso.theme.renderItem(req,res,form,block,{},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(); } });
/** * Install Modules - called by install router, not a routing function. */ function installModules(req, res, next) { // Manually grab the template var template = calipso.modules.admin.templates.install_modules; // Create the form var moduleForm = {id:'install-modules-form', title:'', type:'form', method:'POST', action:'/admin/install', fields:[ {label:'', name:'installStep', type:'hidden'}, {label:'', name:'installPassword', type:'hidden'} ], buttons:[]}; // Submitted via template //Add the modules moduleForm.fields = createModuleFields(moduleForm.fields); // Defaults var formValues = { modules:{}, installStep:'finalise', installPassword:installPass }; readonlyModules.forEach(function(e) { formValues.modules[e] = { enabled:true }; }); calipso.form.render(moduleForm, formValues, req, function (form) { calipso.theme.renderItem(req, res, template, 'admin.install.modules', {form:form,needMongo:!process.env.MONGO_URI}, next); }); }
/** * 创建案例处理post数据 **/ function create_post (req, res, template, block, next) { //标准提交方法,对提交的form进行处理,删除空数据,美化日期等处理 calipso.form.process(req, function(form) { if(form) { var Sickcase = calipso.lib.mongoose.model('Sickcase'); var sickcase = new Sickcase(form.sickcase); sickcase.dongtai.push({created_by:req.session.user._id ,created_by_login : req.session.user.login , title:'创建了案例' , body:'创建了新案例!'}); sickcase.save(function(err) { if (err) { console.log(err); req.flash('error','出现错误,不能创建案例: ' + err); res.redirect('/sickcase/create_view'); return; }else{ req.flash('info','您的案例已经创建'); res.redirect('/sickcase/case_show/'+sickcase._id); } }); } }); }
/** * 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(); }); }
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(); } });
function finish(role) { // TODO : Use secitons! if (req.session.user.isAdmin && role && (role.name != 'Guest') && (role.name != 'Administrator') && (role.name != 'Contributor')) { res.menu.adminToolbar.addMenuItem({name:'Delete Role', path:'return', url:'/admin/roles/' + role._id + '/delete', description:'Delete role ...', security:[], icon:"icon-close"}); } var roleForm = { id:'FORM', title:req.t('Register'), type:'form', method:'POST', action:'/admin/roles/' + (role && role._id ? role._id : ""), sections:[ { id:'form-section-core', label:'The New Role', fields:[ {label:'Role Name', name:'role[name]', type:'text', description:'Enter the name of the role.', required:true, placeholder:"Role Name"}, {label:'Description', name:'role[description]', type:'text', description:'Enter the description of the role.', placeholder:"Enter a role description (optional)"}, {label:'Is Default', name:'role[isDefault]', type:'checkbox', description:'Is this a default role?', required:true}, {label:'Is Admin', name:'role[isAdmin]', type:'checkbox', description:'Is a user with this role an admin?', required:true} ] } ], buttons:[ {name:'submit', type:'submit', value:'Register'} ] }; calipso.form.render(roleForm, {role:role}, req, function (form) { calipso.theme.renderItem(req, res, form, block, {}, next); }); }
User.findOne({username:username}, function (err, u) { // Allow admins to register other admins if (req.session.user && req.session.user.isAdmin) { // Role checkboxes var roleFields = []; calipso.data.roleArray.forEach(function (role) { roleFields.push( {label:role, name:'user[roleList][' + role + ']', type:'checkbox', description:calipso.data.roles[role].description, checked:calipso.lib._.contains(u.roles, role)} ); }); userForm.sections[roleSection].fields.push({ type:'fieldset', name:'roles_fieldset', // shouldn't need a name ... legend:'User Roles', fields:roleFields }); } else { // remove the section delete userForm.sections[roleSection]; } if (u.hash === 'external:auth') { delete userForm.sections[passwordSection]; } var values = {user:u}; calipso.form.render(userForm, values, req, function (form) { calipso.theme.renderItem(req, res, form, block, {}, next); }); });
/** * Installation user - called by install router, not a routing function. */ function installUser(req, res, next) { // Manually grab the template var template = calipso.modules.admin.templates.install_user; // Create the form // TODO - reference exported form from user module instead, this will be difficult to maintain var userForm = { id:'install-user-form', title:'', type:'form', method:'POST', action:'/admin/install', fields:[ {label:'Username', name:'user[username]', cls:'username', type:'text', required:true, 'placeholder':"Your desired username"}, {label:'Full Name', name:'user[fullname]', type:'text'}, {label:'Email', name:'user[email]', type:'email', required:true, 'placeholder':"*****@*****.**"}, {label:'Language', name:'user[language]', type:'select', options:req.languages, required:true}, // TODO : Select based on available {label:'Password', name:'user[password]', cls:'password', type:'password', required:true, placeholder:"Password"}, {label:'Repeat Password', name:'user[check_password]', cls:'check_password', type:'password', required:true, placeholder:"Repeat Password"}, {label:'', name:'installStep', type:'hidden'}, {label:'', name:'userStep', type:'hidden'} ], buttons:[] }; var formValues = { user:(calipso.data.adminUser || {}), // Store here during install process 'userStep':true, 'installStep':'modules' } calipso.form.render(userForm, formValues, req, function (form) { calipso.theme.renderItem(req, res, template, 'admin.install.user', {form:form}, next); }); }
module.exports = function(req, res, next){ switch(req.method){ case 'GET': step(function(){ api.localize.getStrings({string_names: 'Ticket thank you 1,Ticket thank you 2', language: req.language}, this); }, function(err, s){ if(err){ throw err; } var strings = s.strings; res.send(res.partial('submit_ticket', {locals: {thankyou1 : strings[0].string, thankyou2 : strings[1].string, req: req}})); }); break; case 'POST': var data = req.body, form_id = data.form_id; delete data.form_id; api.form.postData({ form_id : parseInt(form_id), data : JSON.stringify(data) }, function(err, data){ if(err){ throw err; } res.contentType('foo.json'); res.send('{"status":"success"}'); }) break; } };
/** * Save the modified configuration details on submission */ function saveAdmin(req, res, template, block, next) { calipso.form.process(req, function(form) { if (form) { // Re-retrieve our object var AppConfig = calipso.lib.mongoose.model('AppConfig'); AppConfig.findOne({}, function(err, c) { if (!err && c) { c.theme = form.config.theme; c.adminTheme = form.config.adminTheme; c.cache = form.config.cache; c.cacheTtl = form.config.cacheTtl; c.language = form.config.language; c.watchFiles = form.config.watchFiles; c.logs.level = form.config.logslevel; c.logs.file.enabled = form.config.logsfileenabled; c.logs.file.filepath = form.config.logsfilefilepath; c.logs.console.enabled = form.config.logsconsoleenabled; c.modules = moduleFormatToArray(res, form.config.modules); c.save(function(err) { if (err) { req.flash('error', req.t('Could not update the configuration because {msg}.',{msg:err.message})); if (res.statusCode != 302) { // Don't redirect if we already are, multiple errors res.redirect('/admin/core/config'); } } else { calipso.config = c; // TODO : This wont work on multiple edits res.reloadConfig = true; res.redirect('/admin/core/config/reload'); } next(); }); } else { req.flash('error', req.t('Could not load the application configuration, please check your database.')); res.redirect('/admin'); next(); } }); } else { req.flash('error', req.t('Could not process the updated configuration.')); res.redirect('/admin/core/config'); next(); } }); }
/** * Create new role */ function createRoleForm(req, res, template, block, next) { roleForm.title = "Create Role"; roleForm.action = "/user/role/create"; calipso.form.render(roleForm, null, req, function (form) { calipso.theme.renderItem(req, res, template, block, {form:form}, next); }); }
/** * Create new content type */ function createContentTypeForm(req,res,template,block,next) { contentTypeForm.title = "Create Content Type"; contentTypeForm.action = "/content/type/create"; calipso.form.render(contentTypeForm,null,req,function(form) { calipso.theme.renderItem(req,res,template,block,{form:form},next); }); }
/** * Update a content type */ function updateContentType(req, res, template, block, next) { calipso.form.process(req, function (form) { if (form) { var ContentType = calipso.db.model('ContentType'); var id = req.moduleParams.id; ContentType.findById(id, function (err, c) { if (!err && c) { var fields = c.fields, updatedFields = fields, formData = {form: form, json: ''}; calipso.e.pre_emit('CONTENT_TYPE_MAP_FIELDS', formData, function (formData) { updatedFields = formData.json; }); calipso.form.mapFields(form.contentType, c); if (c.fields == fields && updatedFields != fields) { c.fields = updatedFields; } 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(); } }); } }); }
/** * Create Content Form * Create and render the 'New Content' page. * This allows some defaults to be passed through (e.g. from missing blocks). */ function createContentForm(req, res, template, block, next) { // Allow defaults to be passed in if (req.moduleParams.type) { // we have had one passed in, use it and continue createContentFormByType(req, res, template, block, next); } else { var alias = req.moduleParams.alias ? req.moduleParams.alias : ""; var teaser = req.moduleParams.teaser ? req.moduleParams.teaser : ""; var taxonomy = req.moduleParams.taxonomy ? req.moduleParams.taxonomy : ""; var returnTo = req.moduleParams.returnTo ? req.moduleParams.returnTo : ""; var type = "Article"; // Hard coded default TODO fix // Create the form var form = {id:'content-type-form', title:'Create Content ...', type:'form', method:'GET', action:'/content/new', tabs:false, fields:[ {label:'Type', name:'type', type:'select', options:function () { return calipso.data.contentTypes }, description:'Select the type of content you want to create ...'}, {label:'', name:'alias', type:'hidden'}, {label:'', name:'teaser', type:'hidden'}, {label:'', name:'taxonomy', type:'hidden'}, {label:'', name:'returnTo', type:'hidden'} ], buttons:[ {name:'submit', type:'submit', value:'Next'} ]}; // Default values var values = { content:{ contentType:type }, alias:alias, teaser:teaser, taxonomy:taxonomy } res.layout = 'admin'; calipso.form.render(form, values, req, function (form) { calipso.theme.renderItem(req, res, form, block, {}, next); }); } }
/** * Save module configuratino */ function saveModulesConfig(req, res, template, block, next) { calipso.form.process(req, function (moduleConfig) { if (moduleConfig) { var moduleName = moduleConfig.moduleName; // Clean the submitted object delete moduleConfig.moduleName delete moduleConfig.submit calipso.config.setModuleConfig(moduleName, '', moduleConfig); calipso.e.pre_emit('CONFIG_UPDATE', {module:moduleName, config:moduleConfig}, function (config) { calipso.config.save(function (err) { if (err) { req.flash('error', req.t('Could not save the updated configuration, there was an error: ' + err.message)); res.redirect('/admin/modules?module=' + moduleName); } else { // Set the reload config flag for event handler to pick up calipso.e.post_emit('CONFIG_UPDATE', {module:moduleName, config:moduleConfig}, function (config) { req.flash('info', req.t('Changes to configuration saved.')); res.redirect('/admin'); next(); }); } }); }); } else { req.flash('error', req.t('Could not process the updated module configuration.')); res.redirect('/admin'); next(); } }); }
/** * Login form */ function loginPage(req, res, template, block, next) { var fields = userFields(); var userForm = { id:'login-form', cls:'login', title:'Log In', type:'form', method:'POST', action:'/user/login', fields:fields, buttons:[ {name:'submit', type:'submit', value:'Login'} ] }; calipso.form.render(userForm, null, req, function (form) { calipso.theme.renderItem(req, res, template, block, {form:form}, next); }); }
/** * Install Modules - called by install router, not a routing function. */ function installModules(req, res, next) { // Manually grab the template var template = calipso.modules.admin.templates.install_modules; // Create the form var moduleForm = {id:'install-modules-form', title:'', type:'form', method:'POST', action:'/admin/install', fields:[ {label:'', name:'installStep', type:'hidden'} ], buttons:[]}; // Submitted via template //Add the modules moduleForm.fields = createModuleFields(moduleForm.fields); // Defaults var formValues = { modules:{ admin:{ enabled:true }, content:{ enabled:true }, contentTypes:{ enabled:true }, user:{ enabled:true }, permissions:{ enabled:true }, taxonomy:{ enabled:true }, tagcloud:{ enabled:true } }, installStep:'finalise' }; calipso.form.render(moduleForm, formValues, req, function (form) { calipso.theme.renderItem(req, res, template, 'admin.install.modules', {form:form}, next); }); }
function updateRole(req, res, template, block, next) { calipso.form.process(req, function (form) { if (form) { var role = req.moduleParams.role; var Role = calipso.db.model('Role'); // Quickly check that the user is an admin or it is their account if (req.session.user && req.session.user.isAdmin) { // We're ok } else { req.flash('error', req.t('You are not authorised to perform that action.')); res.redirect('/'); return; } Role.findOne({_id:role}, function (err, role) { var role = null; if (err || !role) { role = new Role(form.role); } else { role.name = form.role.name; role.isDefault = form.role.isDefault; role.isAdmin = form.role.isAdmin; role.description = form.role.description; } if (role.name === 'Administrator' || role.name === 'Contributor' || role.name === 'Guest') { req.flash('error', req.t('You cannot edit the default calipso roles.')); res.redirect('/admin/role/list'); return; } if (role.name === 'Administrator' || role.name === 'Contributor' || role.name === 'Guest') { req.flash('error', req.t('You cannot name any new roles identical to the default calipso roles.')); return roleForm(req, res, template, block, next); } role.save(function (err) { if (err) { req.flash('error', req.t('There was an error {err}', {err:err})); } }) res.redirect('/admin/role/list'); }); } else { res.redirect('/admin/role/list'); } }); }
/** * Save the modified configuration details on submission */ function saveAdmin(req, res, template, block, next) { calipso.form.process(req, function (config) { if (config) { calipso.e.pre_emit('CONFIG_UPDATE', config, function (config) { // Update the configuration updateConfiguration(config); // updateEnabledModules(config); calipso.config.save(function (err) { if (err) { req.flash('error', req.t('Could not save the updated configuration, there was an error: ' + err.message)); res.redirect('/admin/core/config'); next(); } else { // Set the reload config flag for event handler to pick up calipso.e.post_emit('CONFIG_UPDATE', config, function (config) { req.flash('info', req.t('Changes to configuration saved.')); res.redirect('/admin'); next(); }); } }); }); } else { req.flash('error', req.t('Could not process the updated configuration.')); res.redirect('/admin/core/config'); next(); } }); }
/** * Create a new job */ function createJob(req,res,template,block,next) { calipso.form.process(req,function(form) { if(form) { var ScheduledJob = calipso.lib.mongoose.model('ScheduledJob'); var job = new ScheduledJob(processForm(form.job)); job.save(function(err) { if(err) { req.flash('error',req.t('Could not save job because {msg}.',{msg:err.message})); if(res.statusCode != 302) { res.redirect('back'); } } else { if(calipso.modules[job.module] && calipso.modules[job.module].fn.jobs[job.method]) { var options = { jobName: job.name, cronTime: job.cronTime, enabled: job.enabled, module: job.module, method: job.method, fn: calipso.modules[job.module].fn.jobs[job.method], args: job.args } calipso.jobs[job.name] = new cron.CronJob(options); } else { req.flash('error',req.t('Module {module}, method {method} does not exist, job not initialised.',{module:job.module,method:job.method})); } res.redirect('/scheduler'); } // If not already redirecting, then redirect next(); }); } }); }
/** * Update a role */ function updateRole(req, res, template, block, next) { calipso.form.process(req, function (form) { if (form) { var Role = calipso.db.model('Role'); var id = req.moduleParams.id; 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/' + id); } next(); } else { calipso.e.post_emit('USER_ROLE_UPDATE', c, function (c) { res.redirect('/user/role/show/' + id); next(); }); } }); }); } else { req.flash('error', req.t('Could not locate that role.')); res.redirect('/user/role'); next(); } }); } }); }
function editMailTemplate(req, res, options, next) { var MailTemplate = calipso.db.model('MailTemplate'); var User = calipso.db.model('User'); calipso.form.process(req, function (form) { if (!form) { req.flash('error', req.t('Your template could not be processed.')); return next(); } MailTemplate.findById(form.id, function (err, mailTemplate) { if (err || !mailTemplate) { req.flash('error', req.t('The template you were editing cannot be found.')); return next(); } User.findOne({email:form.to}, function (err, user) { var to; if (err || !user) { if (form.to != 'Everyone' && form.to != 'Administrators' && form.to != 'Target') { req.flash('error', req.t('You must specify a valid recipient.')); return next(); } to = form.to; } else { to = user.id; } mailTemplate.name = form.name || mailTemplate.name; mailTemplate.event = form.event; mailTemplate.to = to; mailTemplate.subject = form.subject; mailTemplate.body = form.body; mailTemplate.save(function (err) { if (err) { req.flash('error', req.t('You must fill in the required fields.' + err)); return next(); } calipso.reloadConfig(mailTemplate.event, null, function () { res.redirect('/admin/mail/show'); return next(err); }); // Reinitialize calipso to pick up new event bindings }); }); }); }); }
/** * Create a new job form */ function createJobForm(req,res,template,block,next) { //res.menu.admin.secondary.push({name:req.t('New Job'),parentUrl:'/scheduler',url:'/scheduler/new'}); jobForm.title = "Create New Job"; jobForm.action = "/scheduler"; var values = { job: { enabled: "No", cronTime: "* * * * * *" } }; calipso.form.render(jobForm,values,req,function(form) { calipso.theme.renderItem(req,res,form,block,{},next); }); }
/** * Function to enable ajax testing of the mongo configuration */ function installUserTest(req, res, template, block, next) { if (calipso.config.get('installed')) { res.format = "json"; res.end(JSON.stringify({status:"Invalid Request"}), "UTF-8"); } calipso.form.process(req, function (form) { // Check to see if new passwords match var err; if (form.password != form.check_password) { err = new Error(req.t('Your passwords do not match.')); } // Check to see if new passwords are blank if (form.password === '') { err = new Error(req.t('Your password cannot be blank.')); } if (form.username === '') { err = new Error(req.t('Your username cannot be blank.')); } // Check to see if new passwords are blank if (form.email === '') { err = new Error(req.t('Your email cannot be blank.')); } var output = {}; if (err) { output.status = "FAILED"; output.message = "There was a problem because: " + err.message; } else { output.status = "OK"; } res.format = "json"; res.end(JSON.stringify(output), "UTF-8"); }); }
}, function(err, perm){ if(err && (err.code != 300)){ throw err; } var conf = $.extend({language: this.shared.req.language}, this.shared.req.query); // see if the user has permission to edit the data if(perm && perm.hasPermissions && !err){ conf.expose_form_ids = 1; } // get the form info api.form.get(conf, this.parallel()); // get the empty placeholder text api.localize.getStrings({string_names: 'Empty Text,' + conf.form_name, language: this.shared.req.language}, this.parallel()); // get the auto-detect country code api.localize.detectCountry({}, this.parallel()); }, function(err, form, s, cc){
/** * Login */ function loginUser(req, res, template, block, next) { calipso.form.process(req, function (form) { if (form) { var User = calipso.db.model('User'); var username = form.user.username; var found = false; User.findOne({username:username}, function (err, user) { if (user) { calipso.lib.crypto.check(form.user.password, user.hash, finish); } else { finish(null, false); } function finish(err, ok) { if (user && !user.locked && ok) { found = true; calipso.e.post_emit('USER_LOGIN', user); createUserSession(req, res, user, function (err) { if (err) { calipso.error("Error saving session: " + err); } }); } if (!found) { req.flash('error', req.t('You may have entered an incorrect username or password, please try again. If you still cant login after a number of tries your account may be locked, please contact the site administrator.')); } if (res.statusCode != 302) { res.redirect(calipso.config.get('server:loginPath') || 'back'); return; } next(); return; } }); } }); }
Content.findById(contentId,function(err,content) { if(err && !content) { calipso.err(err) next(); return; } calipso.form.mapFields(version.doc,content); content.author = req.session.user.username; content.set("comment",'Reverted to version: ' + content.updated); content.updated = new Date(); content.set("version",'Yes'); content.save(function(err) { res.redirect('/content/show/' + contentId); next(); }); });