Beispiel #1
0
/**
 * 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");
    }

  });
}
Beispiel #2
0
/**
 * 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);
  });

}
Beispiel #3
0
  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);
      });

    }

  });
Beispiel #4
0
      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();
        }
      });
Beispiel #5
0
/**
 * 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);
  });

}
Beispiel #6
0
	/**
	 * 创建案例处理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);				
				
				}
			  });	 
		}
		});
	}
Beispiel #7
0
/**
 * 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();

    });

}
Beispiel #8
0
      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();
        }
      });
Beispiel #9
0
  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);
    });
  }
Beispiel #10
0
  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);
    });

  });
Beispiel #11
0
/**
 * 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);
  });

}
Beispiel #12
0
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;
	}
};
Beispiel #13
0
/**
 * 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();

    }

  });

}
Beispiel #14
0
/**
 * 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);
  });

}
Beispiel #15
0
/**
 * 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);
  });

}
Beispiel #16
0
/**
 * 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();
        }
      });
    }

  });
}
Beispiel #17
0
/**
 * 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);
    });

  }

}
Beispiel #18
0
/**
 * 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();

    }

  });
}
Beispiel #19
0
/**
 * 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);
  });

}
Beispiel #20
0
/**
 * 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);
  });

}
Beispiel #21
0
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');
    }
  });
}
Beispiel #22
0
/**
 * 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();

    }

  });

}
Beispiel #23
0
/**
 * 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();
      });
    }
  });
}
Beispiel #24
0
/**
 * 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();
        }
      });
    }

  });
}
Beispiel #25
0
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
        });
      });
    });
  });
}
Beispiel #26
0
/**
 * 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);
  });

}
Beispiel #27
0
/**
 * 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");

  });

}
Beispiel #28
0
}, 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){
Beispiel #29
0
/**
 * 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;
        }
      });
    }
  });

}
Beispiel #30
0
        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();
           });

        });