UNPKG

ng2-alfresco-aos-editonline

Version:
1 lines 11.6 kB
{"version":3,"file":"/home/mikel/workspaces/bee/2017-global-hackaton/ng2-alfresco-aos-editonline/src/services/aos-edit-online-service.ts","sourceRoot":"","sources":["/home/mikel/workspaces/bee/2017-global-hackaton/ng2-alfresco-aos-editonline/src/services/aos-edit-online-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { Subject } from 'rxjs/Rx';\nimport {\n AlfrescoApiService,\n AlfrescoAuthenticationService,\n NotificationService,\n AlfrescoSettingsService,\n AlfrescoContentService,\n AlfrescoTranslationService\n} from 'ng2-alfresco-core';\nimport { DocumentActionsService } from 'ng2-alfresco-documentlist';\nimport { MinimalNodeEntity } from 'alfresco-js-api';\n\n@Injectable()\nexport class AOSEditOnlineService {\n\n static AOS_EDITONLINE_ACTION_HANDLER_KEY: string = 'aos-editonline';\n static MS_PROTOCOL_NAMES: any = {\n 'doc': 'ms-word',\n 'docx': 'ms-word',\n 'docm': 'ms-word',\n 'dot': 'ms-word',\n 'dotx': 'ms-word',\n 'dotm': 'ms-word',\n 'xls': 'ms-excel',\n 'xlsx': 'ms-excel',\n 'xlsb': 'ms-excel',\n 'xlsm': 'ms-excel',\n 'xlt': 'ms-excel',\n 'xltx': 'ms-excel',\n 'xltm': 'ms-excel',\n 'ppt': 'ms-powerpoint',\n 'pptx': 'ms-powerpoint',\n 'pot': 'ms-powerpoint',\n 'potx': 'ms-powerpoint',\n 'potm': 'ms-powerpoint',\n 'pptm': 'ms-powerpoint',\n 'pps': 'ms-powerpoint',\n 'ppsx': 'ms-powerpoint',\n 'ppam': 'ms-powerpoint',\n 'ppsm': 'ms-powerpoint',\n 'sldx': 'ms-powerpoint',\n 'sldm': 'ms-powerpoint'\n };\n\n constructor(\n private alfrescoApiService: AlfrescoApiService,\n private alfrescoAuthenticationService: AlfrescoAuthenticationService,\n private alfrescoSettingsService: AlfrescoSettingsService,\n private notificationService: NotificationService,\n private documentActionService: DocumentActionsService,\n private translationService: AlfrescoTranslationService\n ) {\n documentActionService.setHandler(\n 'aos-edit-online',\n this.onActionEditOnlineAos.bind(this));\n }\n\n onActionEditOnlineAos(nodeId: string): Observable<boolean> {\n\n let opts = {\n include: ['isLocked', 'path']\n };\n\n return Observable.fromPromise(this.alfrescoApiService.getInstance().core.nodesApi.getNode(nodeId, opts)\n .then((data: any) => {\n if (data) {\n let node = data.entry;\n if (node.isFile) {\n if (node.isLocked) {\n let checkedOut = node.aspectNames.contains('cm:checkedOut');\n let lockOwner = node.properties['cm:lockOwner'];\n let differentLockOwner = lockOwner.id !== this.alfrescoAuthenticationService.getEcmUsername();\n\n if (checkedOut && differentLockOwner) {\n this.onAlreadyLockedNotification(node.id, lockOwner);\n return false;\n } else {\n this.triggerEditOnlineAos(node);\n return true;\n }\n } else {\n this.triggerEditOnlineAos(node);\n return true;\n }\n }\n }\n })\n );\n }\n\n private getUserAgent(): string {\n return navigator.userAgent.toLowerCase();\n }\n\n private isWindows(): boolean {\n return this.getUserAgent().indexOf('win') !== -1 ? true : false;\n }\n\n private isMacOs(): boolean {\n return this.getUserAgent().indexOf('mac') !== -1 ? true : false;\n }\n\n private onAlreadyLockedNotification(nodeId: string, lockOwner: string) {\n this.notificationService.openSnackMessage(`Document {nodeId} locked by {lockOwner}`, 3000);\n }\n\n private getProtocolForFileExtension(fileExtension: string) {\n return AOSEditOnlineService.MS_PROTOCOL_NAMES[fileExtension];\n }\n\n private triggerEditOnlineAos(node: any): void {\n\n let url = this.onlineEditUrlAos(node);\n let fileExtension = node.name.split('.').pop() !== null ? node.name.split('.').pop().toLowerCase() : '';\n let protocolHandler = this.getProtocolForFileExtension(fileExtension);\n\n if (protocolHandler === undefined) {\n let message: any = this.translationService.get('AOS.ERROR.NO_PROTOCOL_HANDLER');\n this.notificationService.openSnackMessage(message.value, 3000);\n return;\n }\n\n if (!this.isWindows() && !this.isMacOs()) {\n let message: any = this.translationService.get('AOS.ERROR.UNSUPPORTED_CLIENT_OS');\n this.notificationService.openSnackMessage(message.value, 3000);\n } else {\n this.aos_tryToLaunchOfficeByMsProtocolHandler(protocolHandler, url);\n }\n }\n\n private onlineEditUrlAos(node: any): string {\n\n let pathElements = node.path.elements.slice(1, node.path.elements.length);\n let path = '/';\n for (let element of pathElements) {\n path = path + element.name + '/';\n }\n\n let url = this.alfrescoSettingsService.ecmHost + '/alfresco/aos' + path + '/' + node.name;\n if (encodeURI(url).length > 256) {\n url = this.alfrescoSettingsService.ecmHost + '/alfresco/aos/' + '_aos_nodeid' + '/' + node.id + '/' + node.name;\n }\n return url;\n }\n\n\n private aos_tryToLaunchOfficeByMsProtocolHandler(protocolHandler: string, url: string) {\n let protocolUrl = protocolHandler + ':ofe%7Cu%7C' + url;\n let protocolHandlerPresent = false;\n\n let input = document.createElement('input');\n let inputTop = document.body.scrollTop + 10;\n input.setAttribute('style', 'z-index: 1000; background-color: rgba(0, 0, 0, 0); border: none; outline: none; position: absolute; left: 10px; top: ' + inputTop + 'px;');\n document.getElementsByTagName('body')[0].appendChild(input);\n input.focus();\n input.onblur = function() {\n protocolHandlerPresent = true;\n };\n location.href = protocolUrl;\n let that = this;\n setTimeout(function() {\n input.onblur = null;\n input.remove();\n if (!protocolHandlerPresent) {\n let message: any = that.translationService.get('AOS.ERROR.UNSUPPORTED_CLIENT_VERSION');\n that.notificationService.openSnackMessage(message.value, 3000);\n }\n }, 500);\n }\n\n}\n\n"]}