|  | @@ -313,6 +313,8 @@ Template.membersWidget.events({
 | 
	
		
			
				|  |  |    'click .js-member': Popup.open('member'),
 | 
	
		
			
				|  |  |    'click .js-open-board-menu': Popup.open('boardMenu'),
 | 
	
		
			
				|  |  |    'click .js-manage-board-members': Popup.open('addMember'),
 | 
	
		
			
				|  |  | +  'click .js-manage-board-addOrg': Popup.open('addBoardOrg'),
 | 
	
		
			
				|  |  | +  'click .js-manage-board-addTeam': Popup.open('addBoardTeam'),
 | 
	
		
			
				|  |  |    'click .js-import': Popup.open('boardImportBoard'),
 | 
	
		
			
				|  |  |    submit: this.onSubmit,
 | 
	
		
			
				|  |  |    'click .js-import-board': Popup.open('chooseBoardSource'),
 | 
	
	
		
			
				|  | @@ -1168,6 +1170,283 @@ BlazeComponent.extendComponent({
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |  }).register('addMemberPopup');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +BlazeComponent.extendComponent({
 | 
	
		
			
				|  |  | +  onCreated() {
 | 
	
		
			
				|  |  | +    this.error = new ReactiveVar('');
 | 
	
		
			
				|  |  | +    this.loading = new ReactiveVar(false);
 | 
	
		
			
				|  |  | +    this.findOrgsOptions = new ReactiveVar({});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    this.page = new ReactiveVar(1);
 | 
	
		
			
				|  |  | +    this.autorun(() => {
 | 
	
		
			
				|  |  | +      const limitOrgs = this.page.get() * Number.MAX_SAFE_INTEGER;
 | 
	
		
			
				|  |  | +      this.subscribe('org', this.findOrgsOptions.get(), limitOrgs, () => {});
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  onRendered() {
 | 
	
		
			
				|  |  | +    this.setLoading(false);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  setError(error) {
 | 
	
		
			
				|  |  | +    this.error.set(error);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  setLoading(w) {
 | 
	
		
			
				|  |  | +    this.loading.set(w);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  isLoading() {
 | 
	
		
			
				|  |  | +    return this.loading.get();
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  events() {
 | 
	
		
			
				|  |  | +    return [
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        'keyup input'() {
 | 
	
		
			
				|  |  | +          this.setError('');
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        'change #jsBoardOrgs'() {
 | 
	
		
			
				|  |  | +          let currentBoard = Boards.findOne(Session.get('currentBoard'));
 | 
	
		
			
				|  |  | +          let selectElt = document.getElementById("jsBoardOrgs");
 | 
	
		
			
				|  |  | +          let selectedOrgId = selectElt.options[selectElt.selectedIndex].value;
 | 
	
		
			
				|  |  | +          let selectedOrgDisplayName = selectElt.options[selectElt.selectedIndex].text;
 | 
	
		
			
				|  |  | +          let boardOrganizations = [];
 | 
	
		
			
				|  |  | +          if(currentBoard.orgs !== undefined){
 | 
	
		
			
				|  |  | +            for(let i = 0; i < currentBoard.orgs.length; i++){
 | 
	
		
			
				|  |  | +              boardOrganizations.push(currentBoard.orgs[i]);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          if(!boardOrganizations.some((org) => org.orgDisplayName == selectedOrgDisplayName)){
 | 
	
		
			
				|  |  | +            boardOrganizations.push({
 | 
	
		
			
				|  |  | +              "orgId": selectedOrgId,
 | 
	
		
			
				|  |  | +              "orgDisplayName": selectedOrgDisplayName,
 | 
	
		
			
				|  |  | +              "isActive" : true,
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (selectedOrgId != "-1") {
 | 
	
		
			
				|  |  | +              Meteor.call('setBoardOrgs', boardOrganizations, currentBoard._id);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          Popup.close();
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    ];
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +}).register('addBoardOrgPopup');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Template.addBoardOrgPopup.helpers({
 | 
	
		
			
				|  |  | +  orgsDatas() {
 | 
	
		
			
				|  |  | +    // return Org.find({}, {sort: { createdAt: -1 }});
 | 
	
		
			
				|  |  | +    let orgs = Org.find({}, {sort: { createdAt: -1 }});
 | 
	
		
			
				|  |  | +    return orgs;
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +BlazeComponent.extendComponent({
 | 
	
		
			
				|  |  | +  onCreated() {
 | 
	
		
			
				|  |  | +    this.error = new ReactiveVar('');
 | 
	
		
			
				|  |  | +    this.loading = new ReactiveVar(false);
 | 
	
		
			
				|  |  | +    this.findOrgsOptions = new ReactiveVar({});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    this.page = new ReactiveVar(1);
 | 
	
		
			
				|  |  | +    this.autorun(() => {
 | 
	
		
			
				|  |  | +      const limitOrgs = this.page.get() * Number.MAX_SAFE_INTEGER;
 | 
	
		
			
				|  |  | +      this.subscribe('org', this.findOrgsOptions.get(), limitOrgs, () => {});
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  onRendered() {
 | 
	
		
			
				|  |  | +    this.setLoading(false);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  setError(error) {
 | 
	
		
			
				|  |  | +    this.error.set(error);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  setLoading(w) {
 | 
	
		
			
				|  |  | +    this.loading.set(w);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  isLoading() {
 | 
	
		
			
				|  |  | +    return this.loading.get();
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  events() {
 | 
	
		
			
				|  |  | +    return [
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        'keyup input'() {
 | 
	
		
			
				|  |  | +          this.setError('');
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        'click #leaveBoardBtn'(){
 | 
	
		
			
				|  |  | +          let stringOrgId = document.getElementById('hideOrgId').value;
 | 
	
		
			
				|  |  | +          let currentBoard = Boards.findOne(Session.get('currentBoard'));
 | 
	
		
			
				|  |  | +          let boardOrganizations = [];
 | 
	
		
			
				|  |  | +          if(currentBoard.orgs !== undefined){
 | 
	
		
			
				|  |  | +            for(let i = 0; i < currentBoard.orgs.length; i++){
 | 
	
		
			
				|  |  | +              if(currentBoard.orgs[i].orgId != stringOrgId){
 | 
	
		
			
				|  |  | +                boardOrganizations.push(currentBoard.orgs[i]);
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          Meteor.call('setBoardOrgs', boardOrganizations, currentBoard._id);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          Popup.close();
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        'click #cancelLeaveBoardBtn'(){
 | 
	
		
			
				|  |  | +          Popup.close();
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    ];
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +}).register('removeBoardOrgPopup');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Template.removeBoardOrgPopup.helpers({
 | 
	
		
			
				|  |  | +  org() {
 | 
	
		
			
				|  |  | +    return Org.findOne(this.orgId);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +BlazeComponent.extendComponent({
 | 
	
		
			
				|  |  | +  onCreated() {
 | 
	
		
			
				|  |  | +    this.error = new ReactiveVar('');
 | 
	
		
			
				|  |  | +    this.loading = new ReactiveVar(false);
 | 
	
		
			
				|  |  | +    this.findOrgsOptions = new ReactiveVar({});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    this.page = new ReactiveVar(1);
 | 
	
		
			
				|  |  | +    this.autorun(() => {
 | 
	
		
			
				|  |  | +      const limitTeams = this.page.get() * Number.MAX_SAFE_INTEGER;
 | 
	
		
			
				|  |  | +      this.subscribe('team', this.findOrgsOptions.get(), limitTeams, () => {});
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  onRendered() {
 | 
	
		
			
				|  |  | +    this.setLoading(false);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  setError(error) {
 | 
	
		
			
				|  |  | +    this.error.set(error);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  setLoading(w) {
 | 
	
		
			
				|  |  | +    this.loading.set(w);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  isLoading() {
 | 
	
		
			
				|  |  | +    return this.loading.get();
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  events() {
 | 
	
		
			
				|  |  | +    return [
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        'keyup input'() {
 | 
	
		
			
				|  |  | +          this.setError('');
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        'change #jsBoardTeams'() {
 | 
	
		
			
				|  |  | +          let currentBoard = Boards.findOne(Session.get('currentBoard'));
 | 
	
		
			
				|  |  | +          let selectElt = document.getElementById("jsBoardTeams");
 | 
	
		
			
				|  |  | +          let selectedTeamId = selectElt.options[selectElt.selectedIndex].value;
 | 
	
		
			
				|  |  | +          let selectedTeamDisplayName = selectElt.options[selectElt.selectedIndex].text;
 | 
	
		
			
				|  |  | +          let boardTeams = [];
 | 
	
		
			
				|  |  | +          if(currentBoard.teams !== undefined){
 | 
	
		
			
				|  |  | +            for(let i = 0; i < currentBoard.teams.length; i++){
 | 
	
		
			
				|  |  | +              boardTeams.push(currentBoard.teams[i]);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          if(!boardTeams.some((team) => team.teamDisplayName == selectedTeamDisplayName)){
 | 
	
		
			
				|  |  | +            boardTeams.push({
 | 
	
		
			
				|  |  | +              "teamId": selectedTeamId,
 | 
	
		
			
				|  |  | +              "teamDisplayName": selectedTeamDisplayName,
 | 
	
		
			
				|  |  | +              "isActive" : true,
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (selectedTeamId != "-1") {
 | 
	
		
			
				|  |  | +              Meteor.call('setBoardTeams', boardTeams, currentBoard._id);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          Popup.close();
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    ];
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +}).register('addBoardTeamPopup');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Template.addBoardTeamPopup.helpers({
 | 
	
		
			
				|  |  | +  teamsDatas() {
 | 
	
		
			
				|  |  | +    let teams = Team.find({}, {sort: { createdAt: -1 }});
 | 
	
		
			
				|  |  | +    return teams;
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +BlazeComponent.extendComponent({
 | 
	
		
			
				|  |  | +  onCreated() {
 | 
	
		
			
				|  |  | +    this.error = new ReactiveVar('');
 | 
	
		
			
				|  |  | +    this.loading = new ReactiveVar(false);
 | 
	
		
			
				|  |  | +    this.findOrgsOptions = new ReactiveVar({});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    this.page = new ReactiveVar(1);
 | 
	
		
			
				|  |  | +    this.autorun(() => {
 | 
	
		
			
				|  |  | +      const limitTeams = this.page.get() * Number.MAX_SAFE_INTEGER;
 | 
	
		
			
				|  |  | +      this.subscribe('team', this.findOrgsOptions.get(), limitTeams, () => {});
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  onRendered() {
 | 
	
		
			
				|  |  | +    this.setLoading(false);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  setError(error) {
 | 
	
		
			
				|  |  | +    this.error.set(error);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  setLoading(w) {
 | 
	
		
			
				|  |  | +    this.loading.set(w);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  isLoading() {
 | 
	
		
			
				|  |  | +    return this.loading.get();
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  events() {
 | 
	
		
			
				|  |  | +    return [
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        'keyup input'() {
 | 
	
		
			
				|  |  | +          this.setError('');
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        'click #leaveBoardTeamBtn'(){
 | 
	
		
			
				|  |  | +          let stringTeamId = document.getElementById('hideTeamId').value;
 | 
	
		
			
				|  |  | +          let currentBoard = Boards.findOne(Session.get('currentBoard'));
 | 
	
		
			
				|  |  | +          let boardTeams = [];
 | 
	
		
			
				|  |  | +          if(currentBoard.teams !== undefined){
 | 
	
		
			
				|  |  | +            for(let i = 0; i < currentBoard.teams.length; i++){
 | 
	
		
			
				|  |  | +              if(currentBoard.teams[i].teamId != stringTeamId){
 | 
	
		
			
				|  |  | +                boardTeams.push(currentBoard.teams[i]);
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          Meteor.call('setBoardTeams', boardTeams, currentBoard._id);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          Popup.close();
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        'click #cancelLeaveBoardTeamBtn'(){
 | 
	
		
			
				|  |  | +          Popup.close();
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    ];
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +}).register('removeBoardTeamPopup');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Template.removeBoardTeamPopup.helpers({
 | 
	
		
			
				|  |  | +  team() {
 | 
	
		
			
				|  |  | +    return Team.findOne(this.teamId);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  Template.changePermissionsPopup.events({
 | 
	
		
			
				|  |  |    'click .js-set-admin, click .js-set-normal, click .js-set-no-comments, click .js-set-comment-only, click .js-set-worker'(
 | 
	
		
			
				|  |  |      event,
 |