diff --git a/app/app/services/document.js b/app/app/services/document.js index 8f036c95..1199e593 100644 --- a/app/app/services/document.js +++ b/app/app/services/document.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // 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 -// by contacting . +// by contacting . // // https://documize.com @@ -14,51 +14,34 @@ import models from '../utils/model'; export default Ember.Service.extend({ sessionService: Ember.inject.service('session'), + ajax: Ember.inject.service(), // Returns document model for specified document id. getDocument(documentId) { let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - let doc = models.DocumentModel.create(response); - resolve(doc); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url).then((response) => { + let doc = models.DocumentModel.create(response); + return doc; }); }, // Returns all documents for specified folder. getAllByFolder(folderId) { - let appMeta = this.get('sessionService.appMeta') + let appMeta = this.get('sessionService.appMeta'); let url = appMeta.getUrl(`documents?folder=${folderId}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - let documents = Ember.ArrayProxy.create({ - content: Ember.A([]) - }); - - _.each(response, function(doc) { - let documentModel = models.DocumentModel.create(doc); - documents.pushObject(documentModel); - }); - - resolve(documents); - }, - error: function(reason) { - reject(reason); - } + return this.get('ajax').request(url).then((response) => { + let documents = Ember.ArrayProxy.create({ + content: Ember.A([]) }); + + _.each(response, function(doc) { + let documentModel = models.DocumentModel.create(doc); + documents.pushObject(documentModel); + }); + + return documents; }); }, @@ -66,26 +49,17 @@ export default Ember.Service.extend({ getAllByTag(tag) { let url = this.get('sessionService').appMeta.getUrl(`documents?filter=tag&tag=${tag}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - let documents = Ember.ArrayProxy.create({ - content: Ember.A([]) - }); - - _.each(response, function(doc) { - let documentModel = models.DocumentModel.create(doc); - documents.pushObject(documentModel); - }); - - resolve(documents); - }, - error: function(reason) { - reject(reason); - } + return this.get('ajax').request(url).then((response) => { + let documents = Ember.ArrayProxy.create({ + content: Ember.A([]) }); + + _.each(response, function(doc) { + let documentModel = models.DocumentModel.create(doc); + documents.pushObject(documentModel); + }); + + return documents; }); }, @@ -94,371 +68,218 @@ export default Ember.Service.extend({ let id = doc.get('id'); let url = this.get('sessionService').appMeta.getUrl(`documents/${id}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'PUT', - data: JSON.stringify(doc), - contentType: 'json', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + method: 'PUT', + data: JSON.stringify(doc) + }).then((response) => { + return response; }); }, getBatchedPages: function(documentId, payload) { - var self = this; + let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/batch"); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/batch"), - type: 'POST', - data: payload, - success: function(pages) { - if (is.not.array(pages)) { - pages = []; - } + return this.get('ajax').request(url, { + method: 'POST', + data: payload + }).then((pages) => { + if (is.not.array(pages)) { + pages = []; + } - resolve(pages); - }, - error: function(reason) { - reject(reason); - } - }); + return pages; }); }, changePageSequence: function(documentId, payload) { - var self = this; + var url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/sequence"); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/sequence"), - type: 'POST', - data: JSON.stringify(payload), - contentType: 'json', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url, { + data: JSON.stringify(payload), + contentType: 'json' + }).then((response) => { + return response; }); }, changePageLevel(documentId, payload) { - var self = this; + let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/level"); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/level"), - type: 'POST', - data: JSON.stringify(payload), - contentType: 'json', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url, { + data: JSON.stringify(payload), + contentType: 'json' + }).then((response) => { + return response; }); }, deleteDocument: function(documentId) { - var self = this; + let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("documents/" + documentId), - type: 'DELETE', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + method: 'DELETE' + }).then((response) => { + return response; }); }, updatePage: function(documentId, pageId, payload, skipRevision) { - var self = this; + let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + revision); var revision = skipRevision ? "?r=true" : "?r=false"; - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + revision), - type: 'PUT', - data: JSON.stringify(payload), - contentType: 'json', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + method: 'PUT', + data: JSON.stringify(payload), + contentType: 'json' + }).then((response) => { + return response; }); }, // addPage inserts new page to an existing document. addPage: function(documentId, payload) { - var self = this; + let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages"); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages"), - type: 'POST', - data: JSON.stringify(payload), - contentType: 'json', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url, { + data: JSON.stringify(payload), + contentType: 'json' + }).then((response) => { + return response; }); }, // Nukes multiple pages from the document. deletePages: function(documentId, pageId, payload) { - var self = this; + let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId), - type: 'POST', - data: JSON.stringify(payload), - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url, { + data: JSON.stringify(payload), + contentType: 'json' + }).then((response) => { + return response; }); }, // Nukes a single page from the document. deletePage: function(documentId, pageId) { - var self = this; + let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId), - type: 'DELETE', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + method: 'DELETE' + }).then((response) => { + return response; }); }, getPageRevisions(documentId, pageId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions"); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions"), - type: 'GET', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url).then((response) => { + return response; }); }, getPageRevisionDiff(documentId, pageId, revisionId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions/" + revisionId); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions/" + revisionId), - type: 'GET', - dataType: 'text', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + dataType: 'text' + }).then((response) => { + return response; }); }, rollbackPage(documentId, pageId, revisionId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions/" + revisionId); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions/" + revisionId), - type: 'POST', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url).then((response) => { + return response; }); }, // document meta referes to number of views, edits, approvals, etc. getMeta(documentId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/meta`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/meta`), - type: 'GET', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url).then((response) => { + return response; }); }, // Returns all pages without the content getTableOfContents(documentId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages?content=0`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages?content=0`), - type: 'GET', - success: function(response) { - let data = []; - _.each(response, function(obj) { - data.pushObject(models.PageModel.create(obj)); - }); - resolve(data); - }, - error: function(reason) { - reject(reason); - } + return this.get('ajax').request(url).then((response) => { + let data = []; + _.each(response, function(obj) { + data.pushObject(models.PageModel.create(obj)); }); + + return data; }); }, // Returns all document pages with content getPages(documentId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages`), - type: 'GET', - success: function(response) { - let pages = []; + return this.get('ajax').request(url).then((response) => { + let pages = []; - _.each(response, function(page) { - pages.pushObject(models.PageModel.create(page)); - }); - - if (pages.length > 0) { - Ember.set(pages[0], 'firstPage', true); - } - - resolve(pages); - }, - error: function(reason) { - reject(reason); - } + _.each(response, function(page) { + pages.pushObject(models.PageModel.create(page)); }); + + if (pages.length > 0) { + Ember.set(pages[0], 'firstPage', true); + } + + return pages; }); }, // Returns document page with content getPage(documentId, pageId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages/${pageId}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages/${pageId}`), - type: 'GET', - success: function(response) { - let page = models.PageModel.create(response); - resolve(page); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url).then((response) => { + let page = models.PageModel.create(response); + return page; }); }, // Returns document page meta object getPageMeta(documentId, pageId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages/${pageId}/meta`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages/${pageId}/meta`), - type: 'GET', - success: function(response) { - let meta = models.PageMetaModel.create(response); - resolve(meta); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url).then((response) => { + let meta = models.PageMetaModel.create(response); + return meta; }); }, // document attachments without the actual content getAttachments(documentId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/attachments`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/attachments`), - type: 'GET', - success: function(response) { - let data = []; - _.each(response, function(obj) { - data.pushObject(models.AttachmentModel.create(obj)); - }); - resolve(data); - }, - error: function(reason) { - reject(reason); - } + return this.get('ajax').request(url).then((response) => { + let data = []; + _.each(response, function(obj) { + data.pushObject(models.AttachmentModel.create(obj)); }); + return data; }); }, // nuke an attachment deleteAttachment(documentId, attachmentId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/attachments/${attachmentId}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/attachments/${attachmentId}`), - type: 'DELETE', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + method: 'DELETE' + }).then((response) => { + return response; }); }, }); diff --git a/app/app/services/folder.js b/app/app/services/folder.js index 50ff0a42..1ec18394 100644 --- a/app/app/services/folder.js +++ b/app/app/services/folder.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // 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 -// by contacting . +// by contacting . // // https://documize.com @@ -15,6 +15,7 @@ import BaseService from '../services/base'; export default BaseService.extend({ sessionService: Ember.inject.service('session'), + ajax: Ember.inject.service(), // selected folder currentFolder: null, @@ -25,40 +26,22 @@ export default BaseService.extend({ let appMeta = this.get('sessionService.appMeta'); let url = appMeta.getUrl(`folders`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'POST', - data: JSON.stringify(folder), - contentType: 'json', - success: function(folder) { - let folderModel = models.FolderModel.create(folder); - resolve(folderModel); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url, { + data: JSON.stringify(folder) + }).then((folder)=>{ + let folderModel = models.FolderModel.create(folder); + return folderModel; }); }, // Returns folder model for specified folder id. getFolder(id) { - let appMeta = this.get('sessionService.appMeta') + let appMeta = this.get('sessionService.appMeta'); let url = appMeta.getUrl(`folders/${id}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - let folder = models.FolderModel.create(response); - resolve(folder); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url).then((response)=>{ + let folder = models.FolderModel.create(response); + return folder; }); }, @@ -80,57 +63,31 @@ export default BaseService.extend({ let id = folder.get('id'); let url = this.get('sessionService').appMeta.getUrl(`folders/${id}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'PUT', - data: JSON.stringify(folder), - contentType: 'json', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + method: 'PUT', + data: JSON.stringify(folder) + }).then((response)=>{ + return response; }); }, remove: function(folderId, moveToId) { - var self = this; - var url = self.get('sessionService').appMeta.getUrl('folders/' + folderId + "/move/" + moveToId); + var url = this.get('sessionService').appMeta.getUrl('folders/' + folderId + "/move/" + moveToId); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'DELETE', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + method: 'DELETE' + }).then((response)=>{ + return response; }); }, onboard: function(folderId, payload) { - var self = this; - var url = self.get('sessionService').appMeta.getUrl('public/share/' + folderId); + var url = this.get('sessionService').appMeta.getUrl('public/share/' + folderId); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: "POST", - data: payload, - contentType: "application/json", - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url, { + data: payload + }).then((response)=>{ + return response; }); }, @@ -138,107 +95,65 @@ export default BaseService.extend({ getProtectedFolderInfo: function() { var url = this.get('sessionService').appMeta.getUrl('folders?filter=viewers'); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - let data = []; - _.each(response, function(obj) { - data.pushObject(models.ProtectedFolderParticipant.create(obj)); - }); - - resolve(data); - }, - error: function(reason) { - reject(reason); - } + return this.get('ajax').request(url).then((response)=>{ + let data = []; + _.each(response, function(obj) { + data.pushObject(models.ProtectedFolderParticipant.create(obj)); }); + + return data; }); }, // reloads and caches folders. reload() { - let appMeta = this.get('sessionService.appMeta') + let appMeta = this.get('sessionService.appMeta'); let url = appMeta.getUrl(`folders`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - let data = []; - _.each(response, function(obj) { - data.pushObject(models.FolderModel.create(obj)); - }); - resolve(data); - }, - error: function(reason) { - reject(reason); - } + return this.get('ajax').request(url).then((response)=>{ + let data = []; + _.each(response, function(obj) { + data.pushObject(models.FolderModel.create(obj)); }); + + return data; }); }, // so who can see/edit this folder? getPermissions(folderId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl(`folders/${folderId}/permissions`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl(`folders/${folderId}/permissions`), - type: 'GET', - success: function(response) { - let data = []; - _.each(response, function(obj) { - data.pushObject(models.FolderPermissionModel.create(obj)); - }); - resolve(data); - }, - error: function(reason) { - reject(reason); - } + return this.get('ajax').request(url).then((response)=>{ + let data = []; + _.each(response, function(obj) { + data.pushObject(models.FolderPermissionModel.create(obj)); }); + + return data; }); }, // persist folder permissions savePermissions(folderId, payload) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl(`folders/${folderId}/permissions`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl(`folders/${folderId}/permissions`), - type: 'PUT', - contentType: 'json', - data: JSON.stringify(payload), - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + method: 'PUT', + data: JSON.stringify(payload) + }).then((response) => { + return response; }); }, // share this folder with new users! share(folderId, invitation) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl(`folders/${folderId}/invitation`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl(`folders/${folderId}/invitation`), - type: 'POST', - contentType: 'json', - data: JSON.stringify(invitation), - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url, { + data: JSON.stringify(invitation) + }).then((response) => { + return response; }); }, @@ -258,43 +173,38 @@ export default BaseService.extend({ } let url = this.get('sessionService').appMeta.getUrl('users/' + userId + "/permissions"); - let self = this; - $.ajax({ - url: url, - type: 'GET', - success: function(folderPermissions) { - // safety check - self.set('canEditCurrentFolder', false); + return this.get('ajax').request(url).then((folderPermissions) => { + // safety check + this.set('canEditCurrentFolder', false); - if (folderPermissions.length === 0) { - return; + if (folderPermissions.length === 0) { + return; + } + + let result = []; + let folderId = folder.get('id'); + + folderPermissions.forEach(function(item) { + if (item.folderId === folderId) { + result.push(item); + } + }); + + let canEdit = false; + + result.forEach(function(permission) { + if (permission.userId === userId) { + canEdit = permission.canEdit; } - let result = []; - let folderId = folder.get('id'); - - folderPermissions.forEach(function(item) { - if (item.folderId === folderId) { - result.push(item); - } - }); - - let canEdit = false; - - result.forEach(function(permission) { - if (permission.userId === userId) { - canEdit = permission.canEdit; - } - - if (permission.userId === "" && !canEdit) { - canEdit = permission.canEdit; - } - }); - Ember.run(() => { - self.set('canEditCurrentFolder', canEdit && self.get('sessionService').authenticated); - }); - } + if (permission.userId === "" && !canEdit) { + canEdit = permission.canEdit; + } + }); + Ember.run(() => { + this.set('canEditCurrentFolder', canEdit && this.get('sessionService').authenticated); + }); }); }, -}); \ No newline at end of file +}); diff --git a/app/app/services/organization.js b/app/app/services/organization.js index 24ee457e..8a353546 100644 --- a/app/app/services/organization.js +++ b/app/app/services/organization.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // 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 -// by contacting . +// by contacting . // // https://documize.com @@ -14,23 +14,15 @@ import models from '../utils/model'; export default Ember.Service.extend({ sessionService: Ember.inject.service('session'), + ajax: Ember.inject.service(), // Returns attributes for specified org id. getOrg(id) { let url = this.get('sessionService').appMeta.getUrl(`organizations/${id}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - let org = models.OrganizationModel.create(response); - resolve(org); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url).then((response) =>{ + let org = models.OrganizationModel.create(response); + return org; }); }, @@ -43,19 +35,11 @@ export default Ember.Service.extend({ this.get('sessionService').get('appMeta').setSafe('message', org.message); this.get('sessionService').get('appMeta').setSafe('title', org.title); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'PUT', - data: JSON.stringify(org), - contentType: 'json', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + method: 'PUT', + data: JSON.stringify(org) + }).then((response) => { + return response; }); } -}); \ No newline at end of file +}); diff --git a/app/app/services/search.js b/app/app/services/search.js index c4f88d92..94ed87d4 100644 --- a/app/app/services/search.js +++ b/app/app/services/search.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // 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 -// by contacting . +// by contacting . // // https://documize.com @@ -13,22 +13,14 @@ import Ember from 'ember'; export default Ember.Service.extend({ sessionService: Ember.inject.service('session'), + ajax: Ember.inject.service(), // getUsers returns all users for organization. find(keywords) { let url = this.get('sessionService').appMeta.getUrl("search?keywords=" + encodeURIComponent(keywords)); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url).then((response) => { + return response; }); }, -}); \ No newline at end of file +}); diff --git a/app/app/services/section.js b/app/app/services/section.js index b7da9c7c..14533cca 100644 --- a/app/app/services/section.js +++ b/app/app/services/section.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // 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 -// by contacting . +// by contacting . // // https://documize.com @@ -15,26 +15,21 @@ import BaseService from '../services/base'; export default BaseService.extend({ sessionService: Ember.inject.service('session'), + ajax: Ember.inject.service(), // Returns all available sections. getAll() { let url = this.get('sessionService').appMeta.getUrl(`sections`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - let data = []; - _.each(response, function(obj) { - data.pushObject(models.SectionModel.create(obj)); - }); - resolve(data); - }, - error: function(reason) { - reject(reason); - } + return this.get('ajax').request(url,{ + method: 'GET' + }).then((response)=>{ + let data = []; + _.each(response, function(obj) { + data.pushObject(models.SectionModel.create(obj)); }); + + return data; }); }, @@ -46,19 +41,10 @@ export default BaseService.extend({ let endpoint = `sections?documentID=${documentId}§ion=${section}&method=${method}`; let url = this.get('sessionService').appMeta.getUrl(endpoint); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'POST', - data: JSON.stringify(data), - contentType: "application/json", - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url, { + data: JSON.stringify(data) + }).then((response)=>{ + return response; }); }, @@ -66,26 +52,16 @@ export default BaseService.extend({ refresh(documentId) { let url = this.get('sessionService').appMeta.getUrl(`sections/refresh?documentID=${documentId}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - // resolve(response); - let pages = []; + return this.get('ajax').request(url).then((response)=>{ + let pages = []; - if (is.not.null(response) && is.array(response) && response.length > 0) { - _.each(response, function(page) { - pages.pushObject(models.PageModel.create(page)); - }); - } + if (is.not.null(response) && is.array(response) && response.length > 0) { + _.each(response, function(page) { + pages.pushObject(models.PageModel.create(page)); + }); + } - resolve(pages); - }, - error: function(reason) { - reject(reason); - } - }); + return pages; }); } -}); \ No newline at end of file +}); diff --git a/app/app/services/session.js b/app/app/services/session.js index 818d6f6a..851311bc 100644 --- a/app/app/services/session.js +++ b/app/app/services/session.js @@ -24,6 +24,7 @@ export default Ember.Service.extend({ authenticated: false, folderPermissions: null, currentFolder: null, + ajax: Ember.inject.service(), isAdmin: function() { if (this.authenticated && is.not.null(this.user) && this.user.id !== "") { @@ -50,68 +51,48 @@ export default Ember.Service.extend({ // Authentication login: function(credentials) { - var self = this; - var url = self.appMeta.getUrl('public/authenticate'); + let url = this.appMeta.getUrl('public/authenticate'); let domain = netUtil.getSubdomain(); this.clearSession(); - return new Ember.RSVP.Promise(function(resolve, reject) { - if (is.empty(credentials.email) || is.empty(credentials.password)) { - reject("invalid"); - return; - } + if (is.empty(credentials.email) || is.empty(credentials.password)) { + return Ember.RSVP.reject("invalid"); + } - var encoded = encodingUtil.Base64.encode(domain + ":" + credentials.email + ":" + credentials.password); - var header = { - 'Authorization': 'Basic ' + encoded - }; + var encoded = encodingUtil.Base64.encode(domain + ":" + credentials.email + ":" + credentials.password); + var headers = { + 'Authorization': 'Basic ' + encoded + }; - $.ajax({ - url: url, - type: 'POST', - headers: header, - success: function(response) { - self.setSession(response.token, models.UserModel.create(response.user)); - self.get('ready', true); - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url, { + headers + }).then((response)=>{ + this.setSession(response.token, models.UserModel.create(response.user)); + this.get('ready', true); + return response; }); }, // SSO in the form of 'domain:email:password' sso: function(credentials) { - var self = this; - var url = self.appMeta.getUrl('public/authenticate'); + let url = this.appMeta.getUrl('public/authenticate'); this.clearSession(); - return new Ember.RSVP.Promise(function(resolve, reject) { - if (is.empty(credentials.email) || is.empty(credentials.password)) { - reject("invalid"); - return; - } + if (is.empty(credentials.email) || is.empty(credentials.password)) { + return Ember.RSVP.reject("invalid"); + } - var header = { - 'Authorization': 'Basic ' + credentials - }; + var headers = { + 'Authorization': 'Basic ' + credentials + }; - $.ajax({ - url: url, - type: 'POST', - headers: header, - success: function(response) { - self.setSession(response.token, models.UserModel.create(response.user)); - self.get('ready', true); - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url, { + headers + }).then((response)=>{ + this.setSession(response.token, models.UserModel.create(response.user)); + this.get('ready', true); + resolve(response); }); }, @@ -192,51 +173,35 @@ export default Ember.Service.extend({ // this.set('popupBlocked', false); // } - return new Ember.RSVP.Promise(function(resolve) { - $.ajax({ - url: self.get('appMeta').getUrl("public/meta"), - type: 'GET', - contentType: 'json', - success: function(response) { - self.get('appMeta').set('orgId', response.orgId); - self.get('appMeta').setSafe('title', response.title); - self.get('appMeta').set('version', response.version); - self.get('appMeta').setSafe('message', response.message); - self.get('appMeta').set('allowAnonymousAccess', response.allowAnonymousAccess); + let url = this.get('appMeta').getUrl("public/meta"); - let token = self.getSessionItem('token'); + return this.get('ajax').request(url) + .then((response) => { + this.get('appMeta').set('orgId', response.orgId); + this.get('appMeta').setSafe('title', response.title); + this.get('appMeta').set('version', response.version); + this.get('appMeta').setSafe('message', response.message); + this.get('appMeta').set('allowAnonymousAccess', response.allowAnonymousAccess); - if (is.not.undefined(token)) { - // We now validate current token - let tokenCheckUrl = self.get('appMeta').getUrl(`public/validate?token=${token}`); + let token = this.getSessionItem('token'); - $.ajax({ - url: tokenCheckUrl, - type: 'GET', - contentType: 'json', - success: function(user) { - self.setSession(token, models.UserModel.create(user)); - self.set('ready', true); - resolve(); - }, - error: function(reason) { - if (reason.status === 401 || reason.status === 403) { - localStorage.clear(); - window.location.href = "/auth/login"; - } - } - }); - } else { - self.set('ready', true); - resolve(); - } - }, - error: function(reason) { + if (is.not.undefined(token)) { + // We now validate current token + let tokenCheckUrl = this.get('appMeta').getUrl(`public/validate?token=${token}`); + + return this.get('ajax').request(tokenCheckUrl, { + method: 'GET', + contentType: 'json' + }).then((response) => { + this.setSession(token, models.UserModel.create(user)); + this.set('ready', true); + }).catch((reason) => { if (reason.status === 401 || reason.status === 403) { - window.location.href = "https://documize.com"; + localStorage.clear(); + window.location.href = "/auth/login"; } - } - }); + }); + } }); } -}); \ No newline at end of file +}); diff --git a/app/app/services/template.js b/app/app/services/template.js index 471d6eee..fea37076 100644 --- a/app/app/services/template.js +++ b/app/app/services/template.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // 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 -// by contacting . +// by contacting . // // https://documize.com @@ -14,85 +14,55 @@ import models from '../utils/model'; export default Ember.Service.extend({ sessionService: Ember.inject.service('session'), + ajax: Ember.inject.service(), importStockTemplate: function(folderId, templateId) { - let self = this; - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("templates/" + templateId + "/folder/" + folderId + "?type=stock"), - type: 'POST', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + let url = this.get('sessionService').appMeta.getUrl("templates/" + templateId + "/folder/" + folderId + "?type=stock"); + + return this.get('ajax').post(url).then((response)=>{ + return response; }); }, importSavedTemplate: function(folderId, templateId) { - let self = this; + let url = this.get('sessionService').appMeta.getUrl("templates/" + templateId + "/folder/" + folderId + "?type=saved"); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("templates/" + templateId + "/folder/" + folderId + "?type=saved"), - type: 'POST', - success: function(doc) { - let docModel = models.DocumentModel.create(doc); - resolve(docModel); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url).then((doc)=>{ + let docModel = models.DocumentModel.create(doc); + return docModel; }); }, getSavedTemplates() { - let self = this; + let url = this.get('sessionService').appMeta.getUrl("templates"); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("templates"), - type: 'GET', - success: function(response) { - if (is.not.array(response)) { - response = []; - } - let templates = Ember.ArrayProxy.create({ - content: Ember.A([]) - }); - - _.each(response, function(template) { - let templateModel = models.TemplateModel.create(template); - templates.pushObject(templateModel); - }); - - resolve(templates); - }, - error: function(reason) { - reject(reason); - } + return this.get('ajax').request(url, { + type: 'GET' + }).then((response) => { + if (is.not.array(response)) { + response = []; + } + let templates = Ember.ArrayProxy.create({ + content: Ember.A([]) }); + + _.each(response, function(template) { + let templateModel = models.TemplateModel.create(template); + templates.pushObject(templateModel); + }); + + return templates; }); }, getStockTemplates() { - let self = this; + let url = this.get('sessionService').appMeta.getUrl("templates/stock"); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: self.get('sessionService').appMeta.getUrl("templates/stock"), - type: 'GET', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + type: 'GET' + }).then((response) => { + return response; }); } -}); \ No newline at end of file +}); diff --git a/app/app/services/user.js b/app/app/services/user.js index 121f5a8f..0ad6babc 100644 --- a/app/app/services/user.js +++ b/app/app/services/user.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // 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 -// by contacting . +// by contacting . // // https://documize.com @@ -33,17 +33,10 @@ export default Ember.Service.extend({ getUser(userId) { let url = this.get('sessionService').appMeta.getUrl(`users/${userId}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - resolve(models.UserModel.create(response)); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + type: 'GET' + }).then((response) => { + return models.UserModel.create(response); }); }, @@ -62,22 +55,13 @@ export default Ember.Service.extend({ getFolderUsers(folderId) { let url = this.get('sessionService').appMeta.getUrl(`users/folder/${folderId}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'GET', - success: function(response) { - let data = []; - _.each(response, function(obj) { - data.pushObject(models.UserModel.create(obj)); - }); - - resolve(data); - }, - error: function(reason) { - reject(reason); - } + return this.get('ajax').request(url).then((response)=>{ + let data = []; + _.each(response, function(obj) { + data.pushObject(models.UserModel.create(obj)); }); + + return data; }); }, @@ -97,18 +81,10 @@ export default Ember.Service.extend({ updatePassword(userId, password) { let url = this.get('sessionService').appMeta.getUrl(`users/${userId}/password`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'POST', - data: password, - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').post(url, { + data: password + }).then((response)=>{ + return response; }); }, @@ -116,46 +92,30 @@ export default Ember.Service.extend({ remove(userId) { let url = this.get('sessionService').appMeta.getUrl(`users/${userId}`); - return new Ember.RSVP.Promise(function(resolve, reject) { - $.ajax({ - url: url, - type: 'DELETE', - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.get('ajax').request(url, { + method: 'DELETE' + }).then((response) => { + return response; }); }, // Request password reset. forgotPassword(email) { - var url = this.get('sessionService').appMeta.getUrl('public/forgot'); + let url = this.get('sessionService').appMeta.getUrl('public/forgot'); - return new Ember.RSVP.Promise(function(resolve, reject) { - if (is.empty(email)) { - reject("invalid"); - return; - } + if (is.empty(email)) { + reject("invalid"); + return; + } - var data = JSON.stringify({ - Email: email - }); + let data = JSON.stringify({ + Email: email + }); - $.ajax({ - url: url, - type: 'POST', - dataType: 'json', - data: data, - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.request('ajax').post(url, { + data: data + }).then((response)=>{ + return response; }); }, @@ -163,23 +123,14 @@ export default Ember.Service.extend({ resetPassword(token, password) { var url = this.get('sessionService').appMeta.getUrl('public/reset/' + token); - return new Ember.RSVP.Promise(function(resolve, reject) { - if (is.empty(token) || is.empty(password)) { - reject("invalid"); - return; - } + if (is.empty(token) || is.empty(password)) { + return Ember.RSVP.reject("invalid"); + } - $.ajax({ - url: url, - type: 'POST', - data: password, - success: function(response) { - resolve(response); - }, - error: function(reason) { - reject(reason); - } - }); + return this.request('ajax').post(url, { + data: password + }).then((response)=>{ + return response; }); } });