annotate annotator_files/lib/plugin/annotateitpermissions.js @ 4:6979313586cf

new version of annotator.
author casties
date Mon, 27 Aug 2012 19:05:38 +0200
parents 6356e78ccf5c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
1 // Generated by CoffeeScript 1.3.3
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
2 var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
3 __hasProp = {}.hasOwnProperty,
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
4 __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
5 __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
6
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
7 Annotator.Plugin.AnnotateItPermissions = (function(_super) {
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
8
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
9 __extends(AnnotateItPermissions, _super);
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
10
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
11 function AnnotateItPermissions() {
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
12 this._setAuthFromToken = __bind(this._setAuthFromToken, this);
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
13
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
14 this.updateAnnotationPermissions = __bind(this.updateAnnotationPermissions, this);
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
15
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
16 this.updatePermissionsField = __bind(this.updatePermissionsField, this);
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
17
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
18 this.addFieldsToAnnotation = __bind(this.addFieldsToAnnotation, this);
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
19 return AnnotateItPermissions.__super__.constructor.apply(this, arguments);
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
20 }
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
21
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
22 AnnotateItPermissions.prototype.options = {
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
23 showViewPermissionsCheckbox: true,
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
24 showEditPermissionsCheckbox: true,
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
25 groups: {
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
26 world: 'group:__world__',
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
27 authenticated: 'group:__authenticated__',
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
28 consumer: 'group:__consumer__'
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
29 },
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
30 userId: function(user) {
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
31 return user.userId;
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
32 },
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
33 userString: function(user) {
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
34 return user.userId;
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
35 },
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
36 userAuthorize: function(action, annotation, user) {
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
37 var action_field, permissions, _ref, _ref1, _ref2, _ref3;
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
38 permissions = annotation.permissions || {};
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
39 action_field = permissions[action] || [];
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
40 if (_ref = this.groups.world, __indexOf.call(action_field, _ref) >= 0) {
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
41 return true;
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
42 } else if ((user != null) && (user.userId != null) && (user.consumerKey != null)) {
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
43 if (user.userId === annotation.user && user.consumerKey === annotation.consumer) {
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
44 return true;
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
45 } else if (_ref1 = this.groups.authenticated, __indexOf.call(action_field, _ref1) >= 0) {
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
46 return true;
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
47 } else if (user.consumerKey === annotation.consumer && (_ref2 = this.groups.consumer, __indexOf.call(action_field, _ref2) >= 0)) {
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
48 return true;
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
49 } else if (user.consumerKey === annotation.consumer && (_ref3 = user.userId, __indexOf.call(action_field, _ref3) >= 0)) {
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
50 return true;
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
51 } else if (user.consumerKey === annotation.consumer && user.admin) {
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
52 return true;
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
53 } else {
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
54 return false;
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
55 }
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
56 }
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
57 },
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
58 permissions: {
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
59 'read': ['group:__world__'],
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
60 'update': [],
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
61 'delete': [],
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
62 'admin': []
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
63 }
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
64 };
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
65
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
66 AnnotateItPermissions.prototype.addFieldsToAnnotation = function(annotation) {
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
67 AnnotateItPermissions.__super__.addFieldsToAnnotation.apply(this, arguments);
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
68 if (annotation && this.user) {
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
69 return annotation.consumer = this.user.consumerKey;
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
70 }
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
71 };
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
72
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
73 AnnotateItPermissions.prototype.updatePermissionsField = function(action, field, annotation) {
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
74 var input;
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
75 field = $(field).show();
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
76 input = field.find('input').removeAttr('disabled');
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
77 if (!this.authorize('admin', annotation)) {
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
78 field.hide();
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
79 }
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
80 if (this.user && this.authorize(action, annotation || {}, {
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
81 userId: '__nonexistentuser__',
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
82 consumerKey: this.user.consumerKey
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
83 })) {
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
84 return input.attr('checked', 'checked');
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
85 } else {
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
86 return input.removeAttr('checked');
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
87 }
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
88 };
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
89
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
90 AnnotateItPermissions.prototype.updateAnnotationPermissions = function(type, field, annotation) {
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
91 var dataKey;
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
92 if (!annotation.permissions) {
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
93 annotation.permissions = this.options.permissions;
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
94 }
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
95 dataKey = type + '-permissions';
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
96 if ($(field).find('input').is(':checked')) {
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
97 return annotation.permissions[type] = [type === 'read' ? this.options.groups.world : this.options.groups.consumer];
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
98 } else {
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
99 return annotation.permissions[type] = [];
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
100 }
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
101 };
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
102
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
103 AnnotateItPermissions.prototype._setAuthFromToken = function(token) {
4
6979313586cf new version of annotator.
casties
parents: 3
diff changeset
104 return this.setUser(token);
3
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
105 };
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
106
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
107 return AnnotateItPermissions;
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
108
6356e78ccf5c new version contains Annotator JS files to be used with FilesystemSite.
casties
parents:
diff changeset
109 })(Annotator.Plugin.Permissions);