mirror of
https://github.com/documize/community.git
synced 2025-07-20 21:59:42 +02:00
global space admin re-worked
This commit is contained in:
parent
ba5988dca3
commit
620fe28b27
5 changed files with 95 additions and 15 deletions
|
@ -284,18 +284,18 @@ func (s Scope) Delete(ctx domain.RequestContext, documentID string) (rows int64,
|
|||
// Remove document pages, revisions, attachments, updates the search subsystem.
|
||||
func (s Scope) DeleteBySpace(ctx domain.RequestContext, spaceID string) (rows int64, err error) {
|
||||
b := mysql.BaseQuery{}
|
||||
rows, err = b.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE from page WHERE labelid=\"%s\" AND orgid=\"%s\"", spaceID, ctx.OrgID))
|
||||
rows, err = b.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE from page WHERE documentid IN (SELECT refid FROM document WHERE labelid=\"%s\" AND orgid=\"%s\")", spaceID, ctx.OrgID))
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = b.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE from revision WHERE labelid=\"%s\" AND orgid=\"%s\"", spaceID, ctx.OrgID))
|
||||
_, err = b.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE from revision WHERE documentid IN (SELECT refid FROM document WHERE labelid=\"%s\" AND orgid=\"%s\")", spaceID, ctx.OrgID))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = b.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE from attachment WHERE labelid=\"%s\" AND orgid=\"%s\"", spaceID, ctx.OrgID))
|
||||
_, err = b.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE from attachment WHERE documentid IN (SELECT refid FROM document WHERE labelid=\"%s\" AND orgid=\"%s\")", spaceID, ctx.OrgID))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -11,10 +11,16 @@
|
|||
|
||||
import Ember from 'ember';
|
||||
import NotifierMixin from '../../../mixins/notifier';
|
||||
import DropdownMixin from '../../../mixins/dropdown';
|
||||
|
||||
export default Ember.Controller.extend(NotifierMixin, {
|
||||
export default Ember.Controller.extend(NotifierMixin, DropdownMixin, {
|
||||
folderService: Ember.inject.service('folder'),
|
||||
folders: [],
|
||||
dropdown: null,
|
||||
deleteSpace: {
|
||||
id: '',
|
||||
name: ''
|
||||
},
|
||||
|
||||
label: function () {
|
||||
switch (this.get('folders').length) {
|
||||
|
@ -25,16 +31,65 @@ export default Ember.Controller.extend(NotifierMixin, {
|
|||
}
|
||||
}.property('folders'),
|
||||
|
||||
actions: {
|
||||
changeOwner: function (folderId, userId) {
|
||||
this.get('folderService').getFolder(folderId).then((folder) => {
|
||||
folder.set('userId', userId);
|
||||
|
||||
this.get('folderService').save(folder).then(() => {
|
||||
this.showNotification("Changed");
|
||||
willDestroyElement() {
|
||||
this.destroyDropdown();
|
||||
},
|
||||
|
||||
actions: {
|
||||
onShow(spaceId) {
|
||||
this.set('deleteSpace.id', spaceId);
|
||||
this.set('deleteSpace.name', '');
|
||||
$(".delete-space-dialog").css("display", "block");
|
||||
$('#delete-space-name').removeClass('error');
|
||||
|
||||
let drop = new Drop({
|
||||
target: $("#delete-space-button-" + spaceId)[0],
|
||||
content: $(".delete-space-dialog")[0],
|
||||
classes: 'drop-theme-basic',
|
||||
position: "bottom right",
|
||||
openOn: "always",
|
||||
tetherOptions: {
|
||||
offset: "5px 0",
|
||||
targetOffset: "10px 0"
|
||||
},
|
||||
remove: false
|
||||
});
|
||||
|
||||
this.send('onChangeOwner');
|
||||
this.set('dropdown', drop);
|
||||
},
|
||||
|
||||
onCancel() {
|
||||
this.closeDropdown();
|
||||
},
|
||||
|
||||
onDelete() {
|
||||
let deleteSpace = this.get('deleteSpace');
|
||||
let spaceId = deleteSpace.id;
|
||||
let spaceNameTyped = deleteSpace.name;
|
||||
let space = this.get('folders').findBy('id', spaceId);
|
||||
let spaceName = space.get('name');
|
||||
|
||||
if (spaceNameTyped !== spaceName || spaceNameTyped === '' || spaceName === '') {
|
||||
$('#delete-space-name').addClass('error').focus();
|
||||
return;
|
||||
}
|
||||
|
||||
this.closeDropdown();
|
||||
|
||||
this.get('folderService').delete(spaceId).then(() => { /* jshint ignore:line */
|
||||
this.set('deleteSpace.id', '');
|
||||
this.set('deleteSpace.name', '');
|
||||
this.showNotification("Deleted");
|
||||
|
||||
this.get('folderService').adminList().then((folders) => {
|
||||
let nonPrivateFolders = folders.rejectBy('folderType', 2);
|
||||
if (is.empty(nonPrivateFolders) || is.null(folders) || is.undefined(folders)) {
|
||||
nonPrivateFolders = [];
|
||||
}
|
||||
|
||||
this.set('folders', nonPrivateFolders);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{{#if folders}}
|
||||
|
||||
<div class="global-folder-settings">
|
||||
<div class="form-header">
|
||||
<div class="title">{{folders.length}} shared {{label}}</div>
|
||||
|
@ -10,17 +11,41 @@
|
|||
{{#link-to 'folder' folder.id folder.slug class="alt"}}{{folder.name}}{{/link-to}}
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
|
||||
<div id="delete-space-button-{{folder.id}}" class="round-button-mono" title="Delete" {{action "onShow" folder.id}}>
|
||||
<i class="material-icons">delete</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dropdown-dialog delete-space-dialog">
|
||||
<div class="content">
|
||||
<p>Are you sure you want to delete this space and all associated documents?</p>
|
||||
<div class="input-control">
|
||||
<div class="tip">Please type the space name to confirm</div>
|
||||
{{input type='text' id="delete-space-name" value=deleteSpace.name}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<div class="flat-button" {{action 'onCancel'}}>
|
||||
cancel
|
||||
</div>
|
||||
<div class="flat-button flat-red" {{action 'onDelete'}}>
|
||||
delete
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
{{else}}
|
||||
|
||||
<div class="global-folder-settings">
|
||||
<div class="form-header">
|
||||
<div class="title">{{folders.length}} shared {{label}}</div>
|
||||
<div class="tip">There are no spaces to maintain</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/if}}
|
|
@ -86,13 +86,13 @@
|
|||
}
|
||||
}
|
||||
|
||||
.edit-user-dialog, .delete-user-dialog {
|
||||
.edit-user-dialog, .delete-user-dialog, .delete-space-dialog {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.manage-space-list {
|
||||
> .space {
|
||||
margin: 10px 0;
|
||||
margin: 20px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -86,7 +86,7 @@
|
|||
|
||||
{{#if permissions.spaceOwner}}
|
||||
{{#dropdown-dialog target="space-delete-button" position="bottom right" button="Delete" color="flat-red" onAction=(action 'deleteSpace')}}
|
||||
<p>Are you sure you want this space and all associated documents?</p>
|
||||
<p>Are you sure you want to delete this space and all associated documents?</p>
|
||||
<div class="input-control">
|
||||
<div class="tip">Please type the space name to confirm</div>
|
||||
{{input type='text' id="delete-space-name" value=deleteSpaceName}}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue