exports.jpedit = function (doc, req) {
	var form = new Form({
		//tasks: fields.string(),
		//noc_code: fields.string(),
		profile_date: fields.string(),
		//leader_date: fields.string(),
		accountability: fields.string(),
		//staff_sign: fields.string(),
		//director_sign: fields.string(),
		core1: fields.string(),
		core2: fields.string(),
		core3: fields.string(),
		core4: fields.string(),
		core5: fields.string(),
		core6: fields.string(),
		core7: fields.string(),
		core8: fields.string(),

		_id: fields.string(),

		//core_comp: fields.string(),
		position_purpose: fields.string(),
		job_title: fields.string(),
		nature_work: fields.string(),
		//accountability_old: fields.string(),
		//updated: fields.string(),
		//leader_sign: fields.string(),
		qualifications: fields.string(),
		admin_area: fields.string(),
		//job_code: fields.string(),
		dev_phase: fields.string(),
		//position_num: fields.string(),
		//staff_date: fields.string(),
		//created: fields.string(),
		dept: fields.string(),
		//director_date: fields.string(),
		job_family: fields.string()
	});
	form.validate(req);

	if (form.isValid()) {
		form.core_comp = form.core1 + "|" + form.core2 + "|" + form.core3 + "|" + form.core4 + "|" + form.core5 + "|" + form.core6 + "|" + form.core7 + "|" + form.core8
		var currentdate = new Date(); 
		form.updated = currentdate.getDate();
		form.values._rev = doc._rev;
		return [form.values, toJSON(form.values)];
	} else {
		return [null, toJSON(form.errors)];
	}
};
Example #2
0
exports.my_form = function (doc, req) {
    var person = require('./types').person;

//	var myForm = new Form ({first_name: fields.string(), last_name: fields.string()});
    var myForm = new Form(person);
	return {
	  title : 'My First Form',
	  content: templates.render('form.html', req, {
			form_title : 'My Form',
			method : 'POST',
			action : '../_update/update_my_form',
			form : myForm.toHTML(req),
			button: 'Validate'})
	}
};
Example #3
0
exports.login = function (doc, req) {

	// New form
	var form = new forms.Form(types.login, null, {});

    // render the markup for a login form
    var content = templates.render('login.html', req, {
        form_title: 'Login',
		form: form.toHTML(req)
    });

	// return the title and the rendered form
    return {
		title: 'Login',
		content: content
	};
};
Example #4
0
exports.login = function (doc, req) {

	// bind login type to form
	var form = new forms.Form(types.login, null, {
	});

	// parse the request data and check validation and permission functions
    form.validate(req);	

	// log the user in
	if (form.values.user && form.values.pass) {
		session.login(form.values.user, form.values.pass, function (err) {});
    }

	// redirect user to loginok page
	return [null, utils.redirect(req, '/loginok')];
};
Example #5
0
exports.create_user = function(doc, req) {
	events.once('afterResponse', function (info, req, res) {
		myutils.navbarActive();
	});
	if (req.userCtx.name) {
		return {
			content: "Already logged in"};
	}
	var userForm = new Form(user);
	return {
		title: "Create new user",
		content: templates.render('createUser.html', req, {
			method: "POST",
			action: utils.getBaseURL(req) + "/update_user",
			form: userForm.toHTML(req)
		})
	};
}
Example #6
0
exports.changeOKR = function (doc, req) {

		// New form populated with values from the doc that should be changed
		var form = new forms.Form(types.OKR, doc, {
    	    exclude: ['created']
    	});

    	// render the markup for a change form
    	var content = templates.render('changeOKR.html', req, {
    	    form_title: 'Change OKR',
			form: form.toHTML(req)
    	});
	
		// return the title and the rendered form
    	return {
			title: 'Change OKR',
			content: content
		};
};
Example #7
0
exports.addOKR = function (doc, req) {

	// New form
	var form = new forms.Form(types.OKR, null, {
        exclude: ['created', 'creator']
    });
    
 


    // render the markup for a add form
    var content = templates.render('addOKR.html', req, {
        form_title: 'Add new OKR',
		form: form.toHTML(req)
    });
    

	// return the title and the rendered form
    return {
		title: 'Add new OKRs',
		content: content
	};
};
Example #8
0
exports.add_sale = function(doc,req){
   var sale = require('./types').sale;
    var saleForm =  new Form(sale);
    if(doc !=null)
    {
        saleForm =  new Form(sale,doc);
        log('Sale : edit doc: ' + doc._id );
    //    expForm = expForm.bind(doc);
    }
    else {log("Sale : show add new");}
    return {
        title: "Sales Entry",
        content : templates.render('form.html',req,{
            form_title:"Sale Entry",
            method:'POST',
            action : "/" + req.info.db_name + "/_design/business/_rewrite/update_sale",
            form : saleForm.toHTML(req),
            button:'Validate'
        })

    }

};
Example #9
0
exports.changephrase = function (doc, req) {

	// bind phrase type to form
    var form = new forms.Form(types.phrase, doc, {
        exclude: ['created']
    });

	// parse the request data and check validation and permission functions
    form.validate(req);

 if (form.isValid()) {
        // the form is valid, save the document and redirect to the changed page
        return [form.values, utils.redirect(req, '/' + form.values._id)];
    }
    else {
        // the form is not valid, so render it again with error messages
        var content = templates.render('changephrase.html', req, {
            form_title: 'Change phrase',
            form: form.toHTML(req)
        });
        // return null as the first argument so the document isn't saved
        return [null, {content: content, title: 'Change phrase'}];
    }
};
Example #10
0
exports.remove = function (doc, req) {
	
	var messages = "";
	
	if (!req.userCtx.name) {
		if (doc.permissions.add) {
			messages += "<br />You cannot add unless logged in. <br />";
		}
		if (doc.permissions.update) {
			messages += "You cannot update unless logged in. <br />";
		}
		if (doc.permissions.remove) {
			messages += "You cannot remove unless logged in. <br /><br />";
		}
	}

	/* add values from request */
	_.each(req.form, function(val, key) {
		if (!_(key).startsWith("_") && key != "type" && key !== 'permissions' && key !== 'add' && key !== 'update' && key !== 'remove' && key !== 'wc-type') {
			try {
		        doc[key].value = JSON.parse(req.form[key]);
		    } catch (e) {
		        doc[key].value = req.form[key];
		    }
		}
	});
	
	/* transform document into form definition */
	var data = new docs(doc);

	/* create form and render to template */
	var form = new Form(data);

	/* validate the request against the document in storage */
	form.validate(req);

	//if (form.isValid()) {
		/* set to true to delete a document */
		doc._deleted = true;
		var title = doc.title || doc.category;
    	return [doc, wc.render('form.html', req, {
			form_title: 'edit ' + doc.type + ' - ' + title.value,
			method : 'POST',
			edit_action: '/_update/edit/',
			remove_action: '/_update/remove/',
			duplicate_action: '/_update/create/',
			id: doc._id,
			form : 'Deleted by ' + req.userCtx.name + ' on ' + new Date() + '<br /><br />' + form.toHTML(req),
			messages: messages
		})];
	/*}
	else {
		log('invalid');
		var content = wc.render('form.html', req, {
			form_title: 'edit' + doc.type + ' - ' + doc._id,
			method : 'POST',
			edit_action: '/_update/edit/',
			remove_action: '/_update/remove/',
			duplicate_action: '/_update/create/',
			form : form.toHTML(req),
			id: doc._id,
			rev: doc._rev,
			messages: messages
		});
		return [null, content];
	}*/
};
Example #11
0
exports.edit = function (doc, req) {
	var messages = "";
	
	if (!req.userCtx.name) {
		if (doc.permissions.add) {
			messages += "<br />You cannot add unless logged in. <br />";
		}
		if (doc.permissions.update) {
			messages += "You cannot update unless logged in. <br />";
		}
		if (doc.permissions.remove) {
			messages += "You cannot remove unless logged in. <br /><br />";
		}
	}
	
	/* always have a value for boolean */
	_.each(doc, function(val, key) {
		if (!_(key).startsWith("_") && key != "type" && key !== 'permissions' && key !== 'add' && key !== 'update' && key !== 'remove') {
			if (doc[key].type === "boolean") {
				req.form[key] = (!!req.form[key]) ? true : false;
			}
		}
	});

	/* add values from request */
	_.each(req.form, function(val, key) {
		if (!_(key).startsWith("_") && key != "type" && key !== 'permissions' && key !== 'add' && key !== 'update' && key !== 'remove') {
			try {
				if (doc[key].type === "array") {
					throw "array";
				}
				doc[key].value = JSON.parse(req.form[key]);
		  } catch (e) {
		  	doc[key].value = req.form[key];
		  }
		}
	});
	
	/* transform document into form definition */
	var data = new docs(doc);

	/* create form and render to template */
	var form = new Form(data);
	
	/* validate the request against the document in storage */
	form.validate(req);

	if (form.isValid()) {
		
		/* to create a document */
		//delete form.values._rev;
		//doc._id = req.uuid;

		/* update does not accept deleted key unless false or true */
		//delete form.values._deleted;
		// or
		//doc._deleted = false;
		
		/* set to true to delete a document */
		//doc._deleted = true;
		var title = doc.title || doc.category;
    return [doc, wc.render('form.html', req, {
			form_title: 'edit ' + doc.type + ' - ' + title.value,
			thetype : doc.type,
			method : 'POST',
			edit_action: '/_update/edit/',
			remove_action: '/_update/remove/',
			duplicate_action: '/_update/create/',
			owner : doc.permissions.owner,
			id: doc._id,
			form : 'Edited by ' + req.userCtx.name + ' on ' + new Date() + '<br /><br />' + form.toHTML(req),
			messages: messages
		})];
	}
	else {
		var title = doc.title || doc.category;
		var content = wc.render('form.html', req, {
			form_title: 'edit' + doc.type + ' - ' + title.value,
			thetype : doc.type,
			method : 'POST',
			edit_action: '/_update/edit/',
			remove_action: '/_update/remove/',
			duplicate_action: '/_update/create/',
			owner : doc.permissions.owner,
			form : form.toHTML(req),
			id: doc._id,
			rev: doc._rev,
			messages: messages
		});
		return [null, content];
	}
};
Example #12
0
exports.create = function (doc, req) {
	
	var messages = "",
		globalKeys = ['add', 'update', 'remove', 'permissions', '_attachment'];
	
	if (!req.userCtx.name) {
		if (doc.permissions.add) {
			messages += "<br />You cannot add unless logged in. <br />";
		}
		if (doc.permissions.update) {
			messages += "You cannot update unless logged in. <br />";
		}
		if (doc.permissions.remove) {
			messages += "You cannot remove unless logged in. <br /><br />";
		}
	}

	/* add values from request */
	_.each(req.form, function(val, key) {
		if (!_(key).startsWith("_") && key != "type" && globalKeys.indexOf(key) === -1) {
				if ( req.form[key] == '{}' ) {
					req.form[key] = '';
				}
    		doc[key].value = req.form[key];
		}
	});
	
	/* transform document into form definition */
	var data = new docs(doc),
	
	/* create form and render to template */
		form = new Form(data);
		
	/* validate the request against the document in storage */
	form.validate(req);

	if (form.isValid()) {
		/* to create a document */
		var docId = doc._id;
		doc._id = req.uuid;
		delete doc._rev;
		delete doc._revisions;
		delete doc._attachments;
		var title = doc.title || doc.category;
	    return [doc, wc.render('form.html', req, {
			form_title: 'edit ' + doc.type + ' - ' + title.value,
			method : 'POST',
			edit_action: '/_update/edit/',
			remove_action: '/_update/remove/',
			duplicate_action: '/_update/create/',
			id: doc._id,
			form : 'Created by ' + req.userCtx.name + ' on ' + new Date() + '<br /><br />' + form.toHTML(req),
			messages: messages
		})];
	}
	else {
		var title = doc.title || doc.category;
		var content = wc.render('form.html', req, {
			form_title: 'edit' + doc.type + ' - ' + title.value,
			method : 'POST',
			edit_action: '/_update/edit/',
			remove_action: '/_update/remove/',
			duplicate_action: '/_update/create/',
			form : form.toHTML(req),
			id : docId,
			messages: messages
		});
		return [null, content];
	}
};
Example #13
0
exports.save_definition = function (doc, req) {
	
	/* transform document into form definition */
	var theDoc = doc;
	var doc = {};
	var opts = {};
	var i = 0;
	_.each(req.form, function(val, key) {
		if (_(key).startsWith('name_')) {
			i++;
			
			/* set global widget options */
			opts = {};

			if (req.form['placeholder_'+i]) {
				opts['placeholder'] = req.form['placeholder_'+i];
			}
			if (req.form['size_'+i]) {
				opts['size'] = req.form['size_'+i];
			}
			if (req.form['maxlength_'+i]) {
				opts['maxlength'] = req.form['maxlength_'+i];
			}
			if (req.form['readonly_'+i]) {
				opts['readonly'] = true;
			}

			/* set options based on type */
			if (req.form['widgettype_'+i] == "textarea") {
				opts['cols'] = req.form['cols_'+i];
				opts['rows'] = req.form['rows_'+i];
			}
			else if (req.form['widgettype_'+i] == "select") {
				opts['values'] = req.form['values_'+i];
			}
			else if (req.form['widgettype_'+i] == "selectlookup") {
				opts['view'] = req.form['view_'+i];
				opts['values'] = [];
			}
			
			if (req.form['default_value_'+i] === "false" || req.form['default_value_'+i] === "0") {
				req.form['default_value_'+i] = false;
			}
			if (req.form['default_value_'+i] === "true" || req.form['default_value_'+i] === "1") {
				req.form['default_value_'+i] = true;
			}
			/*if (typeof req.form['default_value_'+i] === 'object') {
		        req.form['default_value_'+i] = _.flatten(req.form['default_value_'+i]);
		    }*/
			
			/* create document object */
			doc[val] = {
				value: (req.form['default_value_'+i]) ? req.form['default_value_'+i] : "",
				type: req.form['fieldtype_'+i],
				options: {
					className: (req.form['widgettype_'+i] == "selectlookup") ? 'lookup' : req.form['classname_'+i],
					label: req.form['label_'+i],
					/* set boolean options to boolean values */
					required: (req.form['required_'+i]) ? true : false,
					omit_empty: (req.form['omit_empty_'+i]) ? true : false,
					default_value: (req.form['default_value_'+i]) ? req.form['default_value_'+i] : "",
					widget: {
						type: req.form['widgettype_'+i],
						options: opts
					}
				}
			};
		}
		else if (key == 'wc-type') {
			doc['type'] = req.form['wc-type'];
		}
		else if (key == 'template') {
			doc['template'] = {
				       "value": req.form['template'],
				       "type": "string",
				       "options": {
				           "className": "lookup",
				           "label": "template",
				           "required": false,
				           "default_value": req.form['template'],
				           "omit_empty": false,
				           "widget": {
				               "classes": [
				               ],
				               "options": {
				                   "values": [
				                   ],
				                   "view": "_templates"
				               },
				               "type": "selectlookup"
				           }
				       }
				   };
		}
	});
	
	/* create form and render to template */
	var data = new docs(doc),
		form = new Form(data);
		
	/* validate the request against the document in storage */
	//form.validate(req);

	if (form.isValid()) {
		
		doc['permissions'] = {};
		doc.permissions['add'] = (req.form['add']) ? true : false;
		doc.permissions['update'] = (req.form['update']) ? true : false;
		doc.permissions['remove'] = (req.form['remove']) ? true : false;
		doc.permissions['owner'] = req.form['owner'] || '';
		
		doc['_id'] = req.form._id;
		doc['_rev'] = req.form._rev;

	    return [doc, wc.render('form.html', req, {
			form_title: 'edit ' + doc.type + ' - ' + doc._id,
			method : 'POST',
			edit_action: '/_update/edit/',
			remove_action: '/_update/remove/',
			duplicate_action: '/_update/create/',
			id: doc._id,
			form : 'Created by ' + req.userCtx.name + ' on ' + new Date() + '<br /><br />' + form.toHTML(req),
			messages: messages
		})];
	}
	else {
		var messages, docKey, className = "";
		
		if (!req.userCtx.name) {
			if (doc.permissions.add) {
				messages += "<br />You cannot add unless logged in. <br />";
			}
			if (doc.permissions.update) {
				messages += "You cannot update unless logged in. <br />";
			}
			if (doc.permissions.remove) {
				messages += "You cannot remove unless logged in. <br /><br />";
			}
		}
				
		/* hydrate request with doc definition */
		_.each(req.form, function(val, key) {
			if (!_(key).startsWith("_")) {
				docKey = (key.charAt(key.length-2) === '_') ? key.slice(0, -2)+'_1' : key;
				if (theDoc[docKey].type == "boolean") {
					val = (val) ? true : false;
				}
				req.form[key] = {
					value: val,
					type: theDoc[docKey].type,
					options: theDoc[docKey].options
				};
				_.defaults(req.form, theDoc);
			}
		});
		
		if (typeof req.form.type === "object") {
			req.form['type'] = req.form.type.value;
		}
		
		data = new docs(req.form);
		
		//data = new docs(req.form);
		/* 
		 * have no idea why I couldn't put this above
		 * the classname kept getting overridden to row_2
		*/
		_.each(data.fields, function(val, key) {
			if (key.charAt(key.length-2) === '_') {
				className = data.fields[key]['className'].replace(/ row_([0-9]+)/g, '');
				data.fields[key]['className'] += ' row' + key.substr(-2);
			}
		});

		editForm = new Form (data);
		
		return [null, wc.render('create_doc.html', req, {
			form_title : 'create document',
			method : 'POST',
			action : '/_update/new_doc/create_doc',
			form : editForm.toHTML(req),
			messages: messages
		})];
	}
};