diff --git a/gui/app/components/folder/space-toolbar.js b/gui/app/components/folder/space-toolbar.js index cf66461e..49be3d60 100644 --- a/gui/app/components/folder/space-toolbar.js +++ b/gui/app/components/folder/space-toolbar.js @@ -10,7 +10,6 @@ // https://documize.com import { computed } from '@ember/object'; - import Component from '@ember/component'; import { inject as service } from '@ember/service'; import NotifierMixin from '../../mixins/notifier'; @@ -59,34 +58,6 @@ export default Component.extend(NotifierMixin, TooltipMixin, AuthMixin, { renderTooltips() { this.destroyTooltips(); - - if (this.get('hasSelectedDocuments')) { - if (this.get('permissions.documentMove')) { - this.addTooltip(document.getElementById("move-documents-button")); - } - - if (this.get('permissions.documentDelete')) { - this.addTooltip(document.getElementById("delete-documents-button")); - } - } else { - if (this.get('permissions.spaceOwner')) { - this.addTooltip(document.getElementById("space-delete-button")); - } - - if (this.get('permissions.spaceManage')) { - this.addTooltip(document.getElementById("space-settings-button")); - } - - if (this.get('pinState.isPinned')) { - this.addTooltip(document.getElementById("space-unpin-button")); - } else { - this.addTooltip(document.getElementById("space-pin-button")); - } - - if (this.get('permissions.documentAdd')) { - this.addTooltip(document.getElementById("document-add-button")); - } - } }, willDestroyElement() { @@ -138,23 +109,6 @@ export default Component.extend(NotifierMixin, TooltipMixin, AuthMixin, { this.attrs.onDeleteDocument(); }, - deleteSpace() { - let spaceName = this.get('folder').get('name'); - let spaceNameTyped = this.get('deleteSpaceName'); - - if (spaceNameTyped !== spaceName || spaceNameTyped === '' || spaceName === '') { - $("#delete-space-name").addClass("error").focus(); - return false; - } - - this.set('deleteSpaceName', ''); - $("#delete-space-name").removeClass("error"); - - this.attrs.onDeleteSpace(); - - return true; - }, - setMoveFolder(folderId) { this.set('moveFolderId', folderId); diff --git a/gui/app/components/folder/space-view.js b/gui/app/components/folder/space-view.js index 80028b5f..23b61cae 100644 --- a/gui/app/components/folder/space-view.js +++ b/gui/app/components/folder/space-view.js @@ -121,14 +121,6 @@ export default Component.extend(NotifierMixin, TooltipMixin, AuthMixin, { }); }, - onDeleteSpace() { - this.get('folderService').delete(this.get('folder.id')).then(() => { /* jshint ignore:line */ - this.showNotification("Deleted"); - this.get('localStorage').clearSessionItem('folder'); - this.get('router').transitionTo('application'); - }); - }, - onImport() { this.attrs.onRefresh(); }, diff --git a/gui/app/components/toolbar/for-space.js b/gui/app/components/toolbar/for-space.js index 33403da0..6ae8f68c 100644 --- a/gui/app/components/toolbar/for-space.js +++ b/gui/app/components/toolbar/for-space.js @@ -11,17 +11,45 @@ import Component from '@ember/component'; import { schedule } from '@ember/runloop'; -import { notEmpty } from '@ember/object/computed'; +import { computed } from '@ember/object'; +import { inject as service } from '@ember/service'; import NotifierMixin from '../../mixins/notifier'; import AuthMixin from '../../mixins/auth'; export default Component.extend(NotifierMixin, AuthMixin, { + session: service(), + appMeta: service(), + pinned: service(), spaceName: '', copyTemplate: true, copyPermission: true, copyDocument: false, clonedSpace: { id: '' }, - hasClone: notEmpty('clonedSpace.id'), + pinState : { + isPinned: false, + pinId: '', + newName: '' + }, + spaceSettings: computed('permissions', function() { + return this.get('permissions.spaceOwner') || this.get('permissions.spaceManage'); + }), + deleteSpaceName: '', + + didReceiveAttrs() { + this._super(...arguments); + + let folder = this.get('space'); + let targets = _.reject(this.get('spaces'), {id: folder.get('id')}); + + this.get('pinned').isSpacePinned(folder.get('id')).then((pinId) => { + this.set('pinState.pinId', pinId); + this.set('pinState.isPinned', pinId !== ''); + this.set('pinState.newName', folder.get('name')); + this.renderTooltips(); + }); + + this.set('movedFolderOptions', targets); + }, didInsertElement() { this._super(...arguments); @@ -33,9 +61,65 @@ export default Component.extend(NotifierMixin, AuthMixin, { }); }, + renderTooltips() { + schedule('afterRender', () => { + $('#pin-space-button').tooltip('dispose'); + $('body').tooltip({selector: '#pin-space-button'}); + }); + }, + actions: { - onCloneSpaceSelect(sp) { - this.set('clonedSpace', sp) + onUnpin() { + this.get('pinned').unpinItem(this.get('pinState.pinId')).then(() => { + $('#pin-space-button').tooltip('dispose'); + this.set('pinState.isPinned', false); + this.set('pinState.pinId', ''); + this.eventBus.publish('pinChange'); + this.renderTooltips(); + }); + }, + + onPin() { + let pin = { + pin: this.get('pinState.newName'), + documentId: '', + folderId: this.get('space.id') + }; + + if (is.empty(pin.pin)) { + $('#pin-space-name').addClass('error').focus(); + return false; + } + + this.get('pinned').pinItem(pin).then((pin) => { + $('#pin-space-button').tooltip('dispose'); + this.set('pinState.isPinned', true); + this.set('pinState.pinId', pin.get('id')); + this.eventBus.publish('pinChange'); + this.renderTooltips(); + }); + + return true; + }, + + onDeleteSpace(e) { + e.preventDefault(); + + let spaceName = this.get('space').get('name'); + let spaceNameTyped = this.get('deleteSpaceName'); + + if (spaceNameTyped !== spaceName || spaceNameTyped === '' || spaceName === '') { + $("#delete-space-name").addClass("is-invalid").focus(); + return; + } + + this.set('deleteSpaceName', ''); + $("#delete-space-name").removeClass("is-invalid"); + + this.attrs.onDeleteSpace(this.get('space.id')); + + $('#delete-space-modal').modal('hide'); + $('#delete-space-modal').modal('dispose'); }, onAddSpace(e) { diff --git a/gui/app/pods/folder/index/controller.js b/gui/app/pods/folder/index/controller.js index 2be7f220..595723be 100644 --- a/gui/app/pods/folder/index/controller.js +++ b/gui/app/pods/folder/index/controller.js @@ -18,8 +18,6 @@ export default Controller.extend(NotifierMixin, { documentService: service('document'), folderService: service('folder'), localStorage: service('localStorage'), - queryParams: ['tab'], - tab: 'index', actions: { onAddSpace(payload) { @@ -32,6 +30,14 @@ export default Controller.extend(NotifierMixin, { }); }, + onDeleteSpace(id) { + this.get('folderService').delete(id).then(() => { /* jshint ignore:line */ + this.showNotification("Deleted"); + this.get('localStorage').clearSessionItem('folder'); + this.transitionToRoute('folders'); + }); + }, + onRefresh() { this.get('target._routerMicrolib').refresh(); } diff --git a/gui/app/pods/folder/index/template.hbs b/gui/app/pods/folder/index/template.hbs index 86c4efd0..3acf66d3 100644 --- a/gui/app/pods/folder/index/template.hbs +++ b/gui/app/pods/folder/index/template.hbs @@ -1,7 +1,7 @@ {{layout/nav-bar}}
Are you sure you want to delete this space and all associated documents?
-