11'use strict' ;
22
3- var loadTemplate = require ( '../utils/loadTemplate' ) ,
3+ var __ = require ( 'underscore' ) ,
4+ loadTemplate = require ( '../utils/loadTemplate' ) ,
45 app = require ( '../App.js' ) . getApp ( ) ,
56 remote = require ( 'electron' ) . remote ,
67 ServerConfigMd = require ( '../models/serverConfigMd' ) ,
@@ -21,22 +22,60 @@ module.exports = BaseModal.extend({
2122 initialize : function ( options ) {
2223 this . options = options || { } ;
2324
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- }
25+ if ( ! options . userModel ) {
26+ throw new Error ( 'Please provide a user model.' ) ;
27+ }
28+
29+ this . _headerState = { } ;
30+
31+ this . headerVw = new ServerConnectHeaderVw ( ) ;
32+ this . setHeaderState ( {
33+ msg : { translate : 'serverConnectModal.serverConfigsHeaderMsg' } ,
34+ title : { translate : 'serverConnectModal.serverConfigsTitle' } ,
35+ showNew : true
3036 } ) ;
37+ setTimeout ( ( ) => this . registerChild ( this . headerVw ) ) ;
3138
3239 this . serverConfigs = app . serverConfigs ;
3340 this . serverConfigsVw = new ServerConfigsVw ( {
3441 collection : this . serverConfigs
3542 } ) ;
43+ setTimeout ( ( ) => this . registerChild ( this . serverConfigsVw ) ) ;
3644
3745 this . listenTo ( this . serverConfigsVw , 'edit-config' , this . onEditConfig ) ;
3846 this . listenTo ( this . serverConfigsVw , 'connect' , this . onConnectClick ) ;
3947 this . listenTo ( this . serverConfigsVw , 'cancel' , this . onCancelClick ) ;
48+
49+ options . userModel . on ( 'change:language' , ( ) => {
50+ this . setHeaderState ( this . _headerState ) ;
51+ this . serverConfigFormVw && this . serverConfigFormVw . render ( ) ;
52+ this . serverConfigsVw . render ( ) ;
53+ } ) ;
54+ } ,
55+
56+ setHeaderState : function ( state ) {
57+ // In order to properly translate the msg and title and update the
58+ // translations upon a language change, rather than providing a literal
59+ // string, please provide an object with the Polyglot key in a 'translation'
60+ // property, e.g:
61+ // {
62+ // title: { translate: 'polyglotKey' },
63+ // msg: 'my literal string' // if you dont want to translate
64+ // }
65+ var translatedState ;
66+
67+ this . _headerState = __ . extend ( this . _headerState , state || { } ) ;
68+ translatedState = __ . extend ( { } , this . _headerState ) ;
69+
70+ Object . keys ( this . _headerState ) . forEach ( ( key ) => {
71+ if ( [ 'msg' , 'title' ] . indexOf ( key ) !== - 1 ) {
72+ if ( this . _headerState [ key ] [ 'translate' ] ) {
73+ translatedState [ key ] = window . polyglot . t ( this . _headerState [ key ] [ 'translate' ] ) ;
74+ }
75+ }
76+ } ) ;
77+
78+ this . headerVw . setState ( translatedState ) ;
4079 } ,
4180
4281 hideMessageBar : function ( ) {
@@ -55,9 +94,10 @@ module.exports = BaseModal.extend({
5594 if ( ! this . $jsConfigFormWrap ) return ;
5695
5796 this . $jsConfigFormWrap . addClass ( 'slide-out' ) ;
58- this . headerVw . setState ( {
59- msg : window . polyglot . t ( 'serverConnectModal.serverConfigsHeaderMsg' ) ,
60- title : window . polyglot . t ( 'serverConnectModal.serverConfigsTitle' ) ,
97+
98+ this . setHeaderState ( {
99+ msg : { translate : 'serverConnectModal.serverConfigsHeaderMsg' } ,
100+ title : { translate : 'serverConnectModal.serverConfigsTitle' } ,
61101 showNew : true
62102 } ) ;
63103
@@ -67,25 +107,23 @@ module.exports = BaseModal.extend({
67107 showConfigForm : function ( configMd ) {
68108 var model = configMd ;
69109
70- this . _state = this . options . initialState || { } ;
71-
72110 if ( ! model ) {
73111 model = new ServerConfigMd ( ) ;
74112 model . __collection = this . serverConfigs ;
75113 }
76114
77- this . headerVw . setState ( {
78- title : model . get ( 'name' ) || window . polyglot . t ( 'serverConnectModal.newConfigTitle' ) ,
115+ this . setHeaderState ( {
116+ title : model . get ( 'name' ) || { translate : 'serverConnectModal.newConfigTitle' } ,
79117 msg : configMd ?
80- window . polyglot . t ( 'serverConnectModal.editConfigHeaderMsg' ) :
81- window . polyglot . t ( 'serverConnectModal.newConfigHeaderMsg' ) ,
118+ { translate : 'serverConnectModal.editConfigHeaderMsg' } :
119+ { translate : 'serverConnectModal.newConfigHeaderMsg' } ,
82120 showNew : false
83121 } ) ;
84122
85123 this . renderServerConfigForm ( model ) ;
86124
87125 this . listenTo ( model , 'change:name' , ( md ) => {
88- this . headerVw . setState ( {
126+ this . setHeaderState ( {
89127 title : md . get ( 'name' )
90128 } ) ;
91129 } ) ;
@@ -364,6 +402,7 @@ module.exports = BaseModal.extend({
364402 this . serverConfigFormVw = new ServerConfigFormVw ( {
365403 model : md
366404 } ) ;
405+ this . registerChild ( this . serverConfigFormVw ) ;
367406
368407 this . $jsConfigFormWrap = this . $jsConfigFormWrap || this . $ ( '.js-config-form-wrap' ) ;
369408 this . $jsConfigFormWrap . html ( this . serverConfigFormVw . render ( ) . el ) ;
0 commit comments