mirror of
https://github.com/documize/community.git
synced 2025-07-20 21:59:42 +02:00
page toolbar
This commit is contained in:
parent
836b7f3fb4
commit
13a879a89b
11 changed files with 213 additions and 224 deletions
|
@ -10,7 +10,6 @@
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import { debounce } from '@ember/runloop';
|
import { debounce } from '@ember/runloop';
|
||||||
|
|
||||||
import { computed, set } from '@ember/object';
|
import { computed, set } from '@ember/object';
|
||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
|
|
|
@ -10,65 +10,18 @@
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
|
|
||||||
import { computed } from '@ember/object';
|
import { computed } from '@ember/object';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import TooltipMixin from '../../mixins/tooltip';
|
import { A } from "@ember/array"
|
||||||
|
import ModalMixin from '../../mixins/modal';
|
||||||
|
|
||||||
export default Component.extend(TooltipMixin, {
|
export default Component.extend(ModalMixin, {
|
||||||
documentService: service('document'),
|
documentService: service('document'),
|
||||||
deleteChildren: false,
|
deleteChildren: false,
|
||||||
menuOpen: false,
|
|
||||||
blockTitle: "",
|
blockTitle: "",
|
||||||
blockExcerpt: "",
|
blockExcerpt: "",
|
||||||
documentList: [], //includes the current document
|
documentList: A([]), //includes the current document
|
||||||
documentListOthers: [], //excludes the current document
|
documentListOthers: A([]), //excludes the current document
|
||||||
selectedDocument: null,
|
|
||||||
|
|
||||||
checkId: computed('page', function () {
|
|
||||||
let id = this.get('page.id');
|
|
||||||
return `delete-check-button-${id}`;
|
|
||||||
}),
|
|
||||||
menuTarget: computed('page', function () {
|
|
||||||
let id = this.get('page.id');
|
|
||||||
return `page-menu-${id}`;
|
|
||||||
}),
|
|
||||||
deleteButtonId: computed('page', function () {
|
|
||||||
let id = this.get('page.id');
|
|
||||||
return `delete-page-button-${id}`;
|
|
||||||
}),
|
|
||||||
publishButtonId: computed('page', function () {
|
|
||||||
let id = this.get('page.id');
|
|
||||||
return `publish-button-${id}`;
|
|
||||||
}),
|
|
||||||
publishDialogId: computed('page', function () {
|
|
||||||
let id = this.get('page.id');
|
|
||||||
return `publish-dialog-${id}`;
|
|
||||||
}),
|
|
||||||
blockTitleId: computed('page', function () {
|
|
||||||
let id = this.get('page.id');
|
|
||||||
return `block-title-${id}`;
|
|
||||||
}),
|
|
||||||
blockExcerptId: computed('page', function () {
|
|
||||||
let id = this.get('page.id');
|
|
||||||
return `block-excerpt-${id}`;
|
|
||||||
}),
|
|
||||||
copyButtonId: computed('page', function () {
|
|
||||||
let id = this.get('page.id');
|
|
||||||
return `copy-page-button-${id}`;
|
|
||||||
}),
|
|
||||||
copyDialogId: computed('page', function () {
|
|
||||||
let id = this.get('page.id');
|
|
||||||
return `copy-dialog-${id}`;
|
|
||||||
}),
|
|
||||||
moveButtonId: computed('page', function () {
|
|
||||||
let id = this.get('page.id');
|
|
||||||
return `move-page-button-${id}`;
|
|
||||||
}),
|
|
||||||
moveDialogId: computed('page', function () {
|
|
||||||
let id = this.get('page.id');
|
|
||||||
return `move-dialog-${id}`;
|
|
||||||
}),
|
|
||||||
|
|
||||||
hasMenuPermissions: computed('permissions', function() {
|
hasMenuPermissions: computed('permissions', function() {
|
||||||
let permissions = this.get('permissions');
|
let permissions = this.get('permissions');
|
||||||
|
@ -77,48 +30,57 @@ export default Component.extend(TooltipMixin, {
|
||||||
permissions.get('documentMove') || permissions.get('documentTemplate');
|
permissions.get('documentMove') || permissions.get('documentTemplate');
|
||||||
}),
|
}),
|
||||||
|
|
||||||
didRender() {
|
didReceiveAttrs() {
|
||||||
$("#" + this.get('blockTitleId')).removeClass('error');
|
this._super(...arguments);
|
||||||
$("#" + this.get('blockExcerptId')).removeClass('error');
|
|
||||||
|
// Fetch document targets once
|
||||||
|
if (this.get('documentList').length > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.load();
|
||||||
|
},
|
||||||
|
|
||||||
|
load() {
|
||||||
|
this.get('documentService').getPageMoveCopyTargets().then((d) => {
|
||||||
|
let me = this.get('document');
|
||||||
|
|
||||||
|
d.forEach((i) => {
|
||||||
|
i.set('selected', false);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.set('documentList', A(d));
|
||||||
|
this.set('documentListOthers', A(d.filter((item) => item.get('id') !== me.get('id'))));
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
onMenuOpen() {
|
|
||||||
if ($('#' + this.get('publishDialogId')).is( ":visible" )) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if ($('#' + this.get('copyDialogId')).is( ":visible" )) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if ($('#' + this.get('moveDialogId')).is( ":visible" )) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.set('menuOpen', !this.get('menuOpen'));
|
|
||||||
},
|
|
||||||
|
|
||||||
onEdit() {
|
onEdit() {
|
||||||
this.attrs.onEdit();
|
this.attrs.onEdit();
|
||||||
},
|
},
|
||||||
|
|
||||||
deletePage() {
|
onDeletePage() {
|
||||||
this.attrs.onDeletePage(this.get('deleteChildren'));
|
this.attrs.onDeletePage(this.get('deleteChildren'));
|
||||||
|
|
||||||
|
this.load();
|
||||||
|
|
||||||
|
this.modalClose('#delete-page-modal-' + this.get('page.id'));
|
||||||
},
|
},
|
||||||
|
|
||||||
onSavePageAsBlock() {
|
onSavePageAsBlock() {
|
||||||
let page = this.get('page');
|
let page = this.get('page');
|
||||||
let titleElem = '#' + this.get('blockTitleId');
|
let titleElem = '#block-title-' + page.get('id');
|
||||||
let blockTitle = this.get('blockTitle');
|
let blockTitle = this.get('blockTitle');
|
||||||
if (is.empty(blockTitle)) {
|
if (is.empty(blockTitle)) {
|
||||||
$(titleElem).addClass('error');
|
$(titleElem).addClass('is-invalid');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let excerptElem = '#' + this.get('blockExcerptId');
|
let excerptElem = '#block-desc-' + page.get('id');
|
||||||
let blockExcerpt = this.get('blockExcerpt');
|
let blockExcerpt = this.get('blockExcerpt');
|
||||||
blockExcerpt = blockExcerpt.replace(/\n/g, "");
|
blockExcerpt = blockExcerpt.replace(/\n/g, "");
|
||||||
if (is.empty(blockExcerpt)) {
|
if (is.empty(blockExcerpt)) {
|
||||||
$(excerptElem).addClass('error');
|
$(excerptElem).addClass('is-invalid');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,44 +102,33 @@ export default Component.extend(TooltipMixin, {
|
||||||
this.set('menuOpen', false);
|
this.set('menuOpen', false);
|
||||||
this.set('blockTitle', '');
|
this.set('blockTitle', '');
|
||||||
this.set('blockExcerpt', '');
|
this.set('blockExcerpt', '');
|
||||||
$(titleElem).removeClass('error');
|
$(titleElem).removeClass('is-invalid');
|
||||||
$(excerptElem).removeClass('error');
|
$(excerptElem).removeClass('is-invalid');
|
||||||
|
|
||||||
return true;
|
this.load();
|
||||||
|
|
||||||
|
this.modalClose('#publish-page-modal-' + this.get('page.id'));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// Copy/move actions
|
|
||||||
onCopyDialogOpen() {
|
|
||||||
// Fetch document targets once.
|
|
||||||
if (this.get('documentList').length > 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.get('documentService').getPageMoveCopyTargets().then((d) => {
|
|
||||||
let me = this.get('document');
|
|
||||||
this.set('documentList', d);
|
|
||||||
this.set('documentListOthers', d.filter((item) => item.get('id') !== me.get('id')));
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
onTargetChange(d) {
|
|
||||||
this.set('selectedDocument', d);
|
|
||||||
},
|
|
||||||
|
|
||||||
onCopyPage() {
|
onCopyPage() {
|
||||||
// can't proceed if no data
|
// can't proceed if no data
|
||||||
if (this.get('documentList.length') === 0) {
|
if (this.get('documentList.length') === 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let targetDocumentId = this.get('document.id');
|
let targetDocumentId = this.get('documentList').findBy('selected', true).get('id');
|
||||||
if (is.not.null(this.get('selectedDocument'))) {
|
|
||||||
targetDocumentId = this.get('selectedDocument.id');
|
// fall back to self
|
||||||
|
if (is.null(targetDocumentId)) {
|
||||||
|
targetDocumentId = this.get('document.id');
|
||||||
}
|
}
|
||||||
|
|
||||||
this.attrs.onCopyPage(targetDocumentId);
|
this.attrs.onCopyPage(targetDocumentId);
|
||||||
return true;
|
|
||||||
|
this.load();
|
||||||
|
|
||||||
|
this.modalClose('#copy-page-modal-' + this.get('page.id'));
|
||||||
},
|
},
|
||||||
|
|
||||||
onMovePage() {
|
onMovePage() {
|
||||||
|
@ -186,14 +137,18 @@ export default Component.extend(TooltipMixin, {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is.null(this.get('selectedDocument'))) {
|
let targetDocumentId = this.get('documentListOthers').findBy('selected', true).get('id');
|
||||||
this.set('selectedDocument', this.get('documentListOthers')[0]);
|
|
||||||
|
// fall back to first document
|
||||||
|
if (is.null(targetDocumentId)) {
|
||||||
|
targetDocumentId = this.get('documentListOthers')[0].get('id');
|
||||||
}
|
}
|
||||||
|
|
||||||
let targetDocumentId = this.get('selectedDocument.id');
|
|
||||||
|
|
||||||
this.attrs.onMovePage(targetDocumentId);
|
this.attrs.onMovePage(targetDocumentId);
|
||||||
return true;
|
|
||||||
|
this.load();
|
||||||
|
|
||||||
|
this.modalClose('#move-page-modal-' + this.get('page.id'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -10,13 +10,23 @@
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import { set } from '@ember/object';
|
import { set } from '@ember/object';
|
||||||
|
|
||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
|
import { computed } from '@ember/object';
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
nameField: 'category',
|
nameField: 'category',
|
||||||
singleSelect: false,
|
singleSelect: false,
|
||||||
items: [],
|
items: [],
|
||||||
|
maxHeight: 0,
|
||||||
|
styleCss: computed('maxHeight', function () {
|
||||||
|
let height = this.get('maxHeight');
|
||||||
|
|
||||||
|
if (height > 0) {
|
||||||
|
return `overflow-y: scroll; max-height: ${height}px;`;
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
onToggle(item) {
|
onToggle(item) {
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
.document-structure {
|
.document-structure {
|
||||||
margin: 0 0 0 0;
|
margin: 0 0 0 0;
|
||||||
|
|
||||||
.page-toolbar {
|
> .page-header {
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-header {
|
|
||||||
margin: 0 0 0.7rem 0;
|
margin: 0 0 0.7rem 0;
|
||||||
|
|
||||||
> .page-number {
|
> .page-number {
|
||||||
|
@ -21,6 +17,10 @@
|
||||||
|
|
||||||
> .page-title {
|
> .page-title {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 16px 0;
|
||||||
|
color: $color-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#if permissions.documentEdit}}
|
{{#if permissions.documentEdit}}
|
||||||
{{#ui/ui-dialog title="Document Categories" confirmCaption="Select" buttonType="btn-outline-success" show=showCategoryModal onAction=(action 'onSaveCategory')}}
|
{{#ui/ui-dialog title="Document Categories" confirmCaption="Select" buttonType="btn-success" show=showCategoryModal onAction=(action 'onSaveCategory')}}
|
||||||
<p>Select who can view documents within category</p>
|
<p>Select who can view documents within category</p>
|
||||||
{{ui/ui-list-picker items=categories nameField='category' singleSelect=false}}
|
{{ui/ui-list-picker items=categories nameField='category' singleSelect=false}}
|
||||||
{{/ui/ui-dialog}}
|
{{/ui/ui-dialog}}
|
||||||
|
@ -74,7 +74,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
||||||
<button type="button" class="btn btn-outline-success" onclick={{action 'onSaveTags'}}>Save</button>
|
<button type="button" class="btn btn-success" onclick={{action 'onSaveTags'}}>Save</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
<div id="page-{{page.id}}" class="is-a-page wysiwyg" data-id="{{ page.id }}" data-type="{{page.contentType}}">
|
<div id="page-{{page.id}}" class="is-a-page" data-id="{{ page.id }}" data-type="{{page.contentType}}">
|
||||||
{{#if editMode}}
|
{{#if editMode}}
|
||||||
{{document/document-editor document=document folder=folder page=page meta=meta onCancel=(action 'onCancelEdit') onAction=(action 'onSavePage')}}
|
<div class="wysiwyg">
|
||||||
|
{{document/document-editor document=document folder=folder page=page meta=meta onCancel=(action 'onCancelEdit') onAction=(action 'onSavePage')}}
|
||||||
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{document/page-heading tagName=page.tagName document=document folder=folder page=page permissions=permissions tabMode=tabMode
|
{{document/page-heading document=document folder=folder page=page permissions=permissions tabMode=tabMode
|
||||||
onEdit=(action 'onEdit') onSavePageAsBlock=(action 'onSavePageAsBlock')
|
onEdit=(action 'onEdit') onSavePageAsBlock=(action 'onSavePageAsBlock')
|
||||||
onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage') onDeletePage=(action 'onDeletePage')}}
|
onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage') onDeletePage=(action 'onDeletePage')}}
|
||||||
{{section/base-renderer page=page}}
|
<div class="wysiwyg">
|
||||||
|
{{section/base-renderer page=page}}
|
||||||
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,95 +1,133 @@
|
||||||
<div class="row no-gutters document-structure">
|
<div class="row no-gutters">
|
||||||
|
|
||||||
<div id="page-title-{{ page.id }}" class="col-10 page-header">
|
<div class="col-10">
|
||||||
<span class="page-number">1</span>
|
<div class="document-structure">
|
||||||
<span class="page-title">{{page.title}}</span>
|
<div class="page-header">
|
||||||
|
<span class="page-number">1</span>
|
||||||
|
<span class="page-title">{{page.title}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="page-toolbar-{{ page.id }}" class="col-2 page-toolbar">
|
<div class="col-2">
|
||||||
{{#if permissions.documentEdit}}
|
<div class="document-structure">
|
||||||
<div class="round-button-mono" {{action 'onEdit'}}>
|
<div class="page-toolbar" id="page-toolbar-{{ page.id }}">
|
||||||
<i class="material-icons color-gray">mode_edit</i>
|
{{#if permissions.documentEdit}}
|
||||||
</div>
|
<div class="float-right">
|
||||||
{{#if hasMenuPermissions}}
|
<div id="page-edit-button-{{page.id}}" class="button-icon-gray align-middle" {{action 'onEdit'}}>
|
||||||
<div class="round-button-mono" id="page-menu-{{page.id}}">
|
<i class="material-icons">mode_edit</i>
|
||||||
<i class="material-icons color-gray">more_vert</i>
|
</div>
|
||||||
</div>
|
{{#if hasMenuPermissions}}
|
||||||
{{#dropdown-menu target=menuTarget position="top right" open="click" onOpenCallback=(action 'onMenuOpen') onCloseCallback=(action 'onMenuOpen')}}
|
<div class="button-icon-gap" />
|
||||||
<ul class="menu">
|
<div id="page-menu-button-{{page.id}}" class="button-icon-gray align-middle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
{{#if permissions.documentCopy}}
|
<i class="material-icons">more_vert</i>
|
||||||
<li class="item" id={{copyButtonId}}>Copy</li>
|
</div>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="page-menu-button-{{page.id}}">
|
||||||
|
{{#if permissions.documentCopy}}
|
||||||
|
<a class="dropdown-item" href="#" id={{concat 'copy-page-button-' page.id}} data-toggle="modal" data-target={{concat '#copy-page-modal-' page.id}} data-backdrop="static">Copy</a>
|
||||||
|
{{/if}}
|
||||||
|
{{#if permissions.documentMove}}
|
||||||
|
<a class="dropdown-item" href="#" id={{concat 'move-page-button-' page.id}} data-toggle="modal" data-target={{concat '#move-page-modal-' page.id}} data-backdrop="static">Move</a>
|
||||||
|
{{/if}}
|
||||||
|
{{#if permissions.documentTemplate}}
|
||||||
|
<a class="dropdown-item" href="#" id={{concat 'publish-page-button-' page.id}} data-toggle="modal" data-target={{concat '#publish-page-modal-' page.id}} data-backdrop="static">Publish</a>
|
||||||
|
{{/if}}
|
||||||
|
{{#if permissions.documentDelete}}
|
||||||
|
<a class="dropdown-item text-danger" href="#" id={{concat 'delete-page-button-' page.id}} data-toggle="modal" data-target={{concat '#delete-page-modal-' page.id}} data-backdrop="static">Delete</a>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if permissions.documentMove}}
|
</div>
|
||||||
<li class="item" id={{moveButtonId}}>Move</li>
|
{{/if}}
|
||||||
{{/if}}
|
</div>
|
||||||
{{#if permissions.documentTemplate}}
|
</div>
|
||||||
<li class="item" id={{publishButtonId}}>Publish</li>
|
</div>
|
||||||
{{/if}}
|
|
||||||
{{#if permissions.documentDelete}}
|
|
||||||
<li class="item danger" id={{deleteButtonId}}>Delete</li>
|
|
||||||
{{/if}}
|
|
||||||
</ul>
|
|
||||||
{{/dropdown-menu}}
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if menuOpen}}
|
{{#if permissions.documentCopy}}
|
||||||
{{#if permissions.documentDelete}}
|
<div id={{concat 'copy-page-modal-' page.id}} class="modal" tabindex="-1" role="dialog">
|
||||||
{{#dropdown-dialog target=deleteButtonId position="bottom right" button="Delete" color="flat-red" onAction=(action 'deletePage')}}
|
<div class="modal-dialog" role="document">
|
||||||
<p>Are you sure you want to delete <span class="font-weight-bold">{{page.title}}?</span></p>
|
<div class="modal-content">
|
||||||
<p>
|
<div class="modal-header">Copy Section</div>
|
||||||
{{input type="checkbox" id=checkId class="margin-left-20" checked=deleteChildren}}
|
<div class="modal-body">
|
||||||
<label for="{{checkId}}"> Delete child sections</label>
|
<div class="form-group">
|
||||||
</p>
|
<label>Destination Document</label>
|
||||||
{{/dropdown-dialog}}
|
{{ui/ui-list-picker items=documentList nameField='name' singleSelect=true maxHeight=300}}
|
||||||
{{/if}}
|
|
||||||
{{#if permissions.documentTemplate}}
|
|
||||||
{{#dropdown-dialog id=publishDialogId target=publishButtonId position="bottom right" button="Publish" color="flat-green" focusOn=blockTitleId onAction=(action 'onSavePageAsBlock')}}
|
|
||||||
<div class="form-header">
|
|
||||||
<div class="tip">
|
|
||||||
<span class="font-weight-bold">{{folder.name}}:</span> Content Block
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="input-control">
|
</div>
|
||||||
<label>Name</label>
|
<div class="modal-footer">
|
||||||
<div class="tip">Short title for reusable content block</div>
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
||||||
{{input type="text" value=blockTitle id=blockTitleId}}
|
<button type="button" class="btn btn-success" onclick={{action 'onCopyPage'}}>Copy</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if permissions.documentMove}}
|
||||||
|
<div id={{concat 'move-page-modal-' page.id}} class="modal" tabindex="-1" role="dialog">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">Move Section</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Destination Document</label>
|
||||||
|
{{ui/ui-list-picker items=documentListOthers nameField='name' singleSelect=true maxHeight=300}}
|
||||||
</div>
|
</div>
|
||||||
<div class="input-control">
|
</div>
|
||||||
<label>Description</label>
|
<div class="modal-footer">
|
||||||
<div class="tip">Short description to help others understand<br/>the reusable content block</div>
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
||||||
{{textarea rows="3" value=blockExcerpt id=blockExcerptId}}
|
<button type="button" class="btn btn-success" onclick={{action 'onMovePage'}}>Move</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if permissions.documentDelete}}
|
||||||
|
<div id={{concat 'delete-page-modal-' page.id}} class="modal" tabindex="-1" role="dialog">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">Delete Section</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<p>Are you shire you want to delete this section?</p>
|
||||||
|
<label class="form-check-label">
|
||||||
|
<input type="checkbox" class="form-check-input" checked={{deleteChildren}} />
|
||||||
|
Also delete child sections
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
||||||
|
<button type="button" class="btn btn-danger" onclick={{action 'onDeletePage'}}>Delete</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if permissions.documentTemplate}}
|
||||||
|
<div id={{concat 'publish-page-modal-' page.id}} class="modal" tabindex="-1" role="dialog">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">Publish Reusable Content Block</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="block-title-{{page.id}}">Name</label>
|
||||||
|
{{input id=(concat 'block-title-' page.id) type='text' class="form-control mousetrap" placeholder="Enter name" value=blockTitle}}
|
||||||
|
<small class="form-text text-muted">Provide a short title for the reusable content block</small>
|
||||||
</div>
|
</div>
|
||||||
{{/dropdown-dialog}}
|
<div class="form-group">
|
||||||
{{/if}}
|
<label for="block-desc-{{page.id}}">Description</label>
|
||||||
{{#if permissions.documentCopy}}
|
{{textarea id=(concat 'block-desc-' page.id) rows="3" class="form-control mousetrap" placeholder="Enter description" value=blockExcerpt}}
|
||||||
{{#dropdown-dialog id=copyDialogId target=copyButtonId position="bottom right" button="Copy" color="flat-green" onOpenCallback=(action 'onCopyDialogOpen') onAction=(action 'onCopyPage')}}
|
<small class="form-text text-muted">Short description to help others understand the reusable content block</small>
|
||||||
<div class="form-header">
|
|
||||||
<div class="tip">
|
|
||||||
<span class="font-weight-bold">Copy:</span> {{page.title}}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="input-control">
|
</div>
|
||||||
<label>Target</label>
|
<div class="modal-footer">
|
||||||
<div class="tip">Select where the content should be copied to</div>
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
||||||
{{ui-select cssClass="dropdown-page-toolbar" content=documentList action=(action 'onTargetChange') optionValuePath="id" optionLabelPath="name" selection=document}}
|
<button type="button" class="btn btn-success" onclick={{action 'onSavePageAsBlock'}}>Publish</button>
|
||||||
</div>
|
</div>
|
||||||
{{/dropdown-dialog}}
|
</div>
|
||||||
{{/if}}
|
</div>
|
||||||
{{#if permissions.documentMove}}
|
</div>
|
||||||
{{#dropdown-dialog id=moveDialogId target=moveButtonId position="bottom right" button="Move" color="flat-green" onOpenCallback=(action 'onCopyDialogOpen') onAction=(action 'onMovePage')}}
|
{{/if}}
|
||||||
<div class="form-header">
|
|
||||||
<div class="tip">
|
|
||||||
<span class="font-weight-bold">Move:</span> {{page.title}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="input-control">
|
|
||||||
<label>Target</label>
|
|
||||||
<div class="tip">Select where the content should be moved to</div>
|
|
||||||
{{ui-select cssClass="dropdown-page-toolbar" content=documentListOthers action=(action 'onTargetChange') optionValuePath="id" optionLabelPath="name"}}
|
|
||||||
</div>
|
|
||||||
{{/dropdown-dialog}}
|
|
||||||
{{/if}}
|
|
||||||
{{/if}}
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
||||||
<button type="button" class="btn btn-outline-success" onclick={{action 'onSaveTemplate'}}>Save</button>
|
<button type="button" class="btn btn-success" onclick={{action 'onSaveTemplate'}}>Save</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
||||||
<button type="button" class="btn btn-outline-success" onclick={{action 'onSpaceInvite'}}>Invite</button>
|
<button type="button" class="btn btn-success" onclick={{action 'onSpaceInvite'}}>Invite</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -93,7 +93,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
||||||
<button type="button" class="btn btn-outline-success" onclick={{action 'onAddSpace'}}>Add</button>
|
<button type="button" class="btn btn-success" onclick={{action 'onAddSpace'}}>Add</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</button>
|
||||||
<button type="button" class="btn btn-outline-success" onclick={{action 'onAddSpace'}}>Add</button>
|
<button type="button" class="btn btn-success" onclick={{action 'onAddSpace'}}>Add</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -39,20 +39,3 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/toolbar/t-actions}}
|
{{/toolbar/t-actions}}
|
||||||
{{/toolbar/t-toolbar}}
|
{{/toolbar/t-toolbar}}
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col col-sm-8">
|
|
||||||
<div class="toolbar">
|
|
||||||
<ul class="links">
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col col-sm-4">
|
|
||||||
<div class="toolbar">
|
|
||||||
<div class="buttons">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<div class="widget-list-picker">
|
<div class="widget-list-picker">
|
||||||
<ul class="options">
|
<ul class="options" style="{{{styleCss}}}">
|
||||||
{{#each items as |item|}}
|
{{#each items as |item|}}
|
||||||
<li class="option {{if item.selected 'selected'}}" {{action 'onToggle' item}}>
|
<li class="option {{if item.selected 'selected'}}" {{action 'onToggle' item}}>
|
||||||
<div class="text text-truncate">{{get item nameField}}</div>
|
<div class="text text-truncate">{{get item nameField}}</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue