mirror of
https://github.com/documize/community.git
synced 2025-07-25 16:19:46 +02:00
Create folder model and push data into the store
This commit is contained in:
parent
624d00402e
commit
87f7631880
5 changed files with 93 additions and 21 deletions
12
app/app/models/folder-permission.js
Normal file
12
app/app/models/folder-permission.js
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import Model from 'ember-data/model';
|
||||||
|
import attr from 'ember-data/attr';
|
||||||
|
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||||
|
|
||||||
|
export default Model.extend({
|
||||||
|
orgId: attr('string'),
|
||||||
|
folderId: attr('string'),
|
||||||
|
userId: attr('string'),
|
||||||
|
fullname: attr('string'),
|
||||||
|
canView: attr('boolean', { defaultValue: false }),
|
||||||
|
canEdit: attr('boolean', { defaultValue: false })
|
||||||
|
});
|
|
@ -1,7 +1,33 @@
|
||||||
import Model from 'ember-data/model';
|
import Model from 'ember-data/model';
|
||||||
// import attr from 'ember-data/attr';
|
import attr from 'ember-data/attr';
|
||||||
|
import constants from '../utils/constants';
|
||||||
|
import stringUtil from '../utils/string';
|
||||||
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||||
|
|
||||||
export default Model.extend({
|
export default Model.extend({
|
||||||
|
name: attr('string'),
|
||||||
|
orgId: attr('string'),
|
||||||
|
userId: attr('string'),
|
||||||
|
folderType: constants.FolderType.Private,
|
||||||
|
|
||||||
|
slug: Ember.computed('name', function () {
|
||||||
|
return stringUtil.makeSlug(this.get('name'));
|
||||||
|
}),
|
||||||
|
|
||||||
|
markAsRestricted: function () {
|
||||||
|
this.set('folderType', constants.FolderType.Protected);
|
||||||
|
},
|
||||||
|
|
||||||
|
markAsPrivate: function () {
|
||||||
|
this.set('folderType', constants.FolderType.Private);
|
||||||
|
},
|
||||||
|
|
||||||
|
markAsPublic: function () {
|
||||||
|
this.set('folderType', constants.FolderType.Public);
|
||||||
|
},
|
||||||
|
|
||||||
|
// client-side prop that holds who can see this folder
|
||||||
|
sharedWith: attr(),
|
||||||
|
created: attr(),
|
||||||
|
revised: attr()
|
||||||
});
|
});
|
||||||
|
|
17
app/app/models/protected-folder-participant.js
Normal file
17
app/app/models/protected-folder-participant.js
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import Model from 'ember-data/model';
|
||||||
|
import attr from 'ember-data/attr';
|
||||||
|
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||||
|
|
||||||
|
export default Model.extend({
|
||||||
|
userId: attr('string'),
|
||||||
|
email: attr('string'),
|
||||||
|
firstname: attr('string'),
|
||||||
|
lastname: attr('string'),
|
||||||
|
name: attr('string'),
|
||||||
|
folderId: attr('string'),
|
||||||
|
folderType: attr('number', { defaultValue: 0 }),
|
||||||
|
|
||||||
|
fullname: Ember.computed('firstname', 'lastname', function () {
|
||||||
|
return `${this.get('firstname')} ${this.get('lastname')}`;
|
||||||
|
})
|
||||||
|
});
|
11
app/app/serializers/folder-permission.js
Normal file
11
app/app/serializers/folder-permission.js
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import ApplicationSerializer from './application';
|
||||||
|
|
||||||
|
export default ApplicationSerializer.extend({
|
||||||
|
normalize(modelClass, resourceHash) {
|
||||||
|
return {
|
||||||
|
id: resourceHash.folderId,
|
||||||
|
type: modelClass.modelName,
|
||||||
|
attributes: resourceHash
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
|
@ -10,8 +10,8 @@
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
import models from '../utils/model';
|
|
||||||
import BaseService from '../services/base';
|
import BaseService from '../services/base';
|
||||||
|
import models from '../utils/model';
|
||||||
|
|
||||||
const {
|
const {
|
||||||
get,
|
get,
|
||||||
|
@ -35,8 +35,8 @@ export default BaseService.extend({
|
||||||
contentType: 'json',
|
contentType: 'json',
|
||||||
data: JSON.stringify(folder)
|
data: JSON.stringify(folder)
|
||||||
}).then((folder) => {
|
}).then((folder) => {
|
||||||
let folderModel = models.FolderModel.create(folder);
|
let data = this.get('store').normalize('folder', folder);
|
||||||
return folderModel;
|
return this.get('store').push({ data: data });
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -45,19 +45,18 @@ export default BaseService.extend({
|
||||||
|
|
||||||
return this.get('ajax').request(`folders/${id}`, {
|
return this.get('ajax').request(`folders/${id}`, {
|
||||||
method: 'GET'
|
method: 'GET'
|
||||||
}).then((response) => {
|
}).then((folder) => {
|
||||||
let folder = models.FolderModel.create(response);
|
let data = this.get('store').normalize('folder', folder);
|
||||||
return folder;
|
return this.get('store').push({ data: data });
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// Returns all folders that user can see.
|
// Returns all folders that user can see.
|
||||||
getAll() {
|
getAll() {
|
||||||
let self = this;
|
|
||||||
|
|
||||||
if (this.get('folders') != null) {
|
if (this.get('folders') != null) {
|
||||||
return new Ember.RSVP.Promise(function (resolve) {
|
return new Ember.RSVP.Promise((resolve) => {
|
||||||
resolve(self.get('folders'));
|
resolve(this.get('folders'));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return this.reload();
|
return this.reload();
|
||||||
|
@ -75,7 +74,7 @@ export default BaseService.extend({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
remove: function (folderId, moveToId) {
|
remove(folderId, moveToId) {
|
||||||
let url = `folders/${folderId}/move/${moveToId}`;
|
let url = `folders/${folderId}/move/${moveToId}`;
|
||||||
|
|
||||||
return this.get('ajax').request(url, {
|
return this.get('ajax').request(url, {
|
||||||
|
@ -83,7 +82,7 @@ export default BaseService.extend({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
onboard: function (folderId, payload) {
|
onboard(folderId, payload) {
|
||||||
let url = `public/share/${folderId}`;
|
let url = `public/share/${folderId}`;
|
||||||
|
|
||||||
return this.get('ajax').post(url, {
|
return this.get('ajax').post(url, {
|
||||||
|
@ -93,13 +92,16 @@ export default BaseService.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
// getProtectedFolderInfo returns non-private folders and who has access to them.
|
// getProtectedFolderInfo returns non-private folders and who has access to them.
|
||||||
getProtectedFolderInfo: function () {
|
getProtectedFolderInfo() {
|
||||||
return this.get('ajax').request(`folders?filter=viewers`, {
|
return this.get('ajax').request(`folders?filter=viewers`, {
|
||||||
method: "GET"
|
method: "GET"
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
let data = [];
|
let data = [];
|
||||||
_.each(response, function (obj) {
|
_.each(response, (obj) => {
|
||||||
data.pushObject(models.ProtectedFolderParticipant.create(obj));
|
debugger;
|
||||||
|
let participantData = this.get('store').normalize('protected-folder-participant', obj);
|
||||||
|
let participant = this.get('store').push({ data: participantData });
|
||||||
|
data.pushObject(participant);
|
||||||
});
|
});
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
@ -113,8 +115,10 @@ export default BaseService.extend({
|
||||||
method: "GET"
|
method: "GET"
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
let data = [];
|
let data = [];
|
||||||
_.each(response, function (obj) {
|
_.each(response, (obj) => {
|
||||||
data.pushObject(models.FolderModel.create(obj));
|
let folderData = this.get('store').normalize('folder', obj);
|
||||||
|
let folder = this.get('store').push({ data: folderData });
|
||||||
|
data.pushObject(folder);
|
||||||
});
|
});
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
@ -128,8 +132,10 @@ export default BaseService.extend({
|
||||||
method: "GET"
|
method: "GET"
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
let data = [];
|
let data = [];
|
||||||
_.each(response, function (obj) {
|
_.each(response, (obj) => {
|
||||||
data.pushObject(models.FolderPermissionModel.create(obj));
|
let permissionData = this.get('store').normalize('folder-permission', obj);
|
||||||
|
let permission = this.get('store').push({ data: permissionData });
|
||||||
|
data.pushObject(permission);
|
||||||
});
|
});
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
@ -183,7 +189,7 @@ export default BaseService.extend({
|
||||||
let result = [];
|
let result = [];
|
||||||
let folderId = folder.get('id');
|
let folderId = folder.get('id');
|
||||||
|
|
||||||
folderPermissions.forEach(function (item) {
|
folderPermissions.forEach((item) => {
|
||||||
if (item.folderId === folderId) {
|
if (item.folderId === folderId) {
|
||||||
result.push(item);
|
result.push(item);
|
||||||
}
|
}
|
||||||
|
@ -191,7 +197,7 @@ export default BaseService.extend({
|
||||||
|
|
||||||
let canEdit = false;
|
let canEdit = false;
|
||||||
|
|
||||||
result.forEach(function (permission) {
|
result.forEach((permission) => {
|
||||||
if (permission.userId === userId) {
|
if (permission.userId === userId) {
|
||||||
canEdit = permission.canEdit;
|
canEdit = permission.canEdit;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue