mirror of
https://github.com/documize/community.git
synced 2025-07-19 13:19:43 +02:00
implemented scroll-to-page functionality
This commit is contained in:
parent
9f7585e2a5
commit
079e53ff0d
12 changed files with 45 additions and 26 deletions
|
@ -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);
|
||||
},
|
||||
|
||||
|
|
|
@ -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'));
|
||||
},
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
if (this.get('pageId') !== id && id !== '') {
|
||||
this.set('pageId', id);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -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')
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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')}});
|
||||
});
|
||||
},
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
word-wrap: break-word;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
@extend .no-select;
|
||||
|
||||
> .link {
|
||||
color: $color-off-black;
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
> .selected {
|
||||
background-color: $color-off-black !important;
|
||||
border: none;
|
||||
|
||||
> .material-icons {
|
||||
color: $color-white !important;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -14,13 +14,13 @@
|
|||
<div class="section-divider" />
|
||||
{{/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}}
|
||||
|
|
|
@ -198,10 +198,6 @@ func (p *Page) SetDefaults() {
|
|||
p.ContentType = "wysiwyg"
|
||||
}
|
||||
|
||||
// if p.IsTabType() {
|
||||
// p.Sequence = 0
|
||||
// }
|
||||
|
||||
p.Title = strings.TrimSpace(p.Title)
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue