| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | Translation = new Mongo.Collection('translation');/** * A Organization User in wekan */Translation.attachSchema(  new SimpleSchema({    language: {      /**       * the language       */      type: String,      max: 5,    },    text: {      /**       * the text       */      type: String,    },    translationText: {      /**       * the translation text       */      type: String,      optional: true,    },    createdAt: {      /**       * creation date of the translation custom string       */      type: Date,      // eslint-disable-next-line consistent-return      autoValue() {        if (this.isInsert) {          return new Date();        } else if (this.isUpsert) {          return { $setOnInsert: new Date() };        } else {          this.unset();        }      },    },    modifiedAt: {      type: Date,      denyUpdate: false,      // eslint-disable-next-line consistent-return      autoValue() {        if (this.isInsert || this.isUpsert || this.isUpdate) {          return new Date();        } else {          this.unset();        }      },    },  }),);if (Meteor.isServer) {  Translation.allow({    insert(userId, doc) {      const user = ReactiveCache.getUser(userId) || ReactiveCache.getCurrentUser();      if (user?.isAdmin)        return true;      if (!user) {        return false;      }      return doc._id === userId;    },    update(userId, doc) {      const user = ReactiveCache.getUser(userId) || ReactiveCache.getCurrentUser();      if (user?.isAdmin)        return true;      if (!user) {        return false;      }      return doc._id === userId;    },    remove(userId, doc) {      const user = ReactiveCache.getUser(userId) || ReactiveCache.getCurrentUser();      if (user?.isAdmin)        return true;      if (!user) {        return false;      }      return doc._id === userId;    },    fetch: [],  });  Meteor.methods({    setCreateTranslation(      language,      text,      translationText,    ) {      check(language, String);      check(text, String);      check(translationText, String);      const nTexts = ReactiveCache.getTranslations({ language, text }).length;      if (nTexts > 0) {        throw new Meteor.Error('text-already-taken');      } else {        Translation.insert({          language,          text,          translationText,        });      }    },    setTranslationText(translation, translationText) {      check(translation, Object);      check(translationText, String);      Translation.update(translation, {        $set: { translationText: translationText },      });    },  });}if (Meteor.isServer) {  // Index for Organization User.  Meteor.startup(() => {    Translation._collection.createIndex({ modifiedAt: -1 });  });}export default Translation;
 |