Skip to content

Commit dbc7987

Browse files
committed
ui: save changes on page change (closes #155)
1 parent 114f7a9 commit dbc7987

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

msgfmt:ui/lib/client.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ function mfCheckScroll(tr) {
5151
* consider refactoring as a Method
5252
*/
5353
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+
5458
var existing = mfPkg.mfStrings.findOne({
5559
lang: lang, key: key
5660
});
@@ -115,6 +119,7 @@ Template.mfTrans.onCreated(function() {
115119
this.subscribe('mfStats');
116120
});
117121

122+
var origOnPopState, origPushState;
118123
Template.mfTransLang.onCreated(function() {
119124
// Note, this is in ADDITION to the regular mfStrings sub
120125
var lang = RouterLayer.getParam('lang');
@@ -137,10 +142,30 @@ Template.mfTransLang.onCreated(function() {
137142
}
138143
}
139144
});
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+
}
140159
});
141160

142161
Template.mfTransLang.onDestroyed(function() {
143162
$(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+
});
144169
});
145170

146171
Template.mfTrans.helpers({
@@ -210,9 +235,13 @@ Template.mfTrans.events({
210235
}
211236
});
212237

238+
var unsavedDest;
213239
Template.mfTransLang.events({
214240
'click #mfTransLang tr': function(event) {
215241
changeKey(this.key);
242+
},
243+
'keyup #mfTransDest': function(event) {
244+
unsavedDest = event.target.value;
216245
}
217246
});
218247

0 commit comments

Comments
 (0)