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)]; } };
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'}) } };
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 }; };
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')]; };
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) }) }; }
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 }; };
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 }; };
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' }) } };
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'}]; } };
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]; }*/ };
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]; } };
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]; } };
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 })]; } };