| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473 | Template.headerUserBar.events({  'click .js-open-header-member-menu': Popup.open('memberMenu'),  'click .js-change-avatar': Popup.open('changeAvatar'),});BlazeComponent.extendComponent({  onCreated() {    Meteor.subscribe('setting');  },}).register('memberMenuPopup');Template.memberMenuPopup.helpers({  templatesBoardId() {    currentUser = Meteor.user();    if (currentUser) {      return Meteor.user().getTemplatesBoardId();    } else {      // No need to getTemplatesBoardId on public board      return false;    }  },  templatesBoardSlug() {    currentUser = Meteor.user();    if (currentUser) {      return Meteor.user().getTemplatesBoardSlug();    } else {      // No need to getTemplatesBoardSlug() on public board      return false;    }  },  isSameDomainNameSettingValue(){    const currSett = Settings.findOne();    if(currSett && currSett != undefined && currSett.disableRegistration && currSett.mailDomainName !== undefined && currSett.mailDomainName != ""){      currentUser = Meteor.user();      if (currentUser) {        let found = false;        for(let i = 0; i < currentUser.emails.length; i++) {          if(currentUser.emails[i].address.endsWith(currSett.mailDomainName)){            found = true;            break;          }        }        return found;      } else {        return true;      }    }    else      return false;  },  isNotOAuth2AuthenticationMethod(){    currentUser = Meteor.user();    if (currentUser) {      return currentUser.authenticationMethod.toLowerCase() != 'oauth2';    } else {      return true;    }  }});Template.memberMenuPopup.events({  'click .js-my-cards'() {    Popup.back();  },  'click .js-due-cards'() {    Popup.back();  },  'click .js-open-archived-board'() {    Modal.open('archivedBoards');  },  'click .js-invite-people': Popup.open('invitePeople'),  'click .js-edit-profile': Popup.open('editProfile'),  'click .js-change-settings': Popup.open('changeSettings'),  'click .js-change-avatar': Popup.open('changeAvatar'),  'click .js-change-password': Popup.open('changePassword'),  'click .js-change-language': Popup.open('changeLanguage'),  'click .js-logout'(event) {    event.preventDefault();    AccountsTemplates.logout();  },  'click .js-go-setting'() {    Popup.back();  },});BlazeComponent.extendComponent({  onCreated() {    Meteor.subscribe('setting');  },}).register('editProfilePopup');Template.invitePeoplePopup.events({  'click a.js-toggle-board-choose'(event){    let target = $(event.target);    if (!target.hasClass('js-toggle-board-choose')) {      target = target.parent();    }    const checkboxId = target.attr('id');    $(`#${checkboxId} .materialCheckBox`).toggleClass('is-checked');    $(`#${checkboxId}`).toggleClass('is-checked');  },  'click button.js-email-invite'(event){    const emails = $('#email-to-invite')      .val()      .toLowerCase()      .trim()      .split('\n')      .join(',')      .split(',');    const boardsToInvite = [];    $('.js-toggle-board-choose .materialCheckBox.is-checked').each(function() {      boardsToInvite.push($(this).data('id'));    });    const validEmails = [];    emails.forEach(email => {      if (email && SimpleSchema.RegEx.Email.test(email.trim())) {        validEmails.push(email.trim());      }    });    if (validEmails.length) {      Meteor.call('sendInvitation', validEmails, boardsToInvite, (_, rc) => {        if (rc == 0) {          let divInfos = document.getElementById("invite-people-infos");          if(divInfos && divInfos !== undefined){            divInfos.innerHTML = "<span style='color: green'>" + TAPi18n.__('invite-people-success') + "</span>";          }        }        else{          let divInfos = document.getElementById("invite-people-infos");          if(divInfos && divInfos !== undefined){            divInfos.innerHTML = "<span style='color: red'>" + TAPi18n.__('invite-people-error') + "</span>";          }        }        // Popup.close();      });    }  },});Template.invitePeoplePopup.helpers({  currentSetting() {    return Settings.findOne();  },});Template.editProfilePopup.helpers({  allowEmailChange() {    Meteor.call('AccountSettings.allowEmailChange', (_, result) => {      if (result) {        return true;      } else {        return false;      }    });  },  allowUserNameChange() {    Meteor.call('AccountSettings.allowUserNameChange', (_, result) => {      if (result) {        return true;      } else {        return false;      }    });  },  allowUserDelete() {    Meteor.call('AccountSettings.allowUserDelete', (_, result) => {      if (result) {        return true;      } else {        return false;      }    });  },});Template.editProfilePopup.events({  submit(event, templateInstance) {    event.preventDefault();    const fullname = templateInstance.find('.js-profile-fullname').value.trim();    const username = templateInstance.find('.js-profile-username').value.trim();    const initials = templateInstance.find('.js-profile-initials').value.trim();    const email = templateInstance.find('.js-profile-email').value.trim();    let isChangeUserName = false;    let isChangeEmail = false;    Users.update(Meteor.userId(), {      $set: {        'profile.fullname': fullname,        'profile.initials': initials,      },    });    isChangeUserName = username !== Meteor.user().username;    isChangeEmail =      email.toLowerCase() !== Meteor.user().emails[0].address.toLowerCase();    if (isChangeUserName && isChangeEmail) {      Meteor.call(        'setUsernameAndEmail',        username,        email.toLowerCase(),        Meteor.userId(),        function(error) {          const usernameMessageElement = templateInstance.$('.username-taken');          const emailMessageElement = templateInstance.$('.email-taken');          if (error) {            const errorElement = error.error;            if (errorElement === 'username-already-taken') {              usernameMessageElement.show();              emailMessageElement.hide();            } else if (errorElement === 'email-already-taken') {              usernameMessageElement.hide();              emailMessageElement.show();            }          } else {            usernameMessageElement.hide();            emailMessageElement.hide();            Popup.back();          }        },      );    } else if (isChangeUserName) {      Meteor.call('setUsername', username, Meteor.userId(), function(error) {        const messageElement = templateInstance.$('.username-taken');        if (error) {          messageElement.show();        } else {          messageElement.hide();          Popup.back();        }      });    } else if (isChangeEmail) {      Meteor.call('setEmail', email.toLowerCase(), Meteor.userId(), function(        error,      ) {        const messageElement = templateInstance.$('.email-taken');        if (error) {          messageElement.show();        } else {          messageElement.hide();          Popup.back();        }      });    } else Popup.back();  },  'click #deleteButton': Popup.afterConfirm('userDelete', function() {    Popup.back();    Users.remove(Meteor.userId());    AccountsTemplates.logout();  }),});// XXX For some reason the useraccounts autofocus isnt working in this case.// See https://github.com/meteor-useraccounts/core/issues/384Template.changePasswordPopup.onRendered(function() {  this.find('#at-field-current_password').focus();});Template.changeLanguagePopup.helpers({  languages() {    return _.map(TAPi18n.getLanguages(), (lang, code) => {      // Same code in /client/components/main/layouts.js      // TODO : Make code reusable      const tag = code;      let name = lang.name;      if (lang.name === 'br') {        name = 'Brezhoneg';      } else if (lang.name === 'ar-EG') {        // ar-EG = Arabic (Egypt), simply Masri (مَصرى, [ˈmɑsˤɾi], Egyptian, Masr refers to Cairo)        name = 'مَصرى';      } else if (lang.name === 'de-CH') {        name = 'Deutsch (Schweiz)';      } else if (lang.name === 'de-AT') {        name = 'Deutsch (Österreich)';      } else if (lang.name === 'en-DE') {        name = 'English (Germany)';      } else if (lang.name === 'et-EE') {        name = 'eesti keel (Eesti)';      } else if (lang.name === 'fa-IR') {        // fa-IR = Persian (Iran)        name = 'فارسی/پارسی (ایران)';      } else if (lang.name === 'fr-BE') {        name = 'Français (Belgique)';      } else if (lang.name === 'fr-CA') {        name = 'Français (Canada)';      } else if (lang.name === 'fr-CH') {        name = 'Français (Schweiz)';      } else if (lang.name === 'gu-IN') {        // gu-IN = Gurajati (India)        name = 'ગુજરાતી';      } else if (lang.name === 'hi-IN') {        // hi-IN = Hindi (India)        name = 'हिंदी (भारत)';      } else if (lang.name === 'ig') {        name = 'Igbo';      } else if (lang.name === 'lv') {        name = 'Latviešu';      } else if (lang.name === 'latviešu valoda') {        name = 'Latviešu';      } else if (lang.name === 'ms-MY') {        // ms-MY = Malay (Malaysia)        name = 'بهاس ملايو';      } else if (lang.name === 'en-IT') {        name = 'English (Italy)';      } else if (lang.name === 'el-GR') {        // el-GR = Greek (Greece)        name = 'Ελληνικά (Ελλάδα)';      } else if (lang.name === 'Español') {        name = 'español';      } else if (lang.name === 'es_419') {        name = 'español de América Latina';      } else if (lang.name === 'es-419') {        name = 'español de América Latina';      } else if (lang.name === 'Español de América Latina') {        name = 'español de América Latina';      } else if (lang.name === 'es-LA') {        name = 'español de América Latina';      } else if (lang.name === 'Español de Argentina') {        name = 'español de Argentina';      } else if (lang.name === 'Español de Chile') {        name = 'español de Chile';      } else if (lang.name === 'Español de Colombia') {        name = 'español de Colombia';      } else if (lang.name === 'Español de México') {        name = 'español de México';      } else if (lang.name === 'es-PY') {        name = 'español de Paraguayo';      } else if (lang.name === 'Español de Paraguayo') {        name = 'español de Paraguayo';      } else if (lang.name === 'Español de Perú') {        name = 'español de Perú';      } else if (lang.name === 'Español de Puerto Rico') {        name = 'español de Puerto Rico';      } else if (lang.name === 'gl-ES') {        name = 'Galego (España)';      } else if (lang.name === 'oc') {        name = 'Occitan';      } else if (lang.name === 'ru-UA') {        name = 'Русский (Украина)';      } else if (lang.name === 'st') {        name = 'Sãotomense';      } else if (lang.name === 'uk-UA') {        name = 'українська (Україна)';      } else if (lang.name === '繁体中文(台湾)') {        // Traditional Chinese (Taiwan)        name = '繁體中文(台灣)';      }      return { tag, name };    }).sort(function(a, b) {      if (a.name === b.name) {        return 0;      } else {        return a.name > b.name ? 1 : -1;      }    });  },  isCurrentLanguage() {    return this.tag === TAPi18n.getLanguage();  },});Template.changeLanguagePopup.events({  'click .js-set-language'(event) {    Users.update(Meteor.userId(), {      $set: {        'profile.language': this.tag,      },    });    TAPi18n.setLanguage(this.tag);    event.preventDefault();  },});Template.changeSettingsPopup.helpers({  hiddenSystemMessages() {    currentUser = Meteor.user();    if (currentUser) {      return (currentUser.profile || {}).hasHiddenSystemMessages;    } else if (window.localStorage.getItem('hasHiddenSystemMessages')) {      return true;    } else {      return false;    }  },  showCardsCountAt() {    currentUser = Meteor.user();    if (currentUser) {      return Meteor.user().getLimitToShowCardsCount();    } else {      return window.localStorage.getItem('limitToShowCardsCount');    }  },  weekDays(startDay) {    return [      TAPi18n.__('sunday'),      TAPi18n.__('monday'),      TAPi18n.__('tuesday'),      TAPi18n.__('wednesday'),      TAPi18n.__('thursday'),      TAPi18n.__('friday'),      TAPi18n.__('saturday'),    ].map(function(day, index) {      return { name: day, value: index, isSelected: index === startDay };    });  },  startDayOfWeek() {    currentUser = Meteor.user();    if (currentUser) {      return currentUser.getStartDayOfWeek();    } else {      return window.localStorage.getItem('startDayOfWeek');    }  },});Template.changeSettingsPopup.events({  'keypress/paste #show-cards-count-at'() {    let keyCode = event.keyCode;    let charCode = String.fromCharCode(keyCode);    let regex = new RegExp('[-0-9]');    let ret = regex.test(charCode);    return ret;  },  'click .js-toggle-desktop-drag-handles'() {    currentUser = Meteor.user();    if (currentUser) {      Meteor.call('toggleDesktopDragHandles');    } else if (window.localStorage.getItem('showDesktopDragHandles')) {      window.localStorage.removeItem('showDesktopDragHandles');    } else {      window.localStorage.setItem('showDesktopDragHandles', 'true');    }  },  'click .js-toggle-system-messages'() {    currentUser = Meteor.user();    if (currentUser) {      Meteor.call('toggleSystemMessages');    } else if (window.localStorage.getItem('hasHiddenSystemMessages')) {      window.localStorage.removeItem('hasHiddenSystemMessages');    } else {      window.localStorage.setItem('hasHiddenSystemMessages', 'true');    }  },  'click .js-apply-user-settings'(event, templateInstance) {    event.preventDefault();    let minLimit = parseInt(      templateInstance.$('#show-cards-count-at').val(),      10,    );    const startDay = parseInt(      templateInstance.$('#start-day-of-week').val(),      10,    );    const currentUser = Meteor.user();    if (isNaN(minLimit) || minLimit < -1) {      minLimit = -1;    }    if (!isNaN(minLimit)) {      if (currentUser) {        Meteor.call('changeLimitToShowCardsCount', minLimit);      } else {        window.localStorage.setItem('limitToShowCardsCount', minLimit);      }    }    if (!isNaN(startDay)) {      if (currentUser) {        Meteor.call('changeStartDayOfWeek', startDay);      } else {        window.localStorage.setItem('startDayOfWeek', startDay);      }    }    Popup.back();  },});
 |