diff --git a/core/modules/locale/locale.admin.css b/core/modules/locale/locale.admin.css index 09ddcc645daa72da04a95d70d60c585da7404585..558d037a54c4f87e9a141bc529a50707d0685bda 100644 --- a/core/modules/locale/locale.admin.css +++ b/core/modules/locale/locale.admin.css @@ -30,5 +30,5 @@ } #locale-translate-edit-form tr.changed { - background: #FFB; + background: #ffb; } diff --git a/core/modules/locale/locale.admin.js b/core/modules/locale/locale.admin.js index fbdaf046299adbaecf7312da9098b7b2851f0b99..5d85222584c6e78bc9bf5e81eb4122d4ee61cb67 100644 --- a/core/modules/locale/locale.admin.js +++ b/core/modules/locale/locale.admin.js @@ -5,31 +5,35 @@ /** * Markes changes of translations */ -Drupal.behaviors.localetranslatedirty = { - attach: function (context, settings) { - $("#locale-translate-edit-form").find("textarea").change(function(){ - // Marking the row. - $(this).parents("tr") - .addClass('changed') - .each(function() { - var marker = Drupal.theme('localeTranslateChangedMarker'); - var cell = $(this).find('td:first div.form-item'); - if (cell.find('abbr.tabledrag-changed').length == 0) { - cell.append(marker); - } - }); - // Help text on top of table. - if (!$(this).parents("table").hasClass("changed")) { - $(this).parents("table") - .addClass("changed") - .before($(Drupal.theme('localeTranslateChangedWarning')).hide().fadeIn('slow')); - } - }); +Drupal.behaviors.localeTranslateDirty = { + attach: function () { + var $form = $("#locale-translate-edit-form").once('localeTranslateDirty'); + if ($form.length) { + // Display a notice if any row changed. + $form.one('change', 'table', function () { + var $marker = $(Drupal.theme('localeTranslateChangedWarning')).hide(); + $(this).addClass('changed').before($marker); + $marker.fadeIn('slow'); + }); + // Highlight changed row. + $form.on('change', 'tr', function (e) { + var + $row = $(this), + $rowToMark = $row.once('localeMark'), + marker = Drupal.theme('localeTranslateChangedMarker'); + + $row.addClass('changed'); + // Add an asterisk only once if row changed. + if ($rowToMark.length) { + $rowToMark.find('td:first-child .form-item').append(marker); + } + }); + } } }; Drupal.theme.prototype.localeTranslateChangedMarker = function () { - return '*'; + return '*'; }; Drupal.theme.prototype.localeTranslateChangedWarning = function () {