
Allow to grant the ACL to arbitrary users using new permission to control who is able to flip the Work In Progress bit in addition to three different groups allowed to toggle Work In Progress state: change owner, server administrators and project owners. Feature: Issue 10385 Change-Id: I66f6078936c4fae20f3a12dbd3a5d9a244eb75cb
158 lines
4.0 KiB
HTML
158 lines
4.0 KiB
HTML
<!--
|
|
@license
|
|
Copyright (C) 2017 The Android Open Source Project
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<script>
|
|
(function(window) {
|
|
'use strict';
|
|
|
|
window.Gerrit = window.Gerrit || {};
|
|
|
|
/** @polymerBehavior Gerrit.AccessBehavior */
|
|
Gerrit.AccessBehavior = {
|
|
properties: {
|
|
permissionValues: {
|
|
type: Object,
|
|
readOnly: true,
|
|
value: {
|
|
abandon: {
|
|
id: 'abandon',
|
|
name: 'Abandon',
|
|
},
|
|
addPatchSet: {
|
|
id: 'addPatchSet',
|
|
name: 'Add Patch Set',
|
|
},
|
|
create: {
|
|
id: 'create',
|
|
name: 'Create Reference',
|
|
},
|
|
createTag: {
|
|
id: 'createTag',
|
|
name: 'Create Annotated Tag',
|
|
},
|
|
createSignedTag: {
|
|
id: 'createSignedTag',
|
|
name: 'Create Signed Tag',
|
|
},
|
|
delete: {
|
|
id: 'delete',
|
|
name: 'Delete Reference',
|
|
},
|
|
deleteDrafts: {
|
|
id: 'deleteDrafts',
|
|
name: 'Delete Drafts',
|
|
},
|
|
deleteOwnChanges: {
|
|
id: 'deleteOwnChanges',
|
|
name: 'Delete Own Changes',
|
|
},
|
|
editAssignee: {
|
|
id: 'editAssignee',
|
|
name: 'Edit Assignee',
|
|
},
|
|
editHashtags: {
|
|
id: 'editHashtags',
|
|
name: 'Edit Hashtags',
|
|
},
|
|
editTopicName: {
|
|
id: 'editTopicName',
|
|
name: 'Edit Topic Name',
|
|
},
|
|
forgeAuthor: {
|
|
id: 'forgeAuthor',
|
|
name: 'Forge Author Identity',
|
|
},
|
|
forgeCommitter: {
|
|
id: 'forgeCommitter',
|
|
name: 'Forge Committer Identity',
|
|
},
|
|
forgeServerAsCommitter: {
|
|
id: 'forgeServerAsCommitter',
|
|
name: 'Forge Server Identity',
|
|
},
|
|
owner: {
|
|
id: 'owner',
|
|
name: 'Owner',
|
|
},
|
|
publishDrafts: {
|
|
id: 'publishDrafts',
|
|
name: 'Publish Drafts',
|
|
},
|
|
push: {
|
|
id: 'push',
|
|
name: 'Push',
|
|
},
|
|
pushMerge: {
|
|
id: 'pushMerge',
|
|
name: 'Push Merge Commit',
|
|
},
|
|
read: {
|
|
id: 'read',
|
|
name: 'Read',
|
|
},
|
|
rebase: {
|
|
id: 'rebase',
|
|
name: 'Rebase',
|
|
},
|
|
removeReviewer: {
|
|
id: 'removeReviewer',
|
|
name: 'Remove Reviewer',
|
|
},
|
|
submit: {
|
|
id: 'submit',
|
|
name: 'Submit',
|
|
},
|
|
submitAs: {
|
|
id: 'submitAs',
|
|
name: 'Submit (On Behalf Of)',
|
|
},
|
|
toggleWipState: {
|
|
id: 'toggleWipState',
|
|
name: 'Toggle Work In Progress State',
|
|
},
|
|
viewDrafts: {
|
|
id: 'viewDrafts',
|
|
name: 'View Drafts',
|
|
},
|
|
viewPrivateChanges: {
|
|
id: 'viewPrivateChanges',
|
|
name: 'View Private Changes',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
/**
|
|
* @param {!Object} obj
|
|
* @return {!Array} returns a sorted array sorted by the id of the original
|
|
* object.
|
|
*/
|
|
toSortedArray(obj) {
|
|
return Object.keys(obj).map(key => {
|
|
return {
|
|
id: key,
|
|
value: obj[key],
|
|
};
|
|
}).sort((a, b) => {
|
|
// Since IDs are strings, use localeCompare.
|
|
return a.id.localeCompare(b.id);
|
|
});
|
|
},
|
|
};
|
|
})(window);
|
|
</script>
|