Files
Ultradesu 5260c2828b
Checks / test (push) Failing after 2m25s
NEXT
2026-10-07 15:30:31 +01:00

15 lines
2.1 KiB
JavaScript

// Installation settings have independent sections and explicit save boundaries.
function siteUi(){return {
siteAdmin:false,siteData:null,siteSection:'users',siteSearch:'',siteEdit:null,siteAuth:null,siteLoading:false,
siteSections(){return ['users','workspaces','authentication','audit'].map(id=>({id,label:tr('site_'+id)}));},
siteUsers(){const q=this.siteSearch.toLowerCase();return (this.siteData?.users||[]).filter(x=>(x.user.username+' '+x.user.display_name+' '+x.user.email).toLowerCase().includes(q));},
siteWorkspaces(){const q=this.siteSearch.toLowerCase();return (this.siteData?.workspaces||[]).filter(x=>x.name.toLowerCase().includes(q));},
siteUserName(id){return this.siteData?.users.find(x=>x.user.id===id)?.user.username||id;},
async loadSite(){if(!this.siteAdmin||this.siteLoading)return;this.siteLoading=true;try{this.siteData=await this.api('/api/site');this.siteAuth=copy(this.siteData.settings.authentication.value);}catch(e){this.error=e.message;}finally{this.siteLoading=false;}},
siteTab(id){this.siteSection=id;this.siteSearch='';this.siteEdit=null;},
editSiteUser(row){this.siteEdit={kind:'user',id:row.user.id,display_name:row.user.display_name,administrator:row.access.administrator,disabled:row.access.disabled};},
editSiteWorkspace(row){this.siteEdit={kind:'workspace',id:row.id,name:row.name,workspace_revision:row.revision,owner_id:row.owners[0]||''};},
async saveSiteEdit(){const edit=copy(this.siteEdit);if(!confirm(tr('site_confirm')))return;await this.run(async()=>{await this.api('/api/site/'+edit.kind,'PUT',{...edit,revision:this.siteData.revision});this.siteEdit=null;const session=await this.api('/api/session');this.siteAdmin=!!session.site_admin;this.user=session.user;if(this.siteAdmin)await this.loadSite();else{this.siteData=null;this.view='calendar';}await this.loadWorkspaces();},tr('site_saved'));},
async saveSiteAuth(){await this.run(async()=>{await this.api('/api/site/authentication','PUT',{revision:this.siteData.revision,section_revision:this.siteData.settings.authentication.revision,value:this.siteAuth});await this.loadSite();},tr('site_saved'));}
};}