mirror of
https://github.com/documize/community.git
synced 2025-08-05 05:25:27 +02:00
document approvals and protection
This commit is contained in:
parent
58c88e2127
commit
f4f32bcfcb
20 changed files with 891 additions and 777 deletions
|
@ -139,7 +139,7 @@ export default Component.extend({
|
|||
});
|
||||
} else {
|
||||
if (data.authProvider === this.get('appMeta.authProvider')) {
|
||||
// this.showNotification(response.message);
|
||||
this.showNotification(response.message);
|
||||
} else {
|
||||
this.get('onChange')(data);
|
||||
}
|
||||
|
|
|
@ -10,12 +10,10 @@
|
|||
// https://documize.com
|
||||
|
||||
import { setProperties } from '@ember/object';
|
||||
|
||||
import Component from '@ember/component';
|
||||
import { inject as service } from '@ember/service';
|
||||
import NotifierMixin from '../../mixins/notifier';
|
||||
|
||||
export default Component.extend(NotifierMixin, {
|
||||
export default Component.extend({
|
||||
folderService: service('folder'),
|
||||
userService: service('user'),
|
||||
appMeta: service(),
|
||||
|
@ -42,7 +40,8 @@ export default Component.extend(NotifierMixin, {
|
|||
documentDelete: false,
|
||||
documentMove: false,
|
||||
documentCopy: false,
|
||||
documentTemplate: false
|
||||
documentTemplate: false,
|
||||
documentApprove: false,
|
||||
};
|
||||
|
||||
let data = this.get('store').normalize('space-permission', u)
|
||||
|
@ -63,8 +62,9 @@ export default Component.extend(NotifierMixin, {
|
|||
documentDelete: false,
|
||||
documentMove: false,
|
||||
documentCopy: false,
|
||||
documentTemplate: false
|
||||
};
|
||||
documentTemplate: false,
|
||||
documentApprove: false,
|
||||
};
|
||||
|
||||
let data = this.get('store').normalize('space-permission', u)
|
||||
folderPermissions.pushObject(this.get('store').push(data));
|
||||
|
@ -96,7 +96,7 @@ export default Component.extend(NotifierMixin, {
|
|||
let hasEveryone = _.find(permissions, function (permission) {
|
||||
return 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'));
|
||||
permission.get('documentMove') || permission.get('documentCopy') || permission.get('documentTemplate') || permission.get('documentApprove'));
|
||||
});
|
||||
|
||||
// see if more than oen user is granted access to space (excluding everyone)
|
||||
|
@ -104,26 +104,22 @@ export default Component.extend(NotifierMixin, {
|
|||
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'))) {
|
||||
permission.get('documentMove') || permission.get('documentCopy') || permission.get('documentTemplate') || permission.get('documentApprove'))) {
|
||||
roleCount += 1;
|
||||
}
|
||||
});
|
||||
|
||||
if (is.not.undefined(hasEveryone)) {
|
||||
folder.markAsPublic();
|
||||
this.showNotification('Marked space as public');
|
||||
} else {
|
||||
if (roleCount > 1) {
|
||||
folder.markAsRestricted();
|
||||
this.showNotification('Marked space as protected');
|
||||
} else {
|
||||
folder.markAsPrivate();
|
||||
this.showNotification('Marked space as private');
|
||||
}
|
||||
}
|
||||
|
||||
this.get('folderService').savePermissions(folder.get('id'), payload).then(() => {
|
||||
this.showNotification('Saved permissions');
|
||||
$('#space-permission-modal').modal('hide');
|
||||
$('#space-permission-modal').modal('dispose');
|
||||
});
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
// https://documize.com
|
||||
|
||||
import { run } from '@ember/runloop';
|
||||
|
||||
import Component from '@ember/component';
|
||||
import miscUtil from '../utils/misc';
|
||||
|
||||
|
|
|
@ -25,7 +25,8 @@ export default Model.extend({
|
|||
userId: attr('string'),
|
||||
tags: attr('string'),
|
||||
template: attr('boolean'),
|
||||
layout: attr('string'),
|
||||
protection: attr('number', { defaultValue: 0 }),
|
||||
approval: attr('number', { defaultValue: 0 }),
|
||||
|
||||
// client-side property
|
||||
selected: attr('boolean', { defaultValue: false }),
|
||||
|
|
|
@ -28,7 +28,9 @@ export default Model.extend({
|
|||
body: attr('string'),
|
||||
rawBody: attr('string'),
|
||||
meta: attr(),
|
||||
|
||||
protection: attr('number', { defaultValue: 0 }),
|
||||
approval: attr('number', { defaultValue: 0 }),
|
||||
|
||||
tagName: computed('level', function () {
|
||||
return "h2";
|
||||
// return "h" + (this.get('level') + 1);
|
||||
|
|
|
@ -27,5 +27,6 @@ export default Model.extend({
|
|||
documentDelete: attr('boolean'),
|
||||
documentMove: attr('boolean'),
|
||||
documentCopy: attr('boolean'),
|
||||
documentTemplate: attr('boolean')
|
||||
documentTemplate: attr('boolean'),
|
||||
documentApprove: attr('boolean')
|
||||
});
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
// https://documize.com
|
||||
|
||||
import Controller from '@ember/controller';
|
||||
|
||||
import { inject as service } from '@ember/service';
|
||||
import NotifierMixin from '../../../mixins/notifier';
|
||||
|
||||
|
@ -24,8 +23,6 @@ export default Controller.extend(NotifierMixin, {
|
|||
actions: {
|
||||
onAddSpace(payload) {
|
||||
let self = this;
|
||||
this.showNotification("Added");
|
||||
|
||||
this.get('folderService').add(payload).then(function (newFolder) {
|
||||
self.get('folderService').setCurrentFolder(newFolder);
|
||||
self.transitionToRoute('folder', newFolder.get('id'), newFolder.get('slug'));
|
||||
|
@ -34,7 +31,6 @@ export default Controller.extend(NotifierMixin, {
|
|||
|
||||
onDeleteSpace(id) {
|
||||
this.get('folderService').delete(id).then(() => { /* jshint ignore:line */
|
||||
this.showNotification("Deleted");
|
||||
this.get('localStorage').clearSessionItem('folder');
|
||||
this.transitionToRoute('folders');
|
||||
});
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<tr>
|
||||
<th></th>
|
||||
<th colspan="3">Spaces</th>
|
||||
<th colspan="6" class="text-info">Documents</th>
|
||||
<th colspan="7" class="text-info">Documents</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
|
@ -23,6 +23,7 @@
|
|||
<th class="text-info">Move</th>
|
||||
<th class="text-info">Copy</th>
|
||||
<th class="text-info">Templates</th>
|
||||
<th class="text-info">Approval</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -56,6 +57,9 @@
|
|||
<td>
|
||||
{{input type="checkbox" id=(concat 'doc-role-template-' permission.userId) checked=permission.documentTemplate}}
|
||||
</td>
|
||||
<td>
|
||||
{{input type="checkbox" id=(concat 'doc-role-approve-' permission.userId) checked=permission.documentApprove}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
|
|
|
@ -39,5 +39,18 @@ export default {
|
|||
PublishedTemplate: 8,
|
||||
PublishedBlock: 9,
|
||||
Feedback: 10
|
||||
},
|
||||
|
||||
ProtectionType: {
|
||||
None: 0,
|
||||
Lock: 1,
|
||||
Review: 2
|
||||
},
|
||||
|
||||
ApprovalType: {
|
||||
None: 0,
|
||||
Anybody: 1,
|
||||
Majority: 2,
|
||||
Unanimous: 3
|
||||
}
|
||||
};
|
||||
|
|
|
@ -10,9 +10,7 @@
|
|||
// https://documize.com
|
||||
|
||||
import { htmlSafe } from '@ember/string';
|
||||
|
||||
import EmberObject, { computed } from '@ember/object';
|
||||
|
||||
import Ember from 'ember';
|
||||
import stringUtil from '../utils/string';
|
||||
import constants from '../utils/constants';
|
||||
|
@ -98,6 +96,8 @@ let DocumentModel = BaseModel.extend({
|
|||
userId: "",
|
||||
tags: "",
|
||||
template: "",
|
||||
protection: constants.ProtectionType.None,
|
||||
approval: constants.ApprovalType.None,
|
||||
|
||||
slug: computed('name', function () {
|
||||
return stringUtil.makeSlug(this.get('name'));
|
||||
|
@ -164,6 +164,8 @@ let PageModel = BaseModel.extend({
|
|||
title: "",
|
||||
body: "",
|
||||
rawBody: "",
|
||||
protection: constants.ProtectionType.None,
|
||||
approval: constants.ApprovalType.None,
|
||||
meta: {},
|
||||
|
||||
tagName: computed('level', function () {
|
||||
|
@ -202,7 +204,6 @@ let SectionModel = BaseModel.extend({
|
|||
});
|
||||
|
||||
export default {
|
||||
TemplateModel,
|
||||
AttachmentModel,
|
||||
DocumentModel,
|
||||
FolderModel,
|
||||
|
@ -210,6 +211,7 @@ export default {
|
|||
PageModel,
|
||||
PageMetaModel,
|
||||
ProtectedFolderParticipant,
|
||||
UserModel,
|
||||
SectionModel
|
||||
SectionModel,
|
||||
TemplateModel,
|
||||
UserModel
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue