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 () {