mirror of
https://github.com/documize/community.git
synced 2025-07-19 13:19:43 +02:00
space related bug fixesx
This commit is contained in:
parent
f2794a9836
commit
c77b384215
10 changed files with 675 additions and 655 deletions
|
@ -97,6 +97,7 @@ func (h *Handler) Add(w http.ResponseWriter, r *http.Request) {
|
|||
sp.OrgID = ctx.OrgID
|
||||
sp.Type = space.ScopePrivate
|
||||
sp.UserID = ctx.UserID
|
||||
sp.Type = space.ScopePrivate
|
||||
|
||||
err = h.Store.Space.Add(ctx, sp)
|
||||
if err != nil {
|
||||
|
@ -268,6 +269,25 @@ func (h *Handler) Add(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
// update space to reflect it's type (public/protected/private)
|
||||
toClone, err := h.Store.Space.Get(ctx, model.CloneID)
|
||||
if err != nil {
|
||||
ctx.Transaction.Rollback()
|
||||
response.WriteServerError(w, method, err)
|
||||
h.Runtime.Log.Error(method, err)
|
||||
return
|
||||
}
|
||||
|
||||
sp.Type = toClone.Type
|
||||
|
||||
err = h.Store.Space.Update(ctx, sp)
|
||||
if err != nil {
|
||||
ctx.Transaction.Rollback()
|
||||
response.WriteServerError(w, method, err)
|
||||
h.Runtime.Log.Error(method, err)
|
||||
return
|
||||
}
|
||||
|
||||
ctx.Transaction.Commit()
|
||||
}
|
||||
|
||||
|
@ -300,7 +320,7 @@ func (h *Handler) Get(w http.ResponseWriter, r *http.Request) {
|
|||
response.WriteJSON(w, sp)
|
||||
}
|
||||
|
||||
// GetAlGetViewablel returns spaces the user can see.
|
||||
// GetViewable returns spaces the user can see.
|
||||
func (h *Handler) GetViewable(w http.ResponseWriter, r *http.Request) {
|
||||
method := "space.GetViewable"
|
||||
ctx := domain.GetRequestContext(r)
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
package mysql
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
|
@ -72,7 +73,7 @@ func (s Scope) PublicSpaces(ctx domain.RequestContext, orgID string) (sp []space
|
|||
// GetViewable returns spaces that the user can see.
|
||||
// Also handles which spaces can be seen by anonymous users.
|
||||
func (s Scope) GetViewable(ctx domain.RequestContext) (sp []space.Space, err error) {
|
||||
sql := `
|
||||
q := `
|
||||
SELECT id,refid,label as name,orgid,userid,type,created,revised FROM label
|
||||
WHERE orgid=?
|
||||
AND refid IN (SELECT refid FROM permission WHERE orgid=? AND location='space' AND refid IN (
|
||||
|
@ -82,7 +83,7 @@ func (s Scope) GetViewable(ctx domain.RequestContext) (sp []space.Space, err err
|
|||
))
|
||||
ORDER BY name`
|
||||
|
||||
err = s.Runtime.Db.Select(&sp, sql,
|
||||
err = s.Runtime.Db.Select(&sp, q,
|
||||
ctx.OrgID,
|
||||
ctx.OrgID,
|
||||
ctx.OrgID,
|
||||
|
@ -90,6 +91,10 @@ func (s Scope) GetViewable(ctx domain.RequestContext) (sp []space.Space, err err
|
|||
ctx.OrgID,
|
||||
ctx.UserID)
|
||||
|
||||
if err == sql.ErrNoRows {
|
||||
err = nil
|
||||
sp = []space.Space{}
|
||||
}
|
||||
if err != nil {
|
||||
err = errors.Wrap(err, fmt.Sprintf("failed space.GetViewable org %s", ctx.OrgID))
|
||||
}
|
||||
|
|
|
@ -163,6 +163,11 @@ func (s Scope) GetSpaceUsers(ctx domain.RequestContext, spaceID string) (u []use
|
|||
|
||||
// GetUsersForSpaces returns users with access to specified spaces.
|
||||
func (s Scope) GetUsersForSpaces(ctx domain.RequestContext, spaces []string) (u []user.User, err error) {
|
||||
if len(spaces) == 0 {
|
||||
u = []user.User{}
|
||||
return
|
||||
}
|
||||
|
||||
query, args, err := sqlx.In(`
|
||||
SELECT u.id, u.refid, u.firstname, u.lastname, u.email, u.initials, u.password, u.salt, u.reset, u.created, u.revised, u.global,
|
||||
a.active, a.users AS viewusers, a.editor, a.admin
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -31,7 +31,6 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
|
|||
|
||||
didReceiveAttrs() {
|
||||
this._super(...arguments);
|
||||
|
||||
this.loadBlocks();
|
||||
|
||||
Ember.run.schedule('afterRender', () => {
|
||||
|
@ -44,13 +43,11 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
|
|||
|
||||
didRender() {
|
||||
this._super(...arguments);
|
||||
|
||||
this.contentLinkHandler();
|
||||
},
|
||||
|
||||
didInsertElement() {
|
||||
this._super(...arguments);
|
||||
|
||||
this.setupAddWizard();
|
||||
|
||||
let self = this;
|
||||
|
@ -61,9 +58,8 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
|
|||
|
||||
willDestroyElement() {
|
||||
this._super(...arguments);
|
||||
|
||||
$('.start-section:not(.start-section-empty-state)').off('.hoverIntent');
|
||||
|
||||
|
||||
this.destroyTooltips();
|
||||
},
|
||||
|
||||
|
@ -112,7 +108,7 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
|
|||
// out
|
||||
$(this).find('.start-button').velocity("transition.slideUpOut", {duration: 300});
|
||||
} });
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
addSection(model) {
|
||||
|
@ -261,7 +257,7 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
|
|||
this.set('toEdit', '');
|
||||
}
|
||||
|
||||
this.setupAddWizard();
|
||||
this.setupAddWizard();
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -298,8 +294,8 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
|
|||
const promise = this.addSection(model);
|
||||
promise.then((id) => {
|
||||
this.set('pageId', id);
|
||||
|
||||
this.setupAddWizard();
|
||||
|
||||
this.setupAddWizard();
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -311,6 +307,6 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
|
|||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -100,6 +100,16 @@ export default Ember.Component.extend(NotifierMixin, {
|
|||
permission.get('documentMove') || permission.get('documentCopy') || permission.get('documentTemplate'));
|
||||
});
|
||||
|
||||
// see if more than oen user is granted access to space (excluding everyone)
|
||||
let roleCount = 0;
|
||||
permissions.forEach((permission) => {
|
||||
if (permission.get('userId') !== "0" &&
|
||||
(permission.get('spaceView') || permission.get('documentAdd') || permission.get('documentEdit') || permission.get('documentDelete') ||
|
||||
permission.get('documentMove') || permission.get('documentCopy') || permission.get('documentTemplate'))) {
|
||||
roleCount += 1;
|
||||
}
|
||||
});
|
||||
|
||||
this.get('folderService').savePermissions(folder.get('id'), payload).then(() => {
|
||||
this.showNotification('Saved permissions');
|
||||
});
|
||||
|
@ -108,7 +118,7 @@ export default Ember.Component.extend(NotifierMixin, {
|
|||
folder.markAsPublic();
|
||||
this.showNotification('Marked space as public');
|
||||
} else {
|
||||
if (permissions.length > 1) {
|
||||
if (roleCount > 1) {
|
||||
folder.markAsRestricted();
|
||||
this.showNotification('Marked space as protected');
|
||||
} else {
|
||||
|
|
|
@ -41,10 +41,10 @@ export default Ember.Component.extend(TooltipMixin, NotifierMixin, AuthMixin, {
|
|||
publicFolders.pushObject(folder);
|
||||
}
|
||||
if (folder.get('folderType') === constants.FolderType.Private) {
|
||||
protectedFolders.pushObject(folder);
|
||||
privateFolders.pushObject(folder);
|
||||
}
|
||||
if (folder.get('folderType') === constants.FolderType.Protected) {
|
||||
privateFolders.pushObject(folder);
|
||||
protectedFolders.pushObject(folder);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -32,23 +32,6 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
|||
this.set('links', data.links);
|
||||
resolve();
|
||||
});
|
||||
|
||||
// this.get('documentService').getDocument(this.get('documentId')).then((document) => {
|
||||
// this.set('document', document);
|
||||
|
||||
// this.get('folderService').getAll().then((folders) => {
|
||||
// this.set('folders', folders);
|
||||
|
||||
// this.get('folderService').getFolder(this.get('folderId')).then((folder) => {
|
||||
// this.set('folder', folder);
|
||||
|
||||
// this.get('folderService').setCurrentFolder(folder).then(() => {
|
||||
// this.set('permissions', this.get('folderService').get('permissions'));
|
||||
// resolve();
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
@ -10,12 +10,13 @@
|
|||
// https://documize.com
|
||||
|
||||
import Ember from 'ember';
|
||||
import NotifierMixin from '../../../mixins/notifier';
|
||||
|
||||
const {
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default Ember.Controller.extend({
|
||||
export default Ember.Controller.extend(NotifierMixin, {
|
||||
documentService: service('document'),
|
||||
folderService: service('folder'),
|
||||
localStorage: service('localStorage'),
|
||||
|
|
|
@ -336,7 +336,7 @@ export default Ember.Service.extend({
|
|||
let doc = this.get('store').normalize('document', response.document);
|
||||
doc = this.get('store').push(doc);
|
||||
|
||||
let perms = this.get('store').normalize('space-permission', response);
|
||||
let perms = this.get('store').normalize('space-permission', response.permissions);
|
||||
perms= this.get('store').push(perms);
|
||||
this.get('folderService').set('permissions', perms);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue