2021-10-16 20:28:04 +03:00
import { createMonaco } from './codeeditor.js' ;
import { initRepoCommonFilterSearchDropdown } from './repo-common.js' ;
2021-10-21 10:37:43 +03:00
const { appSubUrl , csrfToken } = window . config ;
2021-10-16 20:28:04 +03:00
export function initRepoSettingsCollaboration ( ) {
// Change collaborator access mode
$ ( '.access-mode.menu .item' ) . on ( 'click' , function ( ) {
const $menu = $ ( this ) . parent ( ) ;
$ . post ( $menu . data ( 'url' ) , {
2021-10-21 10:37:43 +03:00
_csrf : csrfToken ,
2021-10-16 20:28:04 +03:00
uid : $menu . data ( 'uid' ) ,
mode : $ ( this ) . data ( 'value' )
} ) ;
} ) ;
}
export function initRepoSettingSearchTeamBox ( ) {
const $searchTeamBox = $ ( '#search-team-box' ) ;
$searchTeamBox . search ( {
minCharacters : 2 ,
apiSettings : {
2021-10-21 10:37:43 +03:00
url : ` ${ appSubUrl } /api/v1/orgs/ ${ $searchTeamBox . data ( 'org' ) } /teams/search?q={query} ` ,
headers : { 'X-Csrf-Token' : csrfToken } ,
2021-10-16 20:28:04 +03:00
onResponse ( response ) {
const items = [ ] ;
$ . each ( response . data , ( _i , item ) => {
const title = ` ${ item . name } ( ${ item . permission } access) ` ;
items . push ( {
title ,
} ) ;
} ) ;
return { results : items } ;
}
} ,
searchFields : [ 'name' , 'description' ] ,
showNoResults : false
} ) ;
}
export async function initRepoSettingGitHook ( ) {
if ( $ ( '.edit.githook' ) . length === 0 ) return ;
const filename = document . querySelector ( '.hook-filename' ) . textContent ;
await createMonaco ( $ ( '#content' ) [ 0 ] , filename , { language : 'shell' } ) ;
}
export function initRepoSettingBranches ( ) {
// Branches
if ( $ ( '.repository.settings.branches' ) . length > 0 ) {
initRepoCommonFilterSearchDropdown ( '.protected-branches .dropdown' ) ;
$ ( '.enable-protection, .enable-whitelist, .enable-statuscheck' ) . on ( 'change' , function ( ) {
if ( this . checked ) {
$ ( $ ( this ) . data ( 'target' ) ) . removeClass ( 'disabled' ) ;
} else {
$ ( $ ( this ) . data ( 'target' ) ) . addClass ( 'disabled' ) ;
}
} ) ;
$ ( '.disable-whitelist' ) . on ( 'change' , function ( ) {
if ( this . checked ) {
$ ( $ ( this ) . data ( 'target' ) ) . addClass ( 'disabled' ) ;
}
} ) ;
}
}