From adef6dfffaeddd07f45c1b120a3b82f8b7beb157 Mon Sep 17 00:00:00 2001 From: sauls8t Date: Wed, 24 Jan 2018 13:23:11 +0000 Subject: [PATCH] Set consistent browser titles --- domain/page/endpoint.go | 78 +++++++++---------- gui/app/components/document/document-page.js | 3 +- gui/app/components/folder/documents-list.js | 6 +- gui/app/components/folder/space-view.js | 2 +- gui/app/components/toolbar/for-document.js | 4 +- gui/app/components/toolbar/for-space.js | 17 ++-- gui/app/components/toolbar/for-spaces.js | 6 +- gui/app/components/ui-select.js | 5 -- gui/app/components/ui/ui-list-picker.js | 1 - gui/app/components/user-notification.js | 1 - gui/app/helpers/is-one-of.js | 27 +++++++ gui/app/models/page-pending.js | 3 - gui/app/pods/auth/forgot/route.js | 1 + gui/app/pods/auth/login/route.js | 2 +- gui/app/pods/auth/reset/route.js | 1 + gui/app/pods/auth/share/route.js | 1 + gui/app/pods/auth/sso/route.js | 5 +- gui/app/pods/customize/auth/route.js | 3 +- gui/app/pods/customize/folders/controller.js | 2 +- gui/app/pods/customize/folders/route.js | 4 +- gui/app/pods/customize/general/route.js | 3 +- gui/app/pods/customize/license/route.js | 3 +- gui/app/pods/customize/smtp/route.js | 2 +- gui/app/pods/customize/users/route.js | 3 +- gui/app/pods/document/index/controller.js | 2 - gui/app/pods/folder/index/route.js | 12 --- gui/app/pods/folders/route.js | 6 +- gui/app/pods/profile/route.js | 3 +- gui/app/pods/search/route.js | 6 +- gui/app/services/browser.js | 6 +- gui/app/styles/bootstrap.scss | 2 +- gui/app/styles/print.scss | 2 + .../components/folder/documents-list.hbs | 4 +- .../components/folder/space-heading.hbs | 4 +- .../components/toolbar/for-space.hbs | 6 +- .../components/toolbar/for-spaces.hbs | 6 +- .../integration/helpers/is-one-of-test.js | 15 ++++ 37 files changed, 140 insertions(+), 117 deletions(-) create mode 100644 gui/app/helpers/is-one-of.js create mode 100644 gui/tests/integration/helpers/is-one-of-test.js diff --git a/domain/page/endpoint.go b/domain/page/endpoint.go index b69a8868..bd3fe0b7 100644 --- a/domain/page/endpoint.go +++ b/domain/page/endpoint.go @@ -490,7 +490,6 @@ func (h *Handler) Delete(w http.ResponseWriter, r *http.Request) { response.WriteMissingDataError(w, method, "documentID") return } - pageID := request.Param(r, "pageID") if len(pageID) == 0 { response.WriteMissingDataError(w, method, "pageID") @@ -504,46 +503,31 @@ func (h *Handler) Delete(w http.ResponseWriter, r *http.Request) { return } - ok, err := h.workflowPermitsChange(doc, ctx) - if !ok { - response.WriteForbiddenError(w) - h.Runtime.Log.Info("attempted delete section on locked document") - return - } - - // If locked document then no can do - if doc.Protection == workflow.ProtectionLock { - response.WriteForbiddenError(w) - h.Runtime.Log.Info("attempted delete section on locked document") - return - } - - // If approval workflow then only approvers can delete page - if doc.Protection == workflow.ProtectionReview { - approvers, err := permission.GetDocumentApprovers(ctx, *h.Store, doc.LabelID, doc.RefID) - if err != nil { - response.WriteServerError(w, method, err) - h.Runtime.Log.Error(method, err) - return - } - - if !user.Exists(approvers, ctx.UserID) { - response.WriteForbiddenError(w) - h.Runtime.Log.Info("attempted delete document section when not approver") - return - } - } - - ctx.Transaction, err = h.Runtime.Db.Beginx() + p, err := h.Store.Page.Get(ctx, pageID) if err != nil { response.WriteServerError(w, method, err) h.Runtime.Log.Error(method, err) return } - p, err := h.Store.Page.Get(ctx, pageID) + // you can delete your own pending page + ownPending := false + if (p.Status == workflow.ChangePending || p.Status == workflow.ChangePendingNew) && p.UserID == ctx.UserID { + ownPending = true + } + + // if not own page then check permission + if !ownPending { + ok, _ := h.workflowPermitsChange(doc, ctx) + if !ok { + response.WriteForbiddenError(w) + h.Runtime.Log.Info("attempted delete section on locked document") + return + } + } + + ctx.Transaction, err = h.Runtime.Db.Beginx() if err != nil { - ctx.Transaction.Rollback() response.WriteServerError(w, method, err) h.Runtime.Log.Error(method, err) return @@ -623,13 +607,6 @@ func (h *Handler) DeletePages(w http.ResponseWriter, r *http.Request) { return } - ok, err := h.workflowPermitsChange(doc, ctx) - if !ok { - response.WriteForbiddenError(w) - h.Runtime.Log.Info("attempted delete section on locked document") - return - } - ctx.Transaction, err = h.Runtime.Db.Beginx() if err != nil { response.WriteServerError(w, method, err) @@ -646,6 +623,21 @@ func (h *Handler) DeletePages(w http.ResponseWriter, r *http.Request) { return } + ownPending := false + if (pageData.Status == workflow.ChangePending || pageData.Status == workflow.ChangePendingNew) && pageData.UserID == ctx.UserID { + ownPending = true + } + + // if not own page then check permission + if !ownPending { + ok, _ := h.workflowPermitsChange(doc, ctx) + if !ok { + ctx.Transaction.Rollback() + response.WriteForbiddenError(w) + h.Runtime.Log.Info("attempted delete section on locked document") + return + } + } if len(pageData.BlockID) > 0 { h.Store.Block.DecrementUsage(ctx, pageData.BlockID) } @@ -1358,6 +1350,10 @@ func (h *Handler) FetchPages(w http.ResponseWriter, r *http.Request) { page.Numberize(t) for i, j := range t { model[i].Page = j + // pending pages get same numbering + for k := range model[i].Pending { + model[i].Pending[k].Page.Numbering = j.Numbering + } } // deliver payload diff --git a/gui/app/components/document/document-page.js b/gui/app/components/document/document-page.js index 239e9885..00f91848 100644 --- a/gui/app/components/document/document-page.js +++ b/gui/app/components/document/document-page.js @@ -23,11 +23,12 @@ export default Component.extend(TooltipMixin, { didReceiveAttrs() { this._super(...arguments); if (this.get('isDestroyed') || this.get('isDestroying')) return; - if (this.get('toEdit') === this.get('page.id') && this.get('permissions.documentEdit')) this.send('onEdit'); if (this.get('session.authenticated')) { this.workflow(); } + + if (this.get('toEdit') === this.get('page.id') && this.get('permissions.documentEdit')) this.send('onEdit'); }, workflow() { diff --git a/gui/app/components/folder/documents-list.js b/gui/app/components/folder/documents-list.js index cbeee850..bb9838e5 100644 --- a/gui/app/components/folder/documents-list.js +++ b/gui/app/components/folder/documents-list.js @@ -19,13 +19,13 @@ export default Component.extend({ selectedDocuments: A([]), selectedCaption: 'document', - showAdd: computed('permissions', 'documents', function() { + showAdd: computed('permissions.documentAdd', 'documents', function() { return this.get('documents.length') === 0 && this.get('permissions.documentAdd'); }), - showLockout: computed('permissions', 'documents', function() { + showLockout: computed('permissions.documentAdd', 'documents', function() { return this.get('documents.length') === 0 && !this.get('permissions.documentAdd'); }), - hasDocumentActions: computed('permissions', function() { + hasDocumentActions: computed('permissions.{documentDelete,documentMove}', function() { return this.get('permissions.documentDelete') || this.get('permissions.documentMove'); }), diff --git a/gui/app/components/folder/space-view.js b/gui/app/components/folder/space-view.js index 44812544..41df9136 100644 --- a/gui/app/components/folder/space-view.js +++ b/gui/app/components/folder/space-view.js @@ -113,7 +113,7 @@ export default Component.extend(AuthMixin, { this.set('documents', documents); let cb = this.get('onRefresh'); - cb.onRefresh(); + cb(); }); }, diff --git a/gui/app/components/toolbar/for-document.js b/gui/app/components/toolbar/for-document.js index 3ad8abe0..e034bb34 100644 --- a/gui/app/components/toolbar/for-document.js +++ b/gui/app/components/toolbar/for-document.js @@ -26,7 +26,7 @@ export default Component.extend(ModalMixin, TooltipMixin, AuthMixin, { showTools: true, // show document related tools? favourite, delete, make template... showDocumentLink: false, // show link to document in breadcrumbs -init() { + init() { this._super(...arguments); this.pinState = { isPinned: false, @@ -38,7 +38,7 @@ init() { description: '' }; }, - + didReceiveAttrs() { this._super(...arguments); diff --git a/gui/app/components/toolbar/for-space.js b/gui/app/components/toolbar/for-space.js index 51f1f443..45986935 100644 --- a/gui/app/components/toolbar/for-space.js +++ b/gui/app/components/toolbar/for-space.js @@ -265,17 +265,17 @@ export default Component.extend(ModalMixin, TooltipMixin, AuthMixin, { onShowTemplateDocModal() { let t = this.get('templates'); - if (t.length > 0) { - t[0].set('selected', true); - this.modalOpen("#template-doc-modal", {"show": true}, '#template-doc-name'); - } + t.forEach((t) => { + t.set('selected', false); + }); + this.modalOpen("#template-doc-modal", {"show": true}, '#template-doc-name'); }, onSelectTemplate(i) { let t = this.get('templates'); t.forEach((t) => { t.set('selected', false); - }) + }); i.set('selected', true); this.set('selectedTemplate', i.id); }, @@ -288,16 +288,17 @@ export default Component.extend(ModalMixin, TooltipMixin, AuthMixin, { this.set('templateDocNameError', true); $('#template-doc-name').focus(); return; - } else { - this.set('templateDocNameError', false); - this.set('templateDocName', ''); } let id = this.get('selectedTemplate'); if (is.empty(id)) { + $('#widget-list-picker').addClass('is-invalid'); return; } + this.set('templateDocNameError', false); + this.set('templateDocName', ''); + this.modalClose("#template-doc-modal"); this.get('templateService').importSavedTemplate(this.get('space.id'), id, docName).then((document) => { diff --git a/gui/app/components/toolbar/for-spaces.js b/gui/app/components/toolbar/for-spaces.js index e9c7c432..c9bd1c8f 100644 --- a/gui/app/components/toolbar/for-spaces.js +++ b/gui/app/components/toolbar/for-spaces.js @@ -22,10 +22,11 @@ export default Component.extend(NotifierMixin, AuthMixin, { copyPermission: true, copyDocument: false, hasClone: notEmpty('clonedSpace.id'), + clonedSpace: null, init() { this._super(...arguments); - this.clonedSpace = { id: '' }; + // this.clonedSpace = { id: '' }; }, didInsertElement() { @@ -63,9 +64,8 @@ export default Component.extend(NotifierMixin, AuthMixin, { } this.set('spaceName', ''); - this.set('clonedSpace.id', ''); + this.set('clonedSpace', null); $("#new-space-name").removeClass("is-invalid"); - $('#add-space-modal').modal('hide'); $('#add-space-modal').modal('dispose'); diff --git a/gui/app/components/ui-select.js b/gui/app/components/ui-select.js index 6f270d0b..7045aaa3 100644 --- a/gui/app/components/ui-select.js +++ b/gui/app/components/ui-select.js @@ -25,11 +25,6 @@ export default Component.extend({ // leaking changes to it via a 2-way binding _selection: reads('selection'), - init() { - this._super(...arguments); - this.content = []; - }, - actions: { change() { const selectEl = this.$('select')[0]; diff --git a/gui/app/components/ui/ui-list-picker.js b/gui/app/components/ui/ui-list-picker.js index 72454788..46ac7350 100644 --- a/gui/app/components/ui/ui-list-picker.js +++ b/gui/app/components/ui/ui-list-picker.js @@ -30,7 +30,6 @@ export default Component.extend({ init() { this._super(...arguments); - this.items = []; }, actions: { diff --git a/gui/app/components/user-notification.js b/gui/app/components/user-notification.js index 5865b6a4..a8cdfc79 100644 --- a/gui/app/components/user-notification.js +++ b/gui/app/components/user-notification.js @@ -16,7 +16,6 @@ import miscUtil from '../utils/misc'; export default Component.extend({ init() { this._super(...arguments); - this.notifications = []; }, didInsertElement() { diff --git a/gui/app/helpers/is-one-of.js b/gui/app/helpers/is-one-of.js new file mode 100644 index 00000000..a35b88e3 --- /dev/null +++ b/gui/app/helpers/is-one-of.js @@ -0,0 +1,27 @@ +// 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 { helper } from '@ember/component/helper'; + +export function isOneOf(params/*, hash*/) { + if (is.not.undefined(params) || is.not.null(params)) { + if (params.length >= 2) { + let value = params[0]; + for (let i=1; i < params.length; i++) { + if (params[i] == value) return true; + } + } + } + + return false; +} + +export default helper(isOneOf); diff --git a/gui/app/models/page-pending.js b/gui/app/models/page-pending.js index 75eb6734..4b6c6897 100644 --- a/gui/app/models/page-pending.js +++ b/gui/app/models/page-pending.js @@ -11,11 +11,8 @@ import Model from 'ember-data/model'; import attr from 'ember-data/attr'; -// import { belongsTo } from 'ember-data/relationships'; export default Model.extend({ - // page: belongsTo('page', { inverse: null }), - // meta: belongsTo('page-meta', { inverse: null }), page: attr(), meta: attr(), owner: attr('string'), diff --git a/gui/app/pods/auth/forgot/route.js b/gui/app/pods/auth/forgot/route.js index b9b27b08..0e117bdc 100644 --- a/gui/app/pods/auth/forgot/route.js +++ b/gui/app/pods/auth/forgot/route.js @@ -29,6 +29,7 @@ export default Route.extend({ }, activate() { + this.get('browser').setTitleAsPhrase('Forgot Password'); $('body').addClass('background-color-theme-light'); }, diff --git a/gui/app/pods/auth/login/route.js b/gui/app/pods/auth/login/route.js index 9b5f9cc0..2edd8d53 100644 --- a/gui/app/pods/auth/login/route.js +++ b/gui/app/pods/auth/login/route.js @@ -57,10 +57,10 @@ export default Route.extend({ setupController: function (controller, model) { controller.set('model', model); controller.reset(); - this.browser.setTitleAsPhrase("Login"); }, activate() { + this.get('browser').setTitleAsPhrase('Login'); $('body').addClass('background-color-theme-light'); }, diff --git a/gui/app/pods/auth/reset/route.js b/gui/app/pods/auth/reset/route.js index 93a2aaca..fca11afd 100644 --- a/gui/app/pods/auth/reset/route.js +++ b/gui/app/pods/auth/reset/route.js @@ -18,6 +18,7 @@ export default Route.extend({ }, activate() { + this.get('browser').setTitleAsPhrase('Reset Password'); $('body').addClass('background-color-theme-light'); }, diff --git a/gui/app/pods/auth/share/route.js b/gui/app/pods/auth/share/route.js index 5ad520c3..67144e5a 100644 --- a/gui/app/pods/auth/share/route.js +++ b/gui/app/pods/auth/share/route.js @@ -36,6 +36,7 @@ export default Route.extend(AuthenticatedRouteMixin, { }, activate() { + this.get('browser').setTitle('Share Space'); $('body').addClass('background-color-off-white'); }, diff --git a/gui/app/pods/auth/sso/route.js b/gui/app/pods/auth/sso/route.js index 42341bf6..b3d8c416 100644 --- a/gui/app/pods/auth/sso/route.js +++ b/gui/app/pods/auth/sso/route.js @@ -10,7 +10,6 @@ // https://documize.com import { inject as service } from '@ember/service'; - import Route from '@ember/routing/route'; export default Route.extend({ @@ -29,4 +28,8 @@ export default Route.extend({ this.transitionTo('auth.login'); }); }, + + activate() { + this.get('browser').setTitle('SSO'); + } }); diff --git a/gui/app/pods/customize/auth/route.js b/gui/app/pods/customize/auth/route.js index 5a45e807..627edba1 100644 --- a/gui/app/pods/customize/auth/route.js +++ b/gui/app/pods/customize/auth/route.js @@ -10,7 +10,6 @@ // https://documize.com import { Promise as EmberPromise } from 'rsvp'; - import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; @@ -50,6 +49,6 @@ export default Route.extend(AuthenticatedRouteMixin, { }, activate() { - document.title = "Authentication | Documize"; + this.get('browser').setTitle('Authentication'); } }); diff --git a/gui/app/pods/customize/folders/controller.js b/gui/app/pods/customize/folders/controller.js index 4cc6571e..97405b8a 100644 --- a/gui/app/pods/customize/folders/controller.js +++ b/gui/app/pods/customize/folders/controller.js @@ -10,7 +10,7 @@ // https://documize.com import $ from 'jquery'; -import { computed } from '@ember/computed'; +import { computed } from '@ember/object'; import { inject as service } from '@ember/service'; import Controller from '@ember/controller'; import TooltipMixin from '../../../mixins/tooltip'; diff --git a/gui/app/pods/customize/folders/route.js b/gui/app/pods/customize/folders/route.js index 928230da..c7080975 100644 --- a/gui/app/pods/customize/folders/route.js +++ b/gui/app/pods/customize/folders/route.js @@ -10,7 +10,6 @@ // https://documize.com import { inject as service } from '@ember/service'; - import Route from '@ember/routing/route'; import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; @@ -34,10 +33,9 @@ export default Route.extend(AuthenticatedRouteMixin, { } controller.set('folders', nonPrivateFolders); - }, activate() { - document.title = "Spaces | Documize"; + this.get('browser').setTitle('Spaces'); } }); diff --git a/gui/app/pods/customize/general/route.js b/gui/app/pods/customize/general/route.js index 05adad3e..dd71d0b0 100644 --- a/gui/app/pods/customize/general/route.js +++ b/gui/app/pods/customize/general/route.js @@ -10,7 +10,6 @@ // https://documize.com import { inject as service } from '@ember/service'; - import Route from '@ember/routing/route'; import RSVP from 'rsvp'; import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; @@ -35,6 +34,6 @@ export default Route.extend(AuthenticatedRouteMixin, { }, activate() { - document.title = "Settings | Documize"; + this.get('browser').setTitle('General Settings'); } }); diff --git a/gui/app/pods/customize/license/route.js b/gui/app/pods/customize/license/route.js index cf85c724..ea692849 100644 --- a/gui/app/pods/customize/license/route.js +++ b/gui/app/pods/customize/license/route.js @@ -10,7 +10,6 @@ // https://documize.com import { inject as service } from '@ember/service'; - import Route from '@ember/routing/route'; import RSVP from 'rsvp'; import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; @@ -33,6 +32,6 @@ export default Route.extend(AuthenticatedRouteMixin, { }, activate() { - document.title = "Settings | Documize"; + this.get('browser').setTitle('License'); } }); diff --git a/gui/app/pods/customize/smtp/route.js b/gui/app/pods/customize/smtp/route.js index aee618bc..a7c19aa2 100644 --- a/gui/app/pods/customize/smtp/route.js +++ b/gui/app/pods/customize/smtp/route.js @@ -32,6 +32,6 @@ export default Route.extend(AuthenticatedRouteMixin, { }, activate() { - document.title = "SMTP | Documize"; + this.get('browser').setTitle('SMTP Settings'); } }); diff --git a/gui/app/pods/customize/users/route.js b/gui/app/pods/customize/users/route.js index d1080162..78fd6a47 100644 --- a/gui/app/pods/customize/users/route.js +++ b/gui/app/pods/customize/users/route.js @@ -10,7 +10,6 @@ // https://documize.com import { Promise as EmberPromise } from 'rsvp'; - import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; @@ -44,6 +43,6 @@ export default Route.extend(AuthenticatedRouteMixin, { }, activate() { - document.title = "Users | Documize"; + this.get('browser').setTitle('Users'); } }); diff --git a/gui/app/pods/document/index/controller.js b/gui/app/pods/document/index/controller.js index e9722869..3e2d3771 100644 --- a/gui/app/pods/document/index/controller.js +++ b/gui/app/pods/document/index/controller.js @@ -111,7 +111,6 @@ export default Controller.extend(TooltipMixin, { pendingChanges.push({ pageId: deleteId }); this.get('documentService').deletePages(documentId, deleteId, pendingChanges).then(() => { - // this.send('onPageLevelChange', '', pendingChanges); this.get('documentService').fetchPages(this.get('document.id'), this.get('session.user.id')).then((pages) => { this.set('pages', pages); }); @@ -119,7 +118,6 @@ export default Controller.extend(TooltipMixin, { } else { // page delete followed by re-leveling child pages this.get('documentService').deletePage(documentId, deleteId).then(() => { - // this.send('onPageLevelChange', '', pendingChanges); this.get('documentService').fetchPages(this.get('document.id'), this.get('session.user.id')).then((pages) => { this.set('pages', pages); }); diff --git a/gui/app/pods/folder/index/route.js b/gui/app/pods/folder/index/route.js index c7eef35f..01ba0c38 100644 --- a/gui/app/pods/folder/index/route.js +++ b/gui/app/pods/folder/index/route.js @@ -10,7 +10,6 @@ // https://documize.com import { Promise as EmberPromise, hash } from 'rsvp'; - import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; @@ -54,21 +53,10 @@ export default Route.extend(AuthenticatedRouteMixin, { categories: this.get('categories'), categorySummary: this.get('categorySummary'), categoryMembers: this.get('categoryMembers'), - // categories: this.get('categoryService').getUserVisible(this.modelFor('folder').folder.get('id')), - // categorySummary: this.get('categoryService').getSummary(this.modelFor('folder').folder.get('id')), - // categoryMembers: this.get('categoryService').getSpaceCategoryMembership(this.modelFor('folder').folder.get('id')), }); }, afterModel(model, transition) { // eslint-disable-line no-unused-vars - // model.folder = this.modelFor('folder').folder; - // model.permissions = this.modelFor('folder').permissions; - // model.folders = this.modelFor('folder').folders; - // model.documents = this.modelFor('folder').documents; - // model.templates = this.modelFor('folder').templates; - // model.showStartDocument = false; - // model.rootDocCount = 0; - let docs = model.documents; let categoryMembers = model.categoryMembers; let rootDocCount = 0; diff --git a/gui/app/pods/folders/route.js b/gui/app/pods/folders/route.js index 0af10b53..8864538d 100644 --- a/gui/app/pods/folders/route.js +++ b/gui/app/pods/folders/route.js @@ -27,5 +27,9 @@ export default Route.extend(AuthenticatedRouteMixin, { model() { return this.get('folderService').getAll(); - } + }, + + activate() { + this.get('browser').setTitle('Spaces'); + } }); diff --git a/gui/app/pods/profile/route.js b/gui/app/pods/profile/route.js index 92348d7f..34c10d13 100644 --- a/gui/app/pods/profile/route.js +++ b/gui/app/pods/profile/route.js @@ -10,7 +10,6 @@ // https://documize.com import { inject as service } from '@ember/service'; - import Route from '@ember/routing/route'; import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; @@ -37,4 +36,4 @@ export default Route.extend(AuthenticatedRouteMixin, { controller.set('model', model); controller.set("folder", this.get('folderService.currentFolder')); } -}); +}); \ No newline at end of file diff --git a/gui/app/pods/search/route.js b/gui/app/pods/search/route.js index 0999e0b6..caa4a689 100644 --- a/gui/app/pods/search/route.js +++ b/gui/app/pods/search/route.js @@ -12,4 +12,8 @@ import Route from '@ember/routing/route'; import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; -export default Route.extend(AuthenticatedRouteMixin); \ No newline at end of file +export default Route.extend(AuthenticatedRouteMixin, { + activate() { + this.get('browser').setTitle('Search'); + } +}); \ No newline at end of file diff --git a/gui/app/services/browser.js b/gui/app/services/browser.js index d504fc8b..e4e0b96e 100644 --- a/gui/app/services/browser.js +++ b/gui/app/services/browser.js @@ -17,6 +17,7 @@ export default Service.extend({ sessionService: service('session'), init() { + this._super(...arguments); this.setMetaDescription(); }, @@ -24,10 +25,6 @@ export default Service.extend({ document.title = title + " | " + this.get('sessionService.appMeta.title'); }, - setTitleReverse(title) { - document.title = this.get('sessionService.appMeta.title') + " | " + title; - }, - setTitleAsPhrase(title) { document.title = this.get('sessionService.appMeta.title') + " " + title; }, @@ -49,7 +46,6 @@ export default Service.extend({ scrollTo(id) { schedule('afterRender', () => { let elem = $(id).offset(); - if (is.undefined(elem)) return; $('html, body').animate({ diff --git a/gui/app/styles/bootstrap.scss b/gui/app/styles/bootstrap.scss index dab4698c..44070357 100644 --- a/gui/app/styles/bootstrap.scss +++ b/gui/app/styles/bootstrap.scss @@ -58,6 +58,7 @@ $dropdown-link-hover-color: $color-link; $dropdown-link-hover-bg: $color-white; $dropdown-link-active-color: $color-link; $dropdown-link-active-bg: $color-white; +$dropdown-header-color: $color-black; // form $input-color: $color-off-black; @@ -102,7 +103,6 @@ $link-hover-decoration: none; // @import "node_modules/bootstrap/scss/navbar"; // @import "node_modules/bootstrap/scss/images"; - .modal-80 { max-width: 80% !important; } diff --git a/gui/app/styles/print.scss b/gui/app/styles/print.scss index b6e50e3a..e9269c80 100644 --- a/gui/app/styles/print.scss +++ b/gui/app/styles/print.scss @@ -40,6 +40,7 @@ height: initial !important; min-height: initial !important; -webkit-print-color-adjust: exact; + overflow: hidden; } .non-printable, @@ -47,6 +48,7 @@ .document-toc, .tabnav-control, #nav-bar, + .page-toolbar, .new-section-wizard { float: none !important; display: none !important; diff --git a/gui/app/templates/components/folder/documents-list.hbs b/gui/app/templates/components/folder/documents-list.hbs index 27f13a26..8353de3f 100644 --- a/gui/app/templates/components/folder/documents-list.hbs +++ b/gui/app/templates/components/folder/documents-list.hbs @@ -49,9 +49,9 @@ {{/ui/ui-dialog}} {{#if showAdd}} - {{empty-state icon="direct" message="You can create new documents via the green + button"}} + {{empty-state icon="direct" message="Add documents via + DOCUMENT"}} {{/if}} {{#if showLockout}} - {{empty-state icon="visibility" message="It looks like space permissions are preventing you from viewing and creating documents"}} + {{empty-state icon="visibility" message="Space permissions are preventing you from viewing and creating documents"}} {{/if}} \ No newline at end of file diff --git a/gui/app/templates/components/folder/space-heading.hbs b/gui/app/templates/components/folder/space-heading.hbs index 9e9c3101..b0e874b1 100644 --- a/gui/app/templates/components/folder/space-heading.hbs +++ b/gui/app/templates/components/folder/space-heading.hbs @@ -2,7 +2,6 @@
- {{#unless editMode}}
@@ -16,14 +15,13 @@
- {{input id="space-name" type="text" value=spaceName class=(if hasNameError 'form-control is-invalid' 'form-control') placeholder="Space name" autocomplete="off"}} + {{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}} -
diff --git a/gui/app/templates/components/toolbar/for-space.hbs b/gui/app/templates/components/toolbar/for-space.hbs index bb9add4f..444571f9 100644 --- a/gui/app/templates/components/toolbar/for-space.hbs +++ b/gui/app/templates/components/toolbar/for-space.hbs @@ -62,13 +62,17 @@ check {{/if}} + {{else}} + No document templates {{/each}}
diff --git a/gui/app/templates/components/toolbar/for-spaces.hbs b/gui/app/templates/components/toolbar/for-spaces.hbs index 96782d78..e300a0c5 100644 --- a/gui/app/templates/components/toolbar/for-spaces.hbs +++ b/gui/app/templates/components/toolbar/for-spaces.hbs @@ -12,13 +12,13 @@