From 3bb2daf0d17cfafac6ef7e575a57f72ccbe81512 Mon Sep 17 00:00:00 2001 From: Luby1917 Date: Wed, 19 Jul 2017 01:37:41 +0200 Subject: [PATCH 1/3] Added support for (long|medium|)\stext fields --- jade-helpers.js | 8 ++++++++ partials/forms.jade | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/jade-helpers.js b/jade-helpers.js index 2a0f1e6..d702ff4 100644 --- a/jade-helpers.js +++ b/jade-helpers.js @@ -60,7 +60,15 @@ module.exports = function(sails) { value: value }); } + //if is LONGTEXT or MEDIUMTEXT or TEXT + } else if(attr.type == 'longtext' || attr.type == 'mediumtext' || attr.type == 'text') { + return jadeFormPartials({ + element: 'textarea', + name: name, + attr: attr + }); + //if is DATE or DATETIME } else if(attr.type == 'date' || attr.type == 'datetime') { return jadeFormPartials({ diff --git a/partials/forms.jade b/partials/forms.jade index 1a4f168..0bf8914 100644 --- a/partials/forms.jade +++ b/partials/forms.jade @@ -10,6 +10,14 @@ mixin input(name, attr, type, value) step=(attr.type === 'float'? "any" : undefined) ) + +mixin textarea(name, attr, value) + fieldset.form-group + label.capitalize(for='#{name}') #{name} + textarea.form-control( + name="#{name}", + required=(attr.required ? "required" : undefined) + )=(value ? value : '') mixin select(name, attr, options, value) fieldset.form-group @@ -44,6 +52,8 @@ mixin date(name, attr, value) case element when 'input' +input(name, attr, type, value) + when 'textarea' + +textarea(name, attr, value) when 'datetime' +datetime(name, attr, value) when 'date' From 8028efeb40d57bf2f08db7156b53d008fd04dd80 Mon Sep 17 00:00:00 2001 From: Luby1917 Date: Wed, 19 Jul 2017 02:07:18 +0200 Subject: [PATCH 2/3] Solved minnor bug with textarea content and included improvements of @anshulk --- jade-helpers.js | 3 ++- partials/forms.jade | 2 +- views/model.create.jade | 2 +- views/model.edit.jade | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/jade-helpers.js b/jade-helpers.js index d702ff4..f65f947 100644 --- a/jade-helpers.js +++ b/jade-helpers.js @@ -65,7 +65,8 @@ module.exports = function(sails) { return jadeFormPartials({ element: 'textarea', name: name, - attr: attr + attr: attr, + value: value }); diff --git a/partials/forms.jade b/partials/forms.jade index 0bf8914..ff27dfe 100644 --- a/partials/forms.jade +++ b/partials/forms.jade @@ -17,7 +17,7 @@ mixin textarea(name, attr, value) textarea.form-control( name="#{name}", required=(attr.required ? "required" : undefined) - )=(value ? value : '') + )=value mixin select(name, attr, options, value) fieldset.form-group diff --git a/views/model.create.jade b/views/model.create.jade index d531fba..9f37d58 100644 --- a/views/model.create.jade +++ b/views/model.create.jade @@ -8,7 +8,7 @@ mixin model-create-form p.text-warning It appears that your #{modelName} schema is empty. Please specify some attributes. p For more information refer to the sails documentation on Model's attributes. else - form(action="/admin/#{modelName}/store", method="POST") + form(action="/admin/#{modelName}/store", method="POST", id="model-form" ) each attr, attrName in modelSchema div !{helpers.form.getElement(attrName, attr)} diff --git a/views/model.edit.jade b/views/model.edit.jade index ea36ea5..f1e0643 100644 --- a/views/model.edit.jade +++ b/views/model.edit.jade @@ -6,8 +6,8 @@ block content h2.text-capitalize Edit #{modelName} .row .col-md-8.col-centered - form(action="/admin/#{modelName}/update/#{model.id}", method="POST") + form(action="/admin/#{modelName}/update/#{item[primaryKey]}", method="POST", id="model-form") each attr, attrName in modelSchema - div !{helpers.form.getElement(attrName, attr, model[attrName])} + div !{helpers.form.getElement(attrName, attr, item[attrName])} button.btn.btn-primary(type="submit") Save From 68b866b55a2e509aa34d6d1155ed990fcc06b17d Mon Sep 17 00:00:00 2001 From: Luby1917 Date: Wed, 19 Jul 2017 02:09:38 +0200 Subject: [PATCH 3/3] Solved minnor bug with textarea content and included improvements of @anshulk --- index.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 08e71b8..cd40075 100644 --- a/index.js +++ b/index.js @@ -54,7 +54,8 @@ module.exports = function (sails) { modelName: req.params.model, modelSchema: modelSchema, cms: model.cms || {}, - models: models + models: models, + primaryKey: model.primaryKey })); return res.ok(html); }); @@ -95,15 +96,17 @@ module.exports = function (sails) { delete modelSchema.updatedAt; //FindOne model - sails.models[req.params.model] + model = sails.models[req.params.model] + model .findOne(req.params.modelId) - .exec(function(err, model){ - if(err) return res.negotiate(err); + .exec(function(err, item){ + if(err || (item == undefined)) return res.negotiate(err); var jadeFn = jadeAsync.compileFile(path.join(__dirname, 'views/model.edit.jade')); jadeFn(extendJadeLocals({ modelName: req.params.model, modelSchema: modelSchema, - model:model + item:item, + primaryKey:model.primaryKey })).done(function (html) { return res.send(html); }); @@ -144,7 +147,7 @@ module.exports = function (sails) { //FindOne model sails.models[req.params.model] - .destroy(parseInt(req.params.modelId, 10)) + .destroy(req.params.modelId) .exec(function(err, model){ if(err) return res.negotiate(err); return res.redirect('/admin/' + req.params.model);