@@ -21,22 +21,60 @@ module.exports = BaseModal.extend({
2121 initialize : function ( options ) {
2222 this . options = options || { } ;
2323
24- this . headerVw = new ServerConnectHeaderVw ( {
25- initialState : {
26- msg : window . polyglot . t ( 'serverConnectModal.serverConfigsHeaderMsg' ) ,
27- title : window . polyglot . t ( 'serverConnectModal.serverConfigsTitle' ) ,
28- showNew : true
29- }
24+ if ( ! options . userModel ) {
25+ throw new Error ( 'Please provide a user model.' ) ;
26+ }
27+
28+ this . _headerState = { } ;
29+
30+ this . headerVw = new ServerConnectHeaderVw ( ) ;
31+ this . setHeaderState ( {
32+ msg : { translate : 'serverConnectModal.serverConfigsHeaderMsg' } ,
33+ title : { translate : 'serverConnectModal.serverConfigsTitle' } ,
34+ showNew : true
3035 } ) ;
36+ setTimeout ( ( ) => this . registerChild ( this . headerVw ) ) ;
3137
3238 this . serverConfigs = app . serverConfigs ;
3339 this . serverConfigsVw = new ServerConfigsVw ( {
3440 collection : this . serverConfigs
3541 } ) ;
42+ setTimeout ( ( ) => this . registerChild ( this . serverConfigsVw ) ) ;
3643
3744 this . listenTo ( this . serverConfigsVw , 'edit-config' , this . onEditConfig ) ;
3845 this . listenTo ( this . serverConfigsVw , 'connect' , this . onConnectClick ) ;
3946 this . listenTo ( this . serverConfigsVw , 'cancel' , this . onCancelClick ) ;
47+
48+ options . userModel . on ( 'change:language' , ( md , lang ) => {
49+ this . setHeaderState ( this . _headerState ) ;
50+ this . serverConfigFormVw && this . serverConfigFormVw . render ( ) ;
51+ this . serverConfigsVw . render ( ) ;
52+ } ) ;
53+ } ,
54+
55+ setHeaderState : function ( state ) {
56+ // In order to properly translate the msg and title and update the
57+ // translations upon a language change, rather than providing a literal
58+ // string, please provide an object with the Polyglot key in a 'translation'
59+ // property, e.g:
60+ // {
61+ // title: { translate: 'polyglotKey' },
62+ // msg: 'my literal string' // if you dont want to translate
63+ // }
64+ var translatedState ;
65+
66+ this . _headerState = __ . extend ( this . _headerState , state || { } ) ;
67+ translatedState = this . _headerState ;
68+
69+ Object . keys ( this . _headerState ) . forEach ( ( key ) => {
70+ if ( [ 'msg' , 'title' ] . indexOf ( key ) !== - 1 ) {
71+ if ( this . _headerState [ key ] [ 'translate' ] ) {
72+ translatedState [ key ] = window . polyglot . t ( this . _headerState [ key ] [ 'translate' ] ) ;
73+ }
74+ }
75+ } ) ;
76+
77+ this . headerVw . setState ( translatedState ) ;
4078 } ,
4179
4280 hideMessageBar : function ( ) {
@@ -55,9 +93,10 @@ module.exports = BaseModal.extend({
5593 if ( ! this . $jsConfigFormWrap ) return ;
5694
5795 this . $jsConfigFormWrap . addClass ( 'slide-out' ) ;
58- this . headerVw . setState ( {
59- msg : window . polyglot . t ( 'serverConnectModal.serverConfigsHeaderMsg' ) ,
60- title : window . polyglot . t ( 'serverConnectModal.serverConfigsTitle' ) ,
96+
97+ this . setHeaderState ( {
98+ msg : { translate : 'serverConnectModal.serverConfigsHeaderMsg' } ,
99+ title : { translate : 'serverConnectModal.serverConfigsTitle' } ,
61100 showNew : true
62101 } ) ;
63102
@@ -67,25 +106,23 @@ module.exports = BaseModal.extend({
67106 showConfigForm : function ( configMd ) {
68107 var model = configMd ;
69108
70- this . _state = this . options . initialState || { } ;
71-
72109 if ( ! model ) {
73110 model = new ServerConfigMd ( ) ;
74111 model . __collection = this . serverConfigs ;
75112 }
76113
77- this . headerVw . setState ( {
78- title : model . get ( 'name' ) || window . polyglot . t ( 'serverConnectModal.newConfigTitle' ) ,
114+ this . setHeaderState ( {
115+ title : model . get ( 'name' ) || { translate : 'serverConnectModal.newConfigTitle' } ,
79116 msg : configMd ?
80- window . polyglot . t ( 'serverConnectModal.editConfigHeaderMsg' ) :
81- window . polyglot . t ( 'serverConnectModal.newConfigHeaderMsg' ) ,
117+ { translate : 'serverConnectModal.editConfigHeaderMsg' } :
118+ { translate : 'serverConnectModal.newConfigHeaderMsg' } ,
82119 showNew : false
83120 } ) ;
84121
85122 this . renderServerConfigForm ( model ) ;
86123
87124 this . listenTo ( model , 'change:name' , ( md ) => {
88- this . headerVw . setState ( {
125+ this . setHeaderState ( {
89126 title : md . get ( 'name' )
90127 } ) ;
91128 } ) ;
@@ -364,6 +401,7 @@ module.exports = BaseModal.extend({
364401 this . serverConfigFormVw = new ServerConfigFormVw ( {
365402 model : md
366403 } ) ;
404+ this . registerChild ( this . serverConfigFormVw ) ;
367405
368406 this . $jsConfigFormWrap = this . $jsConfigFormWrap || this . $ ( '.js-config-form-wrap' ) ;
369407 this . $jsConfigFormWrap . html ( this . serverConfigFormVw . render ( ) . el ) ;
0 commit comments