/
install.js
136 lines (135 loc) · 5.93 KB
/
install.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
module.exports = function(db, ensure_indexes, config) {
var async = require('async'),
is = {
name: 'settings',
version: '0.5.170',
collections: function(_callback) {
// Create collections
async.series([
function(callback) {
db.createCollection('settings', function(err, collection) {
if (err) return callback(err);
callback();
});
},
function(callback) {
db.createCollection('counters', function(err, collection) {
if (err) return callback(err);
callback();
});
},
function(callback) {
db.createCollection('statistics', function(err, collection) {
if (err) return callback(err);
callback();
});
}
], function(err) {
if (err) return _callback(err);
_callback();
});
},
indexes: function(_callback) {
// Create indexes
async.series([
function(callback) {
ensure_indexes('settings', ['oname', 'olang'], null, null, function() {
callback();
});
},
function(callback) {
ensure_indexes('statistics', ['day'], null, true, function() {
callback();
});
}
], function(err) {
_callback();
});
},
defaults: function(_callback) {
// Create default values
async.series([
function(callback) {
db.collection('settings').insert({
oname: 'site_title',
ovalue: 'Taracot JS',
olang: 'en'
}, function(err) {
if (err) return callback(err);
callback();
});
},
function(callback) {
db.collection('settings').insert({
oname: 'site_title',
ovalue: 'Taracot JS',
olang: 'ru'
}, function(err) {
if (err) return callback(err);
callback();
});
},
function(callback) {
db.collection('settings').insert({
oname: 'site_keywords',
ovalue: 'taracot, taracotjs, node.js, mongodb, redis, cms, content management system',
olang: 'en'
}, function(err) {
if (err) return callback(err);
callback();
});
},
function(callback) {
db.collection('settings').insert({
oname: 'site_keywords',
ovalue: 'taracot, taracotjs, node.js, mongodb, redis, cms, система управления сайтами',
olang: 'ru'
}, function(err) {
if (err) return callback(err);
callback();
});
},
function(callback) {
db.collection('settings').insert({
oname: 'site_description',
ovalue: 'TaracotJS is a simple content management system (CMS) written in JavaScript on both client and server sides (using Node). It\'s free, open source and is running on multiple platrforms including Linux, MacOS and Windows. All modern browsers are supported.',
olang: 'en'
}, function(err) {
if (err) return callback(err);
callback();
});
},
function(callback) {
db.collection('settings').insert({
oname: 'site_description',
ovalue: 'TaracotJS - простая система управления сайтами (CMS), написанная на JavaScript и построенная на технологиях Node.JS, MongoDB и Redis.',
olang: 'ru'
}, function(err) {
if (err) return callback(err);
callback();
});
}
], function(err) {
if (err) return _callback(err);
_callback();
});
},
misc: function(_callback) {
// Other things to do
_callback();
},
uninstall: function(_callback) {
var collections = ['settings', 'counters', 'statistics'];
async.eachSeries(collections, function(name, e_callback) {
db.collection(name).drop(function(err) {
if (err) return e_callback(err);
e_callback();
});
}, function(err) {
if (err) return _callback(err);
_callback();
});
}
};
return is;
};