mirror of
https://github.com/documize/community.git
synced 2025-07-24 23:59:47 +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 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';
|
||||
|
||||
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
|
||||
|
||||
import Ember from 'ember';
|
||||
import models from '../utils/model';
|
||||
import BaseService from '../services/base';
|
||||
import models from '../utils/model';
|
||||
|
||||
const {
|
||||
get,
|
||||
|
@ -35,8 +35,8 @@ export default BaseService.extend({
|
|||
contentType: 'json',
|
||||
data: JSON.stringify(folder)
|
||||
}).then((folder) => {
|
||||
let folderModel = models.FolderModel.create(folder);
|
||||
return folderModel;
|
||||
let data = this.get('store').normalize('folder', folder);
|
||||
return this.get('store').push({ data: data });
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -45,19 +45,18 @@ export default BaseService.extend({
|
|||
|
||||
return this.get('ajax').request(`folders/${id}`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let folder = models.FolderModel.create(response);
|
||||
return folder;
|
||||
}).then((folder) => {
|
||||
let data = this.get('store').normalize('folder', folder);
|
||||
return this.get('store').push({ data: data });
|
||||
});
|
||||
},
|
||||
|
||||
// Returns all folders that user can see.
|
||||
getAll() {
|
||||
let self = this;
|
||||
|
||||
if (this.get('folders') != null) {
|
||||
return new Ember.RSVP.Promise(function (resolve) {
|
||||
resolve(self.get('folders'));
|
||||
return new Ember.RSVP.Promise((resolve) => {
|
||||
resolve(this.get('folders'));
|
||||
});
|
||||
} else {
|
||||
return this.reload();
|
||||
|
@ -75,7 +74,7 @@ export default BaseService.extend({
|
|||
});
|
||||
},
|
||||
|
||||
remove: function (folderId, moveToId) {
|
||||
remove(folderId, moveToId) {
|
||||
let url = `folders/${folderId}/move/${moveToId}`;
|
||||
|
||||
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}`;
|
||||
|
||||
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: function () {
|
||||
getProtectedFolderInfo() {
|
||||
return this.get('ajax').request(`folders?filter=viewers`, {
|
||||
method: "GET"
|
||||
}).then((response) => {
|
||||
let data = [];
|
||||
_.each(response, function (obj) {
|
||||
data.pushObject(models.ProtectedFolderParticipant.create(obj));
|
||||
_.each(response, (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;
|
||||
|
@ -113,8 +115,10 @@ export default BaseService.extend({
|
|||
method: "GET"
|
||||
}).then((response) => {
|
||||
let data = [];
|
||||
_.each(response, function (obj) {
|
||||
data.pushObject(models.FolderModel.create(obj));
|
||||
_.each(response, (obj) => {
|
||||
let folderData = this.get('store').normalize('folder', obj);
|
||||
let folder = this.get('store').push({ data: folderData });
|
||||
data.pushObject(folder);
|
||||
});
|
||||
|
||||
return data;
|
||||
|
@ -128,8 +132,10 @@ export default BaseService.extend({
|
|||
method: "GET"
|
||||
}).then((response) => {
|
||||
let data = [];
|
||||
_.each(response, function (obj) {
|
||||
data.pushObject(models.FolderPermissionModel.create(obj));
|
||||
_.each(response, (obj) => {
|
||||
let permissionData = this.get('store').normalize('folder-permission', obj);
|
||||
let permission = this.get('store').push({ data: permissionData });
|
||||
data.pushObject(permission);
|
||||
});
|
||||
|
||||
return data;
|
||||
|
@ -183,7 +189,7 @@ export default BaseService.extend({
|
|||
let result = [];
|
||||
let folderId = folder.get('id');
|
||||
|
||||
folderPermissions.forEach(function (item) {
|
||||
folderPermissions.forEach((item) => {
|
||||
if (item.folderId === folderId) {
|
||||
result.push(item);
|
||||
}
|
||||
|
@ -191,7 +197,7 @@ export default BaseService.extend({
|
|||
|
||||
let canEdit = false;
|
||||
|
||||
result.forEach(function (permission) {
|
||||
result.forEach((permission) => {
|
||||
if (permission.userId === userId) {
|
||||
canEdit = permission.canEdit;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue