mirror of
https://github.com/documize/community.git
synced 2025-07-19 21:29:42 +02:00
set page sequence based on page type
This commit is contained in:
parent
f2734edfae
commit
c3b13f1626
11 changed files with 42 additions and 35 deletions
|
@ -163,14 +163,13 @@ export default Ember.Controller.extend(NotifierMixin, {
|
||||||
},
|
},
|
||||||
|
|
||||||
onAddSection(section) {
|
onAddSection(section) {
|
||||||
this.audit.record("added-section");
|
|
||||||
this.audit.record("added-section-" + section.get('contentType'));
|
this.audit.record("added-section-" + section.get('contentType'));
|
||||||
|
|
||||||
let page = {
|
let page = {
|
||||||
documentId: this.get('model.id'),
|
documentId: this.get('model.id'),
|
||||||
title: `${section.get('title')} Section`,
|
title: `${section.get('title')}`,
|
||||||
level: 1,
|
level: 1,
|
||||||
sequence: 2048,
|
sequence: 0,
|
||||||
body: "",
|
body: "",
|
||||||
contentType: section.get('contentType'),
|
contentType: section.get('contentType'),
|
||||||
pageType: section.get('pageType')
|
pageType: section.get('pageType')
|
||||||
|
@ -194,6 +193,10 @@ export default Ember.Controller.extend(NotifierMixin, {
|
||||||
};
|
};
|
||||||
|
|
||||||
this.get('documentService').addPage(this.get('model.id'), model).then((newPage) => {
|
this.get('documentService').addPage(this.get('model.id'), model).then((newPage) => {
|
||||||
|
let data = this.get('store').normalize('page', newPage);
|
||||||
|
this.get('store').push(data);
|
||||||
|
console.log(newPage);
|
||||||
|
|
||||||
this.transitionToRoute('document.edit',
|
this.transitionToRoute('document.edit',
|
||||||
this.get('folder.id'),
|
this.get('folder.id'),
|
||||||
this.get('folder.slug'),
|
this.get('folder.slug'),
|
||||||
|
|
|
@ -15,7 +15,6 @@ import NotifierMixin from '../../../mixins/notifier';
|
||||||
export default Ember.Controller.extend(NotifierMixin, {
|
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'),
|
||||||
|
|
||||||
queryParams: ['page'],
|
queryParams: ['page'],
|
||||||
page: null,
|
page: null,
|
||||||
folder: {},
|
folder: {},
|
||||||
|
@ -92,17 +91,6 @@ export default Ember.Controller.extend(NotifierMixin, {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// onSaveTemplate(name, desc) {
|
|
||||||
// this.get('templateService').saveAsTemplate(this.model.get('id'), name, desc).then(function () {});
|
|
||||||
// },
|
|
||||||
//
|
|
||||||
// onDocumentChange(doc) {
|
|
||||||
// let self = this;
|
|
||||||
// this.get('documentService').save(doc).then(function () {
|
|
||||||
// self.set('model', doc);
|
|
||||||
// });
|
|
||||||
// },
|
|
||||||
|
|
||||||
onPageDeleted(deletePage) {
|
onPageDeleted(deletePage) {
|
||||||
let self = this;
|
let self = this;
|
||||||
let documentId = this.get('model.id');
|
let documentId = this.get('model.id');
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
{{document/document-view document=model meta=meta pages=pages attachments=attachments folder=folder
|
{{document/document-view document=model meta=meta pages=pages attachments=attachments folder=folder folders=folders isEditor=isEditor
|
||||||
folders=folders isEditor=isEditor gotoPage=(action 'gotoPage') onDeletePage=(action 'onPageDeleted')}}
|
gotoPage=(action 'gotoPage') onDeletePage=(action 'onPageDeleted')}}
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
{{layout/zone-navigation}}
|
{{layout/zone-navigation}}
|
||||||
|
|
||||||
{{#layout/zone-sidebar}}
|
{{#layout/zone-sidebar}}
|
||||||
{{document/document-sidebar document=model folder=folder pages=pages page=page isEditor=isEditor sections=sections onAddSection=(action 'onAddSection') changePageSequence=(action 'onPageSequenceChange') changePageLevel=(action 'onPageLevelChange') gotoPage=(action 'gotoPage')}}
|
{{document/document-sidebar document=model folder=folder pages=pages page=page isEditor=isEditor sections=sections
|
||||||
|
onAddSection=(action 'onAddSection') changePageSequence=(action 'onPageSequenceChange') changePageLevel=(action 'onPageLevelChange') gotoPage=(action 'gotoPage')}}
|
||||||
{{/layout/zone-sidebar}}
|
{{/layout/zone-sidebar}}
|
||||||
|
|
||||||
{{#layout/zone-content}}
|
{{#layout/zone-content}}
|
||||||
{{document/document-toolbar document=model pages=pages tabs=tabs folder=folder isEditor=isEditor onSaveTemplate=(action 'onSaveTemplate') onDocumentDelete=(action 'onDocumentDelete')}} {{outlet}}
|
{{document/document-toolbar document=model pages=pages tabs=tabs folder=folder isEditor=isEditor
|
||||||
|
onSaveTemplate=(action 'onSaveTemplate') onDocumentDelete=(action 'onDocumentDelete')}} {{outlet}}
|
||||||
{{/layout/zone-content}}
|
{{/layout/zone-content}}
|
||||||
|
|
|
@ -16,7 +16,7 @@ export default Ember.Controller.extend(NotifierMixin, {
|
||||||
documentId: this.get('model.document.id'),
|
documentId: this.get('model.document.id'),
|
||||||
title: `${section.get('title')}`,
|
title: `${section.get('title')}`,
|
||||||
level: 1,
|
level: 1,
|
||||||
sequence: 2048,
|
sequence: 0,
|
||||||
body: "",
|
body: "",
|
||||||
contentType: section.get('contentType'),
|
contentType: section.get('contentType'),
|
||||||
pageType: section.get('pageType')
|
pageType: section.get('pageType')
|
||||||
|
|
|
@ -144,9 +144,6 @@ export default Ember.Service.extend({
|
||||||
return this.get('ajax').post(url, {
|
return this.get('ajax').post(url, {
|
||||||
data: JSON.stringify(payload),
|
data: JSON.stringify(payload),
|
||||||
contentType: 'json'
|
contentType: 'json'
|
||||||
}).then((response) => {
|
|
||||||
let data = this.get('store').normalize('page', response);
|
|
||||||
return this.get('store').push(data);
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
<div id="{{contentId}}" class="dropdown-menu">
|
<div id="{{contentId}}" class="dropdown-menu non-printable">
|
||||||
{{yield}}
|
{{yield}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -179,6 +179,8 @@ func processDocument(p request.Persister, filename, job, folderID string, fileRe
|
||||||
page.Sequence = float64(k+1) * 1024.0 // need to start above 0 to allow insertion before the first item
|
page.Sequence = float64(k+1) * 1024.0 // need to start above 0 to allow insertion before the first item
|
||||||
pageID := util.UniqueID()
|
pageID := util.UniqueID()
|
||||||
page.RefID = pageID
|
page.RefID = pageID
|
||||||
|
page.ContentType = "wysiwyg"
|
||||||
|
page.PageType = "section"
|
||||||
|
|
||||||
meta := entity.PageMeta{}
|
meta := entity.PageMeta{}
|
||||||
meta.PageID = pageID
|
meta.PageID = pageID
|
||||||
|
|
|
@ -194,12 +194,25 @@ type Page struct {
|
||||||
func (p *Page) SetDefaults() {
|
func (p *Page) SetDefaults() {
|
||||||
if len(p.ContentType) == 0 {
|
if len(p.ContentType) == 0 {
|
||||||
p.ContentType = "wysiwyg"
|
p.ContentType = "wysiwyg"
|
||||||
p.PageType = "section"
|
}
|
||||||
|
|
||||||
|
if p.IsTabType() {
|
||||||
|
p.Sequence = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
p.Title = strings.TrimSpace(p.Title)
|
p.Title = strings.TrimSpace(p.Title)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsSectionType tells us that page is "words"
|
||||||
|
func (p *Page) IsSectionType() bool {
|
||||||
|
return p.PageType == "section"
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsTabType tells us that page is "SaaS data embed"
|
||||||
|
func (p *Page) IsTabType() bool {
|
||||||
|
return p.PageType == "tab"
|
||||||
|
}
|
||||||
|
|
||||||
// PageMeta holds raw page data that is used to
|
// PageMeta holds raw page data that is used to
|
||||||
// render the actual page data.
|
// render the actual page data.
|
||||||
type PageMeta struct {
|
type PageMeta struct {
|
||||||
|
|
|
@ -29,24 +29,26 @@ import (
|
||||||
func (p *Persister) AddPage(model models.PageModel) (err error) {
|
func (p *Persister) AddPage(model models.PageModel) (err error) {
|
||||||
err = nil
|
err = nil
|
||||||
model.Page.OrgID = p.Context.OrgID
|
model.Page.OrgID = p.Context.OrgID
|
||||||
|
model.Page.UserID = p.Context.UserID
|
||||||
model.Page.Created = time.Now().UTC()
|
model.Page.Created = time.Now().UTC()
|
||||||
model.Page.Revised = time.Now().UTC()
|
model.Page.Revised = time.Now().UTC()
|
||||||
model.Page.UserID = p.Context.UserID
|
|
||||||
model.Page.SetDefaults()
|
|
||||||
|
|
||||||
model.Meta.OrgID = p.Context.OrgID
|
model.Meta.OrgID = p.Context.OrgID
|
||||||
model.Meta.UserID = p.Context.UserID
|
model.Meta.UserID = p.Context.UserID
|
||||||
model.Meta.DocumentID = model.Page.DocumentID
|
model.Meta.DocumentID = model.Page.DocumentID
|
||||||
model.Meta.Created = time.Now().UTC()
|
model.Meta.Created = time.Now().UTC()
|
||||||
model.Meta.Revised = time.Now().UTC()
|
model.Meta.Revised = time.Now().UTC()
|
||||||
model.Meta.SetDefaults()
|
|
||||||
|
|
||||||
|
if model.Page.IsSectionType() {
|
||||||
// Get maximum page sequence number and increment
|
// Get maximum page sequence number and increment
|
||||||
row := Db.QueryRow("SELECT max(sequence) FROM page WHERE orgid=? and documentid=?", p.Context.OrgID, model.Page.DocumentID)
|
row := Db.QueryRow("SELECT max(sequence) FROM page WHERE orgid=? AND documentid=? AND pagetype='section'", p.Context.OrgID, model.Page.DocumentID)
|
||||||
var maxSeq float64
|
var maxSeq float64
|
||||||
err = row.Scan(&maxSeq)
|
err = row.Scan(&maxSeq)
|
||||||
|
|
||||||
if err == nil {
|
if err != nil {
|
||||||
|
log.Error("unable to select max page.sequence", err)
|
||||||
|
}
|
||||||
|
|
||||||
model.Page.Sequence = maxSeq * 2
|
model.Page.Sequence = maxSeq * 2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* community edition */
|
/* community edition */
|
||||||
ALTER TABLE page ADD COLUMN `pagetype` CHAR(10) NOT NULL DEFAULT 'section' AFTER `contenttype`;
|
ALTER TABLE page ADD COLUMN `pagetype` CHAR(10) NOT NULL DEFAULT 'section' AFTER `contenttype`;
|
||||||
UPDATE page SET pagetype='tab' 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`;
|
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);
|
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