Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/res/js/translation-editor/wpml-tm-editor-main-view.js
2023-09-12 21:41:04 +02:00

210 lines
5.6 KiB
JavaScript

/*global _, Backbone, WpmlTmEditorModel, tmEditorStrings, jQuery, tmEditor, document */
var WPML_TM = WPML_TM || {};
(function () {
"use strict";
WPML_TM.editorMainView = Backbone.View.extend({
events: {
'change .icl_tm_finished': 'updateState'
},
updateState: function () {
var self = this;
self.footerView.showProgressBar().setCompleteCheckBox();
},
render: function () {
var self = this;
var job_type = jQuery('input[name="job_post_type"]').val();
self.fieldViews = [];
self.translationMemory = null;
if (
WpmlTmEditorModel.translation_memory
&& tmEditorStrings.translationMemoryNonce
&& tmEditorStrings.translationMemoryEndpoint
) {
self.translationMemory = new WPML_TM.translationMemory( WpmlTmEditorModel.languages );
}
jQuery('#screen-meta-links').hide();
jQuery(document).trigger('WPML_TM.editor.before_render', [job_type] );
self.addHeaderView();
self.addNoteView();
self.addLanguagesView();
self.model.fetch(function () {
self.addFields(self.model.get('layout'), self.$el.find('#wpml-translation-editor-wrapper'));
self.addFooterView();
jQuery(document).trigger('WPML_TM.editor.ready', [job_type, self.fieldViews, self.footerView]);
});
self.updateState();
if ( self.translationMemory ) {
self.translationMemory.fetch();
}
return self;
},
addFields: function (fields, $location) {
var self = this;
_.each(fields, function (field) {
if (typeof field == 'string') {
self.fieldViews.push(self.createFieldView(field, $location));
} else if (field.field_type == 'tm-section') {
self.createSection(field, $location);
} else if (field.field_type == 'tm-group') {
self.createGroup(field, $location);
} else if (field.field_type == 'wcml-image') {
self.createImage(field, $location);
}
});
},
createFieldView: function (field, $location) {
var self = this;
field = self.model.get(field + '_raw');
var view = WPML_TM.fieldViewFactory.create(field, {
id: 'job_field_' + field.field_type,
job_id: self.model.get('job_id')
});
view.render(self.model.get(field.field_type + '_raw'), tmEditorStrings);
$location.last().append(view.$el);
view.setup();
if ( self.translationMemory ) {
self.translationMemory.addField( field, view );
}
return view;
},
createSection: function (field, $location) {
var self = this;
var view = new WPML_TM.editorSectionView({
job_id: self.model.get('job_id')
});
view.render(field);
$location.last().append(view.$el);
self.addFields(field.fields, view.$el.find('.inside'));
},
createGroup: function (field, $location) {
var self = this;
var view = new WPML_TM.editorGroupView({
job_id: self.model.get('job_id')
});
view.render(field);
$location.last().append(view.$el);
self.addFields(field.fields, view.$el.find('.inside'));
view.setup();
},
createImage: function (field, $location) {
var self = this;
var view = new WPML_TM.editorImageView({
job_id: self.model.get('job_id')
});
view.render(field);
$location.last().append(view.$el);
self.addFields(field.fields, view.$el.find('.inside'));
view.setup();
},
addHeaderView: function () {
var self = this;
var headerView = new WPML_TM.editorHeaderView({
model: WpmlTmEditorModel.header
});
headerView.render();
self.appendToDom(headerView);
},
addNoteView: function () {
var self = this;
if (WpmlTmEditorModel.note) {
var noteView = new WPML_TM.editorNoteView({
model: WpmlTmEditorModel
});
noteView.render();
self.appendToDom(noteView);
}
},
addLanguagesView: function () {
var self = this;
self.languagesView = new WPML_TM.editorLanguagesView({
model: {
language: WpmlTmEditorModel.languages,
labels: tmEditorStrings
},
mainView: self
});
self.languagesView.render();
self.appendToDom(self.languagesView);
},
addFooterView: function () {
var self = this;
self.footerView = new WPML_TM.editorFooterView({
model: tmEditor.model,
mainView: self
});
self.footerView.render();
self.appendToDom(self.footerView);
},
appendToDom: function (view) {
var self = this;
if (view instanceof WPML_TM.editorHeaderView) {
self.$el.find('#wpml-translation-editor-header').last().append(view.$el);
} else {
self.$el.find('#wpml-translation-editor-wrapper').last().append(view.$el);
}
},
hasTranslations: function () {
var self = this;
var hasTranslation = false;
_.each( self.fieldViews, function ( view ) {
if ( ! hasTranslation) {
if ( view.getTranslation() !== '' && view.getTranslation() !== view.getOriginal() ) {
hasTranslation = true;
}
}
});
return hasTranslation;
},
copyOriginalOverwrite: function () {
var self = this;
_.each(self.fieldViews, function (view) {
view.copyField();
});
},
copyOriginalDontOverwrite: function () {
var self = this;
_.each(self.fieldViews, function (view) {
if (view.getTranslation() === '') {
view.copyField();
}
});
},
hideTranslated: function (state) {
var self = this;
_.each(self.fieldViews, function (view) {
view.hideTranslated(state);
});
self.hideEmptyGroups();
},
hideEmptyGroups: function () {
jQuery('.postbox').each( function () {
var elements = jQuery('[class*="wpml-form-row"]', jQuery(this));
var hiddenElements = elements.filter( function () {
return jQuery(this).css('display') === 'none';
} );
if ( elements.length === hiddenElements.length ) {
jQuery(this).hide();
} else {
jQuery(this).show();
}
} );
}
});
}());