125 lines
2.9 KiB
JavaScript
125 lines
2.9 KiB
JavaScript
/*globals TaxonomyTranslation, _, Backbone */
|
|
|
|
(function () {
|
|
"use strict";
|
|
|
|
TaxonomyTranslation.models.TermRow = Backbone.Model.extend({
|
|
|
|
defaults: function () {
|
|
return {
|
|
terms: {},
|
|
trid: false,
|
|
allTranslated: false,
|
|
parents: {}
|
|
};
|
|
},
|
|
|
|
idAttribute: "trid",
|
|
|
|
initialize: function (data, options) {
|
|
var self = this;
|
|
self.updateAllTranslated();
|
|
var parents = {};
|
|
_.each(data.terms, function (term, lang) {
|
|
parents[lang] = term.get("parent");
|
|
});
|
|
|
|
self.set("parents", parents);
|
|
},
|
|
|
|
parentOf: function (parentID) {
|
|
var self = this;
|
|
var parents = self.get("parents");
|
|
var res = false;
|
|
_.each(parents, function (parent, lang) {
|
|
if (parent == parentID) {
|
|
res = true;
|
|
return res;
|
|
}
|
|
});
|
|
|
|
return res;
|
|
},
|
|
|
|
add: function (term) {
|
|
|
|
if (!this.get("trid") && term.get("trid")) {
|
|
this.set("trid", term.get("trid"), {silent: true});
|
|
}
|
|
|
|
if (term.get("trid") == this.get("trid") && term.get("language_code") && term.get("name")) {
|
|
var terms = this.get("terms");
|
|
terms[term.get("language_code")] = term;
|
|
this.set("terms", terms, {silent: true});
|
|
}
|
|
this.updateAllTranslated();
|
|
},
|
|
|
|
updateAllTranslated: function () {
|
|
var self = this;
|
|
var terms = self.get("terms");
|
|
self.set("allTranslated", true, {silent: true});
|
|
_.each(TaxonomyTranslation.util.langCodes, function (lang) {
|
|
if (terms === undefined || terms[lang] === undefined || !terms[lang].get("name")) {
|
|
self.set("allTranslated", false, {silent: true});
|
|
}
|
|
});
|
|
return self;
|
|
},
|
|
|
|
allTermsTranslated: function () {
|
|
this.updateAllTranslated();
|
|
return this.get("allTranslated");
|
|
},
|
|
translatedIn: function (lang) {
|
|
var self = this;
|
|
var terms = self.get("terms");
|
|
var res = true;
|
|
if (terms === undefined || terms[lang] === undefined || !terms[lang].get("name")) {
|
|
res = false;
|
|
}
|
|
return res;
|
|
},
|
|
matches: function (search) {
|
|
var self = this;
|
|
var res = false;
|
|
_.each(TaxonomyTranslation.util.langCodes, function (lang) {
|
|
if (self.matchesInLang(search, lang) === true) {
|
|
res = true;
|
|
return true;
|
|
}
|
|
});
|
|
return res;
|
|
},
|
|
matchesInLang: function (search, lang) {
|
|
var self = this;
|
|
var terms = self.get("terms");
|
|
var res = false;
|
|
if (
|
|
terms !== undefined &&
|
|
terms[lang] !== undefined &&
|
|
terms[lang].get("name") &&
|
|
terms[lang].get("name").toLowerCase().indexOf(search.toLowerCase()) > -1
|
|
) {
|
|
res = true;
|
|
}
|
|
return res;
|
|
},
|
|
unSyncFilter: function () {
|
|
var self = this;
|
|
var syncData = TaxonomyTranslation.data.syncData;
|
|
var terms = self.get("terms");
|
|
var res = false;
|
|
_.each(syncData, function (correction) {
|
|
_.each(TaxonomyTranslation.util.langCodes, function (lang) {
|
|
if (terms[lang] !== undefined && correction.translated_id == terms[lang].get('term_taxonomy_id')) {
|
|
res = true;
|
|
}
|
|
});
|
|
});
|
|
|
|
return res;
|
|
}
|
|
});
|
|
})(TaxonomyTranslation);
|