graphdb-workbench 2.6.0-TR6 → 2.6.0-TR7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/11.e99d653419379ecf1b23.bundle.js +1 -0
  2. package/dist/131.e1a244126c43896cd7fe.bundle.js +1 -1
  3. package/dist/17.f3951ee36cae3c2e59e2.bundle.js +1 -1
  4. package/dist/242.b5be51c553871ce3d83a.bundle.js +1 -0
  5. package/dist/257.1e51f84ae10ed1a8a23b.bundle.js +1 -1
  6. package/dist/259.2c88332b7f1b47935a47.bundle.js +1 -1
  7. package/dist/260.d745422c537bdd9647bb.bundle.js +1 -1
  8. package/dist/261.7efff7f93f61f061f5ca.bundle.js +1 -1
  9. package/dist/27.e6c49ef111cabef46fd7.bundle.js +1 -1
  10. package/dist/28.9b2e80653eb69e4525ef.bundle.js +1 -1
  11. package/dist/289.7afbd014836c2b589df6.bundle.js +1 -1
  12. package/dist/40.cef0c3d8ef5a88d4a6e8.bundle.js +1 -1
  13. package/dist/50.6f8fd26290d2e6983c3d.bundle.js +1 -0
  14. package/dist/51.36a5ca508d953a43df6d.bundle.js +1 -0
  15. package/dist/{6.6c12bf8442e6b3a8966a.bundle.js → 6.9557b6506bf958c26a2a.bundle.js} +1 -1
  16. package/dist/63.79ceab2871c4bf87e565.bundle.js +1 -1
  17. package/dist/{84.42f64ebc8b4f42b8f8fa.bundle.js → 84.833096ee7ee9d0b926e2.bundle.js} +1 -1
  18. package/dist/85.172aa928154b446a004e.bundle.js +1 -0
  19. package/dist/{bundle.f5d7fe3b9943ad592f50.bundle.js → bundle.e8a8019cba24aec4c600.bundle.js} +3 -3
  20. package/dist/css/aclmanagement.css +116 -10
  21. package/dist/css/lib/ontotext-yasgui-web-component.css +30 -15
  22. package/dist/i18n/locale-en.json +2 -1
  23. package/dist/i18n/locale-fr.json +2 -1
  24. package/dist/index.html +3 -3
  25. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  26. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  27. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  28. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +1 -1
  29. package/dist/js/angular/security/templates/user.html +1 -1
  30. package/dist/license-checker.json +4 -4
  31. package/dist/pages/aclmanagement.html +247 -179
  32. package/dist/pages/autocomplete.html +1 -1
  33. package/dist/pages/choose-repository-type.html +1 -1
  34. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  35. package/dist/pages/create-index.html +1 -1
  36. package/dist/pages/dependencies.html +1 -1
  37. package/dist/pages/domainRangeInfo.html +2 -2
  38. package/dist/pages/edit.html +1 -1
  39. package/dist/pages/explore.html +1 -1
  40. package/dist/pages/export.html +1 -1
  41. package/dist/pages/find.html +1 -1
  42. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  43. package/dist/pages/graphs-visualizations.html +7 -7
  44. package/dist/pages/guides.html +1 -1
  45. package/dist/pages/import.html +1 -1
  46. package/dist/pages/jdbc-create.html +1 -1
  47. package/dist/pages/monitor/backup-and-restore.html +1 -1
  48. package/dist/pages/monitor/queries.html +1 -1
  49. package/dist/pages/monitor/resources.html +1 -1
  50. package/dist/pages/namespaces.html +2 -2
  51. package/dist/pages/plugins.html +1 -1
  52. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  53. package/dist/pages/rdfrank.html +2 -2
  54. package/dist/pages/repositories.html +1 -1
  55. package/dist/pages/repository.html +5 -2
  56. package/dist/pages/similarity-indexes.html +1 -1
  57. package/dist/pages/sparql-editor.html +1 -1
  58. package/dist/pages/sparql-template-create.html +1 -1
  59. package/dist/pages/webapi.html +2 -2
  60. package/dist/res/swagger/index.html +27 -27
  61. package/package.json +2 -2
  62. package/dist/11.4f52f63081204e1877cf.bundle.js +0 -1
  63. package/dist/242.5176ae2d94fe71686b8d.bundle.js +0 -1
  64. package/dist/50.62ed3e49a6ece0e7a5c4.bundle.js +0 -1
  65. package/dist/51.96629fd69e2da9eb537d.bundle.js +0 -1
  66. package/dist/85.362d91965241e83d901d.bundle.js +0 -1
@@ -1,4 +1,5 @@
1
- <link href="css/aclmanagement.css?v=2.6.0-TR6" rel="stylesheet"/>
1
+ <link href="css/aclmanagement.css?v=2.6.0-TR7" rel="stylesheet"/>
2
+ <link href="css/autocomplete-select.css?v=2.6.0-TR7" rel="stylesheet"/>
2
3
 
3
4
  <div class="acl-management-view">
4
5
  <h1 id="acl-management-view-title">
@@ -12,8 +13,15 @@
12
13
 
13
14
  <div core-errors></div>
14
15
 
15
- <div class="acl-management-container">
16
+ <div class="acl-management-container" ng-if="getActiveRepository()">
16
17
  <div class="acl-management-container">
18
+ <div class="pull-right">
19
+ <button ng-click="addRule(activeTabScope, 0)" ng-disabled="editedRuleIndex !== undefined"
20
+ class="btn btn-primary add-first-rule-btn"
21
+ gdb-tooltip="{{'acl_management.rulestable.actions.add_rule' | translate}}">
22
+ <em class="icon-plus"></em> Create rule
23
+ </button>
24
+ </div>
17
25
  <ul class="nav nav-tabs acl-tabs">
18
26
  <li class="resource-tab nav-item">
19
27
  <span class="nav-link" ng-click="switchTab(ACL_SCOPE.STATEMENT)" ng-class="activeTabScope === ACL_SCOPE.STATEMENT ? 'active':''">{{'acl_management.rulestable.tab.statement' | translate}} <span class="dirty-scope" ng-if="dirtyScope.has(ACL_SCOPE.STATEMENT)">*</span></span>
@@ -63,16 +71,6 @@
63
71
  </th>
64
72
  <th scope="col" class="actions-column"></th>
65
73
  </tr>
66
- <tr>
67
- <th scope="colgroup" colspan="11" class="toolbar">
68
- <div ng-if="editedRuleIndex === undefined" class="pull-right">
69
- <button ng-click="addRule(activeTabScope, 0)" class="btn btn-link add-rule-btn"
70
- gdb-tooltip="{{'acl_management.rulestable.actions.add_rule' | translate}}">
71
- <em class="icon-plus"></em>
72
- </button>
73
- </div>
74
- </th>
75
- </tr>
76
74
  </thead>
77
75
  <tbody>
78
76
  <tr ng-if="!rulesModel.size(activeTabScope)">
@@ -81,9 +79,9 @@
81
79
  </td>
82
80
  </tr>
83
81
  <tr ng-repeat-start="rule in rulesModel.getRulesByScope(activeTabScope) track by $index" ng-if="0"></tr>
84
- <tr ng-if="$index !== editedRuleIndex" class="acl-rule preview-rule-row"
82
+ <tr ng-if="$index !== editedRuleIndex" class="acl-rule preview-rule-row" capture-height="$index"
85
83
  ng-class="{'selected': $index === selectedRule || $index === editedRuleIndex}">
86
- <td class="index-cell">{{$index}}</td>
84
+ <td class="index-cell">{{$index + 1}}</td>
87
85
  <td class="reorder-cell">
88
86
  <span ng-if="editedRuleIndex === undefined" class="reorder-actions-group">
89
87
  <button ng-click="moveUp(activeTabScope, $index)" ng-if="$index > 0" class="btn btn-link move-up-btn"
@@ -97,19 +95,29 @@
97
95
  </button>
98
96
  </span>
99
97
  </td>
100
- <td class="policy-cell data">{{rule.policy}}</td>
101
- <td class="role-cell data">{{rule.roleWithoutCustomPrefix}}</td>
102
- <td class="operation-cell data">{{rule.operation}}</td>
103
- <td class="subject-cell data">{{rule.subject}}</td>
104
- <td class="predicate-cell data">{{rule.predicate}}</td>
105
- <td class="object-cell data">{{rule.object}}</td>
106
- <td class="context-cell data">{{rule.context}}</td>
98
+ <td class="policy-cell data">
99
+ <span class="acl-tag" ng-class="{'acl-tag-allow': rule.policy === 'allow','acl-tag-deny': rule.policy === 'deny'}">
100
+ <em ng-class="{'icon-tick': rule.policy === 'allow','fa fa-ban': rule.policy === 'deny'}"></em>
101
+ {{rule.policy}}
102
+ </span>
103
+ </td>
104
+ <td class="role-cell data">
105
+ <span class="acl-tag" ng-class="rule.roleWithoutCustomPrefix[0] === '!' ? 'acl-tag-role-negated' : 'acl-tag-role'">
106
+ {{rule.roleWithoutCustomPrefix}}
107
+ </span>
108
+ </td>
109
+ <td class="operation-cell data">
110
+ <span class="acl-tag" ng-class="{'wildcard-cell': rule.operation === '*', 'acl-tag-read': rule.operation === 'read','acl-tag-write': rule.operation === 'write'}">
111
+ <em ng-class="{'icon-eye': rule.operation === 'read', 'icon-edit': rule.operation === 'write'}"></em>
112
+ {{rule.operation}}
113
+ </span>
114
+ </td>
115
+ <td class="subject-cell data" ng-class="{'wildcard-cell': rule.subject === '*'}">{{rule.subject}}</td>
116
+ <td class="predicate-cell data" ng-class="{'wildcard-cell': rule.predicate === '*'}">{{rule.predicate}}</td>
117
+ <td class="object-cell data" ng-class="{'wildcard-cell': rule.object === '*'}">{{rule.object}}</td>
118
+ <td class="context-cell data" ng-class="{'wildcard-cell': rule.context === '*', 'context-cell-special': !rule.context.startsWith('<') && rule.context !== '*'}">{{rule.context}}</td>
107
119
  <td class="actions-cell">
108
120
  <div ng-if="editedRuleIndex === undefined" class="crud-actions-group">
109
- <button ng-click="deleteRule(activeTabScope, $index)" class="btn btn-link delete-rule-btn"
110
- gdb-tooltip="{{'acl_management.rulestable.actions.delete_rule' | translate}}">
111
- <em class="icon-trash"></em>
112
- </button>
113
121
  <button ng-click="editRule(activeTabScope, $index)" class="btn btn-link edit-rule-btn"
114
122
  gdb-tooltip="{{'acl_management.rulestable.actions.edit_rule' | translate}}">
115
123
  <em class="icon-edit"></em>
@@ -118,33 +126,44 @@
118
126
  gdb-tooltip="{{'acl_management.rulestable.actions.add_rule' | translate}}">
119
127
  <em class="icon-plus"></em>
120
128
  </button>
129
+ <button ng-click="deleteRule(activeTabScope, $index)" class="btn btn-link delete-rule-btn secondary"
130
+ gdb-tooltip="{{'acl_management.rulestable.actions.delete_rule' | translate}}">
131
+ <em class="icon-trash"></em>
132
+ </button>
121
133
  </div>
122
134
  </td>
123
135
  </tr>
124
- <tr ng-if="$index === editedRuleIndex" class="acl-rule edit-rule-row"
136
+ <tr ng-if="$index === editedRuleIndex" class="acl-rule edit-rule-row" style="{{getRowHeight}}"
125
137
  ng-class="{'selected table-info': $index === editedRuleIndex}">
126
- <td>{{$index}}</td>
138
+ <td class="index-cell">{{$index + 1}}</td>
127
139
  <td class="reorder-cell"></td>
128
140
  <td class="data policy-cell">
129
- <select ng-model="rule.policy" class="form-control form-control-sm">
141
+ <select ng-model="rule.policy" ng-change="setDirty(activeTabScope)" class="form-control form-control-sm select-rule">
130
142
  <option selected>allow</option>
131
143
  <option>deny</option>
132
144
  </select>
133
145
  </td>
134
146
  <td class="data role-cell">
135
- <input type="text" name="role" required ng-model="rule.role" uppercased uppercase-placeholder="false" custom-role-prefix
136
- autocomplete="off" class="form-control form-control-sm"
137
- placeholder="{{'acl_management.rulestable.field_placeholders.role' | translate}}"/>
147
+ <textarea type="text" name="role" required
148
+ ng-model="rule.role"
149
+ ng-change="setDirty(activeTabScope)"
150
+ uppercased uppercase-placeholder="false"
151
+ custom-role-prefix auto-grow
152
+ autocomplete="off"
153
+ class="form-control form-control-sm textarea-edit"
154
+ placeholder="{{'acl_management.rulestable.field_placeholders.role' | translate}}">
155
+ </textarea>
138
156
  <em></em>
139
157
  </td>
140
158
  <td class="data operation-cell">
141
- <select ng-model="rule.operation" class="form-control form-control-sm">
142
- <option selected>read</option>
159
+ <select ng-model="rule.operation" ng-change="setDirty(activeTabScope)" class="form-control form-control-sm select-rule">
160
+ <option selected>*</option>
161
+ <option>read</option>
143
162
  <option>write</option>
144
163
  </select>
145
164
  </td>
146
165
  <td class="data subject-cell">
147
- <autocomplete ng-model="rule.subject" name="subject" required
166
+ <autocomplete ng-model="rule.subject" on-model-change="setDirty(activeTabScope)" name="subject" required
148
167
  multiline="true"
149
168
  autoexpand="true"
150
169
  defaultresults="DEFAULT_URI_VALUES"
@@ -155,7 +174,7 @@
155
174
  <em></em>
156
175
  </td>
157
176
  <td class="data predicate-cell">
158
- <autocomplete ng-model="rule.predicate" name="predicate" required
177
+ <autocomplete ng-model="rule.predicate" on-model-change="setDirty(activeTabScope)" name="predicate" required
159
178
  multiline="true"
160
179
  autoexpand="true"
161
180
  defaultresults="DEFAULT_URI_VALUES"
@@ -166,7 +185,7 @@
166
185
  <em></em>
167
186
  </td>
168
187
  <td class="data object-cell">
169
- <autocomplete ng-model="rule.object" name="object" required
188
+ <autocomplete ng-model="rule.object" on-model-change="setDirty(activeTabScope)" name="object" required
170
189
  multiline="true"
171
190
  autoexpand="true"
172
191
  defaultresults="DEFAULT_URI_VALUES"
@@ -177,30 +196,32 @@
177
196
  <em></em>
178
197
  </td>
179
198
  <td class="data context-cell">
180
- <autocomplete ng-model="rule.context" name="context" required
199
+ <autocomplete ng-model="rule.context" on-model-change="setDirty(activeTabScope)" name="context" required
181
200
  multiline="true"
182
201
  autoexpand="true"
183
202
  defaultresults="DEFAULT_CONTEXT_VALUES"
184
- style-class="form-control form-control-sm multiline-autocomplete"
203
+ style-class="form-control form-control-sm"
185
204
  namespaces="namespaces"
186
205
  autocomplete-status-loader="getAutocompletePromise"
187
206
  placeholder="{{'acl_management.rulestable.field_placeholders.context' | translate}}"></autocomplete>
188
207
  <em></em>
189
208
  </td>
190
209
  <td class="actions-cell">
191
- <button ng-click="cancelEditing(activeTabScope, $index)"
192
- class="btn btn-link cancel-rule-editing-btn"
193
- gdb-tooltip="{{'acl_management.rulestable.actions.cancel_rule_editing' | translate}}">
194
- <em class="icon-close"></em>
195
- </button>
196
- <button ng-if="ruleData.$valid" ng-click="saveRule(activeTabScope)"
197
- class="btn btn-link save-rule-btn"
198
- ng-disabled="!ruleData.$valid"
199
- gdb-tooltip="{{'acl_management.rulestable.actions.save_rule' | translate}}">
200
- <em class="icon-save"></em>
201
- </button>
202
- <em ng-if="!ruleData.$valid" class="icon-save icon-lg save-rule-disabled-btn"
203
- gdb-tooltip="{{'acl_management.rulestable.messages.invalid_form' | translate}}"></em>
210
+ <div class="crud-actions-group">
211
+ <button ng-click="cancelEditing(activeTabScope, $index)"
212
+ class="btn btn-link cancel-rule-editing-btn"
213
+ gdb-tooltip="{{'acl_management.rulestable.actions.cancel_rule_editing' | translate}}">
214
+ <em class="icon-close"></em>
215
+ </button>
216
+ <button ng-if="ruleData.$valid" ng-click="saveRule(activeTabScope)"
217
+ class="btn btn-link save-rule-btn"
218
+ ng-disabled="!ruleData.$valid"
219
+ gdb-tooltip="{{'acl_management.rulestable.actions.apply_rule' | translate}}">
220
+ <em class="icon-check"></em>
221
+ </button>
222
+ <em ng-if="!ruleData.$valid" class="icon-check icon-lg save-rule-disabled-btn"
223
+ gdb-tooltip="{{'acl_management.rulestable.messages.invalid_form' | translate}}"></em>
224
+ </div>
204
225
  </td>
205
226
  </tr>
206
227
  <tr ng-repeat-end ng-if="0"></tr>
@@ -226,18 +247,9 @@
226
247
  <th scope="col" class="context-column">
227
248
  {{'acl_management.rulestable.column.context' | translate}}
228
249
  </th>
250
+ <th scope="col" class="empty-column"></th>
229
251
  <th scope="col" class="actions-column"></th>
230
252
  </tr>
231
- <tr>
232
- <th scope="colgroup" colspan="6" class="toolbar">
233
- <div ng-if="editedRuleIndex === undefined" class="pull-right">
234
- <button ng-click="addRule(activeTabScope, 0)" class="btn btn-link add-rule-btn"
235
- gdb-tooltip="{{'acl_management.rulestable.actions.add_rule' | translate}}">
236
- <em class="icon-plus"></em>
237
- </button>
238
- </div>
239
- </th>
240
- </tr>
241
253
  </thead>
242
254
  <tbody>
243
255
  <tr ng-if="!rulesModel.size(activeTabScope)">
@@ -246,9 +258,9 @@
246
258
  </td>
247
259
  </tr>
248
260
  <tr ng-repeat-start="rule in rulesModel.getRulesByScope(activeTabScope) track by $index" ng-if="0"></tr>
249
- <tr ng-if="$index !== editedRuleIndex" class="acl-rule preview-rule-row"
261
+ <tr ng-if="$index !== editedRuleIndex" class="acl-rule preview-rule-row" capture-height="$index"
250
262
  ng-class="{'selected': $index === selectedRule || $index === editedRuleIndex}">
251
- <td class="index-cell">{{$index}}</td>
263
+ <td class="index-cell">{{$index + 1}}</td>
252
264
  <td class="reorder-cell">
253
265
  <span ng-if="editedRuleIndex === undefined" class="reorder-actions-group">
254
266
  <button ng-click="moveUp(activeTabScope, $index)" ng-if="$index > 0" class="btn btn-link move-up-btn"
@@ -262,15 +274,23 @@
262
274
  </button>
263
275
  </span>
264
276
  </td>
265
- <td class="policy-cell data">{{rule.policy}}</td>
266
- <td class="role-cell data">{{rule.roleWithoutCustomPrefix}}</td>
267
- <td class="context-cell data">{{rule.context}}</td>
277
+ <td class="policy-cell data">
278
+ <span class="acl-tag" ng-class="{'acl-tag-allow': rule.policy === 'allow','acl-tag-deny': rule.policy === 'deny'}">
279
+ <em ng-class="{'icon-tick': rule.policy === 'allow','fa fa-ban': rule.policy === 'deny'}"></em>
280
+ {{rule.policy}}
281
+ </span>
282
+ </td>
283
+ <td class="role-cell data">
284
+ <span class="acl-tag" ng-class="rule.roleWithoutCustomPrefix[0] === '!' ? 'acl-tag-role-negated' : 'acl-tag-role'">
285
+ <em></em>{{rule.roleWithoutCustomPrefix}}
286
+ </span>
287
+ </td>
288
+ <td class="context-cell data" ng-class="{'wildcard-cell': rule.context === '*', 'context-cell-special': !rule.context.startsWith('<') && rule.context !== '*'}">
289
+ {{rule.context}}
290
+ </td>
291
+ <td class="empty-cell"></td>
268
292
  <td class="actions-cell">
269
293
  <div ng-if="editedRuleIndex === undefined" class="crud-actions-group">
270
- <button ng-click="deleteRule(activeTabScope, $index)" class="btn btn-link delete-rule-btn"
271
- gdb-tooltip="{{'acl_management.rulestable.actions.delete_rule' | translate}}">
272
- <em class="icon-trash"></em>
273
- </button>
274
294
  <button ng-click="editRule(activeTabScope, $index)" class="btn btn-link edit-rule-btn"
275
295
  gdb-tooltip="{{'acl_management.rulestable.actions.edit_rule' | translate}}">
276
296
  <em class="icon-edit"></em>
@@ -279,27 +299,37 @@
279
299
  gdb-tooltip="{{'acl_management.rulestable.actions.add_rule' | translate}}">
280
300
  <em class="icon-plus"></em>
281
301
  </button>
302
+ <button ng-click="deleteRule(activeTabScope, $index)" class="btn btn-link delete-rule-btn secondary"
303
+ gdb-tooltip="{{'acl_management.rulestable.actions.delete_rule' | translate}}">
304
+ <em class="icon-trash"></em>
305
+ </button>
282
306
  </div>
283
307
  </td>
284
308
  </tr>
285
- <tr ng-if="$index === editedRuleIndex" class="acl-rule edit-rule-row"
309
+ <tr ng-if="$index === editedRuleIndex" class="acl-rule edit-rule-row" style="{{getRowHeight}}"
286
310
  ng-class="{'selected table-info': $index === editedRuleIndex}">
287
- <td>{{$index}}</td>
311
+ <td class="index-cell">{{$index + 1}}</td>
288
312
  <td class="reorder-cell"></td>
289
313
  <td class="data policy-cell">
290
- <select ng-model="rule.policy" class="form-control form-control-sm">
314
+ <select ng-model="rule.policy" ng-change="setDirty(activeTabScope)" class="form-control form-control-sm select-rule">
291
315
  <option selected>allow</option>
292
316
  <option>deny</option>
293
317
  </select>
294
318
  </td>
295
319
  <td class="data role-cell">
296
- <input type="text" name="role" required ng-model="rule.role" uppercased custom-role-prefix
297
- autocomplete="off" class="form-control form-control-sm"
298
- placeholder="{{'acl_management.rulestable.field_placeholders.role' | translate}}"/>
320
+ <textarea type="text" name="role" required
321
+ ng-model="rule.role"
322
+ ng-change="setDirty(activeTabScope)"
323
+ uppercased uppercase-placeholder="false"
324
+ custom-role-prefix auto-grow
325
+ autocomplete="off" class="form-control form-control-sm textarea-edit"
326
+ rows="1"
327
+ placeholder="{{'acl_management.rulestable.field_placeholders.role' | translate}}">
328
+ </textarea>
299
329
  <em></em>
300
330
  </td>
301
331
  <td class="data context-cell">
302
- <autocomplete ng-model="rule.context" name="context" required
332
+ <autocomplete ng-model="rule.context" on-model-change="setDirty(activeTabScope)" name="context" required
303
333
  multiline="true"
304
334
  autoexpand="true"
305
335
  defaultresults="DEFAULT_CONTEXT_VALUES"
@@ -309,20 +339,23 @@
309
339
  placeholder="{{'acl_management.rulestable.field_placeholders.context' | translate}}"></autocomplete>
310
340
  <em></em>
311
341
  </td>
342
+ <td class="empty-cell"></td>
312
343
  <td class="actions-cell">
313
- <button ng-click="cancelEditing(activeTabScope, $index)"
314
- class="btn btn-link cancel-rule-editing-btn"
315
- gdb-tooltip="{{'acl_management.rulestable.actions.cancel_rule_editing' | translate}}">
316
- <em class="icon-close"></em>
317
- </button>
318
- <button ng-if="ruleData.$valid" ng-click="saveRule(activeTabScope)"
319
- class="btn btn-link save-rule-btn"
320
- ng-disabled="!ruleData.$valid"
321
- gdb-tooltip="{{'acl_management.rulestable.actions.save_rule' | translate}}">
322
- <em class="icon-save"></em>
323
- </button>
324
- <em ng-if="!ruleData.$valid" class="icon-save icon-lg save-rule-disabled-btn"
325
- gdb-tooltip="{{'acl_management.rulestable.messages.invalid_form' | translate}}"></em>
344
+ <div class="crud-actions-group">
345
+ <button ng-click="cancelEditing(activeTabScope, $index)"
346
+ class="btn btn-link cancel-rule-editing-btn"
347
+ gdb-tooltip="{{'acl_management.rulestable.actions.cancel_rule_editing' | translate}}">
348
+ <em class="icon-close"></em>
349
+ </button>
350
+ <button ng-if="ruleData.$valid" ng-click="saveRule(activeTabScope)"
351
+ class="btn btn-link save-rule-btn"
352
+ ng-disabled="!ruleData.$valid"
353
+ gdb-tooltip="{{'acl_management.rulestable.actions.apply_rule' | translate}}">
354
+ <em class="icon-check"></em>
355
+ </button>
356
+ <em ng-if="!ruleData.$valid" class="icon-check icon-lg save-rule-disabled-btn"
357
+ gdb-tooltip="{{'acl_management.rulestable.messages.invalid_form' | translate}}"></em>
358
+ </div>
326
359
  </td>
327
360
  </tr>
328
361
  <tr ng-repeat-end ng-if="0"></tr>
@@ -351,18 +384,9 @@
351
384
  <th scope="col" class="plugin-column">
352
385
  {{'acl_management.rulestable.column.plugin' | translate}}
353
386
  </th>
387
+ <th scope="col" class="empty-column"></th>
354
388
  <th scope="col" class="actions-column"></th>
355
389
  </tr>
356
- <tr>
357
- <th scope="colgroup" colspan="7" class="toolbar">
358
- <div ng-if="editedRuleIndex === undefined" class="pull-right">
359
- <button ng-click="addRule(activeTabScope, 0)" class="btn btn-link add-rule-btn"
360
- gdb-tooltip="{{'acl_management.rulestable.actions.add_rule' | translate}}">
361
- <em class="icon-plus"></em>
362
- </button>
363
- </div>
364
- </th>
365
- </tr>
366
390
  </thead>
367
391
  <tbody>
368
392
  <tr ng-if="!rulesModel.size(activeTabScope)">
@@ -371,9 +395,9 @@
371
395
  </td>
372
396
  </tr>
373
397
  <tr ng-repeat-start="rule in rulesModel.getRulesByScope(activeTabScope) track by $index" ng-if="0"></tr>
374
- <tr ng-if="$index !== editedRuleIndex" class="acl-rule preview-rule-row"
398
+ <tr ng-if="$index !== editedRuleIndex" class="acl-rule preview-rule-row" capture-height="$index"
375
399
  ng-class="{'selected': $index === selectedRule || $index === editedRuleIndex}">
376
- <td class="index-cell">{{$index}}</td>
400
+ <td class="index-cell">{{$index + 1}}</td>
377
401
  <td class="reorder-cell">
378
402
  <span ng-if="editedRuleIndex === undefined" class="reorder-actions-group">
379
403
  <button ng-click="moveUp(activeTabScope, $index)" ng-if="$index > 0" class="btn btn-link move-up-btn"
@@ -387,16 +411,29 @@
387
411
  </button>
388
412
  </span>
389
413
  </td>
390
- <td class="policy-cell data">{{rule.policy}}</td>
391
- <td class="role-cell data">{{rule.roleWithoutCustomPrefix}}</td>
392
- <td class="operation-cell data">{{rule.operation}}</td>
393
- <td class="context-cell data">{{rule.plugin}}</td>
414
+ <td class="policy-cell data">
415
+ <span class="acl-tag" ng-class="{'acl-tag-allow': rule.policy === 'allow','acl-tag-deny': rule.policy === 'deny'}">
416
+ <em ng-class="{'icon-tick': rule.policy === 'allow','fa fa-ban': rule.policy === 'deny'}"></em>
417
+ {{rule.policy}}
418
+ </span>
419
+ </td>
420
+ <td class="role-cell data">
421
+ <span class="acl-tag" ng-class="rule.roleWithoutCustomPrefix[0] === '!' ? 'acl-tag-role-negated' : 'acl-tag-role'">
422
+ {{rule.roleWithoutCustomPrefix}}
423
+ </span>
424
+ </td>
425
+ <td class="operation-cell data">
426
+ <span class="acl-tag" ng-class="{'wildcard-cell': rule.operation === '*', 'acl-tag-read': rule.operation === 'read','acl-tag-write': rule.operation === 'write'}">
427
+ <em ng-class="{'icon-eye': rule.operation === 'read', 'icon-edit': rule.operation === 'write'}"></em>
428
+ {{rule.operation}}
429
+ </span>
430
+ </td>
431
+ <td class="plugin-cell data" ng-class="{'wildcard-cell': rule.plugin === '*'}">
432
+ {{rule.plugin}}
433
+ </td>
434
+ <td class="empty-cell"></td>
394
435
  <td class="actions-cell">
395
436
  <div ng-if="editedRuleIndex === undefined" class="crud-actions-group">
396
- <button ng-click="deleteRule(activeTabScope, $index)" class="btn btn-link delete-rule-btn"
397
- gdb-tooltip="{{'acl_management.rulestable.actions.delete_rule' | translate}}">
398
- <em class="icon-trash"></em>
399
- </button>
400
437
  <button ng-click="editRule(activeTabScope, $index)" class="btn btn-link edit-rule-btn"
401
438
  gdb-tooltip="{{'acl_management.rulestable.actions.edit_rule' | translate}}">
402
439
  <em class="icon-edit"></em>
@@ -405,55 +442,70 @@
405
442
  gdb-tooltip="{{'acl_management.rulestable.actions.add_rule' | translate}}">
406
443
  <em class="icon-plus"></em>
407
444
  </button>
445
+ <button ng-click="deleteRule(activeTabScope, $index)" class="btn btn-link delete-rule-btn secondary"
446
+ gdb-tooltip="{{'acl_management.rulestable.actions.delete_rule' | translate}}">
447
+ <em class="icon-trash"></em>
448
+ </button>
408
449
  </div>
409
450
  </td>
410
451
  </tr>
411
- <tr ng-if="$index === editedRuleIndex" class="acl-rule edit-rule-row"
452
+ <tr ng-if="$index === editedRuleIndex" class="acl-rule edit-rule-row" style="{{getRowHeight}}"
412
453
  ng-class="{'selected table-info': $index === editedRuleIndex}">
413
- <td>{{$index}}</td>
454
+ <td class="index-cell">{{$index + 1}}</td>
414
455
  <td class="reorder-cell"></td>
415
456
  <td class="data policy-cell">
416
- <select ng-model="rule.policy" class="form-control form-control-sm">
457
+ <select ng-model="rule.policy" ng-change="setDirty(activeTabScope)" class="form-control form-control-sm select-rule">
417
458
  <option selected>allow</option>
418
459
  <option>deny</option>
419
460
  </select>
420
461
  </td>
421
462
  <td class="data role-cell">
422
- <input type="text" name="role" required ng-model="rule.role" uppercased custom-role-prefix
423
- autocomplete="off" class="form-control form-control-sm"
424
- placeholder="{{'acl_management.rulestable.field_placeholders.role' | translate}}"/>
463
+ <textarea type="text" name="role" required
464
+ ng-model="rule.role"
465
+ ng-change="setDirty(activeTabScope)"
466
+ uppercased uppercase-placeholder="false"
467
+ custom-role-prefix auto-grow
468
+ autocomplete="off"
469
+ class="form-control form-control-sm textarea-edit"
470
+ placeholder="{{'acl_management.rulestable.field_placeholders.role' | translate}}">
471
+ </textarea>
425
472
  <em></em>
426
473
  </td>
427
474
  <td class="data operation-cell">
428
- <select ng-model="rule.operation" class="form-control form-control-sm">
429
- <option selected>read</option>
475
+ <select ng-model="rule.operation" ng-change="setDirty(activeTabScope)" class="form-control form-control-sm select-rule">
476
+ <option selected>*</option>
477
+ <option>read</option>
430
478
  <option>write</option>
431
479
  </select>
432
480
  </td>
433
481
  <td class="data plugin-cell">
434
- <autocomplete ng-model="rule.plugin" name="plugin" required
435
- multiline="true"
436
- autoexpand="true"
437
- style-class="form-control form-control-sm"
438
- namespaces="namespaces"
439
- autocomplete-status-loader="getAutocompletePromise"
440
- placeholder="{{'acl_management.rulestable.field_placeholders.plugin' | translate}}"></autocomplete>
482
+ <textarea type="text" name="plugin" required
483
+ ng-model="rule.plugin"
484
+ ng-change="setDirty(activeTabScope)"
485
+ auto-grow
486
+ autocomplete="off"
487
+ class="form-control form-control-sm textarea-edit"
488
+ placeholder="{{'acl_management.rulestable.field_placeholders.plugin' | translate}}">
489
+ </textarea>
441
490
  <em></em>
442
491
  </td>
492
+ <td class="empty-cell"></td>
443
493
  <td class="actions-cell">
444
- <button ng-click="cancelEditing(activeTabScope, $index)"
445
- class="btn btn-link cancel-rule-editing-btn"
446
- gdb-tooltip="{{'acl_management.rulestable.actions.cancel_rule_editing' | translate}}">
447
- <em class="icon-close"></em>
448
- </button>
449
- <button ng-if="ruleData.$valid" ng-click="saveRule(activeTabScope)"
450
- class="btn btn-link save-rule-btn"
451
- ng-disabled="!ruleData.$valid"
452
- gdb-tooltip="{{'acl_management.rulestable.actions.save_rule' | translate}}">
453
- <em class="icon-save"></em>
454
- </button>
455
- <em ng-if="!ruleData.$valid" class="icon-save icon-lg save-rule-disabled-btn"
456
- gdb-tooltip="{{'acl_management.rulestable.messages.invalid_form' | translate}}"></em>
494
+ <div class="crud-actions-group">
495
+ <button ng-click="cancelEditing(activeTabScope, $index)"
496
+ class="btn btn-link cancel-rule-editing-btn"
497
+ gdb-tooltip="{{'acl_management.rulestable.actions.cancel_rule_editing' | translate}}">
498
+ <em class="icon-close"></em>
499
+ </button>
500
+ <button ng-if="ruleData.$valid" ng-click="saveRule(activeTabScope)"
501
+ class="btn btn-link save-rule-btn"
502
+ ng-disabled="!ruleData.$valid"
503
+ gdb-tooltip="{{'acl_management.rulestable.actions.apply_rule' | translate}}">
504
+ <em class="icon-check"></em>
505
+ </button>
506
+ <em ng-if="!ruleData.$valid" class="icon-check icon-lg save-rule-disabled-btn"
507
+ gdb-tooltip="{{'acl_management.rulestable.messages.invalid_form' | translate}}"></em>
508
+ </div>
457
509
  </td>
458
510
  </tr>
459
511
  <tr ng-repeat-end ng-if="0"></tr>
@@ -479,29 +531,20 @@
479
531
  <th scope="col" class="operation-column">
480
532
  {{'acl_management.rulestable.column.operation' | translate}}
481
533
  </th>
534
+ <th scope="col" class="empty-column"></th>
482
535
  <th scope="col" class="actions-column"></th>
483
536
  </tr>
484
- <tr>
485
- <th scope="colgroup" colspan="6" class="toolbar">
486
- <div ng-if="editedRuleIndex === undefined" class="pull-right">
487
- <button ng-click="addRule(activeTabScope, 0)" class="btn btn-link add-rule-btn"
488
- gdb-tooltip="{{'acl_management.rulestable.actions.add_rule' | translate}}">
489
- <em class="icon-plus"></em>
490
- </button>
491
- </div>
492
- </th>
493
- </tr>
494
537
  </thead>
495
538
  <tbody>
496
539
  <tr ng-if="!rulesModel.size(activeTabScope)">
497
- <td colspan="6" class="no-data">
540
+ <td colspan="7" class="no-data">
498
541
  {{'acl_management.rulestable.messages.no_data' | translate}}
499
542
  </td>
500
543
  </tr>
501
544
  <tr ng-repeat-start="rule in rulesModel.getRulesByScope(activeTabScope) track by $index" ng-if="0"></tr>
502
- <tr ng-if="$index !== editedRuleIndex" class="acl-rule preview-rule-row"
545
+ <tr ng-if="$index !== editedRuleIndex" class="acl-rule preview-rule-row" capture-height="$index"
503
546
  ng-class="{'selected': $index === selectedRule || $index === editedRuleIndex}">
504
- <td class="index-cell">{{$index}}</td>
547
+ <td class="index-cell">{{$index + 1}}</td>
505
548
  <td class="reorder-cell">
506
549
  <span ng-if="editedRuleIndex === undefined" class="reorder-actions-group">
507
550
  <button ng-click="moveUp(activeTabScope, $index)" ng-if="$index > 0" class="btn btn-link move-up-btn"
@@ -515,15 +558,26 @@
515
558
  </button>
516
559
  </span>
517
560
  </td>
518
- <td class="policy-cell data">{{rule.policy}}</td>
519
- <td class="role-cell data">{{rule.roleWithoutCustomPrefix}}</td>
520
- <td class="subject-cell data">{{rule.operation}}</td>
561
+ <td class="policy-cell data">
562
+ <span class="acl-tag" ng-class="{'acl-tag-allow': rule.policy === 'allow','acl-tag-deny': rule.policy === 'deny'}">
563
+ <em ng-class="{'icon-tick': rule.policy === 'allow','fa fa-ban': rule.policy === 'deny'}"></em>
564
+ {{rule.policy}}
565
+ </span>
566
+ </td>
567
+ <td class="role-cell data">
568
+ <span class="acl-tag" ng-class="rule.roleWithoutCustomPrefix[0] === '!' ? 'acl-tag-role-negated' : 'acl-tag-role'">
569
+ {{rule.roleWithoutCustomPrefix}}
570
+ </span>
571
+ </td>
572
+ <td class="operation-cell data">
573
+ <span class="acl-tag" ng-class="{'wildcard-cell': rule.operation === '*', 'acl-tag-read': rule.operation === 'read','acl-tag-write': rule.operation === 'write'}">
574
+ <em ng-class="{'icon-eye': rule.operation === 'read', 'icon-edit': rule.operation === 'write'}"></em>
575
+ {{rule.operation}}
576
+ </span>
577
+ </td>
578
+ <td class="empty-cell"></td>
521
579
  <td class="actions-cell">
522
580
  <div ng-if="editedRuleIndex === undefined" class="crud-actions-group">
523
- <button ng-click="deleteRule(activeTabScope, $index)" class="btn btn-link delete-rule-btn"
524
- gdb-tooltip="{{'acl_management.rulestable.actions.delete_rule' | translate}}">
525
- <em class="icon-trash"></em>
526
- </button>
527
581
  <button ng-click="editRule(activeTabScope, $index)" class="btn btn-link edit-rule-btn"
528
582
  gdb-tooltip="{{'acl_management.rulestable.actions.edit_rule' | translate}}">
529
583
  <em class="icon-edit"></em>
@@ -532,45 +586,59 @@
532
586
  gdb-tooltip="{{'acl_management.rulestable.actions.add_rule' | translate}}">
533
587
  <em class="icon-plus"></em>
534
588
  </button>
589
+ <button ng-click="deleteRule(activeTabScope, $index)" class="btn btn-link delete-rule-btn secondary"
590
+ gdb-tooltip="{{'acl_management.rulestable.actions.delete_rule' | translate}}">
591
+ <em class="icon-trash"></em>
592
+ </button>
535
593
  </div>
536
594
  </td>
537
595
  </tr>
538
- <tr ng-if="$index === editedRuleIndex" class="acl-rule edit-rule-row"
596
+ <tr ng-if="$index === editedRuleIndex" class="acl-rule edit-rule-row" style="{{getRowHeight}}"
539
597
  ng-class="{'selected table-info': $index === editedRuleIndex}">
540
- <td>{{$index}}</td>
598
+ <td class="index-cell">{{$index + 1}}</td>
541
599
  <td class="reorder-cell"></td>
542
600
  <td class="data policy-cell">
543
- <select ng-model="rule.policy" class="form-control form-control-sm">
601
+ <select ng-model="rule.policy" ng-change="setDirty(activeTabScope)" class="form-control form-control-sm select-rule">
544
602
  <option selected>allow</option>
545
603
  <option>deny</option>
546
604
  </select>
547
605
  </td>
548
606
  <td class="data role-cell">
549
- <input type="text" name="role" required ng-model="rule.role" uppercased custom-role-prefix
550
- autocomplete="off" class="form-control form-control-sm"
551
- placeholder="{{'acl_management.rulestable.field_placeholders.role' | translate}}"/>
607
+ <textarea type="text" name="role" required
608
+ ng-model="rule.role"
609
+ ng-change="setDirty(activeTabScope)"
610
+ uppercased uppercase-placeholder="false"
611
+ custom-role-prefix auto-grow
612
+ autocomplete="off"
613
+ class="form-control form-control-sm textarea-edit"
614
+ placeholder="{{'acl_management.rulestable.field_placeholders.role' | translate}}">
615
+ </textarea>
552
616
  <em></em>
553
617
  </td>
554
618
  <td class="data operation-cell">
555
- <select ng-model="rule.operation" class="form-control form-control-sm">
556
- <option selected>read</option>
619
+ <select ng-model="rule.operation" ng-change="setDirty(activeTabScope)" class="form-control form-control-sm select-rule">
620
+ <option selected>*</option>
621
+ <option>read</option>
557
622
  <option>write</option>
558
623
  </select>
559
624
  </td>
625
+ <td class="empty-cell"></td>
560
626
  <td class="actions-cell">
561
- <button ng-click="cancelEditing(activeTabScope, $index)"
562
- class="btn btn-link cancel-rule-editing-btn"
563
- gdb-tooltip="{{'acl_management.rulestable.actions.cancel_rule_editing' | translate}}">
564
- <em class="icon-close"></em>
565
- </button>
566
- <button ng-if="ruleData.$valid" ng-click="saveRule(activeTabScope)"
567
- class="btn btn-link save-rule-btn"
568
- ng-disabled="!ruleData.$valid"
569
- gdb-tooltip="{{'acl_management.rulestable.actions.save_rule' | translate}}">
570
- <em class="icon-save"></em>
571
- </button>
572
- <em ng-if="!ruleData.$valid" class="icon-save icon-lg save-rule-disabled-btn"
573
- gdb-tooltip="{{'acl_management.rulestable.messages.invalid_form' | translate}}"></em>
627
+ <div class="crud-actions-group">
628
+ <button ng-click="cancelEditing(activeTabScope, $index)"
629
+ class="btn btn-link cancel-rule-editing-btn"
630
+ gdb-tooltip="{{'acl_management.rulestable.actions.cancel_rule_editing' | translate}}">
631
+ <em class="icon-close"></em>
632
+ </button>
633
+ <button ng-if="ruleData.$valid" ng-click="saveRule(activeTabScope)"
634
+ class="btn btn-link save-rule-btn"
635
+ ng-disabled="!ruleData.$valid"
636
+ gdb-tooltip="{{'acl_management.rulestable.actions.apply_rule' | translate}}">
637
+ <em class="icon-check"></em>
638
+ </button>
639
+ <em ng-if="!ruleData.$valid" class="icon-check icon-lg save-rule-disabled-btn"
640
+ gdb-tooltip="{{'acl_management.rulestable.messages.invalid_form' | translate}}"></em>
641
+ </div>
574
642
  </td>
575
643
  </tr>
576
644
  <tr ng-repeat-end ng-if="0"></tr>