@@ -51,6 +51,10 @@ function mfCheckScroll(tr) {
51
51
* consider refactoring as a Method
52
52
*/
53
53
function saveChange ( lang , key , text ) {
54
+ if ( ! lang ) lang = Session . get ( 'mfTransTrans' ) ;
55
+ if ( ! key ) key = Session . get ( 'mfTransKey' ) ;
56
+ if ( ! text ) text = $ ( '#mfTransDest' ) . val ( ) ;
57
+
54
58
var existing = mfPkg . mfStrings . findOne ( {
55
59
lang : lang , key : key
56
60
} ) ;
@@ -115,6 +119,7 @@ Template.mfTrans.onCreated(function() {
115
119
this . subscribe ( 'mfStats' ) ;
116
120
} ) ;
117
121
122
+ var origOnPopState , origPushState ;
118
123
Template . mfTransLang . onCreated ( function ( ) {
119
124
// Note, this is in ADDITION to the regular mfStrings sub
120
125
var lang = RouterLayer . getParam ( 'lang' ) ;
@@ -137,10 +142,30 @@ Template.mfTransLang.onCreated(function() {
137
142
}
138
143
}
139
144
} ) ;
145
+
146
+ origOnPopState = window . onpopstate ;
147
+ window . onpopstate = function ( ) {
148
+ saveChange ( null , null , unsavedDest ) ;
149
+ if ( origOnPopState )
150
+ origOnPopState . apply ( this , arguments ) ;
151
+ }
152
+
153
+ origPushState = history && history . pushState ;
154
+ history . pushState = function ( ) {
155
+ saveChange ( null , null , unsavedDest ) ;
156
+ if ( origPushState )
157
+ origPushState . apply ( this , arguments ) ;
158
+ }
140
159
} ) ;
141
160
142
161
Template . mfTransLang . onDestroyed ( function ( ) {
143
162
$ ( window ) . off ( 'keydown.mfTrans' ) ;
163
+
164
+ // after template destroy so event still fires during exit
165
+ _ . defer ( function ( ) {
166
+ window . onpopstate = origOnPopState ;
167
+ if ( history ) history . pushState = origPushState ;
168
+ } ) ;
144
169
} ) ;
145
170
146
171
Template . mfTrans . helpers ( {
@@ -210,9 +235,13 @@ Template.mfTrans.events({
210
235
}
211
236
} ) ;
212
237
238
+ var unsavedDest ;
213
239
Template . mfTransLang . events ( {
214
240
'click #mfTransLang tr' : function ( event ) {
215
241
changeKey ( this . key ) ;
242
+ } ,
243
+ 'keyup #mfTransDest' : function ( event ) {
244
+ unsavedDest = event . target . value ;
216
245
}
217
246
} ) ;
218
247
0 commit comments