2016-07-07 18:54:16 -07:00
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
//
2016-08-17 15:37:46 +02:00
// This software (Documize Community Edition) is licensed under
2016-07-07 18:54:16 -07:00
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
//
// You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license
2016-08-17 15:37:46 +02:00
// by contacting <sales@documize.com>.
2016-07-07 18:54:16 -07:00
//
// https://documize.com
import Ember from 'ember' ;
2016-11-06 20:11:21 -08:00
import NotifierMixin from '../../mixins/notifier' ;
2016-07-07 18:54:16 -07:00
2016-08-17 15:37:46 +02:00
const {
inject : { service }
} = Ember ;
2017-03-24 13:10:32 +00:00
export default Ember . Component . extend ( NotifierMixin , {
2016-08-17 15:37:46 +02:00
folderService : service ( 'folder' ) ,
userService : service ( 'user' ) ,
2017-03-24 13:10:32 +00:00
appMeta : service ( ) ,
2016-08-23 10:13:29 +02:00
store : service ( ) ,
2016-07-07 18:54:16 -07:00
2017-03-24 13:10:32 +00:00
didReceiveAttrs ( ) {
2016-08-23 10:13:29 +02:00
this . get ( 'userService' ) . getAll ( ) . then ( ( users ) => {
2017-03-24 13:10:32 +00:00
this . set ( 'users' , users ) ;
2016-07-07 18:54:16 -07:00
2017-09-14 12:54:57 +01:00
// set up users
let folderPermissions = [ ] ;
2016-07-07 18:54:16 -07:00
2016-08-23 10:13:29 +02:00
users . forEach ( ( user ) => {
let isActive = user . get ( 'active' ) ;
let u = {
2017-03-24 13:10:32 +00:00
orgId : this . get ( 'folder.orgId' ) ,
2017-09-14 12:54:57 +01:00
folderId : this . get ( 'folder.id' ) ,
userId : user . get ( 'id' ) ,
fullname : user . get ( 'fullname' ) ,
2017-09-13 19:22:38 +01:00
spaceView : false ,
spaceManage : false ,
spaceOwner : false ,
2017-09-14 12:54:57 +01:00
documentAdd : false ,
documentEdit : false ,
documentDelete : false ,
documentMove : false ,
documentCopy : false ,
documentTemplate : false
2016-08-23 10:13:29 +02:00
} ;
if ( isActive ) {
2017-09-14 12:54:57 +01:00
let data = this . get ( 'store' ) . normalize ( 'space-permission' , u )
folderPermissions . pushObject ( this . get ( 'store' ) . push ( data ) ) ;
2016-08-23 10:13:29 +02:00
}
} ) ;
2017-09-14 12:54:57 +01:00
// set up Everyone user
let u = {
2017-03-24 13:10:32 +00:00
orgId : this . get ( 'folder.orgId' ) ,
2017-09-14 12:54:57 +01:00
folderId : this . get ( 'folder.id' ) ,
userId : '' ,
fullname : ' Everyone' ,
2017-09-13 19:22:38 +01:00
spaceView : false ,
spaceManage : false ,
spaceOwner : false ,
2017-09-14 12:54:57 +01:00
documentAdd : false ,
documentEdit : false ,
documentDelete : false ,
documentMove : false ,
documentCopy : false ,
documentTemplate : false
2017-09-13 19:22:38 +01:00
} ;
2016-07-07 18:54:16 -07:00
2017-09-14 12:54:57 +01:00
let data = this . get ( 'store' ) . normalize ( 'space-permission' , u )
folderPermissions . pushObject ( this . get ( 'store' ) . push ( data ) ) ;
2016-07-07 18:54:16 -07:00
2017-03-24 13:10:32 +00:00
this . get ( 'folderService' ) . getPermissions ( this . get ( 'folder.id' ) ) . then ( ( permissions ) => {
2017-03-19 11:37:18 +00:00
permissions . forEach ( ( permission , index ) => { // eslint-disable-line no-unused-vars
2017-09-14 12:54:57 +01:00
let user = folderPermissions . findBy ( 'userId' , permission . get ( 'userId' ) ) ;
if ( is . not . undefined ( user ) ) {
Ember . setProperties ( user , permission ) ;
2016-07-07 18:54:16 -07:00
}
} ) ;
2017-03-24 13:10:32 +00:00
this . set ( 'permissions' , folderPermissions . sortBy ( 'fullname' ) ) ;
2016-07-07 18:54:16 -07:00
} ) ;
2017-08-07 14:42:02 +01:00
} ) ;
2016-07-07 18:54:16 -07:00
} ,
2017-03-24 13:10:32 +00:00
getDefaultInvitationMessage ( ) {
2017-08-07 14:42:02 +01:00
return "Hey there, I am sharing the " + this . get ( 'folder.name' ) + " space (in " + this . get ( "appMeta.title" ) + ") with you so we can both access the same documents." ;
2017-03-24 13:10:32 +00:00
} ,
2016-07-07 18:54:16 -07:00
2017-03-24 13:10:32 +00:00
actions : {
setPermissions ( ) {
let message = this . getDefaultInvitationMessage ( ) ;
2017-09-14 12:54:57 +01:00
// let folder = this.get('folder');
2017-03-24 13:10:32 +00:00
let permissions = this . get ( 'permissions' ) ;
2017-08-07 14:42:02 +01:00
2017-09-14 12:54:57 +01:00
permissions . forEach ( ( permission , index ) => { // eslint-disable-line no-unused-vars
Ember . set ( permission , 'spaceView' , $ ( "#space-role-view-" + permission . get ( 'userId' ) ) . prop ( 'checked' ) ) ;
Ember . set ( permission , 'spaceManage' , $ ( "#space-role-manage-" + permission . get ( 'userId' ) ) . prop ( 'checked' ) ) ;
Ember . set ( permission , 'spaceOwner' , $ ( "#space-role-owner-" + permission . get ( 'userId' ) ) . prop ( 'checked' ) ) ;
Ember . set ( permission , 'documentAdd' , $ ( "#doc-role-add-" + permission . get ( 'userId' ) ) . prop ( 'checked' ) ) ;
Ember . set ( permission , 'documentEdit' , $ ( "#doc-role-edit-" + permission . get ( 'userId' ) ) . prop ( 'checked' ) ) ;
Ember . set ( permission , 'documentDelete' , $ ( "#doc-role-delete-" + permission . get ( 'userId' ) ) . prop ( 'checked' ) ) ;
Ember . set ( permission , 'documentMove' , $ ( "#doc-role-move-" + permission . get ( 'userId' ) ) . prop ( 'checked' ) ) ;
Ember . set ( permission , 'documentCopy' , $ ( "#doc-role-copy-" + permission . get ( 'userId' ) ) . prop ( 'checked' ) ) ;
Ember . set ( permission , 'documentTemplate' , $ ( "#doc-role-template-" + permission . get ( 'userId' ) ) . prop ( 'checked' ) ) ;
2016-07-07 18:54:16 -07:00
} ) ;
2017-03-24 13:10:32 +00:00
2017-09-14 12:54:57 +01:00
let payload = { Message : message , Permissions : permissions } ;
console . log ( payload ) ;
// this.get('folderService').savePermissions(folder.get('id'), payload).then(() => {
// this.showNotification('Saved permissions');
// });
// var hasEveryone = _.find(data, function (permission) {
// return permission.userId === "" && (permission.canView || permission.canEdit);
// });
// if (is.not.undefined(hasEveryone)) {
// folder.markAsPublic();
// } else {
// if (data.length > 1) {
// folder.markAsRestricted();
// } else {
// folder.markAsPrivate();
// }
// }
// this.get('folderService').save(folder).then(function () {
// });
2016-07-07 18:54:16 -07:00
}
}
2016-07-24 14:49:40 -07:00
} ) ;