101 lines
2.8 KiB
JavaScript
101 lines
2.8 KiB
JavaScript
/*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));
|
|
|