mirror of
https://github.com/wekan/wekan.git
synced 2025-12-29 05:38:48 +01:00
Card clone OK
This commit is contained in:
parent
012ca39a8d
commit
4c5a2fbd1f
3 changed files with 42 additions and 8 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import { FilesCollection } from 'meteor/ostrio:files';
|
||||
const fs = require('fs');
|
||||
|
||||
const collectionName = 'attachments2';
|
||||
|
||||
|
|
@ -19,6 +20,36 @@ if (Meteor.isServer) {
|
|||
// TODO: Permission related
|
||||
// TODO: Add Activity update
|
||||
|
||||
Meteor.methods({
|
||||
cloneAttachment(file, overrides) {
|
||||
check(file, Object);
|
||||
check(overrides, Match.Maybe(Object));
|
||||
const path = file.path;
|
||||
const opts = {
|
||||
fileName: file.name,
|
||||
type: file.type,
|
||||
meta: file.meta,
|
||||
userId: file.userId
|
||||
};
|
||||
for (let key in overrides) {
|
||||
if (key === 'meta') {
|
||||
for (let metaKey in overrides.meta) {
|
||||
opts.meta[metaKey] = overrides.meta[metaKey];
|
||||
}
|
||||
} else {
|
||||
opts[key] = overrides[key];
|
||||
}
|
||||
}
|
||||
const buffer = fs.readFileSync(path);
|
||||
Attachments.write(buffer, opts, (err, fileRef) => {
|
||||
if (err) {
|
||||
console.log('Error when cloning record', err);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
Meteor.publish(collectionName, function() {
|
||||
return Attachments.find().cursor;
|
||||
});
|
||||
|
|
@ -51,13 +82,13 @@ function onAttachmentUploaded(fileRef) {
|
|||
} else {
|
||||
// Don't add activity about adding the attachment as the activity
|
||||
// be imported and delete source field
|
||||
CFSAttachments.update(
|
||||
Attachments.collection.update(
|
||||
{
|
||||
_id: fileRef._id,
|
||||
},
|
||||
{
|
||||
$unset: {
|
||||
source: '',
|
||||
'meta.source': '',
|
||||
},
|
||||
},
|
||||
);
|
||||
|
|
|
|||
|
|
@ -402,10 +402,14 @@ Cards.helpers({
|
|||
const _id = Cards.insert(this);
|
||||
|
||||
// Copy attachments
|
||||
oldCard.attachments().forEach(att => {
|
||||
att.meta.cardId = _id;
|
||||
delete att._id;
|
||||
return Attachments.insert(att);
|
||||
oldCard.attachments().forEach((file) => {
|
||||
Meteor.call('cloneAttachment', file,
|
||||
{
|
||||
meta: {
|
||||
cardId: _id
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
// copy checklists
|
||||
|
|
|
|||
|
|
@ -1061,6 +1061,7 @@ Migrations.add('change-attachment-library', () => {
|
|||
let opts = {
|
||||
fileName: file.name(),
|
||||
type: file.type(),
|
||||
size: file.size(),
|
||||
fileId: file._id,
|
||||
meta: {
|
||||
userId: file.userId,
|
||||
|
|
@ -1077,8 +1078,6 @@ Migrations.add('change-attachment-library', () => {
|
|||
Attachments.addFile(path, opts, (err, fileRef) => {
|
||||
if (err) {
|
||||
console.log('error when migrating ', fileName, err);
|
||||
} else {
|
||||
file.remove();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue