1
0
Fork 0
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:
Harvey Kandola 2017-12-24 15:51:43 +00:00
parent 58c88e2127
commit f4f32bcfcb
20 changed files with 891 additions and 777 deletions

View file

@ -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);
}

View file

@ -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');
});

View file

@ -10,7 +10,6 @@
// https://documize.com
import { run } from '@ember/runloop';
import Component from '@ember/component';
import miscUtil from '../utils/misc';

View file

@ -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 }),

View file

@ -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);

View file

@ -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')
});

View file

@ -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');
});

View file

@ -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>

View file

@ -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
}
};

View file

@ -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
};