@@ -69,7 +69,10 @@ <h4 class="mb-1" id="detail-title"></h4>
6969 < div class ="nav nav-pills mb-3 " id ="detail-tabs " role ="tablist " style ="gap:.5rem; ">
7070 < a class ="nav-link active " data-toggle ="pill " href ="#tab-personal " role ="tab "> Personal</ a >
7171 < a class ="nav-link " data-toggle ="pill " href ="#tab-access " role ="tab "> Password / Access</ a >
72+ {% if user.prefs.is_site_admin %}
7273 < a class ="nav-link " data-toggle ="pill " href ="#tab-teams " role ="tab "> Teams</ a >
74+ {% endif %}
75+ < a class ="nav-link " data-toggle ="pill " href ="#tab-gui " role ="tab "> GUI</ a >
7376 </ div >
7477
7578 < div class ="tab-content ">
@@ -148,13 +151,13 @@ <h5 class="mb-1">Edit user</h5>
148151 < button class ="btn btn-outline-danger " id ="btn-toggle-active " type ="button "> Toggle active</ button >
149152 < button class ="btn btn-outline-warning " id ="btn-toggle-staff " type ="button "> Toggle staff</ button >
150153
151- {% if user.prefs.site_admin %}
154+ {% if user.prefs.is_site_admin %}
152155 < button class ="btn btn-danger " id ="btn-delete-user " type ="button "> Delete user…</ button >
153156 {% endif %}
154157 </ div >
155158 </ div >
156159
157- {% if user.prefs.site_admin %}
160+ {% if user.prefs.is_site_admin %}
158161 < small class ="text-muted d-block mt-2 ">
159162 Deleting a user is irreversible and may remove memberships and tokens.
160163 </ small >
@@ -199,6 +202,7 @@ <h5>Access tokens</h5>
199202 </ div >
200203
201204 <!-- Teams -->
205+ {% if user.prefs.is_site_admin %}
202206 < div class ="tab-pane fade " id ="tab-teams " role ="tabpanel ">
203207 < div class ="card mb-3 ">
204208 < div class ="card-body ">
@@ -221,7 +225,16 @@ <h5 class="mb-3">Manage team memberships</h5>
221225 </ div >
222226
223227 </ div >
228+ {% endif %}
229+ < div class ="tab-pane fade " id ="tab-gui " role ="tabpanel ">
230+ < div class ="card mb-3 ">
231+ < div class ="card-body ">
232+ < h5 class ="mb-3 "> GUI Mode:
233+ < select type =select id ="f-ui-frontend "> < option value =1 > Default (bright)</ option > < option value =2 > Lightroom (dark)</ option > </ select > </ h5 >
234+ </ div >
235+ </ div >
224236
237+ </ div >
225238 </ div >
226239 </ div >
227240
@@ -294,6 +307,7 @@ <h5 class="modal-title" id="deleteUserModalLabel">Delete user</h5>
294307 . replace ( '/1/teams/1/remove/' , '/' + userId + '/teams/' + teamId + '/remove/' ) ;
295308 if ( name === "teamToggleAdmin" ) return "{% url 'administration:user_team_toggle_admin_api' user_id=1 team_id=1 %}"
296309 . replace ( '/1/teams/1/toggle-admin/' , '/' + userId + '/teams/' + teamId + '/toggle-admin/' ) ;
310+
297311 return null ;
298312}
299313
@@ -343,10 +357,11 @@ <h5 class="modal-title" id="deleteUserModalLabel">Delete user</h5>
343357 results . forEach ( function ( u ) {
344358 var badge = u . is_active ? '' : ' <span class="badge badge-secondary">inactive</span>' ;
345359 var staffBadge = u . is_staff ? ' <span class="badge badge-info">staff</span>' : '' ;
360+ var siteadminBadge = u . is_site_admin ? ' <span class="badge badge-success">site admin</span>' : '' ;
346361 var item =
347362 '<button type="button" class="list-group-item list-group-item-action user-row" data-id="' + u . id + '">' +
348363 '<div class="d-flex justify-content-between">' +
349- '<div><strong>' + ( u . display_name || u . username ) + '</strong>' + badge + staffBadge + '</div>' +
364+ '<div><strong>' + ( u . display_name || u . username ) + '</strong>' + badge + staffBadge + siteadminBadge + '</div>' +
350365 '</div>' +
351366 '<div class="text-muted" style="font-size: .9em;">' + ( u . email || '' ) + '</div>' +
352367 '</button>' ;
@@ -435,6 +450,7 @@ <h5 class="modal-title" id="deleteUserModalLabel">Delete user</h5>
435450
436451 $ ( '#f-date-joined' ) . text ( fmt ( u . date_joined ) ) ;
437452 $ ( '#f-last-login' ) . text ( fmt ( u . last_login ) ) ;
453+ $ ( '#f-ui-frontend' ) . val ( u . prefs . frontend ) ;
438454
439455 $ ( '#random-password-box' ) . hide ( ) ;
440456
@@ -633,6 +649,35 @@ <h5 class="modal-title" id="deleteUserModalLabel">Delete user</h5>
633649 } ) ;
634650} ) ;
635651
652+ $ ( '#f-ui-frontend' ) . on ( 'change' , function ( ) {
653+ if ( ! currentUserId ) return ;
654+
655+ var payload = {
656+ frontend : $ ( '#f-ui-frontend' ) . val ( ) . trim ( ) ,
657+ } ;
658+
659+ $ . ajax ( {
660+ url : urlFor ( "update" , currentUserId ) ,
661+ method : "POST" ,
662+ contentType : "application/json" ,
663+ data : JSON . stringify ( payload ) ,
664+ headers : { "X-CSRFToken" : csrftoken } ,
665+ success : function ( ) {
666+ $ . notify ( "User updated." , "success" ) ;
667+ loadUserDetail ( currentUserId ) ;
668+ loadUserList ( ) ;
669+ } ,
670+ error : function ( xhr ) {
671+ var msg = "Update failed." ;
672+ try {
673+ var data = xhr . responseJSON ;
674+ if ( data && data . error ) msg = ( typeof data . error === "string" ) ? data . error : JSON . stringify ( data . error ) ;
675+ } catch ( e ) { }
676+ $ . notify ( msg , "error" ) ;
677+ }
678+ } ) ;
679+ } ) ;
680+
636681$ ( document ) . on ( 'click' , '.team-toggle-admin' , function ( ) {
637682 if ( ! currentUserId ) return ;
638683 var teamId = $ ( this ) . data ( 'team-id' ) ;
@@ -679,7 +724,9 @@ <h5 class="modal-title" id="deleteUserModalLabel">Delete user</h5>
679724 // Initial load
680725 $ ( document ) . ready ( function ( ) {
681726 loadUserList ( ) ;
727+ { % if user . prefs . is_site_admin % }
682728 loadTeamsCatalog ( ) ;
729+ { % endif % }
683730 } ) ;
684731</ script >
685732
0 commit comments