(function () { TaxonomyTranslation.views.LabelPopUpView = Backbone.View.extend({ tagName: "div", template: WPML_core[ 'templates/taxonomy-translation/label-popup.html' ], model: TaxonomyTranslation.models.Taxonomy, events: { "click .cancel": "close", "click .js-label-save": "saveLabel", "click .js-button-copy": "copyOriginal", "keydown" : "handleEnter", "input .js-translation": "updateUI" }, initialize: function (data, options) { var self = this; self.lang = options.lang; self.defLang = options.defLang; self.listenTo(self.model, 'labelTranslationSaved', self.close); self.listenTo(self.model, 'saveFailed', self.render); return self; }, open: function ( lang ) { var self = this; self.render(); var popUpDomEl = jQuery( '#popup-' + lang ); popUpDomEl.append( self.$el ); self.dialog = jQuery( "#icl_tt_form_" + self.model.get( "taxonomy" ) ); self.dialog.dialog({ autoOpen: true, modal: true, minWidth: 800, resizable: false, draggable: false, dialogClass: 'dialog-fixed otgs-ui-dialog' }); self.setElement( self.dialog ); self.delegateEvents(); self.updateUI(); }, close: function () { if ( this.dialog ) { this.dialog.dialog( 'close' ); this.undelegateEvents(); this.remove(); this.dialog = null; } }, render: function () { var self = this; var taxonomy = self.model.get("taxonomy"); var labels = TaxonomyTranslation.data.translatedTaxonomyLabels[self.lang]; var originalLabels = TaxonomyTranslation.data.translatedTaxonomyLabels[self.model.get('stDefaultLang')]; var slugTranslationEnabled = originalLabels['globalSlugTranslationEnabled'] && self.model.get('showSlugTranslationField'); if (!labels) { labels = { singular: undefined, general: undefined }; } this.$el.html( self.template({ langs: TaxonomyTranslation.data.allLanguages, lang: self.lang, source_lang: self.model.get('stDefaultLang'), originalLabels: originalLabels, translatedLabels: labels, taxonomy: taxonomy, slugTranslationEnabled: slugTranslationEnabled }) ); self.delegateEvents(); return self; }, handleEnter: function(e){ var self = this; if(self.$el.find('input:focus').length !== 0 && e.keyCode == 13){ self.saveLabel(e); } return self; }, updateUI: function ( e ) { var self = this, translationsEntered = true; self.$el.find( '.js-required-translation' ).each( function () { if ( jQuery( this ).val() === '' ) { translationsEntered = false; } }); self.$el.find( '.js-label-save' ).prop( 'disabled', !translationsEntered ); }, saveLabel: function (e) { var singularValueField, pluralValueField, slugValueField, singularValue, pluralValue, slugValue, self, inputPrefix; self = this; e.preventDefault(); inputPrefix = '#' + self.model.get("taxonomy") + '-'; singularValueField = self.$el.find(inputPrefix + 'singular'); pluralValueField = self.$el.find(inputPrefix + 'plural'); slugValueField = self.$el.find(inputPrefix + 'slug'); if (singularValueField.length > 0 && pluralValueField.length > 0) { singularValue = singularValueField.val(); pluralValue = pluralValueField.val(); } if (slugValueField.length > 0) { slugValue = slugValueField.val(); } if (singularValue && pluralValue) { self.undelegateEvents(); self.$el.find(".spinner").show(); self.$el.find(".js-label-save").prop( 'disabled', true ); self.$el.find(".cancel").prop( 'disabled', true ); self.model.saveLabel(singularValue, pluralValue, slugValue, self.lang); } return self; }, copyOriginal: function ( e ) { var self = this, original = jQuery( e.currentTarget ).prev().val(); jQuery( e.currentTarget ).next().val( original ); self.updateUI(); } }); })(TaxonomyTranslation);