1 |
|
2 |
|
3 | var Class = require('sji')
|
4 | ,forms = require('j-forms')
|
5 | ,jest = require('jest')
|
6 | ,MongooseAdminAudit = require('./mongoose_admin_audit.js').MongooseAdminAudit
|
7 | ,async = require('async')
|
8 | ,_ = require('underscore');
|
9 |
|
10 | var AdminModel = module.exports = Class.extend({
|
11 | init: function(options){
|
12 | options = options || {};
|
13 | this.name = options.name || null;
|
14 | this.model = options.model || null;
|
15 | this.form_type = options.form_type || forms.AdminForm;
|
16 | this.resource = options.resource || jest.MongooseResource(this.model);
|
17 | this.list = [];
|
18 | this.sortable = null;
|
19 | this.actions = [];
|
20 | this.is_single = false;
|
21 | },
|
22 | update:function(req,user,document_id,params,callback){
|
23 | var self = this;
|
24 | var model = self.model;
|
25 | var form_type = self.form_type;
|
26 | var form = null;
|
27 | async.waterfall([
|
28 | function(cbk)
|
29 | {
|
30 | model.findById(document_id, function(err, document) {
|
31 | cbk(err,document);
|
32 | });
|
33 | },
|
34 | function(document,cbk)
|
35 | {
|
36 | form = new form_type(req,{instance:document,data:params},model);
|
37 | form.is_valid(function(err,valid){
|
38 | cbk(err || valid);
|
39 | });
|
40 | },
|
41 | function(cbk)
|
42 | {
|
43 | form.save(cbk);
|
44 | },
|
45 | function(document,cbk){
|
46 |
|
47 | MongooseAdminAudit.logActivity(user, self.name, document._id, 'edit', null, function(err, auditLog) {
|
48 | cbk(null, document);
|
49 | });
|
50 | }],
|
51 | callback);
|
52 | },
|
53 | count:function(callback)
|
54 | {
|
55 | if(this.is_single)
|
56 | this.model.count({},callback);
|
57 | else
|
58 | callback(null,1);
|
59 | }
|
60 |
|
61 | }); |
\ | No newline at end of file |