-
Notifications
You must be signed in to change notification settings - Fork 0
/
uploadmanager.js
117 lines (107 loc) · 2.97 KB
/
uploadmanager.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
Items = new Mongo.Collection('items');
Uploads = new Mongo.Collection('uploads');
UserTemp = new Mongo.Collection('usertemp');
Uploads.allow({
insert: function (userId, doc) {
return true;
},
update: function (userId, doc, fields, modifier) {
return true
}
});
UserTemp.allow({
insert: function (userId, doc) {
return true;
}
});
//Router.route('/', function () {
// this.render('Home');
//});
//if (! Router.route('/')){
// Router.route('/', function () {
// this.render('Home');
//});
//}
if (Meteor.isClient) {
Meteor.startup(function() {
Uploader.finished = function(index, file, userId) {
Uploads.insert(file);
var upload = Uploads.findOne({path: file.path});
var imgId = upload._id;
UserTemp.insert({user: Meteor.userId(), file: file.name, url: file.url, path: file.path, imgId: imgId});
}
});
Meteor.subscribe('items');
Meteor.subscribe('uploads');
Meteor.subscribe('usertemp');
Template.uploadedInfo.helpers({
userTemp: function () {
return UserTemp.find({user: Meteor.userId()});
},
src: function() {
if (this.type.indexOf('image') >= 0) {
return 'upload/' + this.path;
} else return 'file_icon.png';
}
});
Template.uploadedInfo.events({
'click .deleteUpload':function() {
deleteThis = this.imgId;
bootbox.confirm("Are you sure?", function(result) {
Meteor.call('deleteFile', deleteThis);
});
}
})
}
if (Meteor.isServer) {
Meteor.startup(function () {
// init items collection
if (Items.find().count() == 0) {
Items.insert({name: 'My Item', uploads: []});
}
UploadServer.init({
tmpDir: process.env.PWD + '/.uploads/tmp',
uploadDir: process.env.PWD + '/.uploads/',
checkCreateDirectories: true,
getDirectory: function(fileInfo, formData) {
if (formData && formData.directoryName != null) {
return formData.directoryName;
}
return "";
},
getFileName: function(fileInfo, formData) {
if (formData && formData.prefix != null) {
return formData.prefix + '_' + fileInfo.name;
}
return fileInfo.name;
},
finished: function(fileInfo, formData) {
if (formData && formData._id != null) {
Items.update({_id: formData._id}, { $push: { uploads: fileInfo }});
console.log(formData);
}
}
});
});
Meteor.methods({
'deleteFile': function(imgId) {
check(imgId, String);
var upload = Uploads.findOne({_id: imgId});
if (upload == null) {
throw new Meteor.Error(404, 'Upload not found'); // maybe some other code
}
UploadServer.delete(upload.path);
Uploads.remove({_id: imgId});
UserTemp.remove({imgId: imgId});
}
})
Meteor.publish('items', function() {
return Items.find();
});
Meteor.publish('uploads', function() {
return Uploads.find();
})
Meteor.publish('usertemp', function() {
return UserTemp.find();
})
}