From d689cbc28149354c98a6315c2f56ac61ae021097 Mon Sep 17 00:00:00 2001 From: HarveyKandola Date: Thu, 21 Jun 2018 12:38:13 +0100 Subject: [PATCH] Normalized remaining space options into settings admin Moved space naming and category management into space settings. --- .../folder/category-admin-sidebar.js | 45 -------- ...category-admin.js => settings-category.js} | 41 +++++-- gui/app/components/folder/settings-general.js | 9 ++ gui/app/components/folder/space-heading.js | 54 ---------- gui/app/pods/folder/category/controller.js | 26 ----- gui/app/pods/folder/category/route.js | 27 ----- gui/app/pods/folder/category/template.hbs | 27 ----- gui/app/pods/folder/index/template.hbs | 2 - gui/app/pods/folder/settings/template.hbs | 6 +- gui/app/router.js | 3 - .../folder/category-admin-sidebar.hbs | 10 -- .../components/folder/category-admin.hbs | 90 ---------------- .../components/folder/settings-category.hbs | 102 ++++++++++++++++++ .../components/folder/settings-general.hbs | 6 ++ .../folder/settings-permissions.hbs | 37 ++++--- .../components/folder/space-heading.hbs | 20 ---- 16 files changed, 174 insertions(+), 331 deletions(-) delete mode 100644 gui/app/components/folder/category-admin-sidebar.js rename gui/app/components/folder/{category-admin.js => settings-category.js} (81%) delete mode 100644 gui/app/components/folder/space-heading.js delete mode 100644 gui/app/pods/folder/category/controller.js delete mode 100644 gui/app/pods/folder/category/route.js delete mode 100644 gui/app/pods/folder/category/template.hbs delete mode 100644 gui/app/templates/components/folder/category-admin-sidebar.hbs delete mode 100644 gui/app/templates/components/folder/category-admin.hbs create mode 100644 gui/app/templates/components/folder/settings-category.hbs delete mode 100644 gui/app/templates/components/folder/space-heading.hbs diff --git a/gui/app/components/folder/category-admin-sidebar.js b/gui/app/components/folder/category-admin-sidebar.js deleted file mode 100644 index e071cb90..00000000 --- a/gui/app/components/folder/category-admin-sidebar.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2016 Documize Inc. . All rights reserved. -// -// 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 . -// -// https://documize.com - -import $ from 'jquery'; -import Component from '@ember/component'; - -export default Component.extend({ - newCategory: '', - - actions: { - didInsertElement() { - this._super(...arguments); - $('#new-category-name').focus(); - }, - - onAdd(e) { - e.preventDefault(); - - let cat = this.get('newCategory'); - - if (cat === '') { - $('#new-category-name').addClass('is-invalid').focus(); - return; - } - - $('#new-category-name').removeClass('is-invalid').focus(); - this.set('newCategory', ''); - - let c = { - category: cat, - folderId: this.get('space.id') - }; - - this.get('onAdd')(c); - } - } -}); diff --git a/gui/app/components/folder/category-admin.js b/gui/app/components/folder/settings-category.js similarity index 81% rename from gui/app/components/folder/category-admin.js rename to gui/app/components/folder/settings-category.js index 452e5e39..31a7e4eb 100644 --- a/gui/app/components/folder/category-admin.js +++ b/gui/app/components/folder/settings-category.js @@ -14,9 +14,10 @@ import { A } from '@ember/array'; import { inject as service } from '@ember/service'; import TooltipMixin from '../../mixins/tooltip'; import ModalMixin from '../../mixins/modal'; +import Notifer from '../../mixins/notifier'; import Component from '@ember/component'; -export default Component.extend(ModalMixin, TooltipMixin, { +export default Component.extend(ModalMixin, TooltipMixin, Notifer, { spaceSvc: service('folder'), groupSvc: service('group'), categorySvc: service('category'), @@ -24,6 +25,7 @@ export default Component.extend(ModalMixin, TooltipMixin, { store: service(), deleteId: '', dropdown: null, + newCategory: '', init() { this._super(...arguments); @@ -43,11 +45,11 @@ export default Component.extend(ModalMixin, TooltipMixin, { load() { // get categories - this.get('categorySvc').getAll(this.get('folder.id')).then((c) => { + this.get('categorySvc').getAll(this.get('space.id')).then((c) => { this.set('category', c); // get summary of documents and users for each category in space - this.get('categorySvc').getSummary(this.get('folder.id')).then((s) => { + this.get('categorySvc').getSummary(this.get('space.id')).then((s) => { c.forEach((cat) => { let docs = _.where(s, {categoryId: cat.get('id'), type: 'documents'}); let docCount = 0; @@ -67,7 +69,7 @@ export default Component.extend(ModalMixin, TooltipMixin, { permissionRecord(who, whoId, name) { let raw = { id: whoId, - orgId: this.get('folder.orgId'), + orgId: this.get('space.orgId'), categoryId: this.get('currentCategory.id'), whoId: whoId, who: who, @@ -91,6 +93,31 @@ export default Component.extend(ModalMixin, TooltipMixin, { }, actions: { + onAdd(e) { + e.preventDefault(); + + let cat = this.get('newCategory'); + + if (cat === '') { + $('#new-category-name').addClass('is-invalid').focus(); + return; + } + + $('#new-category-name').removeClass('is-invalid').focus(); + this.set('newCategory', ''); + + let c = { + category: cat, + folderId: this.get('space.id') + }; + + this.showWait(); + this.get('categorySvc').add(c).then(() => { + this.load(); + this.showDone(); + }); + }, + onShowDelete(id) { let cat = this.get('category').findBy('id', id); this.set('deleteId', cat.get('id')); @@ -144,7 +171,7 @@ export default Component.extend(ModalMixin, TooltipMixin, { this.set('categoryPermissions', categoryPermissions); // get space permissions - this.get('spaceSvc').getPermissions(this.get('folder.id')).then((spacePermissions) => { + this.get('spaceSvc').getPermissions(this.get('space.id')).then((spacePermissions) => { spacePermissions.forEach((sp) => { let cp = this.permissionRecord(sp.get('who'), sp.get('whoId'), sp.get('name')); cp.set('selected', false); @@ -172,11 +199,11 @@ export default Component.extend(ModalMixin, TooltipMixin, { onGrantAccess() { this.set('showCategoryAccess', false); - let folder = this.get('folder'); + let space = this.get('space'); let category = this.get('currentCategory'); let perms = this.get('categoryPermissions').filterBy('selected', true); - this.get('categorySvc').setViewers(folder.get('id'), category.get('id'), perms).then(() => { + this.get('categorySvc').setViewers(space.get('id'), category.get('id'), perms).then(() => { this.load(); }); } diff --git a/gui/app/components/folder/settings-general.js b/gui/app/components/folder/settings-general.js index 90c2090b..aeaf1011 100644 --- a/gui/app/components/folder/settings-general.js +++ b/gui/app/components/folder/settings-general.js @@ -13,6 +13,7 @@ import { A } from '@ember/array'; import { inject as service } from '@ember/service'; import { schedule } from '@ember/runloop'; import { computed } from '@ember/object'; +import { empty } from '@ember/object/computed'; import AuthMixin from '../../mixins/auth'; import Notifier from '../../mixins/notifier'; import Component from '@ember/component'; @@ -26,6 +27,8 @@ export default Component.extend(AuthMixin, Notifier, { return this.get('permissions.spaceOwner') || this.get('permissions.spaceManage'); }), + spaceName: '', + hasNameError: empty('spaceName'), spaceTypeOptions: A([]), spaceType: 0, likes: '', @@ -51,6 +54,8 @@ export default Component.extend(AuthMixin, Notifier, { } else { this.set('likes', 'Did this help you?'); } + + this.set('spaceName', this.get('space.name')); }, actions: { @@ -75,6 +80,10 @@ export default Component.extend(AuthMixin, Notifier, { let allowLikes = this.get('allowLikes'); space.set('likes', allowLikes ? this.get('likes') : ''); + let spaceName = this.get('spaceName').trim(); + if (spaceName.length === 0) return; + space.set('name', spaceName); + this.showWait(); this.get('spaceSvc').save(space).then(() => { diff --git a/gui/app/components/folder/space-heading.js b/gui/app/components/folder/space-heading.js deleted file mode 100644 index 4bf9c824..00000000 --- a/gui/app/components/folder/space-heading.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2016 Documize Inc. . All rights reserved. -// -// 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 . -// -// https://documize.com - -import $ from 'jquery'; -import { empty } from '@ember/object/computed'; -import { schedule } from '@ember/runloop'; -import { inject as service } from '@ember/service'; -import Component from '@ember/component'; - -export default Component.extend({ - folderService: service('folder'), - spaceName: '', - hasNameError: empty('spaceName'), - editMode: false, - - keyUp(e) { - if (e.keyCode === 27) { // escape key - this.send('onCancel'); - } - }, - - actions: { - toggleEdit() { - this.set('spaceName', this.get('space.name')); - this.set('editMode', true); - - schedule('afterRender', () => { - $('#folder-name').select(); - }); - }, - - onSave() { - if (this.get('hasNameError')) { - return; - } - - this.set('space.name', this.get('spaceName')); - this.get('folderService').save(this.get('space')); - this.set('editMode', false); - }, - - onCancel() { - this.set('editMode', false); - } - } -}); diff --git a/gui/app/pods/folder/category/controller.js b/gui/app/pods/folder/category/controller.js deleted file mode 100644 index 8f733fbc..00000000 --- a/gui/app/pods/folder/category/controller.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 Documize Inc. . All rights reserved. -// -// 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 . -// -// https://documize.com - -import { inject as service } from '@ember/service'; -import Controller from '@ember/controller'; - -export default Controller.extend({ - categorySvc: service('category'), - refresh: 0, - - actions: { - onAdd(c) { - this.get('categorySvc').add(c).then(() => { - this.set('refresh', this.get('refresh')+1); - }); - } - } -}); diff --git a/gui/app/pods/folder/category/route.js b/gui/app/pods/folder/category/route.js deleted file mode 100644 index b819abb6..00000000 --- a/gui/app/pods/folder/category/route.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2016 Documize Inc. . All rights reserved. -// -// 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 . -// -// https://documize.com - -import { hash } from 'rsvp'; -import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; -import Route from '@ember/routing/route'; - -export default Route.extend(AuthenticatedRouteMixin, { - model() { - this.get('browser').setTitle(this.modelFor('folder').folder.get('name')); - - return hash({ - folder: this.modelFor('folder').folder, - permissions: this.modelFor('folder').permissions, - folders: this.modelFor('folder').folders, - templates: this.modelFor('folder').templates, - }); - } -}); diff --git a/gui/app/pods/folder/category/template.hbs b/gui/app/pods/folder/category/template.hbs deleted file mode 100644 index d233c3ac..00000000 --- a/gui/app/pods/folder/category/template.hbs +++ /dev/null @@ -1,27 +0,0 @@ -{{#layout/top-bar}} -
  • - {{#link-to "folder.index" model.folder.id model.folder.slug class='link'}} - {{model.folder.name}} - {{/link-to}} -
  • -
  • - {{#link-to "folder.category" model.folder.id model.folder.slug class='link selected'}} - Categories - {{/link-to}} -
  • -{{/layout/top-bar}} - -{{#layout/middle-zone}} - {{#layout/middle-zone-content}} - {{folder/category-admin folders=model.folders folder=model.folder refresh=refresh}} - {{/layout/middle-zone-content}} - - {{#layout/middle-zone-sidebar}} - - {{/layout/middle-zone-sidebar}} -{{/layout/middle-zone}} - -{{#layout/bottom-bar}} -{{/layout/bottom-bar}} \ No newline at end of file diff --git a/gui/app/pods/folder/index/template.hbs b/gui/app/pods/folder/index/template.hbs index e236a2ff..3377d242 100644 --- a/gui/app/pods/folder/index/template.hbs +++ b/gui/app/pods/folder/index/template.hbs @@ -28,8 +28,6 @@ {{#layout/middle-zone-sidebar}} {{/layout/middle-zone-sidebar}} diff --git a/gui/app/router.js b/gui/app/router.js index 3e01176d..c1c20ef2 100644 --- a/gui/app/router.js +++ b/gui/app/router.js @@ -35,9 +35,6 @@ export default Router.map(function () { path: 's/:folder_id/:folder_slug' }, function () { - this.route('category', { - path: 'category' - }); this.route('settings', { path: 'settings' }); diff --git a/gui/app/templates/components/folder/category-admin-sidebar.hbs b/gui/app/templates/components/folder/category-admin-sidebar.hbs deleted file mode 100644 index 956a8f0d..00000000 --- a/gui/app/templates/components/folder/category-admin-sidebar.hbs +++ /dev/null @@ -1,10 +0,0 @@ -
    -

    Categories

    -

    Sub-divide spaces into categories which can contain documents with restricted access.

    -
    -
    - {{focus-input id="new-category-name" type='text' class="form-control mousetrap" placeholder="Category name" value=newCategory}} -
    - -
    -
    diff --git a/gui/app/templates/components/folder/category-admin.hbs b/gui/app/templates/components/folder/category-admin.hbs deleted file mode 100644 index 51728132..00000000 --- a/gui/app/templates/components/folder/category-admin.hbs +++ /dev/null @@ -1,90 +0,0 @@ -
    -
    - {{#each category as |cat|}} -
    - {{#if cat.editMode}} -
    - {{focus-input id=(concat 'edit-category-' cat.id) type="text" value=cat.category class="form-control"}} -
    - {{else}} -
    -
    {{cat.category}}
    -
    {{cat.documents}} {{if (eq cat.documents 1) 'document' 'documents' }} · {{cat.users}} users/groups
    -
    - {{/if}} -
    - {{#if cat.editMode}} - - - {{else}} -
    - security -
    -
    -
    - edit -
    -
    -
    - delete -
    - {{/if}} -
    -
    - {{else}} -
    No categories
    - {{/each}} -
    -
    - - - -{{#ui/ui-dialog title="Set Category Access" confirmCaption="Save" buttonType="btn-success" show=showCategoryAccess onAction=(action 'onGrantAccess')}} -

    Select who can view documents within category

    - -
    -
      - {{#each categoryPermissions as |permission|}} -
    • -
      - {{#if (eq permission.who "role")}} - - people - - {{else}} - {{#if (eq permission.whoId constants.EveryoneUserId)}} - - language - - {{else}} - - person - - {{/if}} - {{/if}} -  {{permission.name}} - {{#if (eq permission.whoId session.user.id)}} - (you) - {{/if}} -
      - {{#if permission.selected}} - check - {{/if}} -
    • - {{/each}} -
    -
    -{{/ui/ui-dialog}} diff --git a/gui/app/templates/components/folder/settings-category.hbs b/gui/app/templates/components/folder/settings-category.hbs new file mode 100644 index 00000000..884c90c3 --- /dev/null +++ b/gui/app/templates/components/folder/settings-category.hbs @@ -0,0 +1,102 @@ +
    + +
    Categories
    +
    +
    + {{focus-input id="new-category-name" type='text' class="form-control mousetrap" placeholder="Category name" value=newCategory}} +
    + +
    + +
    +
    + {{#each category as |cat|}} +
    + {{#if cat.editMode}} +
    + {{focus-input id=(concat 'edit-category-' cat.id) type="text" value=cat.category class="form-control"}} +
    + {{else}} +
    +
    {{cat.category}}
    +
    {{cat.documents}} {{if (eq cat.documents 1) 'document' 'documents' }} · {{cat.users}} users/groups
    +
    + {{/if}} +
    + {{#if cat.editMode}} + + + {{else}} +
    + security +
    +
    +
    + edit +
    +
    +
    + delete +
    + {{/if}} +
    +
    + {{else}} +
    No categories
    + {{/each}} +
    +
    + + + + {{#ui/ui-dialog title="Set Category Access" confirmCaption="Save" buttonType="btn-success" show=showCategoryAccess onAction=(action 'onGrantAccess')}} +

    Select who can view documents within category

    + +
    +
      + {{#each categoryPermissions as |permission|}} +
    • +
      + {{#if (eq permission.who "role")}} + + people + + {{else}} + {{#if (eq permission.whoId constants.EveryoneUserId)}} + + language + + {{else}} + + person + + {{/if}} + {{/if}} +  {{permission.name}} + {{#if (eq permission.whoId session.user.id)}} + (you) + {{/if}} +
      + {{#if permission.selected}} + check + {{/if}} +
    • + {{/each}} +
    +
    + {{/ui/ui-dialog}} + +
    \ No newline at end of file diff --git a/gui/app/templates/components/folder/settings-general.hbs b/gui/app/templates/components/folder/settings-general.hbs index 83ee5168..580c763c 100644 --- a/gui/app/templates/components/folder/settings-general.hbs +++ b/gui/app/templates/components/folder/settings-general.hbs @@ -1,9 +1,15 @@
    General options for this space
    +
    + + {{focus-input id="space-name" type="text" value=spaceName class=(if hasNameError 'form-control is-invalid' 'form-control') placeholder="Space name" autocomplete="off"}} +
    +
    {{ui-select id="spacetypes-dropdown" content=spaceTypeOptions optionValuePath="id" optionLabelPath="label" selection=spaceType action=(action 'onSetSpaceType')}} + Who can see this space?
    diff --git a/gui/app/templates/components/folder/settings-permissions.hbs b/gui/app/templates/components/folder/settings-permissions.hbs index b5b720d7..632411c7 100644 --- a/gui/app/templates/components/folder/settings-permissions.hbs +++ b/gui/app/templates/components/folder/settings-permissions.hbs @@ -20,6 +20,24 @@
    +
    +
    +
    +
    + {{focus-input id="user-search" type="text" class="form-control mousetrap" placeholder="Search for users by firstname, lastname, email" value=searchText key-up=(action 'onSearch')}} +
    + {{#each filteredUsers as |user|}} +
    +
    {{user.fullname}}
    +
    + +
    +
    + {{/each}} +
    +
    +
    +
    @@ -92,22 +110,3 @@ - -
    -
    -
    -
    - {{focus-input id="user-search" type="text" class="form-control mousetrap" placeholder="Search for users by firstname, lastname, email" value=searchText key-up=(action 'onSearch')}} - Find and add users to this space -
    - {{#each filteredUsers as |user|}} -
    -
    {{user.fullname}}
    -
    - -
    -
    - {{/each}} -
    -
    -
    diff --git a/gui/app/templates/components/folder/space-heading.hbs b/gui/app/templates/components/folder/space-heading.hbs deleted file mode 100644 index 71e543c2..00000000 --- a/gui/app/templates/components/folder/space-heading.hbs +++ /dev/null @@ -1,20 +0,0 @@ -{{#unless editMode}} -
    -
    -

    - {{space.name}} -

    -
    -
    -{{else}} - -
    -
    -
    - {{focus-input id="space-name" type="text" value=spaceName class=(if hasNameError 'form-control is-invalid' 'form-control') placeholder="Space name" autocomplete="off"}} - Press Enter to save or Escape to cancel -
    -
    -
    - -{{/unless}}