From e87b33a8c24a15a894cbdff1cc717f899baeeb96 Mon Sep 17 00:00:00 2001 From: zinyando Date: Wed, 17 Aug 2016 15:37:46 +0200 Subject: [PATCH] More refactoring and fixes --- app/app/components/folder/folder-settings.js | 156 ++++++++++--------- app/app/components/folder/folders-list.js | 119 +++++++------- app/app/models/folder.js | 2 +- app/app/pods/folders/folder/route.js | 6 +- app/app/pods/folders/route.js | 2 +- app/app/pods/folders/settings/route.js | 36 +++-- app/app/services/document.js | 4 + app/app/services/folder.js | 14 +- app/app/services/organization.js | 6 +- 9 files changed, 177 insertions(+), 168 deletions(-) diff --git a/app/app/components/folder/folder-settings.js b/app/app/components/folder/folder-settings.js index 5339437d..7b065f56 100644 --- a/app/app/components/folder/folder-settings.js +++ b/app/app/components/folder/folder-settings.js @@ -11,100 +11,104 @@ import Ember from 'ember'; +const { + inject: { service } +} = Ember; + export default Ember.Component.extend({ - folderService: Ember.inject.service('folder'), - appMeta: Ember.inject.service(), - users: [], - folders: [], - folder: {}, - moveTarget: null, - inviteEmail: "", - inviteMessage: "", - roleMessage: "", - permissions: {}, + folderService: service('folder'), + appMeta: service(), + users: [], + folders: [], + folder: {}, + moveTarget: null, + inviteEmail: "", + inviteMessage: "", + roleMessage: "", + permissions: {}, - getDefaultInvitationMessage() { - return "Hey there, I am sharing the " + this.folder.get('name') + " (in " + this.get("appMeta.title") + ") with you so we can both access the same documents."; - }, + getDefaultInvitationMessage() { + return "Hey there, I am sharing the " + this.folder.get('name') + " (in " + this.get("appMeta.title") + ") with you so we can both access the same documents."; + }, - willRender() { - if (this.inviteMessage.length === 0) { - this.set('inviteMessage', this.getDefaultInvitationMessage()); - } + willRender() { + if (this.inviteMessage.length === 0) { + this.set('inviteMessage', this.getDefaultInvitationMessage()); + } - if (this.roleMessage.length === 0) { - this.set('roleMessage', this.getDefaultInvitationMessage()); - } - }, + if (this.roleMessage.length === 0) { + this.set('roleMessage', this.getDefaultInvitationMessage()); + } + }, - actions: { - rename() { - if (is.empty(this.folder.get('name'))) { - $("#folderName").addClass("error").focus(); - return; - } + actions: { + rename() { + if (is.empty(this.folder.get('name'))) { + $("#folderName").addClass("error").focus(); + return; + } - this.sendAction("onRename", this.folder); - }, + this.sendAction("onRename", this.folder); + }, - remove() { - if (is.null(this.get('moveTarget'))) { - $("#delete-target > select").addClass("error").focus(); - return; - } + remove() { + if (is.null(this.get('moveTarget'))) { + $("#delete-target > select").addClass("error").focus(); + return; + } - this.sendAction("onRemove", this.get('moveTarget').get('id')); - }, + this.sendAction("onRemove", this.get('moveTarget').get('id')); + }, - share() { - var email = this.get('inviteEmail').trim().replace(/ /g, ''); - var message = this.get('inviteMessage').trim(); + share() { + var email = this.get('inviteEmail').trim().replace(/ /g, ''); + var message = this.get('inviteMessage').trim(); - if (message.length === 0) { - message = this.getDefaultInvitationMessage(); - } + if (message.length === 0) { + message = this.getDefaultInvitationMessage(); + } - if (email.length === 0) { - $("#inviteEmail").addClass("error").focus(); - return; - } + if (email.length === 0) { + $("#inviteEmail").addClass("error").focus(); + return; + } - var result = { - Message: message, - Recipients: [] - }; + var result = { + Message: message, + Recipients: [] + }; - // Check for multiple email addresses - if (email.indexOf(",") > -1) { - result.Recipients = email.split(','); - } - if (email.indexOf(";") > -1 && result.Recipients.length === 0) { - result.Recipients = email.split(';'); - } + // Check for multiple email addresses + if (email.indexOf(",") > -1) { + result.Recipients = email.split(','); + } + if (email.indexOf(";") > -1 && result.Recipients.length === 0) { + result.Recipients = email.split(';'); + } - // Handle just one email address - if (result.Recipients.length === 0 && email.length > 0) { - result.Recipients.push(email); - } + // Handle just one email address + if (result.Recipients.length === 0 && email.length > 0) { + result.Recipients.push(email); + } - this.set('inviteEmail', ""); + this.set('inviteEmail', ""); - this.sendAction("onShare", result); - }, + this.sendAction("onShare", result); + }, - setPermissions() { - var message = this.get('roleMessage').trim(); + setPermissions() { + var message = this.get('roleMessage').trim(); - if (message.length === 0) { - message = this.getDefaultInvitationMessage(); - } + if (message.length === 0) { + message = this.getDefaultInvitationMessage(); + } - this.get('permissions').forEach(function(permission, index) /* jshint ignore:line */ { - Ember.set(permission, 'canView', $("#canView-" + permission.userId).prop('checked')); - Ember.set(permission, 'canEdit', $("#canEdit-" + permission.userId).prop('checked')); - }); + this.get('permissions').forEach((permission, index) => { /* jshint ignore:line */ + Ember.set(permission, 'canView', $("#canView-" + permission.userId).prop('checked')); + Ember.set(permission, 'canEdit', $("#canEdit-" + permission.userId).prop('checked')); + }); - this.sendAction("onPermission", this.get('folder'), message, this.get('permissions')); - } - } + this.sendAction("onPermission", this.get('folder'), message, this.get('permissions')); + } + } }); diff --git a/app/app/components/folder/folders-list.js b/app/app/components/folder/folders-list.js index 7f730850..31a61e44 100644 --- a/app/app/components/folder/folders-list.js +++ b/app/app/components/folder/folders-list.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,71 +14,70 @@ import constants from '../../utils/constants'; import TooltipMixin from '../../mixins/tooltip'; export default Ember.Component.extend(TooltipMixin, { - folderService: Ember.inject.service('folder'), - publicFolders: [], - protectedFolders: [], - privateFolders: [], - hasPublicFolders: false, - hasProtectedFolders: false, - hasPrivateFolders: false, - newFolder: "", + folderService: Ember.inject.service('folder'), + publicFolders: [], + protectedFolders: [], + privateFolders: [], + hasPublicFolders: false, + hasProtectedFolders: false, + hasPrivateFolders: false, + newFolder: "", - didInsertElement() { - this._super(...arguments); - if (this.session.authenticated) { - this.addTooltip(document.getElementById("add-folder-button")); - } - }, + didInsertElement() { + this._super(...arguments); + if (this.session.authenticated) { + this.addTooltip(document.getElementById("add-folder-button")); + } + }, - didReceiveAttrs() { - let folders = this.get('folders'); - let self = this; + didReceiveAttrs() { + let folders = this.get('folders'); - // clear out state - this.set('publicFolders', []); - this.set('protectedFolders', []); - this.set('privateFolders', []); + // clear out state + this.set('publicFolders', []); + this.set('protectedFolders', []); + this.set('privateFolders', []); - _.each(folders, folder => { - if (folder.folderType === constants.FolderType.Public) { - let folders = self.get('publicFolders'); - folders.pushObject(folder); - self.set('publicFolders', folders); - } - if (folder.folderType === constants.FolderType.Private) { - let folders = self.get('privateFolders'); - folders.pushObject(folder); - self.set('privateFolders', folders); - } - if (folder.folderType === constants.FolderType.Protected) { - let folders = self.get('protectedFolders'); - folders.pushObject(folder); - self.set('protectedFolders', folders); - } - }); + _.each(folders, folder => { + if (folder.get('folderType') === constants.FolderType.Public) { + let folders = this.get('publicFolders'); + folders.pushObject(folder); + this.set('publicFolders', folders); + } + if (folder.get('folderType') === constants.FolderType.Private) { + let folders = this.get('privateFolders'); + folders.pushObject(folder); + this.set('privateFolders', folders); + } + if (folder.get('folderType') === constants.FolderType.Protected) { + let folders = this.get('protectedFolders'); + folders.pushObject(folder); + this.set('protectedFolders', folders); + } + }); - this.set('hasPublicFolders', this.get('publicFolders.length') > 0); - this.set('hasPrivateFolders', this.get('privateFolders.length') > 0); - this.set('hasProtectedFolders', this.get('protectedFolders.length') > 0); - }, + this.set('hasPublicFolders', this.get('publicFolders.length') > 0); + this.set('hasPrivateFolders', this.get('privateFolders.length') > 0); + this.set('hasProtectedFolders', this.get('protectedFolders.length') > 0); + }, - willDestroyElement() { - this.destroyTooltips(); - }, + willDestroyElement() { + this.destroyTooltips(); + }, - actions: { - addFolder() { - var folderName = this.get('newFolder'); + actions: { + addFolder() { + var folderName = this.get('newFolder'); - if (is.empty(folderName)) { - $("#new-folder-name").addClass("error").focus(); - return false; - } + if (is.empty(folderName)) { + $("#new-folder-name").addClass("error").focus(); + return false; + } - this.attrs.onFolderAdd(folderName); + this.attrs.onFolderAdd(folderName); - this.set('newFolder', ""); - return true; - } - } -}); \ No newline at end of file + this.set('newFolder', ""); + return true; + } + } +}); diff --git a/app/app/models/folder.js b/app/app/models/folder.js index 662e045c..b8d35a71 100644 --- a/app/app/models/folder.js +++ b/app/app/models/folder.js @@ -20,7 +20,7 @@ export default Model.extend({ name: attr('string'), orgId: attr('string'), userId: attr('string'), - folderType: constants.FolderType.Private, + folderType: attr('number', { defaultValue: 2 }), slug: Ember.computed('name', function () { return stringUtil.makeSlug(this.get('name')); diff --git a/app/app/pods/folders/folder/route.js b/app/app/pods/folders/folder/route.js index 50ab6b7f..329faf8f 100644 --- a/app/app/pods/folders/folder/route.js +++ b/app/app/pods/folders/folder/route.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 @@ -31,4 +31,4 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, { this.browser.setTitle(model.folder.get('name')); this.get('folderService').setCurrentFolder(model.folder); } -}); \ No newline at end of file +}); diff --git a/app/app/pods/folders/route.js b/app/app/pods/folders/route.js index d525af18..27b77e8f 100644 --- a/app/app/pods/folders/route.js +++ b/app/app/pods/folders/route.js @@ -27,7 +27,7 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, { }, afterModel: function (model) { - + debugger; let params = this.paramsFor('folders.folder'); if (is.empty(params)) { diff --git a/app/app/pods/folders/settings/route.js b/app/app/pods/folders/settings/route.js index a75a0f97..66b6c020 100644 --- a/app/app/pods/folders/settings/route.js +++ b/app/app/pods/folders/settings/route.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,11 +13,16 @@ import Ember from 'ember'; import models from '../../../utils/model'; import NotifierMixin from '../../../mixins/notifier'; +const { + inject: { service } +} = Ember; + export default Ember.Route.extend(NotifierMixin, { - folderService: Ember.inject.service('folder'), - userService: Ember.inject.service('user'), + folderService: service('folder'), + userService: service('user'), folder: {}, tab: "", + localStorage: service(), beforeModel: function (transition) { this.tab = is.not.undefined(transition.queryParams.tab) ? transition.queryParams.tab : "tabGeneral"; @@ -100,36 +105,33 @@ export default Ember.Route.extend(NotifierMixin, { }, onRemove(moveId) { - let self = this; - this.get('folderService').remove(this.folder.get('id'), moveId).then(function () { /* jshint ignore:line */ - self.showNotification("Deleted"); - self.session.clearSessionItem('folder'); + this.get('folderService').remove(this.folder.get('id'), moveId).then(() => { /* jshint ignore:line */ + this.showNotification("Deleted"); + this.get('localStorage').clearSessionItem('folder'); - self.get('folderService').getFolder(moveId).then(function (folder) { - self.get('folderService').setCurrentFolder(folder); - self.transitionTo('folders.folder', folder.get('id'), folder.get('slug')); + this.get('folderService').getFolder(moveId).then((folder) => { + this.get('folderService').setCurrentFolder(folder); + this.transitionTo('folders.folder', folder.get('id'), folder.get('slug')); }); }); }, onShare: function (invitation) { - let self = this; - this.get('folderService').share(this.folder.get('id'), invitation).then(function () { - self.showNotification("Shared"); + this.get('folderService').share(this.folder.get('id'), invitation).then(() => { + this.showNotification("Shared"); }); }, onPermission: function (folder, message, permissions) { - var self = this; var data = permissions.map(function (obj) { return obj.getProperties('orgId', 'folderId', 'userId', 'canEdit', 'canView'); }); var payload = { Message: message, Roles: data }; - this.get('folderService').savePermissions(folder.get('id'), payload).then(function () { - self.showNotification("Saved"); + this.get('folderService').savePermissions(folder.get('id'), payload).then(() => { + this.showNotification("Saved"); }); var hasEveryone = _.find(data, function (permission) { diff --git a/app/app/services/document.js b/app/app/services/document.js index 8c8fe45e..237f343c 100644 --- a/app/app/services/document.js +++ b/app/app/services/document.js @@ -39,6 +39,10 @@ export default Ember.Service.extend({ content: Ember.A([]) }); + if (isObject(response)) { + return documents; + } + documents = response.map((doc) => { let data = this.get('store').normalize('document', doc); return this.get('store').push({ data: data }); diff --git a/app/app/services/folder.js b/app/app/services/folder.js index 183a3579..b79631c6 100644 --- a/app/app/services/folder.js +++ b/app/app/services/folder.js @@ -14,7 +14,7 @@ import BaseService from '../services/base'; const { get, - RSVP: { resolve }, + RSVP, inject: { service } } = Ember; @@ -41,7 +41,6 @@ export default BaseService.extend({ // Returns folder model for specified folder id. getFolder(id) { - return this.get('ajax').request(`folders/${id}`, { method: 'GET' }).then((folder) => { @@ -52,12 +51,14 @@ export default BaseService.extend({ // Returns all folders that user can see. getAll() { + let folders = this.get('folders'); - if (this.get('folders') != null) { - return new resolve(this.get('folders')); - } else { - return this.reload(); + if (folders != null) { + return new RSVP.resolve(folders); } + + return this.reload(); + }, // Updates an existing folder record. @@ -140,7 +141,6 @@ export default BaseService.extend({ // persist folder permissions savePermissions(folderId, payload) { - return this.get('ajax').request(`folders/${folderId}/permissions`, { method: 'PUT', contentType: 'json', diff --git a/app/app/services/organization.js b/app/app/services/organization.js index 5740d285..5b804a18 100644 --- a/app/app/services/organization.js +++ b/app/app/services/organization.js @@ -33,11 +33,11 @@ export default Ember.Service.extend({ // Updates an existing organization record. save(org) { - let id = org.get('id'); + let id = org.id; this.get('appMeta').setProperties({ - message: org.message, - title: org.title + message: org.get('message'), + title: org.get('title') }); return this.get('ajax').request(`organizations/${id}`, {