1919
2020import $ from "jquery" ;
2121import cockpit from "cockpit" ;
22+ import React from "react" ;
23+ import ReactDOM from "react-dom" ;
24+
2225import { showDialog } from "./active-pages" ;
26+ import { LangModal } from "./shell-modals.jsx" ;
2327
2428var shell_embedded = window . location . pathname . indexOf ( ".html" ) !== - 1 ;
2529const _ = cockpit . gettext ;
@@ -486,7 +490,7 @@ function Router(index) {
486490 * As a convenience, common menu items can be setup by adding the
487491 * selector to be used to hook them up. The accepted selectors
488492 * are.
489- * oops_sel, logout_sel, language_sel
493+ * oops_sel, logout_sel
490494 *
491495 * Emits "disconnect" and "expect_restart" signals, that should be
492496 * handled by the caller.
@@ -818,44 +822,6 @@ function Index() {
818822 } ) ;
819823 }
820824
821- /* Display language dialog */
822- function setup_language ( id ) {
823- /*
824- * Note that we don't go ahead and load all the po files in order
825- * to produce this list. Perhaps we would include it somewhere in a
826- * separate automatically generated file. Need to see.
827- */
828- var manifest = cockpit . manifests . shell || { } ;
829- $ ( ".display-language-menu" ) . toggle ( ! ! manifest . locales ) ;
830- var language = document . cookie . replace ( / (?: (?: ^ | .* ; \s * ) C o c k p i t L a n g \s * = \s * ( [ ^ ; ] * ) .* $ ) | ^ .* $ / , "$1" ) ;
831- if ( ! language )
832- language = "en-us" ;
833-
834- $ ( 'html' ) . attr ( 'lang' , language ) ;
835-
836- $ . each ( manifest . locales || { } , function ( code , name ) {
837- var el = $ ( "<option>" ) . text ( name )
838- . val ( code ) ;
839- if ( code == language )
840- el . attr ( "selected" , "true" ) ;
841- $ ( "#display-language-list" ) . append ( el ) ;
842- } ) ;
843-
844- $ ( "#display-language-select-button" ) . on ( "click" , function ( event ) {
845- var code_to_select = $ ( "#display-language-list" ) . val ( ) ;
846- var cookie = "CockpitLang=" + encodeURIComponent ( code_to_select ) +
847- "; path=/; expires=Sun, 16 Jul 3567 06:23:41 GMT" ;
848- document . cookie = cookie ;
849- window . localStorage . setItem ( "cockpit.lang" , code_to_select ) ;
850- window . location . reload ( true ) ;
851- return false ;
852- } ) ;
853-
854- $ ( id ) . on ( "shown.bs.modal" , function ( ) {
855- $ ( "display-language-list" ) . focus ( ) ;
856- } ) ;
857- }
858-
859825 function setup_killer ( id ) {
860826 $ ( id ) . on ( "click" , function ( ev ) {
861827 if ( ev && ev . button === 0 )
@@ -869,11 +835,19 @@ function Index() {
869835 if ( self . logout_sel )
870836 setup_logout ( self . logout_sel ) ;
871837
872- if ( self . language_sel )
873- setup_language ( self . language_sel ) ;
874-
875838 if ( self . killer_sel )
876839 setup_killer ( self . killer_sel ) ;
840+
841+ const manifest = cockpit . manifests . shell || { } ;
842+ $ ( ".display-language-menu" ) . toggle ( ! ! manifest . locales ) ;
843+
844+ $ ( "#open-display-language" ) . click ( ( ) => {
845+ ReactDOM . render ( React . createElement ( LangModal , {
846+ onClose : ( ) =>
847+ ReactDOM . unmountComponentAtNode ( document . getElementById ( 'display-language' ) )
848+ } ) ,
849+ document . getElementById ( 'display-language' ) ) ;
850+ } ) ;
877851}
878852
879853function CompiledComponents ( ) {
0 commit comments