1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-20 13:49:42 +02:00

jump to page

This commit is contained in:
Harvey Kandola 2017-03-04 17:33:43 +00:00
parent 8d2dcf376f
commit f0590139b1
6 changed files with 20 additions and 112 deletions

View file

@ -62,6 +62,16 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
// out // out
$(this).find('.start-button').velocity("transition.slideUpOut", {duration: 300}); $(this).find('.start-button').velocity("transition.slideUpOut", {duration: 300});
} }); } });
let jumpTo = this.get('pageId');
if (is.not.empty(jumpTo)) {
let self = this;
$("#page-" + jumpTo).velocity("scroll", { duration: 250, offset: -100, complete:
function() {
self.set('pageId', '');
}
});
}
}, },
willDestroyElement() { willDestroyElement() {
@ -125,6 +135,7 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
model.page.sequence = sequence; model.page.sequence = sequence;
this.send('onHideSectionWizard'); this.send('onHideSectionWizard');
this.set('pageId', '');
const promise = this.get('onInsertSection')(model); const promise = this.get('onInsertSection')(model);
promise.then((id) => { promise.then((id) => {

View file

@ -16,36 +16,10 @@ export default Ember.Controller.extend(NotifierMixin, {
documentService: Ember.inject.service('document'), documentService: Ember.inject.service('document'),
templateService: Ember.inject.service('template'), templateService: Ember.inject.service('template'),
sectionService: Ember.inject.service('section'), sectionService: Ember.inject.service('section'),
page: null,
folder: {}, folder: {},
pages: [], pages: [],
toggled: false, toggled: false,
// to test
// to test
// Jump to the right part of the document.
scrollToPage(pageId) {
Ember.run.schedule('afterRender', function () {
let dest;
let target = "#page-title-" + pageId;
let targetOffset = $(target).offset();
if (is.undefined(targetOffset)) {
return;
}
dest = targetOffset.top > $(document).height() - $(window).height() ? $(document).height() - $(window).height() : targetOffset.top;
// small correction to ensure we also show page title
dest = dest > 50 ? dest - 74 : dest;
$("html,body").animate({
scrollTop: dest
}, 500, "linear");
$(".toc-index-item").removeClass("selected");
$("#index-" + pageId).addClass("selected");
});
},
actions: { actions: {
toggleSidebar() { toggleSidebar() {
this.set('toggled', !this.get('toggled')); this.set('toggled', !this.get('toggled'));
@ -218,15 +192,6 @@ export default Ember.Controller.extend(NotifierMixin, {
}); });
}, },
// to test
gotoPage(pageId) {
if (is.null(pageId)) {
return;
}
this.scrollToPage(pageId);
},
// to test // to test
onSavePageAsBlock(block) { onSavePageAsBlock(block) {
this.get('sectionService').addBlock(block).then(() => { this.get('sectionService').addBlock(block).then(() => {
@ -237,71 +202,6 @@ export default Ember.Controller.extend(NotifierMixin, {
}); });
/* /*
gotoPage(pageId) {
if (is.null(pageId)) {
return;
}
this.scrollToPage(pageId);
},
onSaveTemplate(name, desc) {
this.get('templateService').saveAsTemplate(this.get('model.document.id'), name, desc).then(function () {});
},
onSaveMeta(doc) {
this.get('documentService').save(doc).then(() => {
this.transitionToRoute('document.index');
});
},
onInsertBlock(block) {
this.audit.record("added-content-block-" + block.get('contentType'));
let page = {
documentId: this.get('model.document.id'),
title: `${block.get('title')}`,
level: 1,
sequence: 0,
body: block.get('body'),
contentType: block.get('contentType'),
pageType: block.get('pageType'),
blockId: block.get('id')
};
let meta = {
documentId: this.get('model.document.id'),
rawBody: block.get('rawBody'),
config: block.get('config'),
externalSource: block.get('externalSource')
};
let model = {
page: page,
meta: meta
};
this.get('documentService').addPage(this.get('model.document.id'), model).then((newPage) => {
let data = this.get('store').normalize('page', newPage);
this.get('store').push(data);
this.get('documentService').getPages(this.get('model.document.id')).then((pages) => {
this.set('model.pages', pages.filterBy('pageType', 'section'));
this.set('model.tabs', pages.filterBy('pageType', 'tab'));
this.get('documentService').getPageMeta(this.get('model.document.id'), newPage.id).then(() => {
this.transitionToRoute('document.edit',
this.get('model.folder.id'),
this.get('model.folder.slug'),
this.get('model.document.id'),
this.get('model.document.slug'),
newPage.id);
});
});
});
},
onDeleteBlock(blockId) { onDeleteBlock(blockId) {
this.get('sectionService').deleteBlock(blockId).then(() => { this.get('sectionService').deleteBlock(blockId).then(() => {
this.audit.record("deleted-block"); this.audit.record("deleted-block");
@ -317,5 +217,4 @@ onDocumentDelete() {
this.transitionToRoute('folder', this.get('model.folder.id'), this.get('model.folder.slug')); this.transitionToRoute('folder', this.get('model.folder.id'), this.get('model.folder.slug'));
}); });
} }
*/ */

View file

@ -18,13 +18,13 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
folderService: Ember.inject.service('folder'), folderService: Ember.inject.service('folder'),
userService: Ember.inject.service('user'), userService: Ember.inject.service('user'),
queryParams: { queryParams: {
page: { pageId: {
refreshModel: false refreshModel: false
} }
}, },
beforeModel(transition) { beforeModel(transition) {
this.set('pageId', is.not.undefined(transition.queryParams.page) ? transition.queryParams.page : ""); this.set('pageId', is.not.undefined(transition.queryParams.pageId) ? transition.queryParams.pageId : '');
}, },
model() { model() {
@ -36,7 +36,7 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
folders: this.modelFor('document').folders, folders: this.modelFor('document').folders,
folder: this.modelFor('document').folder, folder: this.modelFor('document').folder,
document: this.modelFor('document').document, document: this.modelFor('document').document,
page: this.get('pageId'), pageId: this.get('pageId'),
isEditor: this.get('folderService').get('canEditCurrentFolder'), isEditor: this.get('folderService').get('canEditCurrentFolder'),
pages: this.modelFor('document').pages, pages: this.modelFor('document').pages,
links: this.modelFor('document').links, links: this.modelFor('document').links,

View file

@ -64,7 +64,10 @@
</div> </div>
{{document/document-heading document=model.document isEditor=model.isEditor onSaveDocument=(action 'onSaveDocument')}} {{document/document-heading document=model.document isEditor=model.isEditor onSaveDocument=(action 'onSaveDocument')}}
{{document/document-view document=model.document links=model.links pages=model.pages {{document/document-view document=model.document links=model.links pages=model.pages
folder=model.folder folders=model.folders sections=model.sections isEditor=model.isEditor onSavePage=(action 'onSavePage') gotoPage=(action 'gotoPage') onInsertSection=(action 'onInsertSection') onSavePageAsBlock=(action 'onSavePageAsBlock') onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage') onDeletePage=(action 'onPageDeleted') onEditSection=(action 'onEditSection')}} folder=model.folder folders=model.folders sections=model.sections isEditor=model.isEditor pageId=pageId
onSavePage=(action 'onSavePage') onInsertSection=(action 'onInsertSection')
onSavePageAsBlock=(action 'onSavePageAsBlock') onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage')
onDeletePage=(action 'onPageDeleted') onEditSection=(action 'onEditSection')}}
</div> </div>
</div> </div>
</div> </div>

View file

@ -43,7 +43,8 @@ export default Ember.Controller.extend(NotifierMixin, {
this.get('model.folder.id'), this.get('model.folder.id'),
this.get('model.folder.slug'), this.get('model.folder.slug'),
this.get('model.document.id'), this.get('model.document.id'),
this.get('model.document.slug')); this.get('model.document.slug'),
{ queryParams: { pageId: page.id }});
}); });
}, },
} }

View file

@ -41,12 +41,6 @@ export default Router.map(function () {
this.route('section', { this.route('section', {
path: 'section/:page_id' path: 'section/:page_id'
}); });
// this.route('edit', {
// path: 'edit/:page_id'
// });
// this.route('wizard', {
// path: 'add'
// });
this.route('history', { this.route('history', {
path: 'history' path: 'history'
}); });