From 079e53ff0d4897cf1967965153f9a0069fd6b31c Mon Sep 17 00:00:00 2001 From: Harvey Kandola Date: Thu, 9 Mar 2017 17:18:50 +0000 Subject: [PATCH] implemented scroll-to-page functionality --- app/app/components/document/document-page.js | 2 ++ app/app/components/document/document-tab.js | 1 + app/app/components/document/document-view.js | 29 ++++++++++++++----- app/app/pods/document/index/controller.js | 16 ++++++++-- app/app/pods/document/index/route.js | 7 ----- app/app/pods/document/section/controller.js | 2 +- .../view/document/sidebar-view-index.scss | 1 + .../styles/view/document/sidebar-zone.scss | 1 + app/app/styles/widget/widget-button.scss | 2 +- .../components/document/document-view.hbs | 4 +-- core/api/entity/objects.go | 4 --- core/database/scripts/autobuild/db_00005.sql | 2 +- 12 files changed, 45 insertions(+), 26 deletions(-) diff --git a/app/app/components/document/document-page.js b/app/app/components/document/document-page.js index 301cce71..1c2e34b6 100644 --- a/app/app/components/document/document-page.js +++ b/app/app/components/document/document-page.js @@ -72,6 +72,8 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { return; } + this.get('toEdit', ''); + // this.set('pageId', this.get('page.id')); this.set('editMode', true); }, diff --git a/app/app/components/document/document-tab.js b/app/app/components/document/document-tab.js index 5c36a31f..33e08382 100644 --- a/app/app/components/document/document-tab.js +++ b/app/app/components/document/document-tab.js @@ -46,6 +46,7 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { actions: { onExpand() { + this.set('pageId', this.get('page.id')); this.set('expanded', !this.get('expanded')); }, diff --git a/app/app/components/document/document-view.js b/app/app/components/document/document-view.js index e3fbdbef..ba5a2717 100644 --- a/app/app/components/document/document-view.js +++ b/app/app/components/document/document-view.js @@ -33,16 +33,18 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { this._super(...arguments); this.loadBlocks(); + + Ember.run.schedule('afterRender', () => { + let jumpTo = "#page-" + this.get('pageId'); + if (!$(jumpTo).inView()) { + $(jumpTo).velocity("scroll", { duration: 250, offset: -100 }); + } + }); }, didRender() { this._super(...arguments); - let jumpTo = this.get('pageId'); - if (is.not.empty(jumpTo) && is.not.undefined(jumpTo) && !$("#page-" + jumpTo).inView()) { - $("#page-" + jumpTo).velocity("scroll", { duration: 250, offset: -100 }); - } - this.contentLinkHandler(); }, @@ -130,7 +132,6 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { model.page.level = level; this.send('onHideSectionWizard'); - this.set('pageId', ''); return this.get('onInsertSection')(model); }, @@ -180,6 +181,8 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { page = { id: '0' }; } + this.set('pageId', ''); + let beforePage = this.get('beforePage'); if (is.not.null(beforePage) && $("#new-section-wizard").is(':visible') && beforePage.get('id') === page.id) { this.send('onHideSectionWizard'); @@ -241,8 +244,12 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { const promise = this.addSection(model); promise.then((id) => { + this.set('pageId', id); + if (model.page.pageType === 'section') { this.set('toEdit', id); + } else { + this.set('toEdit', ''); } }); }, @@ -279,8 +286,16 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { this.audit.record("added-content-block-" + block.get('contentType')); + const promise = this.addSection(model); + promise.then((id) => { + this.set('pageId', id); - this.addSection(model); + // if (model.page.pageType === 'section') { + // this.set('toEdit', id); + // } else { + // this.set('toEdit', ''); + // } + }); }, onDeleteBlock(id) { diff --git a/app/app/pods/document/index/controller.js b/app/app/pods/document/index/controller.js index 39f7ae3a..5f293b45 100644 --- a/app/app/pods/document/index/controller.js +++ b/app/app/pods/document/index/controller.js @@ -40,6 +40,7 @@ export default Ember.Controller.extend(NotifierMixin, { // refresh data if copied to same document if (documentId === targetDocumentId) { + this.set('pageId', ''); this.get('target.router').refresh(); } }); @@ -62,7 +63,7 @@ export default Ember.Controller.extend(NotifierMixin, { }; this.get('documentService').updatePage(documentId, page.get('id'), model).then(() => { - this.get('target.router').refresh(); + this.set('pageId', page.get('id')); }); this.audit.record("edited-page"); @@ -93,6 +94,8 @@ export default Ember.Controller.extend(NotifierMixin, { }); } + this.set('pageId', ''); + if (deleteChildren) { // nuke of page tree pendingChanges.push({ @@ -109,7 +112,11 @@ export default Ember.Controller.extend(NotifierMixin, { } this.set('model.pages', _.sortBy(pages, "sequence")); - this.get('target.router').refresh(); + this.transitionToRoute('document.index', + this.get('model.folder.id'), + this.get('model.folder.slug'), + this.get('model.document.id'), + this.get('model.document.slug')); }); } else { // page delete followed by re-leveling child pages @@ -128,6 +135,7 @@ export default Ember.Controller.extend(NotifierMixin, { this.get('documentService').addPage(this.get('model.document.id'), data).then((newPage) => { let data = this.get('store').normalize('page', newPage); this.get('store').push(data); + this.set('pageId', newPage.id); this.get('documentService').getPages(this.get('model.document.id')).then((pages) => { this.set('model.pages', pages); @@ -216,7 +224,9 @@ export default Ember.Controller.extend(NotifierMixin, { }, onGotoPage(id) { - this.set('pageId', id); + if (this.get('pageId') !== id && id !== '') { + this.set('pageId', id); + } } } }); diff --git a/app/app/pods/document/index/route.js b/app/app/pods/document/index/route.js index 9051f78f..801db9cd 100644 --- a/app/app/pods/document/index/route.js +++ b/app/app/pods/document/index/route.js @@ -18,11 +18,6 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, { folderService: Ember.inject.service('folder'), userService: Ember.inject.service('user'), - beforeModel(transition) { - this.set('pageId', is.not.undefined(transition.queryParams.pageId) ? transition.queryParams.pageId : ''); - this.set('tab', is.not.undefined(transition.queryParams.tab) ? transition.queryParams.tab : 'index'); - }, - model() { let document = this.modelFor('document').document; this.browser.setTitle(document.get('name')); @@ -35,8 +30,6 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, { pages: this.get('documentService').getPages(this.modelFor('document').document.get('id')), links: this.modelFor('document').links, sections: this.modelFor('document').sections, - pageId: this.get('pageId'), - tab: this.get('tab'), isEditor: this.get('folderService').get('canEditCurrentFolder') }); } diff --git a/app/app/pods/document/section/controller.js b/app/app/pods/document/section/controller.js index bf3f1b13..29bc2407 100644 --- a/app/app/pods/document/section/controller.js +++ b/app/app/pods/document/section/controller.js @@ -43,7 +43,7 @@ export default Ember.Controller.extend(NotifierMixin, { this.get('model.folder.slug'), this.get('model.document.id'), this.get('model.document.slug'), - { queryParams: { pageId: page.id }}); + { queryParams: { pageId: page.get('id')}}); }); }, } diff --git a/app/app/styles/view/document/sidebar-view-index.scss b/app/app/styles/view/document/sidebar-view-index.scss index 506d2523..5437eccb 100644 --- a/app/app/styles/view/document/sidebar-view-index.scss +++ b/app/app/styles/view/document/sidebar-view-index.scss @@ -37,6 +37,7 @@ word-wrap: break-word; white-space: nowrap; overflow: hidden; + @extend .no-select; > .link { color: $color-off-black; diff --git a/app/app/styles/view/document/sidebar-zone.scss b/app/app/styles/view/document/sidebar-zone.scss index 8434a78f..4175f412 100644 --- a/app/app/styles/view/document/sidebar-zone.scss +++ b/app/app/styles/view/document/sidebar-zone.scss @@ -31,6 +31,7 @@ > .selected { background-color: $color-off-black !important; + border: none; > .material-icons { color: $color-white !important; diff --git a/app/app/styles/widget/widget-button.scss b/app/app/styles/widget/widget-button.scss index a2e2ee29..530dee90 100644 --- a/app/app/styles/widget/widget-button.scss +++ b/app/app/styles/widget/widget-button.scss @@ -225,7 +225,7 @@ } .button-black { - border: 1px solid $color-stroke; + border: none; background-color: $color-off-black; color: $color-white; @include button-hover-state($color-black); diff --git a/app/app/templates/components/document/document-view.hbs b/app/app/templates/components/document/document-view.hbs index 09120c52..32011640 100644 --- a/app/app/templates/components/document/document-view.hbs +++ b/app/app/templates/components/document/document-view.hbs @@ -14,13 +14,13 @@
{{/if}} {{#if (is-equal page.pageType 'section')}} - {{#document/document-page document=document folder=folder page=page isEditor=isEditor toEdit=toEdit + {{#document/document-page document=document folder=folder page=page isEditor=isEditor toEdit=toEdit pageId=pageId onSavePage=(action 'onSavePage') onSavePageAsBlock=(action 'onSavePageAsBlock') onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage') onDeletePage=(action 'onDeletePage')}} {{/document/document-page}} {{/if}} {{#if (is-equal page.pageType 'tab')}} - {{#document/document-tab document=document folder=folder page=page isEditor=isEditor + {{#document/document-tab document=document folder=folder page=page isEditor=isEditor pageId=pageId onSavePage=(action 'onSavePage') onSavePageAsBlock=(action 'onSavePageAsBlock') onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage') onDeletePage=(action 'onDeletePage')}} {{/document/document-tab}} diff --git a/core/api/entity/objects.go b/core/api/entity/objects.go index af1e26ed..c40629a5 100644 --- a/core/api/entity/objects.go +++ b/core/api/entity/objects.go @@ -198,10 +198,6 @@ func (p *Page) SetDefaults() { p.ContentType = "wysiwyg" } - // if p.IsTabType() { - // p.Sequence = 0 - // } - p.Title = strings.TrimSpace(p.Title) } diff --git a/core/database/scripts/autobuild/db_00005.sql b/core/database/scripts/autobuild/db_00005.sql index e26a3ce0..4e1b32e1 100644 --- a/core/database/scripts/autobuild/db_00005.sql +++ b/core/database/scripts/autobuild/db_00005.sql @@ -1,6 +1,6 @@ /* community edition */ ALTER TABLE page ADD COLUMN `pagetype` CHAR(10) NOT NULL DEFAULT 'section' AFTER `contenttype`; -UPDATE page SET pagetype='tab', sequence=0 WHERE refid IN (SELECT pageid FROM pagemeta WHERE externalsource=1); +-- UPDATE page SET pagetype='tab', sequence=0 WHERE refid IN (SELECT pageid FROM pagemeta WHERE externalsource=1); ALTER TABLE revision ADD COLUMN `pagetype` CHAR(10) NOT NULL DEFAULT 'section' AFTER `contenttype`; UPDATE revision SET pagetype='tab' WHERE pageid IN (SELECT pageid FROM pagemeta WHERE externalsource=1);