term-row-view.js
2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*globals _, TaxonomyTranslation, document, Backbone, jQuery */
(function () {
"use strict";
TaxonomyTranslation.views.TermRowView = Backbone.View.extend({
tagName: "tr",
model: TaxonomyTranslation.models.TermRow,
termViews: {},
className: '',
events: {
'click .js-copy-to-all-langs': 'copyToAllLangs'
},
initialize: function () {
var self = this;
self.listenTo(TaxonomyTranslation.classes.taxonomy, 'syncDataLoaded', self.maybeHide);
},
maybeHide: function () {
var self = this;
var visible = false;
var terms = self.model.get("terms");
_.each(TaxonomyTranslation.data.syncData, function (correction) {
_.each(terms, function (term) {
if (correction.translated_id == term.get("term_taxonomy_id")) {
visible = true;
}
});
});
if (visible) {
self.$el.show();
} else {
self.$el.hide();
}
},
render: function () {
var termsFragments = {};
var self = this;
var langs = TaxonomyTranslation.util.langCodes;
var terms = self.model.get("terms");
var originalTerm = null;
_.each(langs, function (lang) {
var term = terms[lang];
if (term === undefined) {
term = new TaxonomyTranslation.models.Term({language_code: lang, trid: self.model.get("trid")});
terms[lang] = term;
self.model.set("terms", terms, {silent: true});
}
if ( term.isOriginal() ) {
originalTerm = term;
}
var newView = new TaxonomyTranslation.views.TermView({model: term});
self.termViews[lang] = newView;
if (TaxonomyTranslation.mainView.mode === 'sync') {
termsFragments[lang] = newView.loadSyncData().el;
} else {
termsFragments[lang] = newView.render().el;
}
});
if ( originalTerm ) {
var newRowFragment = document.createDocumentFragment();
if ( TaxonomyTranslation.mainView.mode !== 'sync' ) {
var originalView = new TaxonomyTranslation.views.TermOriginalView({model: originalTerm });
newRowFragment.appendChild( originalView.render().el );
var newRowLangs = document.createElement( 'td' );
jQuery( newRowLangs ).addClass( 'wpml-col-languages' );
_.each(langs, function(lang){
newRowLangs.appendChild(termsFragments[lang]);
});
newRowFragment.appendChild( newRowLangs );
} else {
_.each(langs, function(lang){
var newRowTD = document.createElement( 'td' );
newRowTD.appendChild(termsFragments[lang]);
newRowFragment.appendChild( newRowTD );
});
}
self.$el.html(newRowFragment);
}
return self;
},
copyToAllLangs: function () {
var self = this;
TaxonomyTranslation.classes.copyAllPopUpView = new TaxonomyTranslation.views.CopyAllPopUpView( { model: self.model } );
TaxonomyTranslation.classes.copyAllPopUpView.open( );
}
});
}(TaxonomyTranslation));