mirror of
https://github.com/documize/community.git
synced 2025-07-24 23:59:47 +02:00
clone space!
This commit is contained in:
parent
866b4eba8a
commit
bf390ed0b9
18 changed files with 302 additions and 108 deletions
|
@ -24,9 +24,10 @@ export default Ember.Component.extend(TooltipMixin, NotifierMixin, AuthMixin, {
|
|||
hasPrivateFolders: false,
|
||||
newFolder: '',
|
||||
copyTemplate: true,
|
||||
copyBlock: true,
|
||||
copyPermission: true,
|
||||
copyDocument: false,
|
||||
clonedSpace: { id: "" },
|
||||
showSpace: false,
|
||||
|
||||
didReceiveAttrs() {
|
||||
let folders = this.get('folders');
|
||||
|
@ -60,17 +61,42 @@ export default Ember.Component.extend(TooltipMixin, NotifierMixin, AuthMixin, {
|
|||
},
|
||||
|
||||
actions: {
|
||||
addFolder() {
|
||||
var folderName = this.get('newFolder');
|
||||
onToggleNewSpace() {
|
||||
let val = !this.get('showSpace');
|
||||
this.set('showSpace', val);
|
||||
|
||||
if (val) {
|
||||
Ember.run.schedule('afterRender', () => {
|
||||
$("#new-folder-name").focus();
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
onCloneSpaceSelect(sp) {
|
||||
this.set('clonedSpace', sp)
|
||||
},
|
||||
|
||||
onAdd() {
|
||||
let folderName = this.get('newFolder');
|
||||
let clonedId = this.get('clonedSpace.id');
|
||||
|
||||
if (is.empty(folderName)) {
|
||||
$("#new-folder-name").addClass("error").focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
this.attrs.onFolderAdd(folderName);
|
||||
let payload = {
|
||||
name: folderName,
|
||||
CloneID: clonedId,
|
||||
copyTemplate: this.get('copyTemplate'),
|
||||
copyPermission: this.get('copyPermission'),
|
||||
copyDocument: this.get('copyDocument'),
|
||||
}
|
||||
|
||||
this.attrs.onAddSpace(payload);
|
||||
this.set('showSpace', false);
|
||||
this.set('newFolder', '');
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,13 +51,13 @@ export default Ember.Component.extend(TooltipMixin, NotifierMixin, AuthMixin, {
|
|||
let folder = this.get('folder');
|
||||
this.set('pinState.pinId', this.get('pinned').isSpacePinned(folder.get('id')));
|
||||
this.set('pinState.isPinned', this.get('pinState.pinId') !== '');
|
||||
this.set('pinState.newName', folder.get('name').substring(0,3).toUpperCase());
|
||||
this.set('pinState.newName', folder.get('name').substring(0,3).toUpperCase());
|
||||
}
|
||||
},
|
||||
|
||||
actions: {
|
||||
onFolderAdd(folderName) {
|
||||
this.attrs.onFolderAdd(folderName);
|
||||
onAddSpace(m) {
|
||||
this.attrs.onAddSpace(m);
|
||||
return true;
|
||||
},
|
||||
|
||||
|
|
|
@ -62,11 +62,11 @@ export default Ember.Controller.extend(NotifierMixin, {
|
|||
});
|
||||
},
|
||||
|
||||
onFolderAdd(folder) {
|
||||
onAddSpace(payload) {
|
||||
let self = this;
|
||||
this.showNotification("Added");
|
||||
|
||||
this.get('folderService').add({ name: folder }).then(function (newFolder) {
|
||||
this.get('folderService').add(payload).then(function (newFolder) {
|
||||
self.get('folderService').setCurrentFolder(newFolder);
|
||||
self.transitionToRoute('folder', newFolder.get('id'), newFolder.get('slug'));
|
||||
});
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{{#layout/zone-container}}
|
||||
{{#layout/zone-sidebar}}
|
||||
{{folder/sidebar-zone folders=model.folders folder=model.folder isFolderOwner=model.isFolderOwner isEditor=model.isEditor tab=tab
|
||||
onFolderAdd=(action 'onFolderAdd')}}
|
||||
onAddSpace=(action 'onAddSpace')}}
|
||||
{{/layout/zone-sidebar}}
|
||||
{{#layout/zone-content}}
|
||||
{{folder/folder-heading folder=model.folder isFolderOwner=model.isFolderOwner isEditor=model.isEditor}}
|
||||
|
|
|
@ -16,11 +16,11 @@ export default Ember.Controller.extend(NotifierMixin, {
|
|||
folderService: Ember.inject.service('folder'),
|
||||
|
||||
actions: {
|
||||
onFolderAdd(folder) {
|
||||
onAddSpace(m) {
|
||||
let self = this;
|
||||
this.showNotification("Added");
|
||||
|
||||
this.get('folderService').add({ name: folder }).then(function (newFolder) {
|
||||
this.get('folderService').add(m).then(function (newFolder) {
|
||||
self.get('folderService').setCurrentFolder(newFolder);
|
||||
self.transitionToRoute('folder', newFolder.get('id'), newFolder.get('slug'));
|
||||
});
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{{#layout/zone-container}}
|
||||
{{#layout/zone-sidebar}}
|
||||
{{folder/sidebar-zone folders=model noFolder=true isFolderOwner=false isEditor=false
|
||||
onFolderAdd=(action 'onFolderAdd')}}
|
||||
onAddSpace=(action 'onAddSpace')}}
|
||||
{{/layout/zone-sidebar}}
|
||||
{{#layout/zone-content}}
|
||||
{{/layout/zone-content}}
|
||||
|
|
|
@ -29,10 +29,10 @@ export default BaseService.extend({
|
|||
canEditCurrentFolder: false,
|
||||
|
||||
// Add a new folder.
|
||||
add(folder) {
|
||||
add(payload) {
|
||||
return this.get('ajax').post(`folders`, {
|
||||
contentType: 'json',
|
||||
data: JSON.stringify(folder)
|
||||
data: JSON.stringify(payload)
|
||||
}).then((folder) => {
|
||||
let data = this.get('store').normalize('folder', folder);
|
||||
return this.get('store').push(data);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
.content-linker-dialog {
|
||||
width: 350px;
|
||||
height: 350px;
|
||||
height: 450px;
|
||||
overflow-y: auto;
|
||||
|
||||
.link-list {
|
||||
|
|
|
@ -7,10 +7,9 @@
|
|||
margin: 0 0 5px 0;
|
||||
|
||||
> .material-icons {
|
||||
font-size: 1.4rem;
|
||||
font-size: 1rem;
|
||||
color: $color-gray;
|
||||
vertical-align: top;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
> .selected {
|
||||
|
@ -20,6 +19,13 @@
|
|||
&:hover {
|
||||
color: $color-link;
|
||||
}
|
||||
|
||||
> .text {
|
||||
display: inline-block;
|
||||
font-size: 0.9rem;
|
||||
vertical-align: text-top;
|
||||
color: $color-off-black;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-checkbox-selected {
|
||||
|
|
|
@ -189,6 +189,7 @@
|
|||
pointer-events: none;
|
||||
font-weight: bold;
|
||||
color: $color-off-black;
|
||||
@extend .no-select;
|
||||
}
|
||||
|
||||
> .tip {
|
||||
|
@ -198,6 +199,7 @@
|
|||
padding: 0;
|
||||
font-family: $font-light;
|
||||
text-align: left;
|
||||
@extend .no-select;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
{{#each matches.documents as |m|}}
|
||||
<li class="link-item" {{ action 'setSelection' m }}>
|
||||
{{#ui/ui-selection selected=m.selected}}
|
||||
{{m.title}}
|
||||
{{m.title}}<br/><span class="color-gray">{{m.context}}</span>
|
||||
{{/ui/ui-selection}}
|
||||
</li>
|
||||
{{/each}}
|
||||
|
|
|
@ -1,74 +1,76 @@
|
|||
<div class="sidebar-panel">
|
||||
<div class="folders-list">
|
||||
|
||||
{{#if session.isEditor}}
|
||||
<div class="comment-box document-sidebar-form-wrapper">
|
||||
<div class="input-control">
|
||||
<label>New space</label>
|
||||
<div class="tip">A place for related documents</div>
|
||||
{{input type='text' id="new-folder-name" class="mousetrap" value=newFolder}}
|
||||
<p>Copy existing space</p>
|
||||
{{#ui/ui-checkbox selected=copyTemplate}}Templates{{/ui/ui-checkbox}}
|
||||
{{#ui/ui-checkbox selected=copyBlock}}Reusable content{{/ui/ui-checkbox}}
|
||||
{{#ui/ui-checkbox selected=copyPermission}}Permissions{{/ui/ui-checkbox}}
|
||||
{{#ui/ui-checkbox selected=copyDocument}}Documents{{/ui/ui-checkbox}}
|
||||
{{#unless showSpace}}
|
||||
<div id="add-space-button" class="regular-button button-white" {{action "onToggleNewSpace"}}>
|
||||
<i class="material-icons">add</i>
|
||||
<div class="name">Space</div>
|
||||
</div>
|
||||
<div class="regular-button button-blue">Add</div>
|
||||
</div>
|
||||
|
||||
<div id="add-space-button" class="regular-button button-white">
|
||||
<i class="material-icons">add</i>
|
||||
<div class="name">Space</div>
|
||||
</div>
|
||||
{{#dropdown-dialog target="add-space-button" position="bottom left" button="Add" color="flat-green" onAction=(action 'addFolder') focusOn="new-folder-name" }}
|
||||
<div>
|
||||
{{else}}
|
||||
<div class="comment-box document-sidebar-form-wrapper">
|
||||
<div class="input-control">
|
||||
<label>New Space</label>
|
||||
<div class="tip">Every space contains related documents</div>
|
||||
{{input type='text' id="new-folder-name" class="mousetrap" value=newFolder}}
|
||||
<p class="margin-top-30">Optionally, clone existing space</p>
|
||||
{{ui-select id="owners-dropdown" content=folders prompt="select space" action=(action 'onCloneSpaceSelect') optionValuePath="id" optionLabelPath="name" selection=cloneSpace}}
|
||||
<div class="margin-top-20" />
|
||||
{{#ui/ui-checkbox selected=copyTemplate}}Templates{{/ui/ui-checkbox}}
|
||||
{{#ui/ui-checkbox selected=copyPermission}}Permissions{{/ui/ui-checkbox}}
|
||||
{{#ui/ui-checkbox selected=copyDocument}}Documents{{/ui/ui-checkbox}}
|
||||
</div>
|
||||
<div class="regular-button button-blue" {{action "onAdd"}}>Add</div>
|
||||
<div class="flat-button flat-gray" {{action "onToggleNewSpace"}}>Cancel</div>
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{/if}}
|
||||
|
||||
<div class="section">
|
||||
<div class="heading">EVERYONE</div>
|
||||
{{#unless hasPublicFolders}}
|
||||
<div class="message margin-left-15">No global spaces</div>
|
||||
{{/unless}}
|
||||
<ul class="list">
|
||||
{{#each publicFolders as |folder|}}
|
||||
{{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
|
||||
<li class="item">{{ folder.name }}</li>
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{#if session.authenticated}}
|
||||
<div class="section">
|
||||
<div class="heading">TEAM</div>
|
||||
{{#unless hasProtectedFolders}}
|
||||
<div class="message margin-left-15">No protected spaces</div>
|
||||
{{/unless}}
|
||||
<ul class="list">
|
||||
{{#each protectedFolders as |folder|}}
|
||||
{{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
|
||||
<li class="item">{{ folder.name }}</li>
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="heading">PERSONAL</div>
|
||||
{{#unless hasPrivateFolders}}
|
||||
<div class="message margin-left-15">No private spaces</div>
|
||||
{{/unless}}
|
||||
<ul class="list">
|
||||
{{#each privateFolders as |folder|}}
|
||||
{{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
|
||||
<li class="item">{{ folder.name }}</li>
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#unless showSpace}}
|
||||
<div class="section">
|
||||
<div class="heading">EVERYONE</div>
|
||||
{{#unless hasPublicFolders}}
|
||||
<div class="message margin-left-15">No global spaces</div>
|
||||
{{/unless}}
|
||||
<ul class="list">
|
||||
{{#each publicFolders as |folder|}}
|
||||
{{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
|
||||
<li class="item">{{ folder.name }}</li>
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{#if session.authenticated}}
|
||||
<div class="section">
|
||||
<div class="heading">TEAM</div>
|
||||
{{#unless hasProtectedFolders}}
|
||||
<div class="message margin-left-15">No protected spaces</div>
|
||||
{{/unless}}
|
||||
<ul class="list">
|
||||
{{#each protectedFolders as |folder|}}
|
||||
{{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
|
||||
<li class="item">{{ folder.name }}</li>
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="heading">PERSONAL</div>
|
||||
{{#unless hasPrivateFolders}}
|
||||
<div class="message margin-left-15">No private spaces</div>
|
||||
{{/unless}}
|
||||
<ul class="list">
|
||||
{{#each privateFolders as |folder|}}
|
||||
{{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
|
||||
<li class="item">{{ folder.name }}</li>
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
<li class="item" {{action 'onUnpin'}}>Unpin</li>
|
||||
{{else}}
|
||||
<li class="item" id="pin-space-button">Pin</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</ul>
|
||||
{{/dropdown-menu}}
|
||||
|
||||
|
@ -54,14 +54,14 @@
|
|||
|
||||
<div class="sidebar-wrapper">
|
||||
{{#if (is-equal tab 'index')}}
|
||||
{{folder/sidebar-folders-list folders=folders folder=folder isFolderOwner=isFolderOwner onFolderAdd=(action 'onFolderAdd')}}
|
||||
{{folder/sidebar-folders-list folders=folders folder=folder isFolderOwner=isFolderOwner onAddSpace=(action 'onAddSpace')}}
|
||||
{{/if}}
|
||||
|
||||
{{#if (is-equal tab 'share')}}
|
||||
{{folder/sidebar-share folders=folders folder=folder}}
|
||||
{{folder/sidebar-share folders=folders folder=folder}}
|
||||
{{/if}}
|
||||
|
||||
{{#if (is-equal tab 'permissions')}}
|
||||
{{folder/sidebar-permissions folders=folders folder=folder}}
|
||||
{{folder/sidebar-permissions folders=folders folder=folder}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
{{else}}
|
||||
<i class="material-icons">check_box_outline_blank</i>
|
||||
{{/if}}
|
||||
{{yield}}
|
||||
<div class="text">{{yield}}</div>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue