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
var folderPermissions = [ ] ;
2016-08-23 10:13:29 +02:00
users . forEach ( ( user ) => {
let isActive = user . get ( 'active' ) ;
let u = {
userId : user . get ( 'id' ) ,
fullname : user . get ( 'fullname' ) ,
2017-03-24 13:10:32 +00:00
orgId : this . get ( 'folder.orgId' ) ,
folderId : this . get ( 'folder.id' ) ,
2016-08-23 10:13:29 +02:00
canEdit : false ,
canView : false ,
canViewPrevious : false
} ;
if ( isActive ) {
folderPermissions . pushObject ( u ) ;
}
} ) ;
var u = {
2016-07-07 18:54:16 -07:00
userId : "" ,
fullname : " Everyone" ,
2017-03-24 13:10:32 +00:00
orgId : this . get ( 'folder.orgId' ) ,
folderId : this . get ( 'folder.id' ) ,
2016-07-07 18:54:16 -07:00
canEdit : false ,
canView : false
2016-08-23 10:13:29 +02:00
} ;
2016-07-07 18:54:16 -07:00
folderPermissions . pushObject ( u ) ;
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
2016-08-23 10:13:29 +02:00
var folderPermission = folderPermissions . findBy ( 'userId' , permission . get ( 'userId' ) ) ;
2016-07-07 18:54:16 -07:00
if ( is . not . undefined ( folderPermission ) ) {
2016-08-29 12:23:07 +02:00
Ember . setProperties ( folderPermission , {
orgId : permission . get ( 'orgId' ) ,
folderId : permission . get ( 'folderId' ) ,
canEdit : permission . get ( 'canEdit' ) ,
canView : permission . get ( 'canView' ) ,
canViewPrevious : permission . get ( 'canView' )
} ) ;
2016-07-07 18:54:16 -07:00
}
} ) ;
2016-08-23 10:13:29 +02:00
folderPermissions . map ( ( permission ) => {
let data = this . get ( 'store' ) . normalize ( 'folder-permission' , permission ) ;
2016-08-26 13:13:26 +02:00
return this . get ( 'store' ) . push ( data ) ;
2016-08-23 10:13:29 +02: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 ( ) ;
let folder = this . get ( 'folder' ) ;
let permissions = this . get ( 'permissions' ) ;
2017-08-07 14:42:02 +01:00
2017-03-24 13:10:32 +00:00
this . get ( 'permissions' ) . forEach ( ( permission , index ) => { // eslint-disable-line no-unused-vars
Ember . set ( permission , 'canView' , $ ( "#canView-" + permission . userId ) . prop ( 'checked' ) ) ;
Ember . set ( permission , 'canEdit' , $ ( "#canEdit-" + permission . userId ) . prop ( 'checked' ) ) ;
2016-07-07 18:54:16 -07:00
} ) ;
2016-08-23 10:13:29 +02:00
var data = permissions . map ( ( obj ) => {
let permission = {
'orgId' : obj . orgId ,
'folderId' : obj . folderId ,
'userId' : obj . userId ,
'canEdit' : obj . canEdit ,
'canView' : obj . canView
} ;
return permission ;
2016-07-07 18:54:16 -07:00
} ) ;
2017-03-24 13:10:32 +00:00
2016-07-07 18:54:16 -07:00
var payload = { Message : message , Roles : data } ;
2016-08-17 15:37:46 +02:00
this . get ( 'folderService' ) . savePermissions ( folder . get ( 'id' ) , payload ) . then ( ( ) => {
2016-07-07 18:54:16 -07:00
} ) ;
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 ( ) {
// window.location.href = "/folder/" + folder.get('id') + "/" + folder.get('slug');
} ) ;
}
}
2016-07-24 14:49:40 -07:00
} ) ;